StackAdapt · AsyncAPI Specification

Stackadapt Webhooks

Version

View Spec View on GitHub Programmatic AdvertisingDigital AdvertisingCampaign ManagementAd TechDSPDemand-Side PlatformNative AdvertisingDisplay AdvertisingVideo AdvertisingConnected TVAudience TargetingReal-Time BiddingConversion TrackingPerformance ReportingAsyncAPIWebhooksEvents

AsyncAPI Specification

stackadapt-webhooks.yml Raw ↑
generated: '2026-08-13'
method: derived
source: graphql/stackadapt-schema.graphql
spec_type: none
note: >-
  StackAdapt publishes NO AsyncAPI document — /asyncapi.yaml and /asyncapi.json were not served
  on any host, and no event catalogue page is publicly crawlable. It does, however, ship a real
  first-party webhook surface, and that surface is fully described by the GraphQL schema already
  captured in this repo: a Webhook entity, a WebhookEvent enum, a webhooks query and three
  management mutations. Everything below is read from that SDL. Nothing is invented — in
  particular, no payload schema is recorded, because the schema describes the SUBSCRIPTION
  object and not the body StackAdapt POSTs to the subscriber URL.

surface: webhooks
transport: https
delivery: outbound HTTP POST to a subscriber-supplied URL

events:
- name: CAMPAIGN_CREATION
  title: Campaign Creation
  description: Fired when a campaign is created.
  source: 'graphql/stackadapt-schema.graphql#WebhookEvent'
- name: CAMPAIGN_UPDATES
  title: Campaign Updates
  description: Fired when a campaign is updated.
  source: 'graphql/stackadapt-schema.graphql#WebhookEvent'
- name: CREATIVE_CREATION
  title: Creative Creation
  description: Fired when a creative is created.
  source: 'graphql/stackadapt-schema.graphql#WebhookEvent'

event_count: 3

subscription_object:
  type: Webhook
  source: 'graphql/stackadapt-schema.graphql#Webhook'
  fields:
  - {name: id, type: 'ID!', description: ID of the webhook}
  - {name: name, type: 'String!', description: Name of the webhook}
  - {name: event, type: 'WebhookEvent!', description: Event type of webhook}
  - {name: url, type: 'String!', description: 'URL that the webhook will be sent to. Must start with https://'}
  - {name: active, type: 'Boolean!', description: Whether the webhook is active}
  - {name: disableMail, type: 'Boolean!', description: Whether to disable the mail delivery when webhook is present, if applicable}
  - {name: createdAt, type: 'ISO8601DateTime!'}
  - {name: updatedAt, type: 'ISO8601DateTime!'}

management:
  list: 'Query.webhooks -> WebhookConnection (Relay cursor pagination, totalCount)'
  create: 'Mutation.createWebhook(input: CreateWebhookInput!): CreateWebhookPayload!'
  update: 'Mutation.updateWebhook(input: UpdateWebhookInput!): UpdateWebhookPayload!'
  delete: 'Mutation.deleteWebhook(input: DeleteWebhookInput!): DeleteWebhookPayload!'
  source: graphql/stackadapt-schema.graphql

transport_requirements:
  https_only: true
  evidence: 'CreateWebhookInput.url — "The url that the webhook send to. Must start with https://."'

related_event_surfaces:
- name: Data Hub Webhook API
  graphql_field: 'Query.dataHubWebhookApi / Mutation.dataHubWebhookApi'
  input: DataHubWebhookApiUpsertDataHubProfilesRequestInput
  direction: inbound
  note: >-
    An INBOUND webhook receiver, not an outbound event feed — a namespace for pushing profile
    records into StackAdapt Data Hub. Recorded here for completeness because the name collides
    with the outbound webhook surface above.
- name: Pixel passbacks
  graphql_field: 'Pixel.passbacks -> PixelPassbackConnection, Pixel.passbackValues'
  direction: outbound
  note: >-
    Passback parameters returned when a pixel fires, configured as macro key/value pairs
    (PixelPassbackInput). A server-to-server callback mechanism distinct from the webhook
    subscription surface above.

gaps:
- No AsyncAPI document is published.
- >-
  No payload schema, signing/verification scheme, retry policy, delivery-ordering guarantee or
  replay mechanism is publicly documented. docs.stackadapt.com disallows all crawlers, so if
  StackAdapt documents any of these, it is not publicly readable.
- >-
  Only three event types exist, all creation/update notifications on campaigns and creatives.
  There is no delivery, spend, budget-pacing, conversion or approval event, so an agent cannot
  be driven by StackAdapt state changes — it must poll the reporting queries.