Sendlane · AsyncAPI Specification
Sendlane Webhooks
Version
View Spec
View on GitHub
Email MarketingSMS MarketingE-CommerceMarketing AutomationContactsCampaignsSegmentationConsent ManagementSuppressionEvent TrackingRevenue AttributionAsyncAPIEvents
AsyncAPI Specification
generated: '2026-08-13'
method: derived
source: openapi/sendlane-openapi.yml
also_searched:
- https://sendlane.stoplight.io/docs/api-documentation/37068c432a5f1-custom-integrations
- https://help.sendlane.com/articles/3807111349-sendlane-custom-integration-setup-api-v2
name: Sendlane Event Surface (Custom Integration Webhooks)
description: >-
Sendlane's event surface, which the provider labels "Custom Integration
Webhooks". READ THE DIRECTION CAREFULLY — these are INBOUND. The integrator
POSTs e-commerce events to Sendlane; Sendlane does not call back out to the
integrator. There is no outbound webhook subscription API, no delivery retry
policy and no signature-verification scheme.
direction: inbound
transport: HTTPS POST
asyncapi_published: false
outbound_webhooks: false
signature_verification: false
retry_policy: null
base_url: https://api.sendlane.com/v2
authentication: 'Authorization: Bearer <SENDLANE_API_TOKEN>'
event_count: 9
events:
- name: Added To Cart
operationId: post-tracking-added-to-cart
path: /tracking/added-to-cart
schema: AddedToCartRequest.v2
description: Customer added a product to their cart.
- name: Back In Stock
operationId: post-tracking-back-in-stock
path: /tracking/back-in-stock
schema: BackInStockRequest.v2
description: >-
Customer requested notification for an out-of-stock product. Creates a
BackInStockContact tying the contact to a product id.
- name: Category Added
operationId: post-tracking-category-added
path: /tracking/category-added
schema: CategoryAddedRequest.v2
description: Customer browsed or was assigned a product category.
- name: Checkout Started
operationId: post-tracking-checkout-started
path: /tracking/checkout-started
schema: CheckoutStartedRequest.v2
description: Customer began checkout — the abandoned-cart trigger.
- name: Customer Added
operationId: post-tracking-customer-added
path: /tracking/customer-added
schema: CustomerAddedRequest.v2
description: A new customer record was created in the connected store.
- name: Order Placed
operationId: post-tracking-order-placed
path: /tracking/order-placed
schema: OrderPlacedRequest.v2
description: >-
Order completed. Carries line items, discounts and tax lines
(LineItems.v2, Discount.v2, TaxLine.v2) — the payload that drives revenue
attribution.
- name: Product Added
operationId: post-tracking-product-added
path: /tracking/product-added
schema: ProductAddedRequest.v2
description: A product was added to the connected store catalog.
- name: Product Viewed
operationId: post-tracking-product-viewed
path: /tracking/product-viewed
schema: ProductViewedRequest.v2
description: Customer viewed a product page — the browse-abandonment trigger.
- name: Custom Event
operationId: post-tracking-event
path: /tracking/event
schema: CustomEventRequest.v2
description: >-
Arbitrary event, typed by an event registered under a custom integration.
The escape hatch for anything not in the eight typed events above.
event_type_registry:
description: >-
Custom event TYPES are managed as first-class resources under a custom
integration, so an integrator can register its own event vocabulary before
emitting it.
operations:
- operationId: list-custom-integrations
method: GET
path: /integrations/custom
- operationId: create-custom-integration
method: POST
path: /integrations/custom
- operationId: delete-custom-integration
method: DELETE
path: /integrations/custom/{integrationToken}
- operationId: index-custom-events
method: GET
path: /integrations/custom/{integrationToken}/events
- operationId: create-custom-event
method: POST
path: /integrations/custom/{integrationToken}/events
- operationId: show-custom-event
method: GET
path: /integrations/custom/{integrationToken}/events/{eventId}
- operationId: delete-custom-event
method: DELETE
path: /integrations/custom/{integrationToken}/events/{eventId}
browser_ingestion:
description: >-
The same event stream can be produced client-side by the Sendlane Beacon
script instead of server-side POSTs.
loader: https://sendlane.com/scripts/pusher.js
install: '<script src="https://sendlane.com/scripts/pusher.js" async data-token="INTEGRATION_TOKEN"></script>'
see: components/sendlane-components.yml
gaps:
- >-
No AsyncAPI document is published. The event surface is described only as REST
POST operations inside the OpenAPI, so there is no channel/message contract an
event tool can consume.
- >-
No outbound webhooks. A system that needs to react to something happening
INSIDE Sendlane (a send completing, a contact unsubscribing, a bounce) has no
push option and must poll — e.g. GET /contacts/unsubscribed or
GET /campaigns/{campaignId}/report on a schedule.
- >-
Historical event backfill requires a `time` or `date_created` field on the
payload, per the provider's custom-integration setup article; otherwise events
are stamped at receipt.
Work with this as data
Every AsyncAPI spec here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for asyncapi
4 MCP tools reach this
find_asyncapisBrowse and filter every AsyncAPI spec in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This AsyncAPI spec
curl "https://apis.io/api/v1/asyncapis/sendlane-webhooks"
All asyncapi
curl "https://apis.io/api/v1/asyncapis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.