Fundraise Up
The Fundraise Up integration copies donations and recurring plans from your Fundraise Up account into Allegro and matches them to audience members by email address. Each matched member gets a donor profile: whether they give once or on a schedule, how much and how often, and the state of each recurring plan.
Allegro receives new activity through a Fundraise Up webhook as it happens, and can read your full history with a backfill.
Turn on the Fundraise Up package under Organization Settings → Packages first. The settings page then appears at Organization Settings → Fundraise Up, and each property gets a Fundraise Up page in its own settings.
Connect an API key
-
In Fundraise Up, go to Settings → API keys and create a key with these permissions:
Section Data type Permission Test data (test mode) or Live data Donations, Recurring plans Read Live data Campaigns Read Fundraise Up only has live campaigns, so a key used in test mode still needs Read for Campaigns under Live data. Allegro uses campaigns to find the key's accounts and to list campaigns for the filter.
-
In Allegro, open Organization Settings → Fundraise Up and paste the key into API key.
-
Turn on Test mode if the key is for Fundraise Up's test data rather than live donations.
-
Click Save changes.
Allegro checks the key's permissions with Fundraise Up before saving it. If a permission is missing, the error under the field names it and nothing is saved. If Fundraise Up is busy, try again in a minute.
The key is write-only: after saving, the field shows that a value is stored but never shows the key itself. Enter a new key to replace it, or click remove it to delete it on the next save.
After a new key is saved, Allegro finds the Fundraise Up accounts it covers in the background. If the key's account has no campaigns yet, the page says so and no donations match until it has one. Every backfill checks the accounts again, so run Sync now after the account creates its first campaign.
Choose campaigns
By default every campaign counts. To count only some of them, open Campaigns and pick the campaigns to include. Donations and plans to other campaigns are still stored, but they do not appear in donor profiles.
The campaign list loads from Fundraise Up after the page opens. If Fundraise Up cannot be reached, the campaigns you already saved are listed by ID so you can still remove them.
Create the webhook in Fundraise Up
The Webhook section shows the URL Fundraise Up should call. Click Copy to copy it.
- In Fundraise Up, go to Settings → Webhooks and create a webhook.
- Paste the URL from Allegro.
- Subscribe to the donation and recurring plan events.
- Copy the signing secret Fundraise Up shows, paste it into Signing secret in Allegro, and click Save changes.
Allegro rejects any webhook it cannot verify with the signing secret, so webhooks do nothing until the secret is saved.
The URL uses your organization's canonical domain, for example
https://members.acme.com/api/webhooks/fundraiseup. If you add or change a
custom domain, the URL on this page changes with it. Update the webhook in
Fundraise Up to match.
Fundraise Up turns a webhook off after 48 hours of failed deliveries, and Allegro cannot see that. The Last webhook time in the Sync section is your signal: if it stops moving while donations are coming in, check the webhook in Fundraise Up.
Properties
Each property chooses where its Fundraise Up data comes from on its own Fundraise Up settings page.
| Mode | What it does |
|---|---|
| Inherit | Uses the organization's connection. This is the default. The page shows the organization's webhook URL and sync status. |
| Custom | Uses the property's own API key, campaigns and webhook. The page shows the same Connection, Webhook and Sync sections as the organization page, and the webhook URL uses the property's domain. |
| Off | Takes no Fundraise Up data for the property. |
A property on its own connection keeps its donor profiles separate from the organization's. A property that inherits reads the organization's profiles.
Sync and backfill
The Sync section shows:
- when the last webhook arrived,
- the status of the latest backfill, when it started or finished, how many donations and recurring plans it read, and its error if it failed,
- the newest 25 log entries, with a link to the member each entry matched.
Click Sync now to read every donation and recurring plan from Fundraise Up again. Use it after connecting a key for the first time. Changing campaigns or a property's connection rebuilds donor profiles on its own, without a sync. The page updates while the sync runs.
Switching Test mode starts a full backfill of the new mode on its own and clears the donations and plans Allegro stored for the old mode, unless another connection still reads them. Donor profiles are rebuilt when the backfill finishes, so members only have test or only live data, never both.
Sync now runs once every 15 minutes per connection and is disabled while a sync is running. The section says when you can use it again.
A backfill reads Fundraise Up a page at a time and respects Fundraise Up's rate limit, so a large account can take a while. If it stops partway, the next run resumes where it left off.
Your engineering team can also run a backfill from the command line with
php artisan fundraiseup:backfill, optionally limited to one connection (org
or a property slug) and to records created since a date with --since.
Donor profile fields
Only succeeded, unrefunded donations count toward amounts, counts and dates. Amounts are in the account's default currency.
| Field | Description |
|---|---|
donor_status | recurring when any plan is active, scheduled, retrying or paused; lapsed when the member has plans and none are live; one_time when the member has donations and no plans. |
donation_type | The live plan's frequency, such as monthly, otherwise one_time. |
first_donation_at | The date of the member's first counted donation. |
last_donation_at | The date of the member's most recent counted donation. |
last_donation_amount | The amount of the most recent counted donation. |
lifetime_amount | The total of all counted donations. |
donation_count | The number of counted donations. |
currency | The currency the amounts are in. |
recurring_amount | The amount of the most recently started live plan. |
recurring_started_at | When that plan started. |
recurring_next_installment_at | When that plan charges next. |
recurring_ended_at | When the member's last plan ended, if none is live. |
cancellation_reason | Why that plan ended, if Fundraise Up recorded a reason. |
plans | Every recurring plan for the member, keyed by plan ID, with its status, frequency, amount, currency, campaign and dates. |
account_ids, supporter_ids | The Fundraise Up account and supporter IDs the profile was built from. |
livemode | Whether the profile comes from live or test data. |
synced_at | When Allegro last rebuilt the profile. |
A member with no counted donations and no plans has no Fundraise Up profile.
Known gaps
- Plan endings arrive with the next backfill. Fundraise Up does not send webhooks when a plan fails, completes or pauses, so those changes appear after the next backfill.
- Email changes in Fundraise Up. When a supporter changes their email in Fundraise Up, their next donation matches the member with the new email. Earlier donations stay with the old member, and a backfill does not move them.
- Shared rate limit. Two keys on the same Fundraise Up account share Fundraise Up's rate limit. Their backfills slow down and retry rather than run side by side.
- Disabled webhooks. Allegro cannot tell when Fundraise Up turns a webhook off. Watch the Last webhook time.