Webhooks

A subscription became active

Sent when a subscription becomes ACTIVE — the subscriber has completed checkout and billing is now on schedule. data is the full Subscription.

postWebhooksubscription.activated

Payload

idstring uuid required

Unique id of this delivery (UUIDv7), mirrored in the webhook-id header and covered by the signature. Retries of the same event repeat this id, so use it to dedupe. A replayed event gets a new id — see sequence.

type'subscription.activated' required

Identifies the event — one of the types listed under Webhooks. Also sent as the webhook-type header.

timestampstring date-time required

When the event occurred (ISO-8601 UTC, sub-second precision). This is the event's own time and is preserved on retries and replays — it is not the webhook-timestamp header, which is stamped per attempt and is what the signature covers.

sequenceinteger required

Monotonically increasing counter, per resourceId, starting at 1. Payment events share their parent subscription's counter. Apply an event only if its sequence is higher than the last one you applied for that resourceId; that discards both stale redeliveries and replays of old events. Also sent as the webhook-sequence header. Not guaranteed gap-free.

resourceType'subscription' required

The kind of resource this event is about. Always subscription.

resourceIdstring uuid required

The subscription this event concerns — always the subscription id, even for payment events, which route to their parent subscription.

Example payload

{
  "id": "019807c3-1a04-7de2-84b7-9c0f5a2e6188",
  "type": "subscription.activated",
  "timestamp": "2026-05-29T08:04:12.512834071Z",
  "sequence": 2,
  "resourceType": "subscription",
  "resourceId": "019807c2-6f2a-7b41-9c58-2f9c1a4b8d21",
  "data": {
    "id": "019807c2-6f2a-7b41-9c58-2f9c1a4b8d21",
    "planId": "019801a3-4d5e-7f80-9a1b-2c3d4e5f6071",
    "planName": "Pro Monthly",
    "amount": {
      "amount": "29.00",
      "asset": "USD"
    },
    "customerProfileId": "acct_8842",
    "email": "ada@example.com",
    "notifyUrl": "https://merchant.example/confirmo/webhook",
    "returnUrl": "https://merchant.example/subscription/thanks",
    "status": "ACTIVE",
    "startDate": 1780041852,
    "cycleNumber": 1,
    "currentPeriod": {
      "start": 1780041852,
      "end": 1782720252
    },
    "nextPaymentDate": 1782720252,
    "createdAt": 1780041521,
    "updatedAt": 1780041852
  }
}

Response

Return any 2xx status to acknowledge receipt. Any other response (or a timeout) is treated as a delivery failure and retried.

Changes

Webhooks have no change history: a webhook is keyed by its event name rather than a path and method, so no recorded change can name it.