Every webhook delivery shares an envelope:Documentation Index
Fetch the complete documentation index at: https://docs.vibefollow.com/llms.txt
Use this file to discover all available pages before exploring further.
id is unique per delivery and stable across retries — dedupe on it if you’re persisting events.Event catalog
email.opened
email.opened
Fires when the recipient opens an email Vibefollow sent on your behalf.TypeScript shapeExample payload
Tracking pixels are stripped if the recipient’s mail client blocks them — do not assume a missing open means the email wasn’t read.
email.clicked
email.clicked
Fires when the recipient clicks any tracked link in the email. One event per click — the same recipient clicking three links produces three events.TypeScript shapeExample payload
email.bounced
email.bounced
Fires when Postmark reports a bounce or spam complaint. Bounce type guide
bounceType distinguishes the kind so you can decide whether to suppress the address.TypeScript shapebounceType | What it means | Action |
|---|---|---|
hard | Permanent failure — address invalid | Suppress; don’t email again |
soft | Temporary — mailbox full, server timeout | Vibefollow retries; no action needed |
transient | Routing hiccup | Vibefollow retries |
complaint | Marked as spam | Suppress; also indicates content/relevance issue |
unknown | Postmark couldn’t classify | Investigate manually |
email.replied
email.replied
Fires when the recipient replies to a Vibefollow-sent email. The full plain-text body is included, along with a tone classification used internally to auto-pause sends to users who reply negatively.TypeScript shapeTone classifications
tone | Vibefollow’s reaction |
|---|---|
positive | Continue lifecycle as normal |
neutral | Continue lifecycle as normal |
negative | Auto-pause further sends to this user |
unsubscribe_request | Treat as unsubscribe; also emits email.unsubscribed |
Vibefollow does not auto-reply on your behalf in v1. Inbound replies route to your project’s reply-to address; the webhook is a copy for your systems to react to.
email.unsubscribed
email.unsubscribed
Fires when the recipient unsubscribes — through the one-click Source values
List-Unsubscribe header (RFC 8058), through a reply that scored as unsubscribe_request, or through a manual flag in the dashboard.TypeScript shapesource | Triggered by |
|---|---|
one_click | Gmail / Outlook one-click unsubscribe button |
reply_request | Inbound reply tone-classified as unsubscribe |
manual | Founder flagged the user in the dashboard |
Unsubscribed users are excluded from every future trigger evaluation. You don’t need to do anything — this webhook is informational so your CRM can mirror the state.