What you can and can’t customize
| Surface | API-customizable? | Mechanism |
|---|---|---|
| Donor identity (pre-population) | Partially | URL parameters on the form’s landing URL; POST /api/Donor/{id}/generate-page for fully personalized pages |
| Designation defaults | Yes | projectOverrideCode on POST /api/Raise/give; URL parameter on the form’s landing URL |
| Campaign / Segment attribution | Yes | URL parameters; explicit fields on POST /api/Raise/give |
| Amount defaults / suggested amounts | No (admin UI) | Configured per-form in the Raise admin UI |
| Form fields and validation | No (admin UI) | Configured per-form in the Raise admin UI |
| Branding and styling | No (admin UI) | Configured per-form in the Raise admin UI |
| Success message / redirect URL | No (admin UI) | Configured per-form in the Raise admin UI |
| UTM and marketing attribution | Yes | Standard UTM URL parameters on the landing URL |
Pattern 1: URL parameter pre-population
The simplest customization. Pass donor identity, designation defaults, or attribution data as query parameters on the form’s landing URL. The form reads these on load and pre-fills the relevant fields.A renewal email link
JavaScript
The exact URL parameter names the form accepts depend on the form’s configuration in the Raise admin UI. Common conventions include
firstName, lastName, email, amount, and the standard UTM parameters — but the form team controls which parameters are honored and how. Coordinate with the customer’s admin team to confirm the supported parameters for each form.Designation override
For donors arriving through a specific campaign or appeal, override the form’s default Project designation:JavaScript
Segment attribution
ThesegmentOverrideCode URL parameter sets the segment attribution for the resulting gift:
JavaScript
gift.segment (visible in the webhook payload and via API queries). Useful for per-channel reporting.
Pattern 2: personalized hosted pages via generate-page
URL parameters are convenient but limited — they expose the donor’s identity in the URL (visible in browser histories, server logs, etc.) and can produce ugly links. For higher-stakes outreach, the POST /api/Donor/{donorId}/generate-page endpoint creates a personalized page tied to the donor by an opaque token.
When to use generate-page over URL parameters
| Use generate-page when | Use URL parameters when |
|---|---|
| Donor identity should not appear in the URL | Identity in the URL is acceptable |
| You’re sending a payment-update prompt | First-time donor outreach |
| The link should be donor-specific and not reusable | The link is broadly shareable |
| You want shorter, cleaner URLs | URL ugliness is acceptable |
Generating a personalized page
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 body fields.Embedding the personalized URL in an email
JavaScript
Hi Bruce, Last year you gave $250 to our Gotham Outreach Program. Would you renew your support? Renew now Thank you for your generosity.When the donor clicks the link, they land on a form fully pre-filled with their identity. They confirm the amount and complete payment — typically a much higher conversion rate than a generic “donate now” email.
Pattern 3: explicit fields on POST /api/Raise/give
For integrations that submit donations directly (rather than embedding a form), the DonatePaymentRequest body fields provide the richest customization surface. Any field on the request shapes the resulting Gift record.
Pre-attributed donations
For partner integrations that capture donations through their own UI and submit to Raise, set the attribution fields explicitly:JavaScript
Tribute giving
Donors giving in honor or memory of someone can include tribute information:JavaScript
gift.tribute. Useful for memorial giving workflows where the gift’s purpose is to honor someone other than the donor.
Recurring gift setup with custom designation
For recurring schedules created throughPOST /api/Raise/give with isRecurring: true, the designation applies to each subsequent payment:
JavaScript
gift.projects[] on each gift mirrors the schedule’s split.
Pattern 4: combining customizations for specific use cases
The four customization surfaces combine into a few common integration scenarios. Each scenario uses two or three of the surfaces.Major donor cultivation outreach
A high-touch personalized outreach for a previously-large donor:JavaScript
Multi-channel attribution
Different links for different channels — each producing distinct attribution in the Gift records:JavaScript
segment and UTM attribution — visible in per-channel reporting via POST /api/Gift/query.
Pre-filled multi-step flow
A two-step flow where the partner captures donor details first, then redirects to the Raise form for payment:Donor fills out the partner's pre-form
Captures name, email, and intent (one-time vs. recurring). Lets the partner do its own validation and styling.
Partner generates the Raise form URL with pre-populated parameters
URL parameters carry the captured details forward into the Raise form.
Donor redirects to the Raise form, identity already pre-filled
They only need to enter payment details and confirm the amount.
JavaScript
Post-donation customization
The post-donation experience is largely admin-UI-configured (success page, redirect URL, etc.). What partner integrations can customize:Custom thank-you content via webhook
After the donation completes, the webhook fires and the partner integration can send custom thank-you content separate from the form’s built-in success display:JavaScript
Form return URL customization
The form’s “where to go after success” behavior is configured in the Raise admin UI. The partner integration can request specific redirect URLs from the customer:
Coordinate with the customer’s admin team to set the form’s post-submission redirect to a partner-controlled URL, like https://partner.example.com/thank-you?giftId={giftId}.
Once configured, the partner can render a customized thank-you page when the donor lands there:
JavaScript
The exact mechanism by which the Raise form passes the gift ID to the redirect URL (query parameter, fragment, etc.) is configured per-form in the admin UI and not documented in the API spec. Confirm against the actual form configuration before parsing the URL.
Anti-patterns to avoid
A few customization patterns that look attractive but cause issues:| Anti-pattern | Why it’s bad |
|---|---|
| Iframe-wrapping the form on a custom page | Two layers of iframes typically break the form’s resize behavior, payment processor integration, and 3DS authentication flows. Use the embed code as-is. |
| Capturing card details on the partner’s side and submitting via API | Puts the partner in PCI DSS scope. Use Raise’s tokenization. |
| Hardcoding URL parameter names | The parameter names depend on the form’s admin-UI configuration. Coordinate with the customer rather than hardcoding. |
| Storing donor identity in URL parameters across redirects | URL parameters appear in browser histories and server logs. Use the personalized-page endpoint for sensitive flows. |
| Trying to customize the form’s appearance via partner-side CSS | The form is on Raise’s domain — partner CSS can’t reach into it. Coordinate styling with the customer’s admin team. |
Where to go next
Post-Donation Thank-You Flows
The deep dive on customizing what happens after the donation completes.
Embed a Form on a Website
The complete integration recipe that this customization layer fits into.
Process a Donation
The
POST /api/Raise/give reference for direct-submission customization.Recurring Giving Portal
A donor-self-service portal that combines several customization patterns.