Setting Up Peer-to-Peer Fundraising

Last updated: April 29, 2026

A complete guide for nonprofit admins on configuring peer-to-peer (P2P) fundraising in WeGive — from creating your first preset to wiring up automated communications.


Overview

WeGive's peer-to-peer fundraising lets your supporters create their own personal fundraising pages that roll up to a campaign you control. Instead of one branded campaign page, you get dozens (or hundreds) of supporter-led pages, each tracking individual goals, donations, and donors — all reporting back to your organization.

The system is built around three concepts:

  • P2P Presets — the template that defines what a fundraiser page looks like and which fields supporters can customize.

  • Campaign Fundraisers — the parent "team" container that individual fundraisers roll up into. Useful for team fundraising and aggregated reporting.

  • Fundraisers — the individual supporter-led pages created from a preset.

A fundraiser inherits its donation experience (checkout, fund/designation options, branding) from the preset it was created from, falling back to the parent campaign fundraiser if the preset doesn't specify one.


Before You Begin

Have these ready before you start:

  • The campaign the fundraisers will roll up to (create one under Campaigns → All Campaigns if you don't have it yet).

  • A checkout configured with the funds/designations you want P2P donations to flow to (under Checkouts). Without a checkout attached, the fundraiser will fall back to the parent campaign fundraiser's checkout, and if that's also missing, donation processing may be limited.

  • A fund (designation) if all P2P donations should route to the same designation by default.

  • Any branding assets you want on the preset (background/banner image, logo).


Step 1: Create a P2P Preset

The preset is the template every supporter fundraiser is built from. Get this right and supporters can spin up on-brand pages in seconds.

Navigate to Elements → P2P Presets in the dashboard, then click the blue + button to create a new preset.

Core Fields

Fill in the basics that describe the preset and act as defaults for new fundraiser pages:

  • Name — internal name for your team (donors don't see this).

  • Slug — the external URL slug for the preset's public link.

  • Default Name — the pre-filled fundraiser name a supporter sees when they create their page.

  • Description — default story/blurb that pre-fills on the fundraiser page.

  • Goal — default fundraising goal amount. Supporters can change this unless you fix it (see below).

  • Start Date / End Date — default fundraising window.

  • Background — banner image displayed at the top of every fundraiser page created from this preset.

Display Options

  • Show Leaderboard — display top fundraisers/donors on the page.

  • Show Activity — show a feed of recent donations.

  • Hide Fundraise Button — controls whether visitors can spin off their own sub-fundraiser from this page.

  • Hide Allow Donations Button — controls whether the page accepts donations directly.

Lock Down What Supporters Can Edit

Every major field has a corresponding Fixed toggle that locks the value so supporters can't override it on their own page. Use these to enforce brand consistency or campaign rules. Available locks:

  • Fixed Start Date, Fixed End Date

  • Fixed Goal

  • Fixed Name, Fixed Description, Fixed Background

  • Fixed Leaderboard, Fixed Activity

  • Fixed Fund (locks the designation)

  • Fixed Hide Fundraise Button, Fixed Hide Allow Donations Button

A common pattern: lock the dates, fund, and background (so every page looks consistent and routes money correctly), but leave the name, description, and goal editable so supporters can personalize.


Step 2: Wire Up the Donation Flow (Checkout & Fund)

This is the step that decides where the money goes.

Attach a Checkout

On the preset, set the Checkout field. The checkout you attach controls:

  • Available fund/designation options shown to donors

  • Branding and form styling

  • Which custom questions/fields appear at donation time

WeGive resolves the checkout for any P2P donation in this order:

  1. The preset's checkout (highest priority).

  2. The parent campaign fundraiser's checkout (fallback).

  3. None — donation processing may be limited.

Always attach a checkout at the preset level unless you have a specific reason to inherit from the parent.

Set the Default Fund

Set the Fund field on the preset to route all donations from fundraisers built off this preset to a specific designation by default. Combine with Fixed Fund if you don't want supporters changing where the money goes.


Step 3: Set Up Goals, Designations, and Teams

Individual Fundraiser Goals

Each fundraiser has its own goal, independent of the campaign goal. The campaign goal aggregates everything; individual fundraisers are tracked against their own targets. Supporters can set whatever goal they like unless you've enabled Fixed Goal on the preset.

Designations / Funds

Donations from a P2P fundraiser flow to whichever fund is set on the fundraiser (inherited from the preset by default). If your campaign has multiple designations, you have two options:

  • Single fund per preset — set the Fund on the preset and lock it. Cleanest for single-purpose campaigns.

  • Multiple funds via the checkout — leave Fund unset on the preset, and let the attached checkout present designation choices to the donor at checkout. Use this when supporters or donors should be able to pick.

Team Fundraising (Parent / Child Structure)

WeGive uses a two-tier model for teams:

  • Campaign Fundraisers are the team-level containers (created under Elements → Fundraisers). Think of these as the "team page."

  • Individual Fundraisers roll up to a Campaign Fundraiser via a parent reference, contributing their totals to the team.

To run team fundraising:

  1. Under Elements → Fundraisers, create a Campaign Fundraiser for each team. This is the team captain's page.

  2. Attach a P2P preset to the Campaign Fundraiser (via the Implement tab on the preset, or by linking on the Campaign Fundraiser itself).

  3. When a supporter joins a team and clicks "Fundraise" from that team page, their new fundraiser automatically becomes a child of the team. Their totals roll into the team's total, and the team's totals roll into the campaign.

The team page shows aggregated metrics across all child fundraisers — total raised, child fundraiser count, and donor count.


Step 4: Implement and Share

Once the preset is configured, click Implement on the preset to get:

  • A direct link for supporters to start their own fundraiser.

  • A QR code for print/event materials.

  • Embed code for putting "Start a Fundraiser" buttons on your own site.

You can also designate a default preset for the donor portal under Donor Portal → Customization → Profiles → P2P Fundraising. This is what powers the "Fundraise" button when a logged-in donor visits their portal.


Step 5: Set Up Communications & Email Automation

This is where P2P really starts working for you. WeGive has three P2P-specific journey triggers and a rich set of fundraiser merge tags.

P2P Journey Triggers

Go to Engagement → Journeys and create journeys triggered by any of:

  • Peer-to-Peer Created — fires when a supporter creates a new P2P fundraiser. Use for a welcome/onboarding series.

  • Peer-to-Peer Donation Notification — fires when a donation is made to a P2P fundraiser. Use to thank the fundraiser, notify them of the gift, or trigger team-captain alerts.

  • Peer-to-Peer Goal Met — fires when a fundraiser hits 100% of their goal. Use for congratulations + ask-to-raise-the-goal flows.

Audience Filtering

Inside any journey, you can filter and branch on fundraiser data with rules like:

  • fundraiser_percent_to_goal (e.g., send a milestone email at ≥ 50%)

  • fundraiser_amount — total raised

  • fundraiser_number_of_donations / fundraiser_number_of_donors

  • fundraiser_days_left_until_end_date — useful for "final push" reminder emails

  • fundraiser_p2p_preset — scope the journey to fundraisers from a specific preset

  • fundraiser_p2p_goal_amount, has_goal

These rules make it possible to run a single "P2P engagement" journey that branches based on how each fundraiser is performing.

Email Merge Tags

In your email templates (under Engagement → Email Templates), use these merge tags inside {{ }} to personalize:

Variable

What it shows

fundraiser_p2p_name

Fundraiser page name

fundraiser_p2p_url

Public URL of the fundraiser

fundraiser_p2p_owner_name

Name of the supporter who created it

fundraiser_p2p_owner_email

Their email (if owner is a donor)

fundraiser_p2p_goal_amount

Goal, formatted as currency

fundraiser_amount

Amount raised, formatted as currency

fundraiser_percent_to_goal

Percent of goal, rounded

fundraiser_number_of_donations

Total donation count

fundraiser_number_of_donors

Unique donor count

fundraiser_donation_leader

Name of the top donor

fundraiser_most_recent_donation_date

Date of the latest donation

fundraiser_most_recent_donation_amount

Amount of the latest donation

fundraiser_end_date

When the fundraiser ends

fundraiser_date_of_p2p_create

When the fundraiser was created

fundraiser_days_left_until_end_date

Days until the end date

fundraiser_p2p_preset

The preset the fundraiser was created from

fundraiser_p2p_preset_url

Link to the preset

Legacy fields fundraiser_element_name and fundraiser_element_url still work and map to the preset.

Suggested Communication Plan

A solid baseline P2P journey set:

  1. Welcome — triggered by Peer-to-Peer Created. Thanks the supporter, links to their page, includes share-this-page tips.

  2. First Donation — triggered by Peer-to-Peer Donation Notification, scoped to the supporter's first donation, celebrating their first gift.

  3. Milestone — entry trigger Peer-to-Peer Donation Notification with audience filter fundraiser_percent_to_goal ≥ 50. Send a "you're halfway there!" nudge.

  4. Goal Met — triggered by Peer-to-Peer Goal Met. Celebrate, optionally invite them to raise the goal.

  5. Final Push — entry trigger using fundraiser_days_left_until_end_date ≤ 7 and fundraiser_percent_to_goal < 100. Encourages a last-week sprint.


Step 6: Test Before You Launch

Before sharing the preset publicly:

  1. Open the preset's public URL in an incognito window and walk through creating a test fundraiser.

  2. Verify the locked fields are actually locked.

  3. Make a small test donation through the new fundraiser page and confirm the funds route to the expected designation.

  4. Check that the test donation triggers the Peer-to-Peer Donation Notification journey (look at the donor's journey membership or the test fundraiser's activity).

  5. If using team fundraising, confirm the test fundraiser appears under the parent Campaign Fundraiser and totals aggregate correctly.


Quick Reference: Where Things Live

What

Where in the dashboard

P2P Presets

Elements → P2P Presets

Team / Campaign Fundraisers

Elements → Fundraisers

Campaigns

Campaigns → All Campaigns

Journeys (automation)

Engagement → Journeys

Email Templates

Engagement → Email Templates

Donor Portal default P2P preset

Donor Portal → Customization → Profiles → P2P Fundraising


Common Pitfalls

  • No checkout attached — fundraisers may not collect donations as expected. Always attach a checkout to the preset.

  • Fund not locked when it should be — supporters may inadvertently route funds to a different designation. Use Fixed Fund if the preset is for a specific cause.

  • Forgetting to associate with a campaign — fundraisers won't roll up into your campaign reporting. Connect the preset to a campaign (or to a Campaign Fundraiser that sits under one) before sharing.

  • Journeys without P2P-scoped filters — generic donation journeys can fire alongside P2P journeys and create duplicate emails. Add fundraiser_p2p_preset is set (or scope to a specific preset) on P2P journeys to keep them separate.

  • Over-locking fields — locking too many fields removes the personal storytelling that makes P2P work. Keep name, description, and goal editable unless you have a strong reason not to.