Charitable Documentation

Learn how to make the most of Charitable with clear, step-by-step instructions.

How to Use Donation Recovery in Charitable Pro

Ever notice a donor start a gift, fill in their name and amount, and then just disappear? Donation Recovery catches that moment automatically, sends a reminder email, and brings many of those donors back to finish what they started.

This guide walks you through turning Donation Recovery on, choosing which campaigns it applies to, and reading the reports once it’s running. It also covers exactly how tracking, abandonment detection, and recovery emails work behind the scenes, plus troubleshooting steps and developer resources if you need to dig deeper.

What’s In This Guide?

  • Key Features
  • Requirements
  • Enabling Donation Recovery
  • Choosing Which Campaigns to Track
  • Setting Up the Recovery Email
  • Adjusting the Advanced Settings
  • Testing the Recovery Flow
  • How Donation Recovery Tracks Donor Sessions
  • What Happens When a Donor Abandons a Form
  • Recovery Email Security
  • How Unsubscribing Works
  • Reading Your Recovery Reports
  • Customizing the Recovery Email Template
  • Developer Resources
  • Troubleshooting
  • Not Yet on the Pro or Elite Plan?
  • FAQs on Donation Recovery
  • More Documentation

Key Features

Here’s what Donation Recovery does once it’s turned on.

  • Silently tracks donor activity, including email, name, and donation amount, as donors fill out a form.
  • Automatically detects abandoned sessions with a background process that checks every 5 minutes.
  • Sends a branded recovery email with a one-click “Complete My Gift” button.
  • Pre-fills the donation form with the donor’s previously entered details when they return.
  • Includes a built-in unsubscribe link on every recovery email, with no suppression list to manage yourself.
  • Gives you per-campaign scope control, so you choose exactly which campaigns participate.
  • Adds a dedicated Reports tab with date-filtered stats, a sessions table, and CSV export.
  • Surfaces recovered revenue directly in your main Reports Overview tab.

Requirements

Before you turn on Donation Recovery, make sure you have:

  • Charitable’s Pro plugin, updated to version 1.8.13.5 or later, on the Pro or Elite plan.
  • WordPress 6.2 or later.
  • PHP 7.2 or later.
  • WP-Cron enabled on your site. It’s on by default for almost every WordPress install, and recovery emails send through it, so if your host has turned it off, ask them how to set up a real server cron job as a replacement.

Enabling Donation Recovery

Turning Donation Recovery on takes a few minutes, including installing the addon.

Step 1: Install the Donation Recovery Addon

Go to Charitable » Settings » General and click the “Donation Recovery” sub-tab.

At the bottom of this page, you’ll see a button “Get Donation Recovery Addon.”

Get donation recovery addon

This takes you to the Addons page.

Scroll to find Donation Recovery or you can search for it. Then install and activate it.

Donation recovery addon in addons page

Need more help? See How To Install Charitable Addons.

Step 2: Enable Donation Recovery

Back on Charitable » Settings » General » Donation Recovery, check “Enable Donation Recovery” and click “Save Changes.”

Donation Recovery settings screen in Charitable

Enabling the feature here doesn’t start tracking anything yet. You still need to choose which campaigns participate, covered next.

Choosing Which Campaigns to Track

No campaigns are tracked by default, even after you enable Donation Recovery. You choose exactly which ones participate under “Campaign Recovery Scope,” on the same settings page.

The list shows every published campaign along with its all-time tracked sessions, recovered donations, and recovery rate, so you can see how a campaign is doing before you decide whether to add it. A search box and˘buttons help if you run a lot of campaigns.

Campaign recovery scope
  1. Find the campaign or campaigns you want under “Campaign Recovery Scope.”
  2. Check the box next to each one.
  3. Optional: check “Include new campaigns automatically” if you want every future campaign covered without coming back to this page.
  4. Click “Save Settings.”

Important Note: Charitable Ambassadors peer-to-peer campaigns are not supported and won’t appear in this list.

Next, you’ll see a Recovery Email Sender section with a notice “Donation Recovery email is currently disabled. Enable it above to begin capturing abandoned donations and sending recovery emails.”

Enable recovery email sender

In the next section, we’ll explore how to set that up.

Setting Up the Recovery Email

Enabling Donation Recovery turns on tracking and abandonment detection, but the recovery email has its own switch. Charitable ships with a default recovery email template that’s ready to use immediately, or you can customize it to match your organization’s voice.

Turn On the Recovery Email

  1. Go to Charitable » Settings » Emails.
  2. Find the email named “Donor: Donation Recovery.”
  3. Click “Enable Email.”
Charitable settings enable donation recovery email

A green button to access the email’s settings appears once it’s enabled.

Donation recovery email settings button

Customize the Email

Click into the email’s settings to edit the subject line, sender, and body. You can use shortcodes to automatically pull in the campaign name, your website title, and your website URL.

Donation recovery email

Click “Save Changes” at the bottom of the page.

Back on the Donation Recovery settings page, you’ll see the email is now active, along with fields to set the From Name and From Address.

Donation recovery email is active

Make sure you save your changes on this page too.

What Donors See

Here’s a sample of what lands in a donor’s inbox.

Sample donation recovery email

Adjusting the Advanced Settings

The default settings work well for most organizations, but a few options are worth knowing about, all on the same “Donation Recovery” sub-tab.

  • Abandonment Cutoff – How many minutes of inactivity before a session counts as abandoned. Defaults to 60 minutes. You can set it anywhere from 15 minutes to 1,440 minutes (24 hours).
  • Session Retention – How many days a session record is kept before it’s automatically cleaned up. Defaults to 90 days, and you can set it anywhere from 30 to 365 days.
Abandonment cutoff and retention

Pro tip: Running a time-sensitive campaign, like a Giving Tuesday push? Lower the Abandonment Cutoff so recovery emails go out sooner, while the donor’s intent is still fresh.

Testing the Recovery Flow

Before trusting the system to run automatically for real donors, test it once.

  1. Use a secondary email address or a test account.
  2. Visit one of your recovery-enabled campaign pages and fill in the donation form: name, email, and an amount.
  3. Close the tab or navigate away without completing the payment.
  4. Wait for the recovery email to arrive. It can take up to an hour, depending on when the background process runs.
  5. Click “Complete My Gift” in the email and confirm the form opens pre-filled with exactly what you entered.

This one test confirms the full recovery flow is working before it handles real donors.

How Donation Recovery Tracks Donor Sessions

Here’s what happens behind the scenes, from the moment a donor starts typing to the moment they return.

How recovery works

When a donor visits a donation form on a recovery-enabled campaign, a lightweight JavaScript tracker loads in the background and listens for changes to the email, first name, last name, and amount fields.

When the donor enters a valid email address, the tracker sends the captured data to a REST API endpoint. No data is stored until a valid email address is present.

The tracker captures:

  • Email address
  • First name and last name, if entered
  • Donation amount
  • Donation period, one-time or recurring, if applicable
  • Source URL, the page the donor was on when they filled out the form

The tracker runs on both legacy donation forms and Visual Form Builder (VFB) forms.

Note: The tracker is a JavaScript file that loads on donation form pages. If another plugin or your theme produces a JavaScript error on the same page, it may prevent the tracker from initializing, which means no sessions get captured even when donors fill out the form. See the Troubleshooting section below if you notice this.

What Happens When a Donor Abandons a Form

Once a campaign is in scope, here’s the flow from start to finish.

  • A donor opens the donation form and starts typing their email, name, and amount.
  • If they leave before submitting and the form sits inactive past your Abandonment Cutoff, Charitable marks the session abandoned.
  • About an hour later, Charitable sends a recovery email automatically. No action needed from you.
Donation form pre-filled after a donor returns from a recovery email
  • The donor clicks the “Complete My Gift” button in the email.
  • They land back on the exact page where they started, with their email, name, and donation amount already filled in. If they had selected a preset amount, that option is already selected too.
  • They confirm their payment details and submit. That’s the whole return trip.

Pre-fill runs as soon as the page loads, and again briefly after, to support forms that render dynamically. It never overwrites a field the donor has already typed into.

About WP-Cron

Abandonment detection and recovery emails both run through a WordPress background process called WP-Cron. A scheduled job checks for sessions that have passed your Abandonment Cutoff approximately every 5 minutes.

WP-Cron only fires when someone visits your site, so it can behave unpredictably in a few situations:

  • Low-traffic sites – If your site gets very few visitors, scheduled tasks can fire later than expected. A recovery email scheduled for 1 hour after abandonment might not actually send until the next visitor loads a page.
  • DISABLE_WP_CRON set to true – Some hosts and performance plugins disable WP-Cron in wp-config.php to reduce page load overhead. Without a real server cron to replace it, abandonment detection and email sending stop entirely.
  • Plugin conflicts – Some plugins clear scheduled events on activation or deactivation, or block new events from registering. If this happens, the abandonment detection job can disappear from the schedule without warning.
  • Shared hosting resource limits – On heavily loaded shared hosting, PHP execution can be cut off before a cron job finishes processing a large batch of sessions.

Important Note: If recovery emails are delayed or not sending at all, WP-Cron is the first thing to check. See the Troubleshooting section below.

Recovery Email Security

Every recovery link uses a signed token so it can’t be tampered with or reused.

  • Links are signed with an HMAC SHA-256 token.
  • Each token is bound to the specific session, the email, and an expiry timestamp, so it can’t be reused across different sessions.
  • Tokens expire after 7 days. After that, clicking the link sends the donor to your site’s homepage instead of their donation form.

A recovery email isn’t sent at all if any of the following are true:

  • The donor’s email address is on the unsubscribe list.
  • The campaign has ended before the email is scheduled to go out.
  • A recovery email has already been sent for that session.
  • The session has already been marked recovered, unsubscribed, or expired.

How Unsubscribing Works

Every recovery email includes a one-click unsubscribe link in the footer. When a donor clicks it, Charitable adds their email address to a suppression list automatically. They won’t receive another recovery email from your site, and you don’t have to manage the list yourself.

Reading Your Recovery Reports

Once Donation Recovery has been running for a bit, head to Charitable » Reports » Donation Recovery to see how it’s performing.

Recovery reports

At the top of the page, 5 stats tiles give you a quick summary:

  • Total Tracked – Sessions where an email address was captured.
  • Abandoned – Sessions that passed the Abandonment Cutoff.
  • Recovered – Donors who came back and completed their gift.
  • Recovery Rate – Recovered donations as a percentage of abandoned sessions.
  • Recovered Revenue – Total dollar value of recovered donations.

Use the date range filter above the tiles to narrow everything to the last 7 days, last 30 days, last 90 days, or a custom range you set yourself.

Below the tiles, the sessions table lists individual donors along with a status badge:

  • Tracking – The session is still active. The donor may still be on the form.
  • Abandoned – The session passed the cutoff without a completed donation.
  • Recovered – The donor came back and completed their gift.
  • Unsubscribed – The donor clicked the unsubscribe link.
  • Expired – The session was cleaned up by your Session Retention setting.

Click “Download CSV” above the table to export every session for the selected date range, with no row limit. The export includes first name, last name, email, campaign, amount, currency, status, number of emails sent, donation ID, and both the created and modified dates.

Below the sessions table, a per-campaign breakdown shows the same numbers split out by campaign, so you can see which campaigns are recovering the most donations.

A short recovery summary also shows up on the main Reports Overview tab, right below your Total Donations tile, so recovered revenue is always visible alongside the rest of your numbers.

Customizing the Recovery Email Template

The default recovery email works out of the box, but you can override its HTML template in your theme for full control over layout, colors, and copy.

Copy the original template file:

wp-content/plugins/charitable-recovery/templates/emails/recovery-immediate.php

Then create a matching file in your theme at:

your-theme/charitable/emails/recovery-immediate.php

Edit the copy in your theme. Charitable uses your version instead of the default. The following variables are available inside the template:

VariableDescription
$sessionThe session object: email, first name, last name, amount, campaign ID, and other captured fields.
$recovery_urlThe signed recovery URL used for the “Complete My Gift” button.
$unsub_urlThe one-click unsubscribe URL.

Developer Resources

If you’re comfortable with code, these hooks and endpoints give you more control over how Donation Recovery behaves.

Hooks and Filters

  • charitable_recovery_detect_abandoned – WP-Cron action hook. Fires approximately every 5 minutes to detect abandoned sessions. Hook into this to run additional logic after abandonment detection.
  • charitable_recovery_send_email – WP-Cron action hook. Fires once per scheduled recovery email, and receives the email row ID as its first argument.

REST Endpoint

The JavaScript tracker submits captured data to:

POST /wp-json/charitable-recovery/v1/capture

This endpoint requires a valid X-WP-Nonce header, accepts application/json, and is rate-limited to 20 requests per minute per IP address.

Settings API

Recovery settings are stored under the charitable_settings option, in the general__recovery group. Access them with:

charitable_get_option( array( 'general__recovery', 'recovery_enabled' ), 1 );
charitable_get_option( array( 'general__recovery', 'abandonment_cutoff' ), 60 );
charitable_get_option( array( 'general__recovery', 'session_retention_days' ), 90 );
charitable_get_option( array( 'general__recovery', 'recovery_sender_name' ), get_bloginfo( 'name' ) );
charitable_get_option( array( 'general__recovery', 'recovery_sender_email' ), get_option( 'admin_email' ) );
charitable_get_option( array( 'general__recovery', 'recovery_campaign_ids' ), array() );
charitable_get_option( array( 'general__recovery', 'recovery_include_new_campaigns' ), 0 );

Troubleshooting

Recovery Emails Are Not Being Sent

The most common cause is a WP-Cron problem. Work through these checks in order.

  1. Confirm WP-Cron is not disabled. Open wp-config.php and check whether DISABLE_WP_CRON is defined. If it’s set to true, WP-Cron won’t fire at all unless you have a real server cron job set up to trigger it. Contact your host if you’re unsure how to configure one.
  2. Check for a conflicting plugin. Some caching, performance, and security plugins interact with WP-Cron in ways that clear or block scheduled events. If emails stopped after you activated or deactivated another plugin, that plugin is a likely suspect. Try deactivating it temporarily and check whether recovery events reappear.
  3. Inspect the scheduled events directly. Install the free WP Crontrol plugin from WordPress.org, then go to Tools » Cron Events and look for charitable_recovery_detect_abandoned. If it’s missing, save the Donation Recovery settings page once to re-register it. If it keeps disappearing, a conflicting plugin is likely removing it.
  4. Confirm campaign scope and unsubscribe status. Verify the affected campaign is selected under Campaign Recovery Scope, and that the donor’s email address isn’t on the suppression list.
  5. Contact your host. If WP-Cron appears to be running but emails still don’t arrive, your host may be blocking outbound email from PHP’s mail() function. Ask whether they require an SMTP plugin for reliable delivery.

If you’ve worked through all of the above and emails are still not sending, contact Charitable support with a description of what you found in WP Crontrol.

The Donation Form Is Not Pre-Filling on Return

The source URL recorded when the donor originally filled out the form is used for the redirect. If the form was on a page whose URL has since changed, the redirect target may no longer match. Check that the campaign is using the correct permalink, and that the tracker loaded on the original form page.

A Donor Keeps Receiving Emails After Unsubscribing

The suppression list is stored in the WordPress options table as charitable_recovery_unsubscribed_emails. Confirm the entry is present. The comparison is case-insensitive, but the email must be stored without leading or trailing spaces.

No Sessions Are Being Tracked

If the Reports tab shows no tracked sessions despite donors visiting your donation form pages, the JavaScript tracker likely isn’t running. The most common causes are:

  • A JavaScript error from another plugin or your theme. An uncaught error in a script that loads before the tracker can block all subsequent JavaScript on the page. Open your browser’s developer console on a donation form page and look for red error messages. If you see one referencing another plugin or your theme, deactivate it to confirm.
  • A JavaScript minification or concatenation plugin. Caching and optimization plugins like Autoptimize, W3 Total Cache, or WP Rocket combine and minify JavaScript files, which can occasionally introduce load-order problems. Try disabling JavaScript optimization temporarily and test again.
  • A Content Security Policy (CSP) header blocking the REST API call. Some security plugins add strict CSP headers that prevent JavaScript from calling your own site’s REST API. Check the browser console for CSP-related errors.

To isolate the issue, temporarily switch to a default WordPress theme and deactivate all plugins except Charitable. If sessions start appearing, reactivate your other plugins one at a time to find the conflict.

If you can’t resolve the conflict on your own, contact Charitable support with the name of the conflicting plugin and any console error messages you found.

Stats Show Zero Recovered Revenue

Recovered revenue is summed from the amount captured before a donor abandoned their session. If a donor chose their donation amount after clicking the recovery link, rather than having it captured before they left, the session record’s amount may be empty or zero. This reflects the intent captured before abandonment, not necessarily the final donation amount.

Not Yet on the Pro or Elite Plan?

Donation Recovery is available on the Pro and Elite plans of Charitable’s paid plugin, starting with version 1.8.13.5. If you’re on Charitable Lite or a lower paid tier, upgrading unlocks Donation Recovery along with the rest of the Pro and Elite features. Upgrade to Pro or Elite »

That’s it! You now know how to turn on, configure, and monitor Donation Recovery, understand how it works under the hood, and troubleshoot it if something goes wrong.

FAQs on Donation Recovery

Will Donation Recovery slow down my donation forms?

No. The tracker that captures donor details runs quietly in the background. It never blocks a form from loading or submitting, and if it can’t reach the server for any reason, it fails silently so the donor’s experience isn’t affected.

Do I have to select every campaign?

No. No campaigns are tracked by default, and there’s no requirement to include all of them. Choose only the campaigns where recovery makes sense for you under “Campaign Recovery Scope.”

How long does a donor have to click the recovery link?

7 days. After that, the link expires, and clicking it sends the donor to your site’s homepage instead of their donation form.

What happens after a donor unsubscribes?

Their email address is added to a suppression list automatically, and no further recovery emails are sent to that address. You don’t need to manage the list manually.

Does Donation Recovery work with Charitable Ambassadors peer-to-peer campaigns?

Not currently. Peer-to-peer campaigns run through Charitable Ambassadors are excluded from the Campaign Recovery Scope list.

Do donors need to be logged in for recovery to work?

No. Recovery is entirely email-based. As long as a donor enters a valid email address before abandoning the form, a session is captured and a recovery email can be sent.

Can I customize the recovery email?

Yes. Use the built-in subject, sender, and body fields under Charitable » Settings » Emails for most changes, or override the full HTML template in your theme for complete control over layout and design. See Customizing the Recovery Email Template above.

What happens if WP-Cron stops working on my site?

New sessions still get captured, since that part doesn’t rely on cron, but abandonment detection and email sending stop until cron is restored. Any sessions that were pending are processed in the next successful cron run. Install WP Crontrol from WordPress.org to check whether your scheduled events are running.

Can a plugin conflict break Donation Recovery?

Yes, in two ways. A plugin that interferes with WP-Cron can stop abandonment detection and email sending. A plugin or theme that throws a JavaScript error on your donation form page can stop the tracker from initializing, which means no sessions get captured at all. See the Troubleshooting section above for how to isolate either issue.

What if my recovery emails aren’t sending?

This is almost always a WP-Cron issue, most common on low-traffic sites. Confirm you’re on the latest version of the Pro plugin, that the campaign is selected under Campaign Recovery Scope, and that the donor’s email isn’t on your suppression list. See Recovery Emails Are Not Being Sent above for the full troubleshooting checklist.

More Documentation

Still have questions? We’re here to help!

Last Modified:

What's New In Charitable

View The Latest Updates
🔔 Subscribe to get our latest updates
📧 Subscribe to Emails

Email Subscription

Join our Newsletter

We won’t spam you. We only send an email when we think it will genuinely help you. Unsubscribe at any time!

automation update

⚡ Visual Automation Builder: Drag and Drop With No Code!

Charitable Automation Connect 2.3.0 introduces the Visual Automation Builder, a full-screen canvas that lays each automation out as a flow of connected cards: a trigger, optional conditions, and a list of actions that run in order.

🧩 Many actions, one trigger: Tag a donor, send an email, add a note, and fire a webhook from a single event, dragged into any order.

✉️ Act inside Charitable: New Send Email, Tag Donor, and Add Donor Note actions run with no external service required.

🔤 Merge tags: Personalize emails and notes with live fields like {first_name}, {total}, and {campaign_name}.

🔁 Apply to existing donors: Run Tag Donor and Add Donor Note against the donors you already have.

🖥️ Canvas or Simple: Switch views anytime, and automations built before 2.3.0 keep working unchanged.

Read more here.

Integration updated

📬 Introducing Brevo for Charitable: Turn Donors into Subscribers Automatically

The moment a supporter makes a gift is when they are most engaged. With the new Brevo integration for Charitable, you can automatically turn those one-time donors into long-term subscribers without touching a single spreadsheet.

Simply collect donor consent right on your donation form and start your welcome series immediately.

What’s New:

🔄 Automated Subscriber Sync: New donors who opt in are added straight to your Brevo contact list as soon as their payment clears—no manual exports or CSV imports required.

🎯 Granular Consent & Opt-In Control: Customize your checkbox label, choose whether it defaults to checked or unchecked, or turn on Brevo double opt-in to keep your list clean and compliant.

📋 Per-Campaign List Mapping: Route supporters to your global email list or map specific campaigns to targeted Brevo lists to tailor your follow-up messaging.

⚡ 5-Minute Setup: Connect instantly by pasting your Brevo API key into the Newsletter settings, map your contact fields, and start building your email list on autopilot.

Ready to grow your mailing list? Brevo is available now starting on the Charitable Plus plan—connect your account today!

recurring donations updated

💳 Introducing Card Updates: Fix Expired Cards Without Losing Subscriptions!

newExpired or updated credit cards are one of the biggest silent leaks in recurring fundraising. With Card Updates in the Recurring Donations extension, donors can now refresh their payment details directly—keeping their subscription, schedule, and giving history completely intact.

No canceled plans, no lost history, and zero administrative headache for your team.

What’s New:

⚡ 30-Second Self-Service: Donors get a dedicated “Update Card” button in their dashboard that opens Stripe’s secure, PCI-compliant Customer Portal to update card details instantly.

🔒 Scoped & Safe Access: Scoped exclusively to card updates by default, donors can’t accidentally cancel or alter their plans from inside the portal, keeping your webhooks and data in sync.

🤝 Admin-Assisted Support: Helping a donor on the phone? Open their secure Stripe portal in one click from your admin screen or generate a single-use update link to email them.

📋 Automatic Audit Trail: Every payment method update is recorded automatically with a timestamp in both system-wide logs and the individual donor’s profile.

Ready to protect your recurring revenue? Get the Plus or Pro plan and update Recurring Donations to 2.3.0+ and enable “Update Payment Method” under your Settings today!

Integration page builder

Divi Fans Rejoice! Native Divi 5 Campaign Progress Bar Module!

With our new native Divi 5 module, you can anchor your microsites with real-time fundraising stats directly on the visual canvas. Here’s how it works, and why it’s worth turning on today.

Create campaign updates that are VISUAL AND LIVE. You can also:

📊 Campaign Progress Bar: Drop a live progress bar into any Divi 5 layout and show goal progress in real time.

🎨 Deep styling controls: Easily customize the bar and track color, height, and radius to match your brand perfectly.

👁️ Visual Builder ready: Configure and preview everything directly on the Divi canvas as a first-class module.

🔁 Identical rendering: The same exact engine powers this module, meaning consistent design without legacy shims.

✅ Faster launches: Never leave the Divi 5 interface to configure shortcodes or guess how your goal labels will look.

Learn more here.

Integration page builder

👉🏻 New in Charitable: Native Elementor Widgets for Seamless Campaign Building

With native Elementor widgets, you design donation campaigns right alongside the rest of your page without touching code. Here’s how it works, and why it’s worth turning on today.

Create fundraising pages that are VISUAL, NATIVE, AND SHORTCODE-FREE. You can also:

⚡ Mini Donation: Add a compact, high-converting donation widget with preset amounts and full color control.

⏳ Campaign Countdown: Build urgency for a deadline-driven appeal, complete with optional confetti when the goal is hit.

📣 Donation Feed: Prove momentum by showing visitors the social proof of real people giving right now.

🏆 Donor Leaderboard: Celebrate top supporters with gold, silver, and bronze styling to spark friendly giving.

🖼️ Campaign Showcase: Feature multiple campaigns in a landing page grid or carousel, with search, filters, and badges.

Learn more here.