Skip to main content

Webhooks for Memberships and Orders

Updated May 9, 2026

Receive real-time event notifications from your Fourthwall shop in any application you build

Fourthwall webhooks send HTTP POST requests to your endpoint whenever specific events happen in your shop: a membership purchased, an order placed, a subscription expired. You define the endpoint, choose which events to receive, and handle the payload in your own application.

Register a webhook endpoint

To start receiving webhook events, add your endpoint in the developer settings.

  1. Go to Settings > For Developers > Webhooks in your Fourthwall dashboard.
  2. Click Add endpoint.
  3. Enter your endpoint URL. It must be a publicly reachable HTTPS address.
  4. Select the events you want to receive.
  5. Save the configuration.

Fourthwall immediately begins sending events to your endpoint when the selected triggers occur.

Available events

Fourthwall sends webhook notifications for the following event categories:

Membership events

  • SUBSCRIPTION_PURCHASED: A supporter starts a new membership.
  • SUBSCRIPTION_CHANGED: A supporter upgrades or downgrades their membership tier.
  • SUBSCRIPTION_EXPIRED: A membership ends, either through cancellation or failed renewal.

Order events

  • ORDER_PLACED: A supporter completes a purchase.
  • ORDER_UPDATED: An order is updated after placement.
  • GIFT_PURCHASE: A supporter sends a gift.
  • DONATION: A supporter makes a donation.

Cart events

  • CART_ABANDONED_1H: A cart is abandoned for 1 hour.
  • CART_ABANDONED_24H: A cart is abandoned for 24 hours.
  • CART_ABANDONED_72H: A cart is abandoned for 72 hours.

Other events

  • NEWSLETTER_SUBSCRIBED: A supporter subscribes to your newsletter.
  • THANK_YOU_SENT: A thank-you is sent to a supporter.
  • PROMOTION_CREATED, PROMOTION_UPDATED, PROMOTION_STATUS_CHANGED: Promotion lifecycle events.
  • COLLECTION_UPDATED: A collection is modified.

Webhook payload structure

Every webhook Fourthwall sends uses the same envelope structure:

{
"type": "ORDER_PLACED",
"version": "V1",
"data": {
"id": "order-uuid",
"offers": [
{
"id": "b2c201d3-8104-4b2a-b2c9-1f6b335b650a",
"name": "New T-shirt",
"slug": "new-t-shirt",
"variant": {
"id": "e3c12d65-a3aa-417e-a289-dabf71a87194",
"sku": "Z3YD-8CTV00S"
}
}
]
}
}
  • type: The event name (e.g., ORDER_PLACED, SUBSCRIPTION_PURCHASED).
  • version: The payload version. All current events use V1.
  • data: The event-specific payload. The shape of data depends on the event type.
  • data.offers: An array of line items in the order. A single order can contain multiple offers, so iterate over the array when processing.
  • data.offers[n].id: The product (offer) UUID. Use this to identify which product was purchased.
  • data.offers[n].name: The product name.
  • data.offers[n].slug: The product URL slug.
  • data.offers[n].variant.id: The variant UUID for variant-level filtering (e.g., a specific size or color).
  • data.offers[n].variant.sku: The Stock Keeping Unit (SKU) code, useful for SKU-based matching with external inventory systems.

Fourthwall retries failed deliveries up to 3 times if your endpoint does not return a 2xx response.

Filtering by product or offer

Fourthwall sends an ORDER_PLACED webhook for every order, with no server-side filtering by product. To trigger workflows for a specific product, filter at your endpoint by checking data.offers[n].id against the product UUID you care about.

Because data.offers is an array, an order can contain multiple line items. Iterate over the array and check each entry. Common filter fields:

  • Product match: compare data.offers[n].id to the product (offer) UUID.
  • Variant match: compare data.offers[n].variant.id to the specific variant UUID.
  • SKU match: compare data.offers[n].variant.sku to the SKU code.

You can find a product's UUID in the dashboard URL when editing the product, or by inspecting the payload of a test event sent to your endpoint.

Test webhook delivery

You can send a test event to your endpoint directly from the dashboard to verify your setup before going live.

  1. Go to Settings > For Developers > Webhooks.
  2. Open the endpoint configuration you want to test.
  3. Click Send test event and select an event type.
  4. Check your endpoint logs to confirm the payload arrived correctly.

Frequently asked questions

Does Fourthwall sign webhook requests?

Webhook signature verification details are available in the developer settings when you configure your endpoint. Use the provided secret to verify that incoming requests originate from Fourthwall.

What happens if my endpoint is down?

Fourthwall retries failed webhook deliveries up to 3 times. If all retries fail, the event is not re-queued. Build your endpoint to respond quickly and return a 2xx status to acknowledge receipt.

Can I receive events for all event types at once?

Yes. When registering your endpoint, you can select all available event types or pick a subset. You can update your selections at any time from the developer settings.

Where do I find my API credentials for authenticated endpoints?

API keys are managed separately under Settings > For Developers > OpenAPI. Use those credentials if your endpoint requires authentication to accept incoming requests.


If you have any questions, do not hesitate to contact us at support@fourthwall.com.

Was this helpful?