Playable · AsyncAPI Specification
Playable Webhooks
Version
View Spec
View on GitHub
Companymarketing-gamificationinteractive-marketingcampaign-managementzero-party-datalead-generationloyaltymartechwebhooksoauth2AsyncAPIWebhooksEvents
AsyncAPI Specification
generated: '2026-08-12'
method: searched
source: https://help.playable.com/en/articles/5807069-webhook-integration
spec_type: none
asyncapi_published: false
asyncapi_note: >-
No AsyncAPI document is published. /asyncapi.yaml and /asyncapi.json return 404 on playable.com and
api.playable.com (403 AccessDenied on the sdk.playable.com CDN origin), there is no event-catalog
page, and the github.com/playable organization has no public repositories and no verifiable link
to this company. The event surface below is captured as a webhook catalog instead, which is
what the provider actually documents. NOTHING here is fabricated into AsyncAPI shape.
webhooks:
direction: outbound
configured_where: per campaign, in the platform integrations UI (not via the REST API)
entitlement: 'Core and Premium plans ("standard and web-hook integrations"); not on Essentials'
transport:
method: POST
content_types:
- application/x-www-form-urlencoded # labelled "URL encoded" / "Form" in the UI
- application/json
authentication:
- {scheme: oauth2, note: 'token-based; a valid access token is placed in the request header'}
- {scheme: bearer, note: 'pre-shared token in the request header'}
- {scheme: basic, note: 'Base64-encoded username and password'}
triggering:
model: >-
A single configurable "Event type" per webhook — what happens on the campaign that fires the
call. Playable's documented typical choice is the Terms & Conditions field on the registration
form, i.e. the webhook fires when a player submits the registration form with consent.
published_event_enum: false
note: >-
The full list of selectable event types is only visible inside the authenticated campaign
builder; it is not published in the help center, so no event names are asserted here.
payload:
schema_published: false
field_mapping: >-
Fields are mapped manually — the webhook cannot read the receiving database, so the operator
binds each Playable field to a target attribute name. There is no fixed payload contract; the
body shape is whatever the operator mapped.
available_source_data:
- registration form fields (e.g. name, email)
- campaign data (e.g. campaign name, IP address)
- game flow results (e.g. winner / loser status)
delivery:
retry_policy: not published
signing: not published
signature_header: null
ip_allowlist: not published
timeout: not published
observability:
delivery_log: 'Campaign > Activity, with the receiving system''s HTTP status per attempt'
status_codes: errors/playable-integration-status-codes.yml
testing:
guidance: >-
Playable recommends firing the campaign's demo URL and confirming the row lands under
Activity > Registration before going live. See sandbox/playable-sandbox.yml.
related_surfaces:
rest_read_side:
note: >-
The REST API exposes the same data pull-style rather than push-style — GET
/v1/campaign/{campaign}/registrations, /email-log, /sms-log and /integrations let a consumer
poll what the webhook would have pushed, including which integrations a campaign has wired.
browser_events:
note: >-
Separately, @playable-marketing/campaign-sdk exposes an in-page event stream on window.sdk for
client-side campaign events. That is a browser surface, not a server-delivered event.
docs: https://sdk.playable.com/guide/introduction.html
x-evidence:
- {fetched: '2026-08-12', url: 'https://help.playable.com/en/articles/5807069-webhook-integration', http_status: 200}
- {fetched: '2026-08-12', url: 'https://help.playable.com/en/articles/6969461-api-integration-logs-and-status-codes', http_status: 200}