AWS SES feedback setup for Sally Marketing
Sally can send through AWS SES API or through SES SMTP. For delivery feedback, configure SES event publishing and point it at Sally's webhook.
Webhook endpoint:
POST https://YOUR-SALLY-API/marketing/webhooks/aws-ses
Optional shared secret:
MARKETING_AWS_SES_WEBHOOK_SECRET=long-random-secret
If configured, call the webhook as:
https://YOUR-SALLY-API/marketing/webhooks/aws-ses?secret=long-random-secret
What Sally handles
Sally ingests SES/SNS events and updates the delivery ledger:
Delivery -> SENT + email.delivered event
Bounce -> BOUNCED + email.bounced event
Complaint -> COMPLAINED + email.complained event + withdraw newsletter consent
Reject -> FAILED + email.reject event
Open -> OPENED + email.opened event
Click -> CLICKED + email.clicked event
Sally matches events by SES mail.messageId against MarketingDelivery.providerMessageId.
AWS SES steps
Use the same AWS region as your sender, for Ireland:
eu-west-1
1. Verify identity
In AWS SES → Verified identities:
- verify your domain, or
- verify the exact From email address, e.g.
marketing@example.com
If your SES account is still in sandbox mode, verify recipient addresses too or request production access.
2. Create SNS topic
In AWS SNS → Topics:
- create a Standard topic, e.g.
sally-marketing-ses-events - create an HTTPS subscription
- endpoint:
https://YOUR-SALLY-API/marketing/webhooks/aws-ses?secret=long-random-secret
AWS will send a SubscriptionConfirmation message. Sally returns the subscribeUrl; open that URL or confirm the subscription from AWS SNS.
3. Create SES configuration set
In AWS SES → Configuration sets:
- create configuration set, e.g.
sally-marketing - add Event destination
- choose SNS
- select the SNS topic above
- enable events:
- Sends
- Deliveries
- Bounces
- Complaints
- Rejects
- Opens
- Clicks
4. Use configuration set when sending
Current Sally sends can receive feedback for API sends when SES event publishing emits mail.messageId matching the provider message id. If you need strict per-sender configuration-set selection, add the configuration set name to the sender config and extend the SES sender to include it in the API payload.
For SES SMTP, event publishing support depends on SES headers/configuration. Prefer the AWS SES API sender for reliable feedback.
Notes
- Complaints automatically withdraw newsletter consent for the contact.
- Bounces mark the specific delivery as
BOUNCED; a future suppression-list feature should prevent future sends to repeated hard bounces. - The webhook stores raw provider payloads in
MarketingEvent.payloadfor audit/debugging.