Loops Webhooks
Outbound event surface. Seventeen signed event types covering contact lifecycle, mailing-list membership, and email delivery, engagement and complaint signals, delivered by HTTP POST to one subscriber-configured endpoint per account and verified with an HMAC-SHA256 signature over {webhook-id}.{webhook-timestamp}.{raw-body}.
Loops Webhooks is one of 21 APIs that Loops publishes on the APIs.io network, described by an AsyncAPI event-driven specification.
Tagged areas include Webhook, Event, and Email. The published artifact set on APIs.io includes an AsyncAPI specification and API documentation.
This event API exposes
0 operations
across 17 channels,
and defines 42 schemas.
It is described by AsyncAPI 3.0.0, at version 1.21.6.
The API connects through a single server, {subscriberEndpoint} (https).
The identity and technical contract details declared by the specification.
contactUnsubscribed
message
Sent when a contact is unsubscribed from your audience, or when a contact is deleted from your audience (alongside contact.deleted). This is not the same as a…
contactCreated
message
Sent when a new contact is created in your audience. Contains a contactIdentity object and a full contact object with all of the new contact's properties (incl…
contactDeleted
message
Sent when a contact is deleted from your audience. Contains a contactIdentity object.
contactMailingListSubscribed
message
Sent when a contact is subscribed to a mailing list. Contains contactIdentity and mailingList objects. When double opt-in is enabled, this event only fires aft…
contactMailingListUnsubscribed
message
Sent when a contact is unsubscribed from a mailing list. This is not the same as a contact unsubscribing from your audience (see contact.unsubscribed). Contain…
transactionalEmailSent
message
Sent when a transactional email is sent to a contact. Contains a transactionalId value plus contactIdentity and email objects.
campaignEmailSent
message
Sent when a campaign email is sent to a contact. This event fires for every campaign send (for example, sending to 1,000 contacts produces 1,000 events). Conta…
loopEmailSent
message
Sent when a workflow email is sent to a contact. This event keeps its loop naming for compatibility (Loops was renamed to Workflows on May 6, 2026). This event…
emailDelivered
message
Sent when an email is delivered to its recipient. Contains sourceType (campaign, loop, or transactional) and the related campaignId, loopId (workflow ID), or t…
emailSoftBounced
message
Sent when an email soft bounces. Soft bounces are temporary delivery failures (for example, a connection timing out). Soft bounces are retried multiple times a…
emailHardBounced
message
Sent when an email hard bounces. Hard bounces are persistent delivery failures (for example, a mailbox that does not exist); the email will not be delivered. I…
emailClicked
message
Sent when a link in a campaign or workflow email is clicked. Not available for transactional emails because link clicks are not tracked for transactional email…
emailUnsubscribed
message
Sent when a recipient unsubscribes from marketing email or a mailing list using an email's "Unsubscribe" link. A contact.unsubscribed or contact.mailingList.un…
emailResubscribed
message
Sent when a recipient resubscribes to marketing email from an email's preference center ("Unsubscribe" link). Not available for transactional emails because un…
emailOpened
message
Sent when a campaign or workflow email is opened. Not available for transactional emails because email opens are not tracked for transactional emails. Contains…
emailSpamReported
message
Sent when a recipient reports your email as spam. Contains sourceType and the related campaignId, loopId (workflow ID), or transactionalId, plus contactIdentit…
testingTestEvent
message
Test event that can be triggered from the Webhooks settings page in Loops. Use this to verify that your endpoint is working and that your signature verificatio…
WebhookBasePayload
object
4 properties
4 required
WebhookCampaignEmailSentPayload
object
WebhookContact
object
Full contact object, including custom properties.
11 properties
10 required
WebhookContactCreatedPayload
object
WebhookContactDeletedPayload
object
WebhookContactIdentity
object
3 properties
3 required
WebhookContactMailingListSubscribedPayload
object
WebhookContactMailingListUnsubscribedPayload
object
WebhookContactUnsubscribedPayload
object
WebhookEmail
object
3 properties
3 required
WebhookEmailClickedPayload
object
WebhookEmailDeliveredPayload
object
WebhookEmailHardBouncedPayload
object
WebhookEmailMetricPayload
object
WebhookEmailOpenedPayload
object
WebhookEmailResubscribedPayload
object
WebhookEmailSoftBouncedPayload
object
WebhookEmailSpamReportedPayload
object
WebhookEmailUnsubscribedPayload
object
WebhookLoopEmailSentPayload
object
WebhookMailingList
object
Details of the mailing list.
4 properties
4 required
WebhookMarketingEmailMetricPayload
object
WebhookTestingTestEventPayload
object
4 properties
4 required
WebhookTransactionalEmailSentPayload
object
LoopsWebhookHeaders
object
Signature headers Loops sends with every webhook request. Verify by HMAC-SHA256 over {webhook-id}.{webhook-timestamp}.{raw-body} using the base64-decoded porti…
3 properties
3 required
The full machine-readable AsyncAPI contract behind this narrative.
Other APIs Loops publishes across the network.