When to use this workflow
| Scenario | Approach |
|---|---|
| A customer wants the partner integration to react to donations from a specific form | Use this workflow to set up the partner-side wiring. |
| A customer needs a new donation form created | Coordinate with the customer’s Raise admin team — they configure forms in the admin UI. |
| A customer wants to embed a form on their website | See Embed a Form. |
| A customer wants the partner integration to manage forms programmatically | Not currently supported. Coordinate with the platform team for v2 roadmap visibility. |
What the customer’s admin team handles
For context, here’s what’s involved on the customer’s side before your integration’s work begins. This is admin-UI work, not API work — partners typically don’t perform these steps.| Step | Where it happens |
|---|---|
| Create the Donation Form record | Raise admin UI |
| Configure form fields and validation | Raise admin UI |
| Set designations (which Projects donations support) | Raise admin UI |
| Configure premium offers and tribute options | Raise admin UI |
| Apply branding and styling | Raise admin UI |
| Attach the form to a Campaign and Segment | Raise admin UI |
| Publish the form and obtain the embed code | Raise admin UI |
Partner-side preparation: the four key steps
Once the form is published, your integration has four preparation steps before it can react meaningfully to donations from the form.Step 1: capture the form’s identifier
Every donation submitted through a form attaches aform block to the resulting Gift record. The form.id is the form’s stable identifier — use it to filter, group, and route gifts by source form.
JavaScript
Form IDs are the only stable identifier you have for a form. The form’s
title can change without affecting the ID — but the title is what end users see, so it’s the friendlier identifier for UI display. Use id for routing and title for display.Step 2: subscribe to relevant webhook events
The forms produce events when donations complete. Subscribe to the events your integration needs:cURL
eventTypesList is an array of event type integers from the spec’s documented enum (10, 11, 12, 20, 21, 22, 30, 31, 32, 40, 41, 42, 50, 51, 52). The integers are grouped in fives suggesting per-resource events (gift events, recurring gift events, donor events, campaign events, page events) but the spec doesn’t label them.
The format and status are also documented integer enums:
format:1or2. The two values likely correspond to JSON and XML delivery formats, but confirm against the live API.status:1for active,2for inactive (likely — confirm against live data).
Step 3: plan attribution capture
Each Gift record carries multiple attribution fields beyond just the form. Plan which ones your integration captures and stores:| Attribution field | What it tells you |
|---|---|
form.id, form.title | Which form the donation came from |
segment, segmentName | The Segment the form belongs to (channel grouping) |
campaignName | The Campaign the form belongs to |
motivationCodeId, motivationCodeName, motivationCodeGroupName | Why the donor gave (attribution code) |
googleUtmSource, googleUtmCampaign, googleUtmContent, googleUtmMedium, googleUtmTerm, googleGclid | Marketing channel attribution |
landingUrl, referringUrl, submissionUrl | The web pages involved in the donation flow |
Step 4: set up the personalized-page generation flow (optional)
For integrations that send personalized donation links — renewal campaigns, major-donor cultivation, payment-method-update prompts — wire up thePOST /api/Donor/{donorId}/generate-page flow:
JavaScript
The exact request body shape for
POST /api/Donor/{donorId}/generate-page is not detailed in the spec (the body schema is empty). The endpoint likely accepts parameters like campaignId or formId to identify which form to personalize. Confirm against the live API before relying on specific request fields.A complete preparation workflow
Pulling the four steps together as a checklist for a new customer onboarding:Obtain the Raise API token from the customer
The customer’s Raise administrator generates the token in the admin UI and provides it to your integration through your onboarding flow. Store securely — see Authentication.
Capture the customer's form IDs
Ask the customer to provide the form IDs (or titles) for the forms your integration should react to. Store these in your per-customer configuration so the integration knows which forms are in scope.
Subscribe to the relevant webhook events
Use
POST /api/Webhook to subscribe to gift and (if applicable) recurring-gift events. Store the resulting webhook ID for later management. Confirm the eventTypesList integers correspond to the events your integration needs.Set up your webhook receiver
Deploy the webhook endpoint, validate signatures using the
securityToken you set during subscription, and route incoming events through your processing pipeline. See Signature Verification.Run a test donation to validate end-to-end
Use the test-mode flow (see Process a Donation: Test-mode flow) to submit a test donation through one of the customer’s forms. Confirm the webhook arrives, your code captures the form context, and the gift flows through your integration correctly.
Handling multi-form customers
Most customers have multiple forms — one for general giving, one for monthly giving, one for each major campaign or event. Partner integrations need to handle this cleanly.Pattern: per-form configuration in the partner side
Store a map of form ID → integration behavior:JavaScript
When a new form is added
When the customer adds a new form to their account, your integration won’t know about it until either:- A donation arrives through the new form, triggering an “unknown form” log entry (see the
console.warnabove). - The customer manually informs you of the new form’s ID through your onboarding flow.
What the API does not provide for form configuration
For completeness, the operations that the current API doesn’t support. If your integration’s design depends on one of these, you’ll need to coordinate with the customer’s admin team or wait for v2 API capabilities.| Capability | Not in current API |
|---|---|
| List all forms for a customer | No GET /api/Form/list endpoint |
| Get a form’s field configuration | No form-get-by-ID endpoint |
| Update a form’s content | No update endpoint |
| Toggle a form between active and inactive | Handled in admin UI |
| Get a form’s conversion rate or traffic stats | Use Campaign-level metrics or aggregate from Gift queries |
| Clone a form to a new Campaign | Handled in admin UI |
| Get the embed code for a form | The customer obtains this from the admin UI |
Where to go next
Embed a Form
The workflow for placing a Raise donation form on a partner-hosted page.
Process a Donation
What happens when a donor submits a configured form — the
POST /api/Raise/give flow.Donation Forms
The resource-level reference for what the API does and doesn’t expose about forms.
Webhooks Overview
Subscribe to the events that forms produce when donations complete.