Button · AsyncAPI Specification

Button Transaction Webhooks

Version 1.0

Button delivers signed HTTP POST webhooks to a Publisher-configured URL when a transaction takes place based on traffic the Publisher drove to a Brand. Each delivery carries a Transaction in three possible states. Webhooks are configured in the Button Dashboard and are auto-paused when >10% of the past hour's deliveries fail (min. 5 failures).

View Spec View on GitHub CommerceAffiliate MarketingMobileAttributionDeep LinkingRetail MediaAnalyticsAdvertisingLinksAsyncAPIWebhooksEvents

Channels

transactionEvents
Publisher-hosted endpoint receiving Button transaction webhook POST requests.

Messages

TransactionEvent
Transaction Event

Servers

https
publisher-endpoint
The HTTPS endpoint the Publisher registers in the Button Dashboard to receive webhooks.

AsyncAPI Specification

Raw ↑
generated: '2026-07-18'
method: generated
source: https://developer.usebutton.com/docs/button-webhooks + https://developer.usebutton.com/docs/webhook-semantics
spec_type: AsyncAPI
asyncapi: 3.0.0
info:
  title: Button Transaction Webhooks
  version: '1.0'
  description: >-
    Button delivers signed HTTP POST webhooks to a Publisher-configured URL when a transaction
    takes place based on traffic the Publisher drove to a Brand. Each delivery carries a
    Transaction in three possible states. Webhooks are configured in the Button Dashboard and are
    auto-paused when >10% of the past hour's deliveries fail (min. 5 failures).
defaultContentType: application/json
servers:
  publisher-endpoint:
    host: your-configured-endpoint.example.com
    protocol: https
    description: The HTTPS endpoint the Publisher registers in the Button Dashboard to receive webhooks.
channels:
  transactionEvents:
    address: /
    description: Publisher-hosted endpoint receiving Button transaction webhook POST requests.
    messages:
      transactionEvent:
        $ref: '#/components/messages/TransactionEvent'
operations:
  receiveTransactionEvent:
    action: receive
    channel:
      $ref: '#/channels/transactionEvents'
    summary: Receive a Button transaction webhook (validated, pending, or declined).
    messages:
    - $ref: '#/channels/transactionEvents/messages/transactionEvent'
components:
  messages:
    TransactionEvent:
      name: TransactionEvent
      title: Transaction Event
      contentType: application/json
      headers:
        type: object
        properties:
          Content-Type:
            type: string
            const: application/json
          User-Agent:
            type: string
            example: Button Webhooks X.X.X
          X-Button-Signature:
            type: string
            description: HMAC signature used to verify the webhook originated from Button.
      payload:
        $ref: '#/components/schemas/TransactionEventPayload'
  schemas:
    TransactionEventPayload:
      type: object
      required: [request_id, data, id, event_type]
      properties:
        request_id:
          type: string
          description: Unique identifier of a request attempt, stable across retries of a failed request.
          example: attempt-XXX
        id:
          type: string
          description: Unique identifier for the webhook event.
          example: hook-XXX
        event_type:
          type: string
          description: The state the transaction event represents.
          enum: [tx-validated, tx-pending, tx-declined]
        data:
          type: object
          description: The order details represented as a Transaction.

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.
All 92 tools →

Call it yourself

curl for this page
This AsyncAPI spec
curl "https://apis.io/api/v1/asyncapis/button-webhooks-asyncapi"
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 email required.

A second provider on the same verified email joins the account you already have.