Plans and prices in webhook payloads
The Memberful dashboard uses the terms Plan and Price, but webhook payloads use different names for the same concepts:| Dashboard | Webhook field | Description |
|---|---|---|
| Plan | pass | What a member subscribes to—controls access and entitlements |
| Price | subscription_plan / subscription | A pricing option within a plan (e.g. “$10/month” or “$100/year”) |
pass object, not the plan-level fields.
Subscription, order, and plan (price) webhook payloads include a pass object with id and name. The label field on a plan contains an internal price description like “$10 monthly”.
Webhook event names like
subscription_plan.created refer to prices, not plans—the naming predates the current terminology.Member events
Member accounts are created automatically when a member purchases a subscription or registers for free (if that feature is enabled). You can also create member accounts manually from your dashboard.Most webhook types follow the object.event naming convention. Member events currently follow an object_event convention instead. Pay close attention to the event names laid out in this doc.
member_signup
Sent when a new member account is created. Use this webhook to add new members to your app or to a third-party service.member_updated
Sent when a member’s profile information is updated. Use this webhook to update a member’s profile information in your app. This will not be triggered when a member updates their answers to custom fields. Use the custom_fields.updated webhook to detect custom field updates.member.deleted
Sent when a member is deleted from your Memberful account. Use this webhook to remove a member from your app if they were deleted from Memberful. It’s not common for a member account to be deleted — in most cases, you’ll want to react to Subscription Deactivated instead.tax_id.updated
Sent when a member adds, changes, or removes their tax ID. Use this trigger to update your app when a member updates their tax ID.custom_fields.updated
Sent when a member answers or updates their custom fields. Thevalue field can be a String, an Array of Strings, or an empty Array.
Use this trigger to update your app when a member updates their answers to custom fields, either during checkout or by visiting their member profile.
Subscription events
Sent when a member subscribes to a plan or when that subscription is updated, renewed, or deleted.Almost all times across all webhooks are returned as Unix time, but subscription events use ISO 8601 for the following attributes:
activated_at, created_at, expires_at, trial_end_at, and trial_start_at.subscription.created
Sent when a new subscription is added to a member’s account. This includes when a member purchases a subscription or activates a gifted subscription, when a member is added to a group subscription, and when a staff account manually creates a subscription. Use this webhook to let your app know when a member has subscribed. Signups from group managers and members both trigger the subscription.created event. To differentiate between the two, you can check the two member IDs in the data that was returned. If both IDs are the same, the signup is from a group manager (or it’s for a plan that doesn’t support groups). If the IDs are different, the signup is from a member who who is joining a group. The group manager’s ID is the one at the top, while the group member’s ID appears further down (nested within the member object).
subscription.updated
Sent when a member’s subscription is updated. If you want to know if the update is a plan change, you’ll need to see if the plan_id field is present in the changed object. The first value is the old plan and the second value is the new one. The same applies to other changed fields, like autorenew.subscription.renewed
Sent when a member’s subscription is renewed or when a returning member reactivates an old subscription. Use this webhook to renew the member’s access to your app. At this time there’s no way to differentiate between a renewal and a reactivation, but you could reach out to our API to find out more about the subscription’s history.subscription.activated
Sent when a suspended order is marked completed by staff and the subscription becomes active again. Sent when a member’s suspended order is marked by staff as complete and the subscription becomes active again. This does not refer to when a member reactivates a previously expired subscription — use the Subscription Renewed trigger for that.subscription.deactivated
Sent when a member’s subscription fails to renew, expires, or becomes inactive. Sent when a member’s subscription fails to renew, expires, or becomes inactive. Also sent when a staff account suspends an order, making the subscription inactive. Use this webhook to remove the member’s access to your app or to update their status if they stop paying.subscription.deleted
Sent when a staff account deletes a member’s subscription from the Memberful dashboard. Use this webhook to remove the member’s access to your app or to update their status.Order events
Sent when a member places an order to purchase plans or downloads.Custom fields are now collected after checkout, which means they’re no longer set when the
order_purchased event is triggered. To access them, webhook recipients must now use the custom_fields.updated event instead.order.purchased
Sent when a member places an order or when a staff account manually adds an order to a member’s account. This is not triggered for renewal payments. A member purchasing a gift subscription for someone else will trigger this webhook, but no subscription will be created until the recipient activates their gift. Use this webhook to notify your app when a member makes a purchase.order.refunded
Sent when a staff account refunds an order. Use this trigger to update your app when a refund has been processed.order.suspended
Sent when an order is suspended by staff.order.completed
Sent when a suspended order is marked completed by staff.Plan events
Sent when staff accounts create, update, or delete prices. These events usesubscription_plan in their names and payloads—see Plans and prices in webhook payloads for how that maps to dashboard terminology.