Skip to main content
This is the full catalog. For each event we document:
  • What triggers it in the FPT business model
  • The data payload shape — the event-specific bit inside the envelope
  • When you’d care about it
For the outer envelope shape (eventId, eventType, eventTimestamp, etc.) see the envelope reference.

Available today (v1.1)

The contact.* family — five events covering the contact lifecycle.

contact.created

A new contact was added at a location.

contact.updated

Any tracked field on an existing contact changed.

contact.deleted

A contact was removed or deactivated.

contact.status_changed

Contact moved between lifecycle groups (Lead → Member → etc.).

contact.sub_group_changed

Contact assigned to a different business sub-group.

On the roadmap

These event families are designed and on the schedule but not yet emitted. You can pre-plan your integration around them, but subscribing today won’t deliver anything.
membership.started, membership.renewed, membership.cancelled, membership.frozen, membership.expired — emitted from the FPT billing lifecycle.
payment.succeeded, payment.failed, payment.refunded — emitted when transactions clear the payment gateway.
subscription.created, subscription.updated, subscription.cancelled — for recurring billing plans (distinct from membership lifecycle).
appointment.scheduled, appointment.rescheduled, appointment.completed, appointment.cancelled, appointment.no_show — 1-on-1 appointment lifecycle.
class.attended, class.cancelled, class.waitlisted — group class attendance.
message.sms_received, message.sms_failed, message.email_received, message.call_received — inbound communications from contacts.
Staff workflow and automation events.

Naming conventions

  • Resource.verb format — <entity>.<past_tense_action>
  • Lowercase, dot-separatedcontact.sub_group_changed, never ContactSubGroupChanged or contact-sub-group-changed
  • Past tense — events describe things that already happened. created, updated, deleted. Never creating or delete.
  • Stable — once we ship an event type, the string never changes. Adding new fields to its data payload is forward-compatible; removing fields requires a new event type.

Envelope shape (every event)

{
  "eventId":         "9f1c7e2a8c4d4b1b9e3f5a6d7c8b9a0e",
  "eventType":       "contact.sub_group_changed",
  "eventTimestamp":  "2026-06-10T23:45:00.123Z",
  "locationId":      1234,
  "organizationId":  5678,
  "apiVersion":      "v1",
  "data":            { /* event-specific — see the event's page */ }
}
See Event envelope for the full field reference.