Buttondown · AsyncAPI Specification

Buttondown Webhooks

Version

View Spec View on GitHub AnalyticsAutomationsEmailMarkdownNewslettersPaid SubscriptionsSoftware-as-a-ServiceSubscribersWebhookSegmentationDeveloper ToolsMarketingAsyncAPIWebhooksEvents

AsyncAPI Specification

Raw ↑
generated: '2026-08-13'
method: searched
source: https://docs.buttondown.com/events-and-webhooks-introduction, https://github.com/buttondown/openapi (enums.json
  ExternalEventType), and the `webhooks` block of https://api.buttondown.com/v1/openapi.json
spec_type: Webhooks
asyncapi_published: false
description: 'Buttondown publishes no AsyncAPI document, but it does describe its event surface machine-readably
  in two places: an OpenAPI 3.1 `webhooks` block declaring the outbound POST and its WebhookEvent payload, and an
  enums.json in its public OpenAPI repo enumerating all 82 event types with descriptions. This artifact is that
  catalog, captured verbatim.'
delivery:
  transport: https
  method: POST
  content_type: application/json
  payload_schema: WebhookEvent
  payload_fields:
  - name: id
    description: The unique TypeID of the event that triggered this delivery (ext_evt_ prefix).
  - name: event_type
    description: One of the ExternalEventType values below.
  - name: data
    description: Event-specific metadata; shape varies by event_type. Multi-newsletter accounts also receive a newsletter
      ID to disambiguate.
  signing:
    header: X-Buttondown-Signature
    algorithm: sha256=<hmac>
    computed_over: the raw request body, keyed with the webhook's signing key
    optional: true
    note: Signature is present only when the webhook has a signing key configured.
  acknowledgement: Any 2xx status acknowledges receipt.
  failure_policy: Five consecutive non-2xx responses disable the webhook.
  attempt_log:
    operation: retrieve_webhook_attempts
    path: /webhooks/{id}/attempts
  test_delivery:
    operation: test_webhook
    path: /webhooks/{id}/test
management_operations:
- create_webhook
- list_webhooks
- retrieve_webhook
- update_webhook
- delete_webhook
- retrieve_webhook_attempts
- test_webhook
event_store:
  readable: true
  operations:
  - list_events
  - get_event
  description: The same unified event store that powers webhooks is readable over REST at GET /v1/events and GET
    /v1/events/{id}, so an integration can poll or backfill rather than only receive.
event_count: 82
families:
- family: advertising_slot
  count: 2
  events:
  - name: advertising_slot.inquiry
    description: Whenever a sponsor submits an inquiry for an advertising slot.
  - name: advertising_slot.purchased
    description: Whenever an advertising slot in your newsletter is purchased.
- family: automation
  count: 1
  events:
  - name: automation.invoked
    description: Whenever an automation is manually invoked (e.g. by a webhook or API call).
- family: bigcommerce
  count: 4
  events:
  - name: bigcommerce.customer.created
    description: Whenever a new customer is synced from BigCommerce.
  - name: bigcommerce.customer.updated
    description: Whenever a customer's data is updated in BigCommerce.
  - name: bigcommerce.order.created
    description: Whenever a new order is synced from BigCommerce.
  - name: bigcommerce.order.updated
    description: Whenever an order's data is updated in BigCommerce.
- family: date
  count: 4
  events:
  - name: date.day.started
    description: Whenever a new day starts. This event is fired at midnight UTC.
  - name: date.month.started
    description: Whenever a new month starts. This event is fired at midnight UTC on the first day of each month.
  - name: date.week.started
    description: Whenever a new week starts. This event is fired at midnight UTC on Monday.
  - name: date.year.started
    description: Whenever a new year starts. This event is fired at midnight UTC on January 1st.
- family: email
  count: 6
  events:
  - name: email.created
    description: Whenever a new email is created and begins delivery. Note that event happens immediately before
      the emails themselves are sent.
  - name: email.deleted
    description: Whenever an email has been deleted.
  - name: email.send.started
    description: Whenever an email starts sending. This fires as soon as the send is underway, before any recipient
      has been delivered to — useful for cross-posting, which otherwise waits for the whole send to finish.
  - name: email.sent
    description: Whenever an email has finished its delivery. Note that event happens immediately after all emails
      have been sent, but some email events may not have finished processing.
  - name: email.status.changed
    description: Whenever an email's status has changed (e.g. from 'draft' to 'sent'.) The `metadata` field will
      contain the previous and new statii in 'old_value' and 'new_value' respectively.
  - name: email.updated
    description: Whenever an email's content or metadata has been updated.
- family: export
  count: 3
  events:
  - name: export.completed
    description: Whenever an export is completed.
  - name: export.created
    description: Whenever an export is created.
  - name: export.failed
    description: Whenever an export fails.
- family: external_feed_item
  count: 1
  events:
  - name: external_feed_item.created
    description: Whenever a new item is created in an [RSS feed](https://docs.buttondown.com/rss-to-email).
- family: firewall
  count: 1
  events:
  - name: firewall.blocked
    description: Represents an incoming request that was blocked by the [firewall](https://docs.buttondown.com/firewall).
- family: form
  count: 3
  events:
  - name: form.created
    description: Whenever a new form is created.
  - name: form.deleted
    description: Whenever a form has been deleted.
  - name: form.updated
    description: Whenever a form's content or metadata has been updated.
- family: memberful
  count: 3
  events:
  - name: memberful.member.updated
    description: Whenever a member changes their email address in Memberful.
  - name: memberful.subscription.created
    description: Whenever a new subscription is created in Memberful.
  - name: memberful.subscription.deleted
    description: Whenever a subscription is deleted in Memberful.
- family: mention
  count: 1
  events:
  - name: mention.created
    description: Whenever your newsletter is mentioned elsewhere.
- family: note
  count: 2
  events:
  - name: note.created
    description: Whenever a note is created.
  - name: note.deleted
    description: Whenever a note is deleted.
- family: patreon
  count: 3
  events:
  - name: patreon.member.updated
    description: Whenever a member changes their email address in Patreon.
  - name: patreon.membership.created
    description: Whenever a new membership is created in Patreon.
  - name: patreon.membership.deleted
    description: Whenever a membership is deleted in Patreon.
- family: shopify
  count: 2
  events:
  - name: shopify.customer.created
    description: Whenever a new customer is created in Shopify.
  - name: shopify.customer.updated
    description: Whenever a customer changes their email address in Shopify.
- family: social_mention
  count: 1
  events:
  - name: social_mention.created
    description: Whenever your newsletter is mentioned on another website such as Reddit, Twitter, Bluesky, etc.
- family: stripe
  count: 6
  events:
  - name: stripe.checkout.session.completed
    description: Whenever a Stripe checkout session is completed successfully.
  - name: stripe.customer.updated
    description: Whenever a customer changes their email address in Stripe.
  - name: stripe.invoice.upcoming
    description: When a paid subscriber's subscription is approaching its renewal date, mapped from Stripe's `invoice.upcoming`
      webhook. Lets you message subscribers before they're charged again.
  - name: stripe.subscription.activated
    description: Whenever a subscription is activated in Stripe.
  - name: stripe.subscription.churning
    description: Whenever a subscription is churning in Stripe.
  - name: stripe.subscription.deactivated
    description: Whenever a subscription is deactivated in Stripe.
- family: subscriber
  count: 35
  events:
  - name: subscriber.activation_bounced
    description: When a subscriber's confirmation (opt-in) email bounced.
  - name: subscriber.activation_clicked
    description: When a subscriber clicked a link in their confirmation (opt-in) email.
  - name: subscriber.activation_complained
    description: When a subscriber marked their confirmation (opt-in) email as spam.
  - name: subscriber.activation_deferred
    description: When a subscriber's confirmation (opt-in) email was deferred (a transient delivery failure the
      provider will retry).
  - name: subscriber.activation_delivered
    description: When a subscriber's confirmation (opt-in) email was successfully delivered.
  - name: subscriber.activation_opened
    description: When a subscriber opened their confirmation (opt-in) email.
  - name: subscriber.activation_rejected
    description: When a subscriber's confirmation (opt-in) email was rejected (a permanent delivery failure).
  - name: subscriber.bounced
    description: Whenever a subscriber's email is bounced.
  - name: subscriber.changed_email
    description: When a subscriber's email address has been changed.
  - name: subscriber.churned
    description: When a subscriber has unenrolled from your newsletter's paid offering.
  - name: subscriber.clicked
    description: When a subscriber has clicked a link in one of your emails.
  - name: subscriber.commented
    description: When a subscriber has commented on one of your emails.
  - name: subscriber.complained
    description: Whenever a subscriber has complained about one of your emails.
  - name: subscriber.confirmed
    description: When a subscriber has confirmed that they are enrolled in your newsletter. (For newsletters without
      double opt-in, this event is created immediately after `subscriber.created`.)
  - name: subscriber.created
    description: Whenever a new subscriber is created.
  - name: subscriber.deferred
    description: When a subscriber's email was deferred (a transient delivery failure the email provider will retry).
  - name: subscriber.deleted
    description: When a subscriber has been deleted from your newsletter.
  - name: subscriber.delivered
    description: Whenever a subscriber's email is successfully delivered.
  - name: subscriber.opened
    description: When a subscriber has opened one of your emails.
  - name: subscriber.paid
    description: When a subscriber has enrolled in your newsletter's paid offering.
  - name: subscriber.paused
    description: When a subscriber has paused their subscription.
  - name: subscriber.referred
    description: When a subscriber has referred someone to your newsletter.
  - name: subscriber.referred.paid
    description: When a subscriber's referral has converted to a paid subscription.
  - name: subscriber.rejected
    description: Whenever a subscriber (or their email provider) has rejected an email from your newsletter. Buttondown
      takes rejections seriously, and will likely block the subscriber's email address from future emails and/or
      mark them as undeliverable.
  - name: subscriber.replied
    description: Whenever a subscriber has replied to one of your emails.
  - name: subscriber.responded_to_survey
    description: When a subscriber has responded to a survey in your newsletter.
  - name: subscriber.resumed
    description: When a subscriber has resumed their subscription after pausing it.
  - name: subscriber.sent
    description: Whenever an email has been sent to a subscriber.
  - name: subscriber.tags.changed
    description: When a subscriber's tags have been modified.
  - name: subscriber.trial_ended
    description: When the trial has ended for a subscriber.
  - name: subscriber.trial_started
    description: When the trial has started for a subscriber. (For newsletters with automatic free trials, this
      will be created immediately after `subscriber.confirmed`.)
  - name: subscriber.type.changed
    description: When a subscriber's type has been changed.
  - name: subscriber.unsubscribed
    description: When a subscriber has manually unsubscribed from your newsletter.
  - name: subscriber.updated
    description: When a subscriber's notes or metadata has changed.
  - name: subscriber.viewed_checkout_page
    description: When a subscriber has viewed your checkout page.
- family: survey
  count: 4
  events:
  - name: survey.cleared_responses
    description: Whenever a survey's responses have been cleared.
  - name: survey.created
    description: Whenever a new survey is created.
  - name: survey.deleted
    description: Whenever a survey has been deleted.
  - name: survey.updated
    description: Whenever a survey's content or metadata has been updated.