Skip to main content
This page provides a complete reference of all 22 webhook event types that Lettr can send, organized into five categories.

Message Events

These events track the delivery lifecycle of emails you send through Lettr.

message.injection

Triggered when an email is accepted by Lettr and queued for delivery. This is the first event in any email’s lifecycle.

message.delivery

Triggered when an email is successfully delivered to the recipient’s mail server. This is the most reliable indicator that the email reached its destination.
A delivery event means the recipient’s mail server accepted the email. It does not guarantee the email reached the inbox — it could be filtered to spam or quarantined by the recipient’s email provider.

message.bounce

Triggered when an email cannot be delivered. Bounces can be hard (permanent failure, such as a non-existent address) or soft (temporary issue, such as a full mailbox).
Always handle hard bounces by removing the address from your mailing list. Continuing to send to hard-bounced addresses damages your sender reputation.

message.delay

Triggered when email delivery is temporarily delayed. Lettr will continue retrying delivery automatically. Delays are common with large mail providers that throttle incoming connections.

message.out_of_band

Triggered when an out-of-band bounce occurs. These arrive after the initial delivery appeared successful — the receiving server accepted the message initially, then later determined it could not be delivered and sent a separate bounce notification.

message.spam_complaint

Triggered when a recipient marks an email as spam. This is a serious signal that should trigger immediate suppression.
Spam complaints severely impact your sender reputation. Always immediately suppress addresses that generate complaints and never send to them again. High complaint rates can result in your sending being suspended.

message.policy_rejection

Triggered when an email is rejected due to a policy rule before delivery was attempted. This could be due to content filtering, rate limits, or a configuration issue.

Engagement Events

These events indicate that the recipient interacted with your email. Engagement events require open and/or click tracking to be enabled.
The engagement event category contains a known typo in the event names: engagament (missing an ‘e’). This is intentional for backward compatibility and must be used exactly as shown.

engagament.open

Triggered when a recipient opens an email. Open tracking works by embedding a small invisible image in the email. Some email clients block images by default or prefetch them automatically, so open rates are an approximation rather than an exact count.

engagament.initial_open

Triggered on the first open of an email by a recipient. Subsequent opens of the same email generate engagament.open events instead.

engagament.click

Triggered when a recipient clicks a link in an email. Requires click tracking to be enabled. Click data is generally more reliable than open data because it requires deliberate user action.

engagament.amp_open

Triggered when a recipient opens an email delivered in AMP format.

engagament.amp_initial_open

Triggered on the first open of an AMP email by a recipient.

engagament.amp_click

Triggered when a recipient clicks a link within an AMP email.

Generation Events

These events occur when there is a problem generating (assembling and preparing) a message for delivery.

generation.generation_failure

Triggered when something goes wrong while preparing the message for delivery. This is typically an infrastructure-level issue rather than something caused by your email content.

generation.generation_rejection

Triggered when a message is blocked during the generation phase — the point where the email is assembled and prepared for sending.

Unsubscribe Events

These events track when recipients opt out of receiving your emails.

unsubscribe.list_unsubscribe

Triggered when a recipient unsubscribes via the List-Unsubscribe header, a one-click unsubscribe mechanism built into email standards. Triggered when a recipient unsubscribes by clicking an unsubscribe link in the email body.

Relay Events

These events are triggered by inbound email processing on your configured inbound domains.

relay.relay_injection

Triggered when an inbound email is received and queued for processing.

relay.relay_delivery

Triggered when an inbound email is successfully delivered to your configured endpoint.

relay.relay_rejection

Triggered when an inbound email is rejected.

relay.relay_tempfail

Triggered when delivery of an inbound email to your endpoint temporarily fails. Lettr will retry automatically.

relay.relay_permfail

Triggered when delivery of an inbound email to your endpoint permanently fails after all retry attempts are exhausted.

Complete Event Type Reference

CategoryEvent TypeLabel
Messagemessage.injectionInjection
Messagemessage.deliveryDelivery
Messagemessage.bounceBounce
Messagemessage.delayDelay
Messagemessage.out_of_bandOut of Band
Messagemessage.spam_complaintSpam Complaint
Messagemessage.policy_rejectionPolicy Rejection
Engagementengagament.openOpen
Engagementengagament.initial_openInitial Open
Engagementengagament.clickClick
Engagementengagament.amp_openAMP Open
Engagementengagament.amp_initial_openAMP Initial Open
Engagementengagament.amp_clickAMP Click
Generationgeneration.generation_failureGeneration Failure
Generationgeneration.generation_rejectionGeneration Rejection
Unsubscribeunsubscribe.list_unsubscribeList Unsubscribe
Unsubscribeunsubscribe.link_unsubscribeLink Unsubscribe
Relayrelay.relay_injectionRelay Injection
Relayrelay.relay_deliveryRelay Delivery
Relayrelay.relay_rejectionRelay Rejection
Relayrelay.relay_tempfailRelay Temporary Failure
Relayrelay.relay_permfailRelay Permanent Failure