> Requires: Fundations Pro
Automation rules let you define trigger-based actions that run automatically when something happens in Fundations. When a trigger fires, the rule maps data to an external integration and sends it, optionally after a delay.
Why use this
Manual data entry between your fundraising platform and your CRM or email tool is error-prone and time-consuming. Automation rules handle the connection automatically. You define when something should happen and what data to send. The rules execute without further input.
What it does
Each automation rule has:
- A name
- A trigger (the event that activates the rule)
- An integration (which CRM or external service to send to)
- Field mappings (which Fundations fields map to which external fields)
- Optional tags and list assignment for CRM integrations
- An optional delay before execution
Rules are stored in a WordPress option (get_fund_automation_rules) and processed by the Integration Manager each time a trigger fires.
Available triggers
| Trigger key | When it fires |
|---|---|
donation_received | A donation is completed (requires marketing consent) |
user_registered | A new fund member account is created |
action_created | A new fundation is published |
action_updated | An existing fundation is updated |
goal_reached | A fundation reaches its fundraising goal |
campaign_joined | A fundraiser joins a campaign |
action_expired | A fundation reaches its end date |
action_claimed | A guest fundation is claimed by a user |
> The donation_received trigger only fires when the donor has given marketing consent during checkout. If the consent field is not in your donation form or the donor declined, this trigger will not run for that donation.
Delays
Rules can be delayed before execution. Set a delay value and unit (minutes, hours, or days). Delayed rules are scheduled using WordPress cron on the get_fund_delayed_rule hook. If WordPress cron is not running reliably on your server, consider a real cron job. See Troubleshooting.
How to use it
- Go to Fundations → Integrations.
- Make sure you have at least one integration connected. See CRM Integrations.
- Click Add Rule or open an existing rule.
- Enter a name for the rule.
- Choose a trigger from the dropdown.
- Choose which integration should receive the data.
- Configure field mappings. See Field Mapping for how merge tags work.
- Optionally set a tag or list ID for the target integration.
- Optionally set a delay.
- Enable the rule and save.

Settings & options
| Setting | Description |
|---|---|
| Name | Label shown in the rules list |
| Trigger | Event that activates this rule |
| Integration | Which connected service to send to |
| Field Mappings | Source (merge tag) to destination (CRM field) pairs |
| Tags | Tags to apply in the target CRM |
| List ID | Mailing list or audience in the target CRM |
| Delay Value | Number of delay units to wait before sending |
| Delay Unit | minutes, hours, or days |
| Enabled | Toggle to activate or pause the rule without deleting it |
What you can and cannot do
- You can create, duplicate, edit, and delete rules.
- You can pause a rule by toggling it off without losing its configuration.
- You can duplicate a rule and adjust it for a second integration.
- You can add a delay of any length in minutes, hours, or days.
- You cannot run a rule retroactively on past donations. Rules only fire for events that happen after the rule is enabled.
- You cannot use conditions or filters to restrict which donations trigger a rule (for example, “only donations over 50”). Rules fire for all events of the chosen trigger type.
- The
donation_receivedtrigger requires marketing consent. There is no way to bypass this gate.
Examples
Add donors to a Mailchimp list on donation:
- Create a rule with trigger:
donation_received. - Choose the Mailchimp integration.
- Map
{donor_email}to the Mailchimp email field,{donor_first_name}to the first name field. - Set the Mailchimp list ID.
- Enable and save.
Notify your team via a webhook when a new fundation is created:
- Create a rule with trigger:
action_created. - Choose a Webhook integration.
- Map
{action_title},{action_url}, and{creator_name}to the webhook payload. - Enable and save.
Troubleshooting
A rule is enabled but nothing is being sent. Check Sync Logging to see if the rule attempted to fire and failed. If there are no log entries at all, confirm the trigger event is actually occurring and that any trigger conditions are met (marketing consent for donation_received).
Delayed rules are not executing. Delayed rules use WordPress cron. If your server does not receive regular traffic, WordPress cron may be delayed. Set up a real server cron to call wp-cron.php every minute for reliable delivery.
A rule fired but the data arrived at the CRM with blank fields. The merge tags used in the field mapping may not be available for the chosen trigger. Not all merge tags are populated for all triggers. See Merge Tags for the trigger-to-tag availability table.
Developer reference
Rule storage
Rules are stored in the WordPress option get_fund_automation_rules as an array keyed by UUID. Each rule has the keys: id, name, integration, trigger, enabled, field_mappings, tags, list_id, extra_settings, delay_value, delay_unit, created_at, updated_at.
Rule management methods
The Get_Fund_Automation_Rules class provides:
| Method | Description |
|---|---|
create_rule( $data ) | Creates a new rule, assigns a UUID, returns the rule array |
update_rule( $id, $data ) | Updates an existing rule by ID |
delete_rule( $id ) | Removes a rule permanently |
toggle_rule( $id ) | Flips the enabled state |
duplicate_rule( $id ) | Creates a copy with a new UUID |
Hooks and filters
// Add or modify available triggers shown in the rule editor UI
add_filter( 'get_fund_integration_triggers', function( $triggers ) {
$triggers['my_custom_trigger'] = array(
'label' => 'My Custom Trigger',
'groups' => array( 'donation', 'user' ),
);
return $triggers;
} );
// Modify the data payload for a trigger before it reaches integrations
add_filter( 'get_fund_integration_trigger_data', function( $data, $trigger, $object_id ) {
if ( 'donation_received' === $trigger ) {
$data['custom_field'] = get_post_meta( $object_id, '_my_meta', true );
}
return $data;
}, 10, 3 );
// Runs after a trigger has been processed by all integrations
add_action( 'get_fund_after_integration_trigger', function( $trigger, $data, $object_id ) {
// log or act on the completed trigger
}, 10, 3 );
Delayed rule cron hook
// Fires when a delayed rule's scheduled time arrives
add_action( 'get_fund_delayed_rule', function( $rule_id, $data, $object_id, $pending_log_id ) {
// Internal use — the Integration Manager handles this.
// Do not bind to this hook unless you know what you are doing.
}, 10, 4 );
AJAX actions (require manage_options)
| Action | Description |
|---|---|
get_fund_save_integration | Save or update a rule |
get_fund_toggle_integration | Enable or disable a rule |
get_fund_test_integration | Send a test payload to the integration |
All require the get_fund_integrations_nonce nonce.