Playable · AsyncAPI Specification

Playable Webhooks

Version

View Spec View on GitHub Companymarketing-gamificationinteractive-marketingcampaign-managementzero-party-datalead-generationloyaltymartechwebhooksoauth2AsyncAPIWebhooksEvents

AsyncAPI Specification

Raw ↑
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}