Charitable Documentation

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

How Sign-In Link Data Is Stored

Requires: Charitable Pro 1.8.16+ Charitable Ambassadors 3.5.0+

Passwordless fundraiser accounts work by emailing a one-time sign-in link. Those links have to live somewhere until they are used, and this page explains exactly where, for how long, and how to remove them.

If you are only turning the feature on, you do not need to read this. It is here for people who want to know what a plugin is putting in their database, and for anyone handling a data request or an uninstall.

The short version

  • One extra database table, created the first time you switch passwordless on.
  • It holds hashes of sign-in links, never the links themselves.
  • Rows are short lived: a signup link lasts 24 hours, a sign-in link one hour.
  • Turning the feature off leaves the table alone. Nothing is deleted behind your back.
  • Uninstalling the plugin also leaves it alone, deliberately, so an accidental deactivation never destroys data.

When the table is created

The table is created the first time Passwordless Accounts is enabled on Charitable > Ambassadors > Templates > Submit Form. It is not created on plugin activation, and it is not created on sites that never use the feature.

Its name follows your database prefix:

wp_charitable_ambassadors_signin_tokens

If your prefix is not wp_, substitute yours.

What is inside the table

One row per sign-in link issued. The columns:

Column What it holds
id Row identifier
token_hash An HMAC-SHA256 hash of the link, keyed on your site’s salts
purpose signup for a new account, signin for a returning fundraiser
email The address the link was sent to
user_id The account, for a returning fundraiser. 0 for a new signup, because no account exists yet
campaign_id The fundraiser the link relates to
created_at When it was issued
expires_at When it stops working
redeemed_at When it was used, or empty if it has not been

The link itself is never stored. Only a keyed hash of it is, so somebody reading this table cannot reconstruct a working sign-in link from it. The hash is keyed on your site’s own salts, which means a copy of the table lifted onto a different site is inert.

The address is stored in plain text, because the feature has to be able to email the person and show you who is waiting.

How long rows last

Link type Lifetime
Signup (a brand new fundraiser) 24 hours
Sign-in (a returning fundraiser) 1 hour

Links are single use. Redeeming one marks it used, and asking for a new link cancels any earlier one for the same address, so only one live link per person exists at a time.

The self-check states

The Submit Form screen reports on this table so you are not left guessing. The states you may see:

State Meaning What to do
Enabled, table present Normal. Nothing.
Enabled, table missing Signups and sign-ins both fail. Turn the feature off and on again. That recreates the table.
Enabled, schema out of date The table exists but predates an update. A developer can bring it current, see the reference below.
Enabled, links outstanding A count of links sent but not clicked. Informational. Check Awaiting Sign-In if it looks high.
Enabled, sign-in email disabled Returning fundraisers cannot request a link. Re-enable that email under Charitable > Settings > Emails.
Disabled, table still present Your existing data is preserved. Nothing. This is reassurance, not a problem.

Turning the feature off (soft disable)

Untick Passwordless Accounts and the feature stops: no new links are issued, and the create-fundraiser form asks for a password again.

The table and its rows are left in place. Anyone who already has a valid link can still use it, and accounts already created keep working exactly as normal accounts, because that is what they are. Switching the feature back on resumes where you left off.

Nothing is lost by toggling it, which is the point: a setting that quietly destroyed data when unticked would be a bad setting.

Permanently deleting the data

Two separate things can be removed, and they are removed in different ways.

Outstanding links. All unredeemed links can be invalidated at once from the settings screen. Anyone mid-flow will need a fresh one. This empties the live links without touching accounts.

The table itself. Uninstalling Charitable Ambassadors does not drop this table, on purpose. The same precedent applies as for invitation tokens: an uninstall is sometimes an accident, and a plugin that destroys a table on deactivation gives you no way back. If you genuinely want it gone, a developer can drop it, or your host can from phpMyAdmin.

Accounts are not in this table. Fundraiser accounts are normal WordPress users and live in your users table like any other. Deleting sign-in link data does not delete anybody’s account or their fundraiser page.

Exports, backups and personal data

  • Backups include this table like any other. Since it holds only hashes and addresses, a backup carries no usable sign-in links.
  • A WordPress personal-data export for a fundraiser returns their account and their campaigns in the normal way. Sign-in links are short-lived operational records rather than profile data.
  • A personal-data erasure removes the account through WordPress’s own tooling. Any outstanding link for that address stops working, because it no longer resolves to anybody.

Tips

  • If signups suddenly stop working across the whole site, check the table-missing warning first. It is the one failure that breaks everything at once and it has a one-click fix.
  • A high outstanding count early in a campaign usually means a deliverability problem, not disinterest.
  • Do not copy this table between sites. It is keyed to the salts of the site that created it and will not work elsewhere.

Developer reference

Schema class

Charitable_Ambassadors_Passwordless_Schema

Member Purpose
table_name() Prefixed table name
exists() Whether the table is present
is_enabled() Whether the feature is on
SCHEMA_VERSION Current schema version, 1.1
SCHEMA_VERSION_OPTION charitable_ambassadors_passwordless_schema_version

Option keys

Option Purpose
charitable_ambassadors_passwordless_schema_version The installed schema version
charitable_ambassadors_passwordless_rewrite_version Tracks when the endpoint’s rewrite rules were last registered

Both are removed by the plugin’s uninstall routine. The table is not.

Tokens class

Charitable_Ambassadors_Passwordless_Tokens

Method Purpose
issue( $purpose, $email, $user_id, $campaign_id ) Mint a link
lookup( $token ) Read a row without consuming it
redeem( $token ) Consume a link, atomically
invalidate_for_email( $email ) Cancel every link for one address
invalidate_for_user( $user_id ) Cancel every link for one account
purge_all() Cancel everything outstanding
effective_ttl( $purpose ) Lifetime in seconds for that purpose

Filters

Filter Purpose
charitable_ambassadors_passwordless_storage_docs_url The URL this page lives at, as linked from the settings help text and the self-check notices
charitable_ambassadors_awaiting_mask_email Return false to show full addresses in the Awaiting Sign-In view

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!

ambassadors New

🖨️ Introducing Fliers and Posters: Raise Money Away From the Screen!

A lot of peer-to-peer fundraising happens away from a screen: at the finish line of a 5K, on a school noticeboard, in an office kitchen. Charitable Ambassadors 3.4.7 adds 2 printables, a fundraiser flier carrying each fundraiser’s own story and QR code, and a recruitment poster that signs new fundraisers up. Both open as a normal web page and print straight from the browser. Why this is important:

  • 🏁 A flier for every fundraiser: Each one carries that fundraiser’s own photo, story and goal, with a QR code that opens their page rather than your main campaign.
  • 📌 A poster that recruits: It shows “Now Recruiting” above your campaign name with a large QR code that opens your sign-up form, so someone can start fundraising without waiting on a link from you.
  • 🪄 No design tool needed: Both printables render as a normal web page and print from the browser, with no PDF plugin and no designer.
  • 📄 2 flier layouts: Hand out carries the full story for giving to friends and family, and Post up carries a short hook with 5 tear-off tabs for a noticeboard.
  • 🛡️ Off until you switch it on: Fliers stay off after the update until you enable them under Charitable » Ambassadors » Other » Fliers, and only the owner or an administrator can open one.

Check out our announcement here.

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.