[10, 11, 12, 20, 21, 22, 30, 31, 32, 40, 41, 42, 50, 51, 52]) without labels. This page covers what the integer pattern suggests, the discovery path for confirming the labels, and the practical patterns for subscribing to and handling events.
The 15 event type integers
The full enum from the spec:The likely resource groups
Based on the integer pattern and the Raise data model, the 5 groups likely correspond to:
And the three per-family integers likely correspond to lifecycle actions — typically created, updated, deleted or similar. So
10 would be “gift created”, 11 “gift updated”, 12 “gift deleted” — with the same pattern applying to each family.
Treat this mapping as a working hypothesis, not as the spec’s contract. The discovery path below confirms it for any specific event integer your integration cares about.
Discovering the mapping
TheWebhookLogListModel schema (returned by GET /api/Webhook/log/list and the per-webhook log endpoints) carries both eventType (integer) and eventTypeDisplay (human-readable label). Inspecting log entries reveals the mapping for each integer that has fired in the customer’s environment.
A discovery script
Run this once against a customer’s webhook subscription to learn the integer-to-label mapping:JavaScript
Forcing event generation in a test environment
For development environments where you need to discover the full mapping faster, generate test activity that triggers each event type:
Subscribe a test webhook to all 15 integers, trigger the activity, and inspect the resulting logs to learn the labels.
Subscribing to specific events
Once you know which integers correspond to the events your integration cares about, subscribe via theeventTypesList field on the WebhookRequest:
JavaScript
JavaScript
What event payloads contain
The exact payload shape varies by event type. The Raise OpenAPI spec doesn’t document each event’s payload schema explicitly — the schemas come from inspecting actual deliveries via the log endpoints. In general, partner integrations should expect:Inspecting a real payload
The fastest way to learn an event’s exact shape:cURL
payLoad — the exact body delivered to the partner endpoint. Inspect this to understand the JSON structure for the event types your integration handles.
Routing events on the partner side
A common pattern: a single webhook endpoint receives all event types and routes them to per-type handlers based on the event type integer.JavaScript
- Verify before parsing. Don’t trust the body’s
eventTypefield until the signature has been verified. - Acknowledge quickly. Return
200 OKbefore processing — see Webhooks Overview: What the partner endpoint should do. - Tolerate unknown event types. If Raise adds new event types in the future or the customer subscribes to additional types after deployment, your handler should log and skip unknown types rather than throw.
Per-event handling patterns
The specific handlers depend on what your integration does. A few common patterns:Gift created (likely event 10)
The most common event partners subscribe to — a new donation completed. Typical handlers:JavaScript
Recurring gift created or cancelled
Useful for partner integrations that maintain donor stewardship state:JavaScript
Donor updated
Most useful for partner integrations doing two-way sync with an external CRM:JavaScript
Distinguishing recurring vs. one-time gift events
A common integration question: when a Gift event fires (event 10, likely “Gift Created”), is the gift one-time or one of a recurring schedule’s payments? The answer is in the Gift payload itself: check therecurringGiftId field.
JavaScript
Handling event ordering
Webhook events for the same resource are typically delivered in order — agift created event arrives before a gift updated event for the same gift. But ordering across resources isn’t guaranteed, and rare delivery hiccups can cause out-of-order arrival.
Two patterns help:
Tolerate out-of-order events with state checks
For workflows that depend on event order:JavaScript
Use modifiedDate for tie-breaking
When an update event arrives for a record you already have, compare timestamps before applying:
JavaScript
modifiedDate rather than on arrival order.
A complete subscription strategy
Pulling the patterns together: for a typical partner integration that needs to react to donation activity, the recommended subscription strategy:
A typical partner subscription might cover
[10, 11, 20, 21, 22, 30, 31] — the events that drive most donor-and-gift workflows without subscribing to everything.
Where to go next
Webhooks Overview
The full subscription management surface — create, update, delete, inspect logs.
Signature Verification
Validate that incoming requests actually came from Raise.
Idempotency and Safe Reprocessing
Handle duplicate deliveries without side effects.
Retry Behavior
What happens when the partner endpoint doesn’t respond successfully.