Charitable Blog

Everything you need to know about Charitable and our team.

Introducing Activity Tracking: Show Progress on More Than Money

Introducing Activity Tracking: Show Progress on More Than Money

Last updated on

  • By

Most peer-to-peer fundraisers are about more than the money.

A read-a-thon is about minutes read. A walkathon is about miles walked. A food drive is about meals packed, and a volunteer day is about hours given.

The money follows the effort.

Until now, your fundraiser pages could only show the money. The thing your supporters actually did, the thing they want to tell people about, lived in a spreadsheet, in a comment, or nowhere at all.

A page that shows only a dollar figure gives a supporter one reason to share it, and that’s to ask for money again. A page that says “Maya has read 340 minutes toward her 500” gives them something to be proud of. Pride is a much better reason to send the link to family and friends.

So we built Activity for Charitable Ambassadors. You decide what gets counted once, pick which campaigns count it, and your fundraisers log their own numbers from their own pages.

You don’t need a new plugin, a developer or a spreadsheet. 🎉

Activity is available now in Charitable Ambassadors 3.4.7.

Here’s What Activity Looks Like on a Fundraiser Page

Before we get into how it works, take a look at the finished card on a fundraiser page.

The top of the Activity module on a fundraiser page, showing a progress bar and a Goal Reached milestone badge

There are 3 parts to this card, and you choose each one per campaign.

The progress bar shows each thing you count against its own target, right beside the money. A milestone badge appears for things that are either done or not done.

Now look at the AUTOMATIC tag beside Supporters. The site counted that number from completed donations, and no person typed it in.

When a page mixes numbers people entered with numbers the site counted, supporters can tell which is which straight away.

The feed lists what happened, newest first. It can also include the campaign’s own donations, so the page reads as one story instead of separate lists.

The Recent Activity feed at the bottom of the Activity module, with the See all activity link

See Activity in Action

If you’d rather watch than read, here’s a 3-minute walkthrough of everything below.

Your Fundraisers Log Their Own Numbers

The person who knows how far they walked is the person who walked. So Activity lets your fundraisers record their own progress.

A signed-in campaign owner sees a + Log Activity button on their own page.

It opens a short form right there on the page, so they don’t need the admin area or an email to you.

The inline Log Activity form open on a fundraiser page

The form only offers what that campaign tracks. If a campaign counts minutes and nothing else, the form offers minutes and nothing else.

There’s nothing to explain in a welcome email, and nothing for a fundraiser to get wrong.

If they walk 4 miles on Saturday, they’ll open their page, type 4, and watch the bar move.

Entries are append-only, which means there’s no edit button. We chose this on purpose. To fix a mistake, the fundraiser adds a new entry, or an administrator removes the wrong one.

This keeps the feed an honest record of what was logged and when. It also means every total can be worked out again from the entries at any time, and it will always come out the same.

If you’d rather fundraisers didn’t log their own numbers, a setting on each campaign hands recording to administrators only.

When You’ll Feel the Difference

Activity fits any peer-to-peer fundraising program where the effort is part of the story. Here are a few examples.

  • 📚 Read-a-thons and math-a-thons. Each child’s page shows minutes read or problems solved. Parents share the page because it shows their child’s effort.
  • 🚶 Walkathons, rides and step challenges. Miles logged sit next to dollars raised. Your fundraisers also get a reason to post an update in the middle of the event, not only at the start.
  • 🥫 Food and supply drives. Your pages can now show meals packed, kits assembled and coats collected. These were never dollar figures, so they never had a place on the page before.
  • 🤲 Volunteer and service days. Hours given, houses painted and trees planted show up on the page. For many organizations, this is the number the board asks about.
  • 🏁 Milestone campaigns. Some campaigns have no number at all, just moments like “We broke ground” or “The van is paid off.” A badge appears once it happens, so a long, quiet campaign has news to share along the way.

What Your Fundraisers See

The fundraiser’s experience decides whether anyone uses this feature, so here’s how it looks from their side.

They land on their own page, with their name, photo and goal. Now there’s also an Activity card with a progress bar at zero. An empty bar invites them to start, which works much better than a page with nothing on it yet.

They click + Log Activity, and a short form opens on the same page. It has a dropdown of what this campaign counts and a single number field.

They type a number and click Log It. The figure and the bar update straight away, without reloading the page, and a new row appears at the top of the feed.

Then they share the page. Their friends and family see a number that moved, a bar that’s part of the way along, and a feed showing it happened this morning. The donation form is still right there, and now it sits next to a reason to give.

A week later they’ll log again, and the feed fills in behind them. By the end of the campaign, their page is a record of what they did. That’s something people like to keep and share long after the fundraising closes.

Set Up Activity in 3 Steps

You turn recording on, decide what gets counted, and choose which campaigns count it. Here’s what each step looks like.

Step 1: Turn Recording On

To get started, head over to Charitable » Ambassadors » Other » Activity. Activity is switched off after you update, and nothing is recorded or shown until you turn it on. The strip at the top of this tab is the switch.

The Activity tab in Charitable Ambassadors, with the recording strip and its Turn On button

Clicking Turn On creates the small database table that holds entries and starts recording. The strip then tells you in plain language how many entries exist across how many campaigns, so you can see at a glance that the feature is live.

Recording starts from now. Activity can’t count things that happened before you switched it on, because nothing was storing them. Turn it on at the start of a campaign rather than halfway through.

If you switch it off later, everything already recorded is kept. It stops recording and stops displaying, so it’s a safe thing to try.

Step 2: Decide What Gets Counted

A definition is one thing you count. You set it up once for the whole site rather than per campaign, and 2 definitions come built in.

The Definitions card, with the Add Definition button, the Start From An Example cards and the 2 built-in definitions

Goal Reached is switched on from the start. The moment a campaign hits its fundraising goal, the badge appears on its page, with nothing to set up per campaign.

Supporters counts completed donations, and it starts switched off. We did that on purpose. It can’t count donations from before you turned recording on, so on an established site it would show a wrong zero.

Switch Supporters on when you’re ready, and it counts from that point forward.

To add your own, click Add Definition. The panel on the right previews where each field will appear on the campaign page, and it updates as you type.

The Add Definition form, with the live preview panel on the right

The Label is the public name, so use whatever your program already calls it. That’s the word your fundraisers will recognize. The Key is the machine name used in CSV exports and in code.

The Type is either a Number, which counts a quantity, or a Milestone, which is either done or not done.

The Unit prints after the number, so 1,250 reads as “1,250 miles.” The Default Target draws the progress bar, and every campaign can set its own target instead.

If you choose Milestone, the form hides the fields a milestone doesn’t use. That way it never asks you for settings that would be ignored.

The same form with Milestone selected, showing the number-only fields hidden

Not sure where to start? On a fresh install, Start From An Example fills in the form with a working definition you can adjust.

How Values Combine

The How Values Combine setting decides how many separate entries become the single number on the page. Picking the right one is most of the thinking.

SettingWhat the page showsWhen to use it
SumEvery entry is added together.It suits miles, minutes, meals and hours.
CountIt counts how many entries there are and ignores their values.It suits supporters, shifts worked and visits made.
LatestOnly the most recent entry shows.It suits a weight, a rank or a current reading.
BestThe highest single entry shows.It suits a personal record or a longest run.

What Locks Once Entries Exist

Once anything has been recorded against a definition, 3 of its fields can no longer be edited. These are the Key, the Type and How Values Combine.

This is the one thing you can’t undo later, so it helps to know before you start. All 3 fields describe how the entries you’ve already collected are read.

If you changed the type from Number to Milestone, 100 numeric entries would suddenly mean something else. If you changed Sum to Latest, a total would turn into a single reading. So Activity doesn’t allow the change, and the form tells you why.

For the same reason, you can’t delete a definition that has entries. The entries point to it, so deleting it would leave the total at zero and fill the feed with rows under a raw machine name.

Switching the definition off hides it everywhere and keeps the history. That’s usually what people want anyway.

Step 3: Choose Which Campaigns Count It

Next, open a campaign in the campaign builder, click Settings, and choose Ambassadors & Peer to Peer Fundraising. Expand the Peer to Peer Fundraising group, and you’ll find Activity Tracking at the bottom.

The Activity Tracking block inside the campaign builder's Peer to Peer Fundraising settings group

Under Activity Types Tracked, tick what this campaign counts and give each one its own target if the site default doesn’t fit. Where Activity Displays lets you pick any mix of Progress, Milestones and Feed, or none of them.

Include donations in the feed mixes the campaign’s own donations in with the activity entries. Who May Record Activity sets whether the campaign owner can log entries, or only administrators.

A campaign you’ve never configured counts every enabled definition and shows all 3 displays. That way a new campaign works without a visit to its settings, and you can untick anything you don’t want.

That’s the whole setup. Want every setting explained in more depth, screenshots included?

Read the Full Activity Setup Guide →

Setting Up a School Read-A-Thon From Start to Finish

It’s easier to see how the pieces fit together on a real program. Here’s a school read-a-thon, from nothing to a live page.

First, decide what you’re counting. Minutes read usually works better than books read, because books are different lengths. A child who picks a long book shouldn’t look like they did less.

So you’d create a Number definition called Minutes Read, with the unit minutes, combining as Sum, and a Default Target of 500. Every new fundraiser starts with that target, and you can give any of them their own.

Next, add a Finished the Challenge Milestone for the part that isn’t a number. A teacher or parent marks it once at the end, and it has no unit, target or total.

Then set up the parent campaign. Your “Spring Read-A-Thon” campaign is the one supporters find first, and its Peer to Peer Fundraising panel is where you tick both definitions. If you want the parent page to show only a progress bar, untick Milestones and Feed there.

Each child who signs up gets their own fundraiser page, and it takes the parent’s activity settings. There’s no setup per child, so a class of 30 means 30 pages that already count minutes.

Families only need 1 sentence of instructions. “Sign in, open your page, click Log Activity and type your minutes.”

You can follow everything from one screen. The Recent Entries card shows every minute logged across every page, newest first, with a link to each page.

At the end, Export CSV gives you every entry to total up per child for prizes. The Activity report in Charitable » Reports shows the same entries alongside your donations.

When the next term starts, switch the definitions off instead of deleting them, or leave them on and start a new parent campaign. Either way, the history stays.

Choose From 3 Displays on Each Campaign

Progress is a bar for each counted value, showing the current number, the target and the unit. Use it when the number is heading toward a goal. It looks a lot like the fundraising thermometer people already know.

Milestones is a row of badges for things that are done or not done. It suits campaigns where the story is a series of events rather than a rising number, and it gives a page news to show during quiet weeks.

Feed is the list of what was logged and when, newest first. Turn on Include donations in the feed and the campaign’s donations appear in the same list.

That’s usually the setting you’ll want. A page where a $50 gift and a 4-mile walk sit side by side shows a campaign that’s really happening.

You can switch each display off per campaign. So a parent campaign could show a single progress bar, while its fundraisers each show the full feed.

Automatic Numbers Are Always Labelled

Some definitions are filled in by the site, not by a person. Goal Reached is one, and Supporters is another.

These carry an AUTOMATIC label everywhere they appear, on the public page and in the admin entry list. They’re also left out of the Log Activity form, so a fundraiser can’t count something twice that the site already counts.

The donation count is protected in 2 more ways. Each donation is counted only once, so a payment gateway that sends its notice twice, or an admin who edits a donation, can’t raise the count.

Test-mode donations are left out too. A weekend of test payments won’t leave a fake number on a real campaign page.

Where the Activity Module Appears

The module places itself on all 9 of the Enhanced fundraiser page layouts, so there’s nothing to add or position.

On the Legacy template style, and on pages built with the Visual Campaign Builder, add this shortcode wherever you want the module to appear.

[charitable_activity]

You’ll also use the shortcode on a parent campaign page, because the Charitable Pro plugin builds those pages, not Ambassadors. Point it at any campaign ID and choose which displays to show.

[charitable_activity campaign="123" mode="progress,feed"]

The module only appears for campaigns the visitor is allowed to see. A draft, pending, private or password-protected campaign shows nothing, so you can place the shortcode while a campaign is still being prepared.

Entries You Can Manage and Export

The Recent Entries card, with the Export CSV and Add Entry buttons

The Recent Entries card lists every entry, newest first. Each row shows the campaign, the value, whether it was automatic or reported, and who recorded it. It also links straight to the campaign’s public page, so checking a number takes one click.

Add Entry lets you record an entry by hand for any campaign, which helps when a fundraiser phones in their total. Export CSV downloads everything for a spreadsheet, a board report or a prize calculation.

Activity in Your Reports

Activity rows in the Charitable Reports Activity panel

Activity also appears in your donation reports under Charitable » Reports.

What your campaigns logged shows up in the Activity report alongside donations, so it’s in the place you already check.

The Reports Overview also gets an Ambassadors line, with your verified ambassador count and total raised.

Turn It Off Anytime and Keep Your Data

The Storage Details disclosure, open, showing the table state and the removal option

Turn Off stops recording and hides the module everywhere, but keeps every entry. That’s the setting you’ll want between seasons.

Remove table and entries deletes everything. It asks you to type the word remove first, and it can’t be undone.

If you uninstall Charitable Ambassadors, your activity table and entries stay in place on purpose. A plugin conflict, a hosting move or a reinstall won’t cost you a season of numbers, and removing the data is always your choice.

For Agencies and Developers

Activity comes with 15 hooks, so you can build your own versions of this feature for your clients’ programs.

Hooks and Filters

Register definitions in code, for example with a code snippets plugin, using charitable_ambassadors_activity_definitions, so a client site can ship its own metrics without anyone touching the admin. Decide who may record with charitable_ambassadors_activity_can_record, and control who may see activity with charitable_ambassadors_activity_can_view.

The can_record filter runs even for a visitor with no account. That means a participant who signs in with a token can record without a WordPress login.

Change the computed number with charitable_ambassadors_activity_aggregations, supply a computed target with charitable_ambassadors_activity_target, and adjust or turn off the aggregate cache with charitable_ambassadors_activity_cache_ttl.

Two actions, charitable_ambassadors_activity_recorded and charitable_ambassadors_activity_deleted, run on every write and every removal. If you roll a parent campaign’s total up from its children, hook into both. That keeps the parent total correct when a child’s entry is removed, as well as when one is added.

Template Overrides

The whole module is one template, and you can override it at your-theme/charitable/charitable-ambassadors/campaign/activity.php.

Built for Whole Programs

Targets can be computed and totals can be replaced. So a school can show the sum of its classes, and a district can show the sum of its schools, with no duplicate totals stored anywhere.

The documentation has the full worked example, including the cache clearing that keeps those totals accurate.

FAQs on Activity

Which Plan Do I Need for Activity?

Activity is part of Charitable Ambassadors 3.4.7, which needs the Charitable Pro plugin 1.8.16 or higher, on the Pro plan and higher. If you already run peer-to-peer fundraising with Charitable Ambassadors, update it and Activity is there.

Will Activity Count Things That Already Happened?

No. Recording starts the moment you switch it on, so turn it on at the start of a campaign.

Do My Fundraisers Need a WordPress Account?

Yes. To log an entry from their own page, they need to be signed in as the campaign owner. Administrators can record for anyone from the admin side, and developers can open this up further with a filter.

Does Activity Change My Donations or Goals?

No. Activity is kept separate from the money, so your donation totals and reports stay exactly as they are.

What If Someone Logs the Wrong Number?

Add a correcting entry, or have an administrator delete the wrong one. There’s no edit button, which keeps the feed trustworthy.

Does Activity Work With My Page Builder?

The module places itself on the Enhanced fundraiser layouts. Anywhere else, including the Visual Campaign Builder and the Legacy style, use the [charitable_activity] shortcode.

Get Started With Activity

Activity is available now in Charitable Ambassadors 3.4.7. Update Ambassadors, open Charitable » Ambassadors » Other » Activity, and click Turn On.

Goal Reached starts working straight away. After that, you only need to decide what your program counts!

Read the Activity Documentation →

Not Yet on a Charitable Paid Plan?

What’s New in Charitable

We also launched several powerful features and improvements recently.

📊

Updated Dashboard

Compare any 2 periods and export your numbers straight from the rebuilt dashboard.

Learn More →

🎟️

Charitable Events

Sell event tickets and collect donations inside the same campaign.

Learn More →

🤖

AI for Charitable

Ask your AI assistant to build, edit and manage your fundraising campaigns for you.

Learn More →

🔁

Windcave Recurring Donations

Donors set up a monthly gift once, and Charitable bills every renewal on schedule.

Learn More →

⚡

Visual Automation Builder

See every automation as a flow of connected cards on a full-screen canvas.

Learn More →

📬

Brevo

Turn new donors into Brevo subscribers automatically after every gift.

Learn More →

We’ve been adding to Charitable constantly, features and improvements designed to help you raise more and serve your donors better. See everything we’ve shipped at the Charitable Changelog.

If you have any questions or want help setting up Activity for your program, our support team is ready to help.

Stay Connected for More Nonprofit Resources

For more tutorials and videos tailored to nonprofits, subscribe to our YouTube channel. We regularly publish expert tips, step-by-step guides on online donations, fundraising strategies, and practical resources to help your organization succeed.

🗞️ Get weekly tips and exclusive guides in your inbox
Join our newsletter →  

🎥 Watch step-by-step tutorials and success stories
Subscribe to our YouTube channel →  

👩🏽‍💻 Connect with our community and get daily nonprofit insights
Follow us on LinkedIn →

🥳 Fun reels and non-profit insights
Follow us on Instagram → 

👀 Insightful & fun videos to help you grow your cause
Follow us on TikTok→  

🌎 Subscribe and follow for general fundraiser tips
Get Fundraiser Tips on TikTok → 

Powerful Fundraising Resources

🤖 Use Charitable with Your AI Assistant

See Charitable + AI →

⬇️ Download proven strategies, campaign ideas, and expert tools
Get the Fundraising Kit →  

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

🤔 Got questions about Charitable?
Charitable FAQs →

🏎️ Take Charitable for a spin
Create your Charitable Demo →

Understand non-profit terms and jargon
Non-Profit Glossary →

% Looking for non-profit deals and discounts?
Best Non-Profit Deals and Discounts →

author avatar
David Bisset Project Manager
David is the project manager of Charitable since 2022. David works with several non-profits (one operated by his wife) along with managing and developing features, support, and marketing for Charitable. Has been with WordPress since 2006 and has been lead organizer of multiple conferences, events, and meetups.

Disclosure: Our content is reader-supported. This means if you click on some of our links, then we may earn a commission. We only recommend products that we believe will add value to our readers.

Leave a Reply

Your email address will not be published. Required fields are marked *

Get free tips and resources right in your inbox, along with 60,000+ others

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!

Featured Video:

Watch more videos on our YouTube channel.

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!

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.

author avatar
David Bisset Project Manager
David is the project manager of Charitable since 2022. David works with several non-profits (one operated by his wife) along with managing and developing features, support, and marketing for Charitable. Has been with WordPress since 2006 and has been lead organizer of multiple conferences, events, and meetups.
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.

author avatar
David Bisset Project Manager
David is the project manager of Charitable since 2022. David works with several non-profits (one operated by his wife) along with managing and developing features, support, and marketing for Charitable. Has been with WordPress since 2006 and has been lead organizer of multiple conferences, events, and meetups.
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.

author avatar
David Bisset Project Manager
David is the project manager of Charitable since 2022. David works with several non-profits (one operated by his wife) along with managing and developing features, support, and marketing for Charitable. Has been with WordPress since 2006 and has been lead organizer of multiple conferences, events, and meetups.
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.

author avatar
David Bisset Project Manager
David is the project manager of Charitable since 2022. David works with several non-profits (one operated by his wife) along with managing and developing features, support, and marketing for Charitable. Has been with WordPress since 2006 and has been lead organizer of multiple conferences, events, and meetups.
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.

author avatar
David Bisset Project Manager
David is the project manager of Charitable since 2022. David works with several non-profits (one operated by his wife) along with managing and developing features, support, and marketing for Charitable. Has been with WordPress since 2006 and has been lead organizer of multiple conferences, events, and meetups.