Charitable Documentation

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

How to Use the Ambassadors Directory – Your Full Ambassador Roster

Requires: Charitable Pro 1.8.16+
Charitable Ambassadors 3.0.0+

Managing a peer-to-peer fundraising program means staying on top of a lot of people. The Directory is where all of them live.

Every person who has submitted at least one fundraiser shows up here. From one screen you can see who’s verified, who’s most active, who’s gone quiet, and which causes each ambassador is fundraising for. You can verify someone with one click, send them a personal email, add a brand-new ambassador without waiting for a submission, or export the whole list to a spreadsheet for your CRM.

If the Overview answers “how is the program going overall?”, the Directory answers “who are the people running it?”

The Directory list table, showing ambassadors with name, fundraiser count, verified status, raised, donors, and last activity columns

When You’d Use It

The Directory is the screen you’ll come back to again and again throughout the life of your program. Here are the most common reasons:

  • Onboarding new ambassadors: someone just signed up. Search their name, verify their account, send the welcome email.
  • Spotting champions: sort by Raised descending to surface your top performers for personal recognition.
  • Re-engaging the quiet ones: filter to Inactive and send a personal nudge.
  • Spring-cleaning: bulk-delete and anonymize accounts that never produced a real fundraiser.
  • Feeding your CRM: export selected rows or the whole list as a CSV.

How to Get There

Go to Charitable » Ambassadors » Directory. The page opens with every ambassador on your site listed in newest-active-first order. The column headers for Raised, Donors, and Last Activity are clickable to sort the list.

The Four List Views

A sub-nav above the table splits the ambassador list into four scopes, each with its own count badge so you can see at a glance how many people are in each group.

The All / Verified / Unverified / Inactive sub-nav above the Directory list
ViewWho’s in it
AllEvery ambassador, regardless of state. The default view.
VerifiedAmbassadors you’ve explicitly marked as verified. The badge shows on their public-facing pages too.
UnverifiedAmbassadors who haven’t been verified yet, which is the default state for new sign-ups.
InactiveAmbassadors with no fundraising activity in the threshold window (90 days by default). Useful for finding people to re-engage.

The Columns

Every row in the list shows the same eight columns, giving you enough context to act without having to open each profile individually.

ColumnWhat it shows
CheckboxFor bulk-selecting rows.
NameAvatar (real Gravatar if registered, colored initials otherwise), display name, and email.
FundraisersHow many fundraisers they’ve submitted, broken out by status (e.g. “3 published, 1 pending”).
VerifiedA green check if they’re verified, dash otherwise.
RaisedLifetime dollars raised across all their fundraisers.
DonorsUnique donor count across all their fundraisers.
Last ActivityMost recent ambassador action (submission, donation received, etc.).
ActionsInline buttons: View Profile, Email, View As, and more.

Searching and Filtering

The search box above the table runs a simple text search across display name, email, and user_login. Below it is a row of filters you can stack together to find exactly the group you’re looking for.

The Directory search input and the filter row showing status, recruitment, and joined-date filters
FilterWhat it does
Status mixFilter to “has published fundraisers,” “has pending submissions,” or “has no fundraisers at all.” Useful for cleanup work.
RecruitedFilter to ambassadors who came in through an invite link, or those who self-signed-up.
Joined from / toDate-range filter on the WP user’s user_registered date.
Parent campaignShow only ambassadors who fundraised for a specific cause. Pre-fills when you click into a campaign’s Recruits sub-view from elsewhere.

Filters stack, so you can combine Verified, Recruited, and a joined date range to find exactly the cohort you need. For example, “all ambassadors who came in through Invitations this year and have already been verified.”

Acting on a Row

Each row has inline action buttons in the Actions column so you can take care of the most common tasks without opening a profile first.

ActionWhat it does
ProfileOpens the full ambassador profile page.
Verify / UnverifyOne-click toggle. The badge appears immediately on their public-facing pages.
Send EmailOpens a modal where you can write a one-off email with smart-tag substitution.
Welcome EmailResends the welcome email with a one-time magic-link auto-login.
View AsOne-click login as that user so you can see what they see on /my-campaigns/ or any front-end page. Sets a return cookie so you can switch back to your admin session.

The Full Ambassador Profile

Click an ambassador’s name or the Profile action button to open their full profile. The profile is a multi-tab dashboard for a single ambassador, giving you a much deeper view than the list alone.

An ambassador profile page showing the hero with avatar, name, email, and lifetime stats above four content tabs
  • Overview – the at-a-glance card with lifetime raised, year-to-date, donor count, donation count, verified state, and recruit count.
  • Campaigns – every fundraiser this person has submitted, with status, raised, and goal.
  • Donations – every donation received across all their fundraisers, with date, donor, amount, and the specific fundraiser it went to.
  • Form Data – what they filled out on the submission form (name, location, bio, etc.), useful when you need to check a detail without having to ask them.

Two more tabs, Logs and Notes, ship in a future version. The partials are already on disk and can be enabled via the charitable_ambassadors_directory_profile_tabs filter. See Directory Profile Tabs for a full walkthrough of each tab.

Bulk Actions

Tick the checkboxes on multiple rows and pick a Bulk Action from the dropdown above the table to act on everyone at once. Bulk actions are capped at 50 rows per call by default to keep things fast, so for larger jobs work in batches.

The Bulk Actions dropdown open showing Verify, Unverify, Resend Welcome Email, Export Selected to CSV, Delete & Anonymize
ActionUse it when
Verify / UnverifyOnboarding a known batch of ambassadors at once.
Resend Welcome EmailA handful of ambassadors didn’t receive the original email, which is common after switching SMTP providers.
Export Selected to CSVFeed your CRM, build a custom report, or hand off a roster to a marketing team.
Delete & AnonymizeGDPR-style account removal. Replaces the user’s identifying fields with anonymized data so historical donations stay attributable but their personal info is gone.

Adding an Ambassador Manually

Sometimes you want to add an ambassador without waiting for them to submit a fundraiser: migrating from another platform, honoring a personal request from a major donor who wants to fundraise, or setting up a test account. Click Add Ambassador at the top right of the page.

The Add Ambassador form showing first/last name, email, and the option to send the welcome email immediately

The form takes the same fields as the public submission form. Save, and an account is created. Tick Send welcome email to fire off the same welcome message a self-signup receives, including a magic link that logs them straight into /my-campaigns/ so they don’t have to set a password first.

Exporting

The Export CSV button at the top of the page exports the currently filtered view, whichever rows you’ve narrowed to with whichever sort order is active. If you’ve filtered to “all unverified ambassadors who joined this quarter,” that’s exactly what gets exported. For a full breakdown of what’s in each column, see CSV Exports.

Deleting and Anonymizing

There are two ways to remove an ambassador from your program, depending on whether you need to preserve the historical data or wipe it entirely.

PathWhat happens
Anonymize (recommended, GDPR-friendly)The user’s login, email, display name, first and last name, and known PII metadata are replaced with anonymized values. Their fundraisers and donation history stay intact, but the person is no longer identifiable.
Hard DeleteThe WP user is deleted. Their fundraisers are re-assigned to a sentinel user named “Anonymous Ambassador” so historical donations don’t lose their parent record.

Both paths go through Charitable_Ambassadors_Directory_Delete. The sentinel user’s name and email can be customized via the charitable_ambassadors_directory_sentinel_email and charitable_ambassadors_directory_sentinel_display_name filters.

Tips Worth Keeping in Mind

A few habits that make managing the Directory a lot smoother once your program is running.

  • Run a monthly cleanup pass. Filter to Inactive with zero fundraisers, then bulk-delete and anonymize. It keeps the list accurate and your data tidy.
  • Treat the Verified badge as something that means something. Don’t auto-verify every signup. Reserve the badge for ambassadors you’ve actually vetted: real human, real cause, real intent to fundraise. It carries more weight when it’s used carefully.
  • Use View As before replying to support requests. When an ambassador reports a confusing screen, click View As to see exactly what they’re seeing. It beats five minutes of “what does your screen show?” back-and-forth every time.
  • If stats look stale, recalculate them. The Recalculate Stats action in the row menu re-runs the lifetime aggregates for a single user. There’s also a site-wide recalc button on the tools page. Both are useful after a bulk donation import.

Developer Reference

The rest of this page is for developers customizing the Directory.

Storage

Ambassador rows are standard WordPress users. The Directory adds no custom tables. The “is an ambassador” criterion is “has at least one published fundraiser, OR has the _charitable_ambassadors_directory_added_manually user-meta flag set by the Add form.”

Per-user stats (lifetime raised, donor count, last activity) are computed on the fly from donation and campaign tables, with results cached briefly per request.

Verified Flag

user_meta key: _charitable_ambassadors_verified
value:        '1' = verified, '' (empty) = not verified

Constant: Charitable_Ambassadors_Directory_Data::VERIFIED_META.

Filters

FilterDefaultPurpose
charitable_ambassadors_directory_list_columnsarray of 8 columnsAdd or remove columns from the list table.
charitable_ambassadors_directory_bulk_actionsarray of 5 actionsAdd or remove bulk actions from the dropdown.
charitable_ambassadors_directory_row_actionsarray of row metasModify the inline row-action links. Receives $row_meta, $user_id.
charitable_ambassadors_directory_action_buttonsarray of action buttonsModify the Actions column buttons. Receives $buttons, $user_id.
charitable_ambassadors_directory_user_query_argscomputedModify the WP_User_Query args before the list runs. Useful for excluding specific roles.
charitable_ambassadors_directory_profile_tabsarray of 4 tabsAdd or remove profile tabs. The Logs and Notes partials exist but are not enabled by default.
charitable_ambassadors_directory_form_data_extra_fields[]Add extra fields to the Form Data profile tab. Receives [], $user_id.
charitable_ambassadors_directory_bulk_row_cap50Max rows per bulk action call.
charitable_ambassadors_directory_inactive_threshold_days90Days of inactivity before a user appears in the Inactive view.
charitable_ambassadors_directory_welcome_ttl24 * HOUR_IN_SECONDSMagic-link lifetime for the welcome email auto-login.
charitable_ambassadors_directory_sentinel_emailanonymous@…Sentinel email used when a hard-delete reassigns a deleted user’s fundraisers.
charitable_ambassadors_directory_sentinel_display_nameAnonymous AmbassadorSentinel display name.
charitable_ambassadors_directory_anonymize_display_nameAnonymous AmbassadorDisplay name an anonymized user receives.
charitable_ambassadors_directory_anonymize_email_patternanonymous-%[email protected]Email pattern (sprintf with user ID) for anonymized users.
charitable_ambassadors_directory_anonymize_meta_keysarray of PII keysUser-meta keys cleared on anonymize.
charitable_ambassadors_directory_csv_max_rows10000Cap on CSV export rows.
charitable_ambassadors_directory_csv_cell''Provide a custom value for an unknown column key during CSV export. Receives ('', $col, $user).
charitable_ambassadors_directory_send_email_smart_tagsarray of tagsAdd smart-tag substitutions to the Send Email modal.
charitable_ambassadors_directory_send_email_max_per_hour100Throttle on Send Email per moderator per hour.
charitable_ambassadors_directory_add_fieldscomputedModify fields shown on the Add Ambassador form.

Actions

ActionArgsFires when
charitable_ambassadors_directory_verification_changed$user_id, $is_verified, $moderator_idA verify or unverify call commits.
charitable_ambassadors_directory_email_sent$user_id, $subject, $body, $moderator_idA Send Email modal submit lands.
charitable_ambassadors_directory_ambassador_added$user_id, $post_dataThe Add Ambassador form submit lands.
charitable_ambassadors_directory_before_anonymize$user_idJust before anonymization runs.
charitable_ambassadors_directory_after_anonymize$user_idJust after anonymization completes.
charitable_ambassadors_directory_before_hard_delete$user_idJust before hard delete runs.
charitable_ambassadors_directory_after_hard_delete$user_id, $sentinel_idAfter hard delete and post reassignment.

AJAX Endpoints

All on wp_ajax_ only, nonce action charitable_ambassadors_directory, capability manage_charitable_settings:

ActionPurpose
charitable_ambassadors_directory_verify_toggleToggle a user’s verified flag.
charitable_ambassadors_directory_send_welcomeRe-send the welcome email with a fresh magic link.
charitable_ambassadors_directory_send_emailSend a one-off email with smart-tag substitution.
charitable_ambassadors_directory_recalc_statsRe-run lifetime aggregates for a single user.

Form-POST Handlers

URLPurpose
admin-post.php?action=charitable_ambassadors_directory_bulkBulk Actions handler.
admin-post.php?action=charitable_ambassadors_directory_add_submitAdd Ambassador form submit.
admin-post.php?action=charitable_ambassadors_directory_manual_recalcSite-wide recalc-stats button.

Magic-Link Auto-Login

The welcome email contains a one-time magic link consumed on init priority 5 via Charitable_Ambassadors_Directory::maybe_consume_magic_link(). Default lifetime is 24 hours, filterable via charitable_ambassadors_directory_welcome_ttl.

View As

The View As action signs the moderator out and signs in as the target user, with a return cookie that lets them switch back to their original session with one click. Powered by the User Switching plugin when installed. The Directory wires the View As button through to its switch_to_user_url() helper.

Capabilities

manage_charitable_settings is required for all admin operations and is granted to Administrators by default.

Customization Examples

Add a “Phone” column to the Directory list:

add_filter( 'charitable_ambassadors_directory_list_columns', function ( $cols ) {
    $cols['phone'] = __( 'Phone', 'your-textdomain' );
    return $cols;
} );

Lower the inactive threshold to 30 days:

add_filter( 'charitable_ambassadors_directory_inactive_threshold_days', function () {
    return 30;
} );

Re-enable the Logs and Notes profile tabs:

add_filter( 'charitable_ambassadors_directory_profile_tabs', function ( $tabs, $user_id ) {
    $tabs['logs']  = [ 'label' => 'Logs',  'count' => null ];
    $tabs['notes'] = [ 'label' => 'Notes', 'count' => null ];
    return $tabs;
}, 10, 2 );

Webhook your CRM whenever an ambassador is verified:

add_action( 'charitable_ambassadors_directory_verification_changed', function ( $user_id, $is_verified, $moderator_id ) {
    if ( ! $is_verified ) {
        return;
    }
    wp_remote_post( 'https://crm.example.com/hook', [
        'body' => [
            'user_id'      => $user_id,
            'verified_at'  => time(),
            'verified_by'  => $moderator_id,
        ],
    ] );
}, 10, 3 );

Extend the welcome email magic-link lifetime to 7 days:

add_filter( 'charitable_ambassadors_directory_welcome_ttl', function () {
    return 7 * DAY_IN_SECONDS;
} );

Wrapping Up

That covers everything the Directory can do for you. Whether you’re onboarding a new batch of ambassadors, tracking down someone who needs a nudge, preparing a CRM export, or doing a quarterly cleanup pass, the Directory is your go-to screen for managing the people in your program.

If you have questions or run into anything that isn’t covered here, our support team is happy to help.

You May Also Want to Read

These are the Ambassadors docs most closely connected to the Directory. Bookmark the ones relevant to how you manage your program.

Helpful Links

🤝 Get help when you need it

Connect with Customer Support →

📑 Find the guide you need

Browse the Documentation Hub →

⬇️ Download proven strategies, campaign ideas, and expert tools

Get the Fundraising Kit →

🔗 Let your AI Assistant do the fundraising work for you.

Connect Charitable to your AI assistant →

💸 Get Free Fundraising Resources
Head to the Charitable Fundraising Hub →

🤔 Got questions about Charitable?
Charitable FAQs →

Need help understanding non-profit terms and jargon?
See our Non-Profit Glossary →

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!

Improvement Payments

💸 Introducing Tiered Rates for Fee Relief: Match the Ask to the Gift!

Fee Relief asks your donors one short question at checkout: would you like to cover the processing fee on this gift? Until now that question used a single rate for every donation on a gateway, so a $10 gift and a $500 gift were asked for the same percentage. Fee Relief 1.3.0 lets you set as many donation bands as you like, each carrying its own rate. Why this is important:

  • 🪙 Gentler on small gifts: A fixed transaction cost is a far bigger share of a $10 donation than a $500 one, so bands let you ask for less at the bottom.
  • 🎚️ As many bands as you need: Each band carries its own percentage and its own fixed amount, and the top band runs on with no upper limit.
  • 🛑 An optional ceiling: A Maximum fee field stops any donor being asked for more than a number you choose, however large the gift.
  • 🔌 Set per payment gateway: Stripe can run on four bands while Windcave and Payfast stay on a single rate, because bands belong to a gateway and not to your whole site.
  • 🛡️ Nothing changes until you say so: Your current rates stay exactly as they are until you switch Use Tiered Rates on under Charitable » Settings » Advanced » Fee Relief.

Check out our announcement here.

Donations Improvement

📊 Your Pro Dashboard Can Now Compare, Export, and Score!

Most fundraising dashboards only tell you how much you have raised. Charitable Pro 1.8.19 rebuilds the dashboard and the Reports Overview around the harder questions: whether anything is broken, whether this period beat the last one, and which single change would make the most difference today. Why this is important:

  • 📈 Every figure has a trend: Pick a period and the tiles and the chart move together, with each total shown against the previous period.
  • 🗓️ Charts that stay readable: Short ranges group donations day by day, while longer ranges group by week or month, so a full year reads as a curve instead of a flat line.
  • 🔀 Compare any 2 periods: Not just consecutive ones, so you can ask how this December did against last December. That matters because fundraising is seasonal.
  • 📤 Export the whole summary: Send the full overview out as CSV or PDF, ready for a board pack or a funder report.
  • 🎯 Score your setup for free: Have your fundraising setup scored, so the one change worth making next is the one you can see.

Check out our announcement here.

Feature New

🎟️ Introducing Charitable Events: Sell Tickets Inside Your Campaigns!

Most nonprofits sell event tickets in one tool and collect donations in another, which leaves two sets of reports and a manual match at the end of the year. Charitable Events brings both together, selling tickets through the same donation forms and payment gateways you already run in Charitable. Why this is important:

  • 🎟️ Every ticket is a donation: Ticket sales run through the gateway you already use and count toward the campaign goal, with everything managed under Charitable » Events.
  • 📱 QR check-in from any phone: Each attendee gets their own QR code on the receipt, and volunteers scan at the door through a check-in link that needs no WordPress account.
  • 🧾 Receipts ready for tax time: Give each ticket type a fair market value, and Charitable puts the correct tax-deductible amount on every donor receipt.
  • 📋 Attendee details at checkout: Ask every guest for a meal choice, shirt size, or access needs, with a separate attendee record created for each ticket.
  • 🗓️ Blocks and calendars included: Three editor blocks plus Sugar Calendar and The Events Calendar support put your events where supporters already look.

Check out our announcement here.

ai New

🚀 Unleash AI Power in Charitable!

Your AI assistant can now build, edit, and manage your Charitable fundraising campaigns directly — just by asking. With Charitable Pro adding write support for the WordPress Abilities API, tools like ChatGPT, Claude, and Cursor can handle full administrative actions safely through MCP. Why this is important:

  • 🤖 Campaign creation in plain language: Prompt your assistant with a goal like “Set up a fundraiser for the shelter with a $5,000 goal”, and it builds a real draft campaign complete with suggested donation tiers.
  • 🎨 Instant donation form tweaks: Add custom fields, change button colors, or reorder elements without diving into form settings.
  • 📝 Offline gift logging: Tell your assistant about cash or check gifts, and it will match donor emails and record transactions into your history.
  • 🛡️ Safety and control by default: Write access stays strictly off until turned on in Charitable » Tools » AI MCP, keeping read-only reporting safe by default.
  • 📜 Full audit logging: Every change made by an AI assistant is tracked under Charitable » Tools » Logs, so you always know who (or what) updated your site.

Check out our announcement here.

Improvement Payments

💰 Accept Recurring Donations with Windcave and Charitable

A donor sets their gift up once on Windcave’s secure payment page, and Charitable bills every renewal after that on schedule. Why this is important:

🏦 Organizations banked in New Zealand or Australia: monthly giving on the gateway your bank already set you up with, with no second processor to onboard.
⛪ Churches taking regular tithes and offerings: congregants set their own schedule once, which is the simplest way to launch recurring church giving without a separate platform.
🌏 Groups with donors in several currencies: Windcave handles more than 20, so a supporter can give in the currency they actually hold.
📅 Operating funds rather than one-time campaigns: switch on Recurring Only mode and the one-off option disappears, so every gift to that campaign is a subscription.
🧾 Teams with no developer on staff: 3 sets of credentials pasted into a settings page, and no code anywhere.

Check out our announcement here.