Sending

Webhooks (delivery events)

Configure your email provider to POST delivery events back to Nudgel. This keeps your message timeline accurate and auto-populates the suppression list.

How it works

When your email provider attempts to deliver a message, it knows the result — delivered, bounced, marked as spam. Without webhooks, Nudgel never hears about these outcomes and your message status stays at sent forever. With webhooks configured, each event is POSTed to a Nudgel endpoint, parsed, and written to delivery_events. The message timeline in your dashboard updates in real time.

Hard bounces and spam complaints additionally trigger automatic suppression — Nudgel adds the address to your tenant's suppression list so future sends to that address are blocked without making a provider call.

Webhook URL format

Every provider gets its own endpoint under the same pattern:

text
https://api-raven-cloud.autotribes.app/v1/webhooks/email/{provider}/{tenantId}

Where {provider} is one of: ses, postmark, sendgrid, mailgun, brevo, mailjet.

Your tenantId (UUID) is visible in Settings → General in the dashboard. It is how Nudgel routes the incoming webhook to your tenant.

NO AUTH ON WEBHOOK ENDPOINTS

Webhook endpoints are public — your provider needs to reach them without credentials. Nudgel validates the payload shape and provider-specific signature headers where the provider supports it (Postmark sends a X-Postmark-Signature header, for example).

Setup per provider

ProviderWhere to configureRecommended events
AWS SESSES → Configuration sets → [set] → Event destinations → SNS → HTTPS subscriptionDelivery, Bounce, Complaint
PostmarkServer → Message Streams → [stream] → WebhooksDelivery, Bounce, Spam Complaint
SendGridSettings → Mail Settings → Event WebhookDelivered, Bounce, Spam Report, Unsubscribe
MailgunSending → WebhooksDelivered, Permanent failure, Complained, Unsubscribed
BrevoTransactional → Settings → WebhookDelivered, Hard bounce, Spam, Unsubscribed
MailjetAccount Settings → Event notifications & callbackssent, bounce, spam, unsub

AWS SES — extra steps

SES does not POST directly to HTTP — it routes events through SNS. You need to:

  1. Create an SNS topic in the same region as your SES
  2. Create an HTTPS subscription on the topic pointing to the Nudgel webhook URL
  3. Nudgel auto-confirms the subscription request from AWS
  4. Add the SNS topic as an event destination on your SES configuration set
textSES webhook URL
https://api-raven-cloud.autotribes.app/v1/webhooks/email/ses/{YOUR_TENANT_ID}

Postmark

textPostmark webhook URL
https://api-raven-cloud.autotribes.app/v1/webhooks/email/postmark/{YOUR_TENANT_ID}

SendGrid

textSendGrid webhook URL
https://api-raven-cloud.autotribes.app/v1/webhooks/email/sendgrid/{YOUR_TENANT_ID}

Mailgun

textMailgun webhook URL
https://api-raven-cloud.autotribes.app/v1/webhooks/email/mailgun/{YOUR_TENANT_ID}

Brevo

textBrevo webhook URL
https://api-raven-cloud.autotribes.app/v1/webhooks/email/brevo/{YOUR_TENANT_ID}

Mailjet

textMailjet webhook URL
https://api-raven-cloud.autotribes.app/v1/webhooks/email/mailjet/{YOUR_TENANT_ID}

Events Nudgel handles

Incoming event typeNudgel action
DeliveredUpdates message status to delivered, writes delivery_events row
Hard bounceUpdates status to bounced, writes event, adds to suppression list (hard_bounce)
Soft bounceWrites event, does not suppress (temporary failure)
Spam complaintWrites event, adds to suppression list (spam_complaint)
UnsubscribeWrites event, adds to suppression list (unsubscribed)
OpenWrites event (if provider sends it — not all do)
ClickWrites event (if provider sends it)

SMTP has no webhooks

SMTP is a fire-and-forget protocol. If you use the SMTP adapter, Nudgel cannot receive delivery events from the server. Your message status will stop at sent and the suppression list will not be auto-populated. Switch to a native adapter if delivery tracking matters to your use case.