Event
- Type: object
Event envelope — identical on the pull feed and on webhook deliveries.
payloadcarries only the allowlisted fields of each type (for exampleenrollment.created→{enrollment_id, church_id, mode, value, reference, fund};enrollment.activated→{expected_amount, expected_cycle}; the event catalog lists every type). For everyenrollment.*event,entity_ididentifies the enrollment. Activation is not proof of a deposit.- churchType: string
_id requiredRoster identifier of the church this record belongs to.
- entityType: string
_id requiredIdentifier of the record that changed; the enrollment ID for
enrollment.*, the donor session ID forpartner_session.*and the church ID forchurch.*. - eventType: string
_id requiredGlobally unique — the deduplication key.
- eventType: enum
_type requiredEvent types visible to the partner (feed and webhooks).
church.onboardedarrives once per church, the first time the church becomes ready for paycheck giving: the same momentpayout_readyturnstrueonGET /v1/churches/{id}andGET /v1/churches. If the church later stops being ready, no event is sent; readpayout_ready. Churches that were already ready before Roster started sendingchurch.onboardeddo not receive it. Today it is sent in the sandbox only; in production, readpayout_ready.values- partner
_session .created - partner
_session .opened - partner
_session .completed - partner
_session .expired - church
.created - church
.onboarded - enrollment
.created - enrollment
.activated
- partner
- livemodeType: booleanrequired
truewhen the event comes from production (sk_live_keys),falsewhen it comes from the sandbox (sk_test_keys). When one receiver gets events from both environments, use it to keep them apart. - occurredType: stringFormat: date-time
_at requiredBusiness time of the event.
- payloadType: objectrequired
Field-allowlisted projection, per event type.