Skip to main content
WebhooksEvent types
Webhooks

Event types

Know which business moments Aly can notify you about and what each payload contains.

Catalog of order, checkout_session, membership, and site events. Sample payloads and filter syntax.

Events fall into four families: order, checkout_session, membership, and site. Subscribe to only what you need — per-endpoint filters are part of registration.

Order events

TypeWhen
order.createdAn order is persisted after successful checkout (Stripe, UCP, or x402).
order.updatedBuyer info, shipping address, or line items changed post-creation.
order.fulfilledAll line items have at least one fulfillment row recorded.
order.partially_fulfilledSome, not all, line items shipped.
order.refundedFull or partial refund processed by Stripe.
order.cancelledCancelled by operator or buyer before fulfillment.
order.return_requestedBuyer initiated a return.
order.return_approvedOperator approved; RMA issued.
order.return_receivedReturned goods received in good condition.
order.exchange_requestedBuyer initiated an exchange.
order.exchange_approvedOperator approved exchange.

Sample order.created

json
{  "id": "evt_8a1...e7c",  "type": "order.created",  "created_at": "2026-05-19T08:35:14.000Z",  "site_slug": "acme",  "data": {    "order": {      "id": "ord_72...4b",      "currency": "USD",      "totals": { "subtotal": 4200, "shipping": 500, "tax": 376, "discount": 0, "total": 5076 },      "buyer": { "email": "buyer@example.com" },      "items": [        { "id": "li_1", "product_id": "prod_abc", "variant_id": "var_1",          "name": "Linen Tote — natural", "quantity": 1, "unit_price": 4200, "subtotal": 4200 }      ],      "shipping_address": { "country": "US", "state": "CA", "postcode": "94110" },      "payment": { "provider": "stripe", "intent_id": "pi_..." }    }  }}

Checkout session events

TypeWhen
checkout_session.createdA new session (UCP or hosted) was created.
checkout_session.updatedLine items, address, shipping option, or coupon changed.
checkout_session.completedBuyer paid; order_id populated.
checkout_session.expiredSession expired without completion.
checkout_session.cancelledExplicitly cancelled.

Membership events

TypeWhen
membership.subscriber.createdNew subscription started (Stripe).
membership.subscriber.updatedPlan changed or status changed.
membership.subscriber.cancelledSubscription cancelled.
membership.subscriber.payment_failedRenewal payment failed.

Site events

TypeWhen
site.publishedSite published (or republished).
site.unpublishedSite taken offline.
site.domain.attachedCustom domain attached; DNS verification still required.
site.domain.verifiedDomain DNS records verified and live.

Filtering

At registration time, declare the events you want — either a list of exact types or the wildcard *. Aly only attempts delivery for matching events.

json
{  "url": "https://my-app.example/aly/webhooks",  "events": ["order.created", "order.fulfilled", "order.refunded"],  "site_slug": "acme",  "active": true}

Subscribing per-site vs per-workspace

Endpoints can be scoped to one site_slug or to the entire workspace (omit site_slug). Workspace-wide endpoints receive events for every site you own.

Updated

Was this page helpful?