Emotive · AsyncAPI Specification
Emotive Webhooks
Version
View Spec
View on GitHub
CompanyMarketingSMSMessagingeCommerceMarketing AutomationText Message MarketingConversational CommerceWebhooksCustomer DataSegmentationAttributionAsyncAPIWebhooksEvents
AsyncAPI Specification
generated: '2026-08-13'
method: searched
source: https://help.emotive.io/docs/integrations/custom-helpdesk
docs:
- https://help.emotive.io/docs/integrations/custom-helpdesk
- https://help.emotive.io/docs/integrations/create-a-webhook-in-woocommerce
- https://emotive.gitbook.io/emotive-pixel/custom-site-pixel-setup
derived_from:
- openapi/emotive-sensus-webhook-openapi.yml
- openapi/emotive-helpdesk-openapi.yml
asyncapi_published: false
asyncapi_note: >-
Emotive publishes no AsyncAPI document. It does run a real, two-directional event
surface, documented in prose and partly described by the Sensus Webhooks OpenAPI, so
this file is a webhook catalog rather than an event-broker spec. Nothing here is
invented — every entry traces to a published Emotive page or a published Emotive spec.
event_surface:
inbound: true
outbound: true
streaming: false
broker: null
outbound:
description: >-
Webhooks Emotive CALLS. A brand integrating a custom helpdesk must stand up two
endpoints and register them with the Helpdesk service via POST /webhooks/config.
registration:
operation: POST https://api-gw.emotiveapp.co/helpdesk/webhooks/config
auth: 'X-API-Key: {brand_token}'
body_fields: [status, platform, webhook_url, trigger]
example_platform: custom
delete: DELETE https://api-gw.emotiveapp.co/helpdesk/webhooks/config/{webhook_id}
list: GET https://api-gw.emotiveapp.co/helpdesk/webhooks/config
events:
- name: ticket.create
trigger: create
description: >-
Fired when a ticket is created in the Emotive helpdesk. The brand acknowledges by
POSTing /tickets/{helpdesk_ticket_id} with external_ticket_id and external_user_id.
source: https://help.emotive.io/docs/integrations/custom-helpdesk
- name: ticket.note
trigger: update
description: >-
Fired on a message from the SMS subscriber against an existing ticket. Once a ticket
exists for a brand user, all subsequent ticket events arrive as ticket notes.
source: https://help.emotive.io/docs/integrations/custom-helpdesk
constraints:
- An SMS subscriber can have only one active ticket at a time.
- A brand may hold only one active brand token.
fallback:
operation: GET https://api-gw.emotiveapp.co/helpdesk/tickets/polling/fallback
operationId: controllers.tickets.webhook_trigger_data
description: Polling fallback for brands that cannot receive webhook deliveries.
security:
signature_header: null
signing_secret: null
replay_protection: null
note: >-
Emotive documents no signature, no shared secret and no replay window for the
callbacks it makes to a brand's endpoint. The only credential in the flow travels
the other way (the brand's X-API-Key to Emotive). An integrator has no published
means of verifying that a delivery came from Emotive.
retries: undocumented
delivery_guarantee: undocumented
inbound:
description: >-
Webhooks Emotive RECEIVES. These are declared operations in the published Sensus
Webhooks OpenAPI document.
spec: openapi/emotive-sensus-webhook-openapi.yml
base_url: https://api-gw.emotiveapp.co/sensus-webhook
events:
- name: subscriber.create
operation: POST /v1/subscriber
operationId: controllers.webhooks.subscriber_handler
payload_schema: Subscriber
accepted_status: 202
platforms: [alloy, emotive, privy]
source_types: [EMOTIVE_POPUP, EMOTIVE_EMBEDDED, BACK_IN_STOCK_POPUP, LIST_GROWTH]
- name: subscriber.create.bulk
operation: POST /v1/subscriber/bulk
operationId: controllers.webhooks.bulk_subscriber_handler
payload_schema: BulkSubscriber
accepted_status: 202
- name: profile.properties.set
operation: POST /v1/profiles/properties
operationId: controllers.webhooks.profile_handler
payload_schema: ProfileProperty
accepted_status: 202
platforms: [alloy, paragon, custom, zapier]
- name: shopify.webhook
operation: POST /v1/shopify
operationId: controllers.webhooks.shopify_webhook_handler
- name: twilio.message.callback
operation: POST /v1/messages/twilio/callback
operationId: controllers.webhooks.twilio_callback_handler
payload_schema: TwilioCallbackBody
- name: qa.message.callback
operation: POST /v1/messages/qa/callback
operationId: controllers.webhooks.qa_callback_handler
payload_schema: QAMessageCallbackBody
- name: alloy.error
operation: POST /v1/errors/alloy
operationId: controllers.webhooks.alloy_error_handler
payload_schema: AlloyError
client_side_events:
description: >-
Browser-side events the Emotive Pixel (CartAI / EdgeTag) sends from a merchant's site.
Not a server webhook, recorded here because it is the third leg of Emotive's event surface.
loader: edgetag
source: https://emotive.gitbook.io/emotive-pixel/custom-site-pixel-setup
events: [PageView, Signup, Subscribe, ViewContent, AddToCart, Purchase]
gaps:
- No AsyncAPI document.
- No signature verification on outbound webhook deliveries.
- No documented retry policy, backoff, or delivery guarantee.
- No event catalog page enumerating the outbound events; they are described only inside the custom-helpdesk setup guide.