access_code.redeemed
Code successfully redeemed by a subscriber.
When this fires
A subscriber successfully redeems an access code. The placeholder subscription row created with that code at generation time is claimed for the subscriber and activated (or put into trial) on the associated plan.
Required ability
project-access-code:view — token must carry this at mint time to subscribe an endpoint to this event.
Payload
{
"id": "evt_01HX...",
"type": "access_code.redeemed",
"created_at": "2026-05-18T10:05:00Z",
"api_version": "2026-05-01",
"project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13",
"data": {
"subscription_id": "5b7e2d40-1a86-4c39-97f2-e83d0b16c5a4",
"project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13",
"plan_id": "c4e82f16-93a7-4d5b-b81c-6e0f27a94d3b",
"subscriber_id": "2a91c4e7-6f38-4b52-8e0d-9c1a7b3f5d80",
"access_code": "9c1a7b3f-5d80-4e62-a4f1-0b83d2e6c517"
}
}Field reference
| Field | Type | Notes |
|---|---|---|
id | string ULID | Unique event id, prefixed evt_. Use for idempotent processing. |
type | string | Always access_code.redeemed for this event. |
created_at | ISO 8601 timestamp | Server-side emission time. |
api_version | string | Webhook API contract version. |
project_id | string UUID | Project this event belongs to. |
data.subscription_id | string UUID | Subscription now held by the subscriber. The row was created with the code at generation time, not by the redemption. |
data.project_id | string UUID | Project the redemption belongs to. Duplicates the envelope project_id. |
data.plan_id | string UUID | Plan the code was scoped to. |
data.subscriber_id | string UUID | Subscriber's project-scoped user id. |
data.access_code | string UUID | The full redeemed code (UUID v4), not masked. |
Caveats
access_codeis the complete code, not a masked fragment. It is already consumed and cannot be redeemed again, but treat it as a customer identifier and avoid forwarding it to systems you do not control.- Pairs with
subscription.createdand eithermember.joinedormember.trial_joined, depending on whether the redeemed plan carries a trial.
Related events
access_code.generated— predecessor (batch-level).access_code.expired— alternative outcome.- Access code events overview — back to family overview.
How is this guide?