New to VisionScaper?
Start here
Help Center › Get your API keys › Resend webhook address and secret
Resend webhook address and secret
Point Resend at VisionScaper for bounces and complaints, and understand a signature mismatch in the current code.
A webhook lets Resend tell VisionScaper when a message was delivered, bounced, or flagged as spam.
Warning: Read “Known gap” first. VisionScaper’s signature check may not match Resend’s.
Before you start
- Resend is set up (see “Get your Resend API key”).
Steps
- In WordPress open Settings → VisionScaper Messaging. The page prints a Webhook address only in the Texts section for Telnyx. For the other services, the address follows the same pattern:
/wp-json/dreamscaper/v1/msg/webhook/resendon your site. (The plugin registers that path. The page does not print it for Resend. Not verified on screen.) - In the Resend Dashboard, add a webhook. Resend’s overview says: create a route that takes POST requests, then define a webhook with its URL and the events. The exact menu path is on Resend’s “Create webhook” page, which I did not open.
- Choose these events:
email.delivered,email.bounced,email.complained,email.failed. Those are the names the code looks for. Resend’s overview did not list names, so confirm them in Resend. - Open the webhook’s details page. Resend says the signing secret is there.
- Paste the secret into Resend webhook secret and save.
What VisionScaper does
| Event | Result |
|---|---|
email.delivered |
Delivered |
email.bounced |
Bounced; contact marked bounced |
email.complained |
Opt-out recorded |
email.failed |
Failed |
Known gap: the signature check
- VisionScaper expects a header
X-Resend-Signatureholding the hex HMAC-SHA256 of the raw body using your Resend webhook secret. - Resend’s docs say it signs with Svix and sends
svix-id,svix-timestampandsvix-signatureheaders. - These do not look compatible. Whether a bridge exists is not verified. If so, VisionScaper answers “Bad signature” (403) and ignores the event. Sending is not affected.
- Until the VisionScaper team confirms, do not count on bounce handling from Resend. Use Postmark for marketing email if you need it.
Tips
- Pass the raw body when verifying. Re-formatted JSON breaks any signature check.
- Look at Resend’s webhook log for failures.
If something goes wrong
- 403 in Resend’s log. See the known gap.
- No events at all. Wrong address or wrong events selected.
Sources
- Resend, webhooks introduction: https://resend.com/docs/dashboard/webhooks/introduction (read 2026-10-15)
- Resend, verify webhook requests: https://resend.com/docs/webhooks/verify-webhooks-requests
- Plugin: includes/messaging-providers.php.