Requires: Fundations Pro 1.1.0+
Connects Fundations to Zapier using a dynamic subscription model. Zapier subscribes and unsubscribes to event triggers automatically when you activate or deactivate a Zap. No manual webhook URLs are copied between sites.

Why use it
Zapier connects to over 5,000 apps with a no-code interface. If you want to send donation data to Google Sheets, post a Slack message on every donation, or create Trello cards for new fundraisers, Zapier provides the bridge without writing code.
How it works
The Zapier integration differs from the webhook integration. Rather than copying a URL into Zapier, Zapier subscribes to your site via a REST API when you set up a Zap and unsubscribes when you turn the Zap off.
Your site exposes three REST endpoints:
| Method | Endpoint | Purpose |
|---|---|---|
| POST | /wp-json/get-fund/v1/integrations/zapier/subscribe | Zapier calls this when a Zap is activated |
| DELETE | /wp-json/get-fund/v1/integrations/zapier/unsubscribe | Zapier calls this when a Zap is deactivated |
| GET | /wp-json/get-fund/v1/integrations/zapier/sample/{trigger} | Zapier calls this to load sample data for field mapping |
All requests require authentication via the X-Get-API-Key header or an api_key query parameter. The key is generated automatically and shown in the integration settings.
If Zapier returns HTTP 410 (Gone) for a subscription, it is automatically deleted from your site. This happens when a Zap is turned off or deleted in Zapier.
Supported triggers
| Trigger key | Fires when |
|---|---|
action_created | A new fundation is published |
action_updated | A fundation is edited |
action_completed | A fundation reaches its goal |
donation_received | A donation is confirmed (requires marketing consent) |
donation_failed | A donation payment fails |
user_registered | A new user registers via the wizard |
campaign_joined | A user joins a campaign |
team_created | A new team is created |
milestone_reached | A fundation hits 25%, 50%, or 75% of its goal |
How to set it up
On your WordPress site
- Navigate to Fundations Pro → Integrations → Zapier.
- Copy the API Key shown on the page. Keep this key secure.
- Enable the integration.

In Zapier
- Go to zapier.com and click Create Zap.
- For the trigger, search for Fundations or use the Webhooks by Zapier app with Catch Raw Hook as the event type if a native Fundations app is not listed.
- When prompted for authentication, enter your site URL and paste the API key.
- Zapier will subscribe to the endpoint automatically. It will also fetch sample data so you can map fields in the next step.
- Choose your Action app (Google Sheets, Slack, etc.) and map the fields from the Fundations payload.
- Turn on your Zap.
Repeat from step 4 for each trigger event you want to automate.
Regenerating the API key
The settings page includes a Regenerate button next to the API key. Regenerating the key deletes all existing Zapier subscriptions immediately. Any active Zaps will stop receiving data until you reconnect them with the new key.
Payload format
Zapier receives a flat JSON object. All keys use underscores. The payload does not contain nested sub-objects.
{
"_trigger": "donation_received",
"_timestamp": "2026-06-12T10:00:00+00:00",
"donation_id": 123,
"donation_amount": 50.0,
"donation_currency": "EUR",
"donor_email": "jan@example.com",
"donor_first_name": "Jan",
"donor_last_name": "de Vries",
"action_id": 456,
"action_title": "Spring Fundraiser",
"marketing_consent": true
}
Note: _trigger and _timestamp are prefixed with an underscore to distinguish them from data fields.
See Integration index: Data Payload for the full list of available fields.
What you can and cannot do
You can connect to any of the 5,000+ apps on Zapier, create multiple Zaps for different trigger events, use Zapier’s filtering and conditional logic to narrow when actions run, and map any flat field from the Fundations payload to Zapier action inputs.
There are a few limitations. A donation where the donor did not give marketing consent will not fire the donation_received trigger. A single Zap cannot subscribe to multiple trigger types. The API key is used for subscribing only, not for payload delivery, so no authentication is added to outgoing payloads. Subscriptions cannot be recovered automatically after an API key regeneration.
Examples
| Zap trigger | Zap action | Result |
|---|---|---|
donation_received | Google Sheets: Create Row | A new row with donor and amount details |
donation_received | Slack: Send Message | A message in your #donations channel |
action_created | Trello: Create Card | A card for the new fundraiser |
action_completed | Gmail: Send Email | A congratulations email to the creator |
milestone_reached | Twilio: Send SMS | An SMS alert to your team |
Troubleshooting
| Problem | Likely cause | Fix |
|---|---|---|
| Zapier cannot authenticate | Wrong API key or site URL | Confirm the key from the settings page and your site’s REST API URL |
| Zap not receiving data after setup | Integration not enabled | Enable the integration on the settings page |
No data for donation_received | Donor did not give marketing consent | Confirm the donation form shows a consent checkbox and the donor checked it |
| All Zaps stopped working | API key regenerated | Re-enter the new key in each Zapier connection |
| Sample data fetch returns empty | No events of that type have occurred yet | Make a test donation (or create a fundation, etc.) before loading sample data in Zapier |
| Subscriptions not deleted when Zap turned off | Zapier returned 410 and cleanup ran | This is normal; check Sync Logs for confirmation |
Developer reference
REST endpoint authentication
All three Zapier REST endpoints require the API key stored in get_fund_integration_api_key (WordPress option).
POST /wp-json/get-fund/v1/integrations/zapier/subscribe
Headers: X-Get-API-Key: <api_key>
Body: { "hookUrl": "https://hooks.zapier.com/...", "trigger": "donation_received" }
DELETE /wp-json/get-fund/v1/integrations/zapier/unsubscribe?id=<subscription_uuid>
Headers: X-Get-API-Key: <api_key>
GET /wp-json/get-fund/v1/integrations/zapier/sample/donation_received
Headers: X-Get-API-Key: <api_key>
Filtering outgoing data
add_filter( 'get_fund_integration_trigger_data', function( $data, $trigger, $object_id ) {
// Add a custom field to the Zapier payload
if ( $trigger === 'donation_received' ) {
$data['custom_project_code'] = get_post_meta( $data['action_id'], '_project_code', true );
}
return $data;
}, 10, 3 );
See Integration index developer reference for all filter signatures.