Skip to main content
WEBHOOK
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.
A bounce or an expired message does not suppress the address when the receiving server rejected the message for policy reasons (for example a blocklist or a spam filter), when the failure was on AhaSend’s side, or, for transactional email, when a later message to the address was delivered. An unsubscribe from a campaign email or a spam complaint about one creates no suppression. It sends contact events instead. Expiration: A suppression after delivery errors expires after at most 30 days, depending on the error. A suppression after an unsubscribe or a spam complaint is effectively permanent. A suppression made through the API expires at the 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_at already says when the suppression ends.
Setting: 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.

Body

application/json
type
enum<string>
required

The event type

Available options:
suppression.created,
suppression.deleted
webhook_id
string<uuid>
required

The webhook ID (the same ID as returned by the Create Webhook API)

timestamp
string<date-time>
required

When the suppression was created, changed or deleted (ISO 8601 format)

data
object
required

The suppression as it was right after the change, or right before the delete for suppression.deleted.

Response

Webhook received successfully