Automation Connect turns every donation, campaign event, or form submission into a real-time trigger that sends data to any app or service via webhooks. Connect Charitable with Zapier, Make.com, Slack, HubSpot, Mailchimp, n8n, Pabbly Connect, and thousands of other platforms – no developer required.
Requirements: Pro/Elite plan and Charitable Pro 1.8.13+.
Note: If you are using Charitable Automation 1.x, we have the documentation available here.
Key Features (vs 1.x version)
- Trigger webhooks on 17 donation, campaign, and recurring-donation events
- Filter deliveries with conditional logic across 11 criteria fields (donor, donation, campaign, form data)
- Customize the payload with 80+ available data fields covering donor, campaign, donation, and gateway details
- Sign every outgoing request with HMAC-SHA256 for endpoint security
- Send test payloads and inspect delivery responses directly from the editor
- Start quickly with 8 pre-built platform templates (Zapier, Make.com, Slack, HubSpot, Mailchimp, n8n, Pabbly Connect, and a blank canvas)
- Retry failed deliveries automatically via WordPress Action Scheduler
- Manage all subscriptions from a central dashboard in the Charitable admin
Why Use Automation Connect?
Charitable Automation Connect replaces manual data entry and one-off custom integrations with a single, flexible webhook system. Instead of writing custom code every time you want to sync donor records, notify a Slack channel, or add contacts to a CRM, you configure a subscription once and it runs automatically on every matching event.
See It In Action
Requirements
- Charitable Pro 1.8.13 or later
- Active Charitable Pro license (Pro plan or higher)
- WordPress 6.2 or later
- PHP 7.4 or later
Getting Started
Installation and Activation
- Log in to your WordPress dashboard and go to Charitable > Extensions.
- Locate Automation Connect and click Activate.
- Once active, a new Automation item appears in the Charitable admin menu.
Creating Your First Subscription
- Go to Charitable > Automation in wp-admin.
- Click + Add New Subscription.
- Select a platform template or choose Start from scratch.
- Configure the subscription in the editor (see Usage below).
- Click Save to activate the subscription.
Usage
Subscription Editor
Each subscription is configured across four tabs:
Basic Tab
Set the subscription name, the target webhook URL, and the trigger event.
Available Events — Donations
| Event | Description |
|---|---|
donation_created | A new donation is submitted |
donation_completed | A donation reaches Completed status |
donation_cancelled | A donation is cancelled |
donation_failed | A donation payment fails |
donation_refunded | A donation is refunded |
donation_pending | A donation is set to Pending |
donation_preapproved | A donation is pre-approved |
Available Events — Campaigns
| Event | Description |
|---|---|
campaign_created | A new campaign is published |
campaign_updated | An existing campaign is updated |
campaign_ended | A campaign reaches its end date |
campaign_goal_achieved | A campaign hits its fundraising goal |
Available Events — Recurring Donations
| Event | Description |
|---|---|
recurring_created | A new recurring plan is created |
recurring_completed | A recurring payment completes |
recurring_cancelled | A recurring plan is cancelled |
recurring_failed | A recurring payment fails |
recurring_paused | A recurring plan is paused |
recurring_resumed | A paused plan resumes |
Conditions Tab
Add rules to control when the webhook fires. All rules within a group use AND logic; multiple groups use OR logic.
Available Condition Fields
| Field | Operators |
|---|---|
donation_amount | is, isnot, greaterthan, less_than |
donation_status | is, is_not |
campaign_id | is, is_not |
campaign_category | is, is_not |
payment_gateway | is, is_not |
donor_country | is, is_not |
donor_email | is, is_not, contains |
newsletter_optin | is (yes/no) |
donation_type | is (one-time, recurring) |
recurring_period | is, is_not |
custom_field | is, is_not, contains |
Payload Tab
Choose exactly which fields to include in the outgoing JSON payload. Uncheck fields you don’t need to keep payloads lean.
Donor Fields (sample)
donor_id, donor_name, donor_first_name, donor_last_name, donor_email, donor_phone, donor_address, donor_city, donor_state, donor_postcode, donor_country, donor_total_donated, donor_donation_count
Donation Fields (sample)
donation_id, donation_amount, donation_status, donation_date, donation_time, donation_currency, donation_gateway, donation_gateway_transaction_id, donation_notes, donation_type, campaign_ids, campaign_names
Campaign Fields (sample)
campaign_id, campaign_title, campaign_url, campaign_goal, campaign_donated, campaign_percent_raised, campaign_donor_count, campaign_start_date, campaign_end_date, campaign_categories
Recurring Fields (sample)
recurring_id, recurring_amount, recurring_period, recurring_frequency, recurring_start_date, recurring_status
Site/Meta Fields (sample)
site_url, site_name, event_type, delivery_timestamp, webhook_id
Test / Debug Tab
Send a test payload using real or sample data and inspect the HTTP response code, response body, and delivery time. This lets you verify your endpoint is receiving data before going live.
Platform Templates
When creating a new subscription, you can start from one of eight pre-built templates. Each template pre-fills the event trigger and, where applicable, adds sensible default conditions.
| Template | Default Event | Notes |
|---|---|---|
| Zapier | donation_created | Pre-configured for Webhooks by Zapier Catch Hook |
| Make.com | donation_created | Pre-configured for Custom Webhook module |
| n8n | donation_created | Pre-configured for n8n Webhook node |
| Pabbly Connect | donation_created | Pre-configured for Pabbly webhook trigger |
| HubSpot | donation_created | Pre-configured for HubSpot workflow webhook |
| Mailchimp | donation_created | Adds newsletter opt-in condition by default |
| Slack | donation_created | Pre-configured for Slack Incoming Webhooks |
| Start from scratch | (none) | Full control over all settings |
Webhook Delivery
Request Format
Webhooks are delivered as HTTP POST requests with a JSON body and the following headers:
| Header | Value |
|---|---|
Content-Type | application/json |
X-WP-Webhook-Signature | HMAC-SHA256 signature |
X-WP-Webhook-Event | Event slug (e.g., donation_created) |
X-WP-Webhook-ID | Subscription post ID |
Signature Verification
Every request includes an X-WP-Webhook-Signature header. The signature is a lowercase hex HMAC-SHA256 of the raw JSON payload body, keyed with the subscription’s secret key.
To verify in PHP:
$signature = hash_hmac( 'sha256', $raw_body, $secret_key );
$is_valid = hash_equals( $signature, $received_signature );
Retry Behavior
Failed deliveries (non-2xx responses or connection errors) are retried automatically using WordPress Action Scheduler. The retry schedule uses exponential backoff. After the maximum number of retries, the delivery is marked as permanently failed and logged.
Customization
CSS
The Automation Connect admin UI inherits standard Charitable and WordPress admin styles. No frontend CSS is output.
Template Overrides
Automation Connect has no public-facing templates. All output is JSON payloads delivered server-side.
Troubleshooting
Webhook is not being delivered
Check the following in order: 1. Confirm the subscription is saved and the event type matches what you expect (e.g., donation_completed, not donation_created). 2. Verify the webhook URL is publicly accessible — local localhost URLs will not work from a live server. 3. Check Charitable > Tools > Logs for delivery errors, filtering by source charitable-automation-connect.
The test payload sent successfully but live events are not triggering
Conditions may be filtering out live events. Open the Conditions tab and review each rule. Temporarily disable all conditions to confirm the webhook fires, then re-add conditions one at a time.
Payload fields are missing from the JSON
Uncheck and re-check the relevant fields in the Payload tab, then save. Fields added to Charitable via third-party plugins may need to be registered using the charitable_automation_connect_payload_fields filter (see Developer Resources).
License notice is appearing in the admin
Automation Connect 2.0 requires an active Charitable Pro license at the Pro plan level or above. If you see a license notice, verify your license is active at Charitable > Settings > Licenses and that your plan is Pro or higher.
Developer Resources
Hooks and Filters
Payload
charitable_automation_connect_payload_fields— Filter the list of available payload fields. Use this to add custom fields from your plugin or theme.charitable_automation_connect_payload— Filter the payload array before delivery. Receives$payload,$subscription_id,$event.
Events
charitable_automation_connect_events— Filter the list of available trigger events. Add or remove event definitions.charitable_automation_connect_before_deliver— Fires before a webhook is dispatched. Receives$subscription_id,$event,$payload.charitable_automation_connect_after_deliver— Fires after a webhook is dispatched. Receives$subscription_id,$response,$payload.
Conditions
charitable_automation_connect_condition_fields— Filter available condition fields. Use this to register custom condition criteria.
Templates
charitable_automation_connect_templates— Filter the list of platform templates shown in the template picker. Add custom pre-configured templates.
License / Delivery
charitable_automation_connect_delivery_blocked— Filter whether delivery is blocked. Returnfalseto allow delivery regardless of license state (useful for testing).
Useful Functions
charitable_automation_connect()— Returns the main plugin instance.charitable_automation_connect()->get( 'subscriptions' )— Returns theSubscriptionsRepositoryinstance for querying active subscriptions.
Adding Custom Payload Fields
add_filter( 'charitable_automation_connect_payload_fields', function( $fields ) {
$fields['my_custom_field'] = array(
'label' => __( 'My Custom Field', 'my-plugin' ),
'group' => 'donor',
'resolve' => function( $event_data ) {
return get_user_meta( $event_data['donor_user_id'], 'my_meta_key', true );
},
);
return $fields;
} );
Adding Custom Events
add_filter( 'charitable_automation_connect_events', function( $events ) {
$events['my_custom_event'] = array(
'label' => __( 'My Custom Event', 'my-plugin' ),
'group' => 'donations',
'description' => __( 'Fires when my custom condition occurs.', 'my-plugin' ),
);
return $events;
} );





