Event Reference
Every outbound webhook event MemberPass emits, grouped by family.
The canonical, machine-readable event list is published at:
GET https://api.memberpass.net/webhook-events.jsonThe JSON is regenerated on every MemberPass deploy. The per-family pages below duplicate the same source with explanatory prose and payload samples.
Families
| Family | Count | What it covers |
|---|---|---|
project.* | 12 | Project lifecycle, bot connection, resource link/unlink. |
plan.* | 6 | Plan creation, update, activation, sync to PSP catalog. |
subscription.* | 14 | Every transition across the 13 subscription statuses, plus upgrade/downgrade. |
payment.* | 4 | Succeeded, failed, pending, refunded. |
member.* | 10 | Member (subscriber) joined, converted, churned, banned, kicked. |
access_code.* | 3 | Batch generation + redemption + expiry. |
team.* | 6 | Team create/delete + membership changes. |
role.* | 3 | Role create / update / delete. |
group.* | 3 | Group create / update / delete. |
billing.* | 9 | Creator's own MemberPass tier: invoice, payment failure, grace period, lockdown. |
Envelope shape
Every event has the same outer shape:
{
"id": "evt_01HXDELIVERY000000000TST",
"type": "subscription.created",
"created_at": "2026-05-18T10:05:00Z",
"api_version": "2026-05-01",
"project_id": "prj_01HXPROJECT0000000000T",
"data": {
"subscription": {},
"subscriber": {},
"plan": {},
"access_code": null
}
}id— ULID unique per event. Use for consumer-side de-dup.type— the canonical event name (matchesMP-Event-Nameheader).created_at— ISO 8601 UTC.api_version— see versioning.project_id— which project the event belongs to (null for team-scoped or billing events).data— event-specific payload; the per-family pages describe each shape.
Subscribing to events
- Programmatic:
POST /v1/webhook-endpointswithevents: ["subscription.created", ...]. - Dashboard: Settings → Webhooks → New endpoint.
- Zapier: each trigger maps 1:1 to a single event and subscribes behind the scenes.
How is this guide?