Prompt
email webhooks bounce complaint open click
Latest observation
Oct 4, 2026
OpenAI APIWeb search: off
Here’s a quick cheat sheet for the main email webhooks/events you mentioned:
Common email webhook events
1) Bounce
Triggered when an email can’t be delivered.
- Hard bounce: permanent failure
Examples: invalid email address, domain doesn’t exist. - Soft bounce: temporary failure
Examples: mailbox full, temporary server issue.
Useful fields
- recipient email
- bounce type/status
- SMTP response
- reason/message
- timestamp
- message ID
2) Complaint
Triggered when a recipient marks your email as spam/junk.
Useful fields
- recipient email
- complaint timestamp
- message ID
- campaign/message metadata
- feedback type, if provided
Why it matters
- High complaint rates can hurt sender reputation.
- Often used to suppress future sends to that recipient.
3) Open
Triggered when an email is opened.
How it works
- Usually detected via a tracking pixel.
- Can be unreliable due to image blocking, privacy features, and email client behavior.
Useful fields
- recipient email
- open timestamp
- device/client info, if available
- message ID
- IP address, if allowed by provider
4) Click
Triggered when a recipient clicks a tracked link in the email.
Useful fields
- recipient email
- clicked URL
- click timestamp
- message ID
- campaign metadata
- user agent / IP, if provided
Why it matters
- Stronger engagement signal than opens.
- Useful for conversion tracking and engagement scoring.
Typical webhook payload shape
Most providers send something like:
{
"event": "click",
"timestamp": "2026-10-04T12:34:56Z",
"message_id": "abc123",
"recipient": "user@example.com",
"metadata": {
"campaign_id": "camp_001"
}
}
Best practices
- Deduplicate events using event ID or message ID + timestamp.
- Verify signatures on webhook requests.
- Store raw payloads for debugging/auditing.
- Suppress bounces/complaints automatically.
- Treat opens as approximate, not absolute truth.
If you want, I can also give you:
- a sample webhook schema for bounce/complaint/open/click,
- Node.js/Python handler examples, or
- a comparison table of these events.