> Requires: Fundations Pro
Merge tags are placeholders you use in field mappings and integration templates. When a trigger fires, each tag is replaced with the actual value from the current event.
Syntax
Use single curly braces: {tag_name}
You can combine tags with static text: Donation from {action_title} by {donor_name}
Trigger availability
Not all tags are populated for every trigger. Tags in the Donation and Donor groups are only available on donation-related triggers. Tags in the Action group are available on action and donation triggers. If you use a tag that is not populated for the current trigger, the value will be an empty string.
| Trigger | Available groups |
|---|---|
donation_received | User, Action, Campaign, Team, Donation, Donor, Site |
donation_failed | User, Action, Campaign, Team, Donation, Donor, Site |
user_registered | User, Site |
action_created | User, Action, Campaign, Team, Site |
action_updated | User, Action, Campaign, Team, Site |
goal_reached | User, Action, Campaign, Team, Site, Milestone |
campaign_joined | User, Action, Campaign, Site |
action_expired | User, Action, Site |
action_claimed | User, Action, Site |
Tag reference
User
| Tag | Description |
|---|---|
{user_id} | WordPress user ID |
{user_email} | User email address |
{user_first_name} | First name from user profile |
{user_last_name} | Last name from user profile |
{user_display_name} | Display name |
{user_login} | Username |
{user_registered} | Date the user registered |
{user_url} | User website URL |
Action (Fundation)
| Tag | Description |
|---|---|
{action_id} | Post ID of the fundation |
{action_title} | Title of the fundation |
{action_content} | Description/content |
{action_url} | Full URL to the fundation page |
{action_goal} | Fundraising goal amount |
{action_raised} | Amount raised so far |
{action_progress} | Percentage of goal reached |
{action_status} | Current status (active, completed, expired) |
{action_end_date} | End date |
{action_created} | Date the fundation was created |
{action_image} | URL of the featured image |
{is_campaign} | 1 if this is a campaign, 0 otherwise |
{claim_url} | Claim link for guest-created fundations |
{creator_email} | Creator email address |
{creator_first_name} | Creator first name |
{creator_last_name} | Creator last name |
{creator_name} | Creator display name |
{creator_anonymous} | 1 if the creator is anonymous |
{structure_type} | One of: individual, join_team, create_team |
Campaign
| Tag | Description |
|---|---|
{campaign_id} | Post ID of the parent campaign |
{campaign_title} | Title of the parent campaign |
Team
| Tag | Description |
|---|---|
{team_id} | Post ID of the team |
{team_name} | Team name |
{team_url} | URL to the team page |
{team_goal} | Team fundraising goal |
{team_raised} | Amount raised by the team |
Donation
| Tag | Description |
|---|---|
{donation_id} | Donation post ID |
{donation_amount} | Donation amount (numeric) |
{donation_currency} | Currency code (e.g. EUR, USD) |
{donation_date} | Date of the donation |
{donation_status} | Donation status |
{payment_method} | Payment gateway used |
{is_anonymous} | 1 if the donor chose anonymous |
{message} | Donor message (may be empty) |
Donor
| Tag | Description |
|---|---|
{donor_email} | Donor email address |
{donor_first_name} | Donor first name |
{donor_last_name} | Donor last name |
{donor_name} | Donor full name |
Site
| Tag | Description |
|---|---|
{site_name} | WordPress site name |
{site_url} | WordPress site URL |
Milestone
| Tag | Description |
|---|---|
{milestone} | The milestone amount that was reached |
Custom form field tags
When you add custom fields to a donation form using the Form Builder, those fields are automatically registered as merge tags in the donation_received and donation_failed triggers. The tag key matches the field slug you defined in the form template.
Troubleshooting
If a tag shows as {tag_name} in the output, the tag name is not recognized. Check for typos and confirm the tag exists in the reference above. Tags that cannot be resolved are left unreplaced.
If a tag resolves to an empty value, the tag is valid but the data is empty in this context. For example, {message} is empty if the donor did not write a message. It can also mean the tag group is not available for the current trigger — see the availability table above.
Developer reference
Adding custom merge tags
add_filter( 'get_fund_integration_merge_tags', function( $merge_tags ) {
// Add a tag to the 'site' group
$merge_tags['site']['fields'][] = array(
'key' => 'my_tag',
'label' => 'My Custom Value',
);
return $merge_tags;
} );
The get_fund_integration_trigger_data filter controls the actual resolved values:
add_filter( 'get_fund_integration_trigger_data', function( $data, $trigger, $object_id ) {
// Add your custom tag value to the data payload
$data['my_tag'] = 'resolved value';
return $data;
}, 10, 3 );