{
"type": "suppression.created",
"webhook_id": "abe11757-2886-4b55-96f1-0e0afc95795a",
"timestamp": "2024-05-06T12:57:06.451529527Z",
"data": {
"account_id": "4cdd7bdd-294e-4762-892f-83d40abf5a87",
"origin": "system",
"recipient": "bounced@example.com",
"created_at": "2024-05-06T12:57:06.451529617Z",
"expires_at": "2024-06-05T12:57:06.451529617Z",
"reason": "Invalid Recipient",
"sending_domain": "your-domain.com"
}
}Suppression Events
suppression.created Webhook Event
The suppression.created webhook fires when AhaSend suppresses an address, for example after a hard bounce, or when a suppression gets a new reason.
WEBHOOK
suppression.created
{
"type": "suppression.created",
"webhook_id": "abe11757-2886-4b55-96f1-0e0afc95795a",
"timestamp": "2024-05-06T12:57:06.451529527Z",
"data": {
"account_id": "4cdd7bdd-294e-4762-892f-83d40abf5a87",
"origin": "system",
"recipient": "bounced@example.com",
"created_at": "2024-05-06T12:57:06.451529617Z",
"expires_at": "2024-06-05T12:57:06.451529617Z",
"reason": "Invalid Recipient",
"sending_domain": "your-domain.com"
}
}AhaSend sends this event when a suppression is created for an email address, or when an existing suppression gets a new reason.
Why suppressions are created:
- A hard bounce from the email address (
origin: system) - A message to the address that fails with temporary errors on several delivery attempts until it expires (
origin: system) - The recipient reports a transactional email as spam (reason
FBL Complaint Report,origin: recipient) - The recipient unsubscribes through the unsubscribe link of a transactional email (reason
Unsubscribed,origin: recipient) - You create a suppression through the API (
origin: api). A request without a domain creates a suppression on each domain of your account, and sends one event for each.
expires_at of its request. See suppression durations.
Impact: Future emails to this address will be automatically suppressed until the suppression expires or is manually removed.
data is the suppression as it was right after the change, and timestamp is the time of the change. For a suppression that got a new reason, data.created_at stays the time the suppression was first created, so store suppressions by data.recipient and data.sending_domain.
No event:
- A repeat of an existing suppression, such as a second bounce or a second click on the same unsubscribe link, even when it moves the expiry later
- The removal of expired suppressions.
data.expires_atalready says when the suppression ends.
on_suppression_created (Suppression Created in the dashboard).
When it’s sent: When a new suppression is added to your account, or when an existing suppression gets a new reason, for example when a recipient unsubscribes after a bounce.
Related Guides
- API authentication, Permission scopes, Webhook setup.
- Event reference, Webhook CLI, Local webhook testing.
- Signature verification, Retry policy, API errors.
- API rate limits, Suppression durations, Suppression Deleted.
Body
application/json
The webhook ID (the same ID as returned by the Create Webhook API)
Response
Webhook received successfully

