Google Tag Manager integration for P2P campaigns

Track fundraiser registration and donations from your peer-to-peer campaigns in Google Tag Manager.

Peer-to-peer (P2P) campaigns produce two kinds of activity that you can track in Google Tag Manager: who sign up to fundraise for you, and supporters who donate to a fundraiser page. Each happens on a different page, and each needs a different Google Tag Manager (GTM) container.

  • Your website — the page where you place a P2P Button or P2P Fundraiser Link. When a  opens the sign-up form from one of these , Fundraise Up pushes registration events into the data layer of that page.
  • Fundraiser pages — the pages that Fundraise Up hosts for each fundraiser and team. Fundraise Up loads the container that you add under Settings > Analytics tools on these pages, and the standard checkout events fire there.

The two setups are independent. Adding a container under Analytics tools does not track registration, and installing a container on your website does not track donations on fundraiser pages.

Set up both to see the full path from sign-up to donation.

Track fundraiser registration on your website

 

Registration tracking runs entirely in your own GTM container. Fundraise Up pushes the events, and you decide which triggers, variables, and tags act on them.

Registration events come only from the sign-up form that a P2P Fundraiser Button or P2P Fundraiser Link opens. Supporters can also sign up from a , or join a team from the team page, and neither route pushes an event. To track registration, place a Button or Link on your own site and send supporters through it.

Prerequisites

 

Before you start, make sure that you have:

  • A GTM container installed on the page where your P2P Fundraiser Button or P2P Fundraiser Link is placed.
  • Administrative access to your 's Google Tag Manager .

Events pushed to the data layer

 

Fundraise Up pushes two events into window.dataLayer of the page where the registration form opens.

  • Registration form opened. Pushed when the sign-up form appears:
    1window.dataLayer.push({
    2  event: 'FundraiseUp.p2pRegistrationFormOpened',
    3  FundraiseUp: {
    4	  widgetKey: 'FUNXXXXXXXX',
    5		 eventId: '123e4567-e89b-42d3-a456-426614174000'
    6	   }
    7});

  • Fundraiser created. Pushed after the fundraiser page is created, immediately before the supporter is redirected to it:
    1window.dataLayer.push({
    2  event: 'FundraiseUp.p2pFundraiserCreated',
    3  FundraiseUp: {
    4    widgetKey: 'FUNXXXXXXXX',
    5    fundraiserId: 'NXXXXXXX',
    6    participationType: 'individual'
    7  }
    8});

Each push has two top-level keys. The event key holds the event name, which is the value you put in a Google Tag Manager trigger. The FundraiseUp key holds the data, read in GTM by path: FundraiseUp.widgetKey, FundraiseUp.fundraiserId, FundraiseUp.participationType.

Field values:

  • widgetKey — the ID of the P2P the supporter signed up for.
  • fundraiserId — the ID of the fundraiser page that was created.
  • participationType — individual when a supporter starts their own page, team when a supporter creates a team, or join_team when a supporter joins an existing team.
  • eventId — an identifier that Fundraise Up uses to match this browser event with the same event sent through Meta Conversions API, so Meta counts it once.

Neither event carries a supporter name, email address, or supporter ID.

Event behavior

 
  • When a supporter creates a team, one FundraiseUp.p2pFundraiserCreated event fires. participationType is team and fundraiserId is the key of the team page, even though the supporter also gets a page of their own.
  • When a supporter joins an existing team through the sign-up form, FundraiseUp.p2pFundraiserCreated fires with participationType set to join_team. Joining from the team page itself does not push an event.
  • When a supporter closes the sign-up form and opens it again, FundraiseUp.p2pRegistrationFormOpened fires again with a new eventId. A step back inside the form does not fire it again.
  • No event reports a registration that a supporter starts but does not finish.

Fundraise Up pushes both events into the dataLayer regardless of the cookie choices that the visitor made. What your tags do with them depends on how your own consent setup gates them.

Step 1. Create the triggers

 

Create one Custom Event trigger for each event.

  1. In GTM, go to Triggers and click New.
  2. Select Custom Event as the trigger type.
  3. In the Event name field, paste FundraiseUp.p2pRegistrationFormOpened. Leave Use regex matching cleared.
  4. Name the trigger and save it.
  5. Repeat steps 1–4 for FundraiseUp.p2pFundraiserCreated.

Step 2. Create the variables

 

Create a Data Layer Variable for each field you want to send with your tags.

  1. In GTM, go to Variables and click New.
  2. Select Data Layer Variable as the type.
  3. In the Data Layer Variable Name field, enter the path of the field: FundraiseUp.participationType, FundraiseUp.fundraiserId, or FundraiseUp.widgetKey.
  4. Give the variable a descriptive name, such as Fundraise Up P2P Participation Type, and save it.

Step 3. Create the tags

 

Tags decide what happens when a trigger fires. Create one for each registration event you want to send to your analytics tool.

  1. In GTM, go to Tags and click New.
  2. Select the tag type for your analytics tool, such as Google Analytics: GA4 Event.
  3. Name the event as you want it to appear in your analytics tool. Fundraise Up does not map registration events to a standard Google Analytics event, so the choice is yours.
  4. Expand the Event Parameters section and add the variables you created in Step 2.
  5. Assign the trigger you created for this event in Step 1.
  6. Name the tag and save it.
  7. Repeat steps 1–6 for the second event.

Step 4. Test and publish

 

Check that both events fire and reach your analytics tool before you publish the container.

  1. Turn on Preview mode in GTM and open the page with your P2P Fundraiser Button or P2P Fundraiser Link.
  2. Open the registration form, then create a fundraiser page. Both events appear in Tag Assistant with their data, and the tags attached to them fire.
  3. Check that the events reach your analytics tool. In Google Analytics, use DebugView or the Realtime report.
  4. Publish your container.

To check the events without GTM, open your browser console and inspect window.dataLayer for the two FundraiseUp.* entries.

The FundraiseUp.p2pFundraiserCreated event fires immediately before the browser navigates to the new fundraiser page, so a tag on this trigger must send its request before the page changes. Confirm delivery in your analytics tool rather than in Tag Assistant alone.

Ad blockers and browser tracking restrictions can also drop these events before they reach your analytics tool. Meta Conversions API sends the same two registration events from Fundraise Up servers rather than the browser, so it does not depend on what a supporter's browser allows. Use it alongside your GTM setup when you need Meta to receive the events reliably.

Track donations on fundraiser pages

 

Fundraiser pages are hosted by Fundraise Up, so you cannot add a container to their code. Add your container ID in the instead, and Fundraise Up loads it on every fundraiser page in your account.

Where GDPR applies — based on your organization's country or the supporter's — the container loads only after the supporter accepts marketing cookies. Everywhere else consent is granted by default and the container loads right away. When a supporter declines, Fundraise Up does not load the container and no tags run. When a supporter accepts later in the same visit, Fundraise Up loads the container at that point.

Step 1. Get your container ID

 
  1. Log in to your Google Tag Manager account.
  2. Select or create a container.
  3. Copy the GTM Container ID, formatted as GTM-XXXXXXX.

Step 2. Add the container to Fundraise Up

 
  1. In your Fundraise Up Dashboard, go to Settings > Analytics tools.
  2. In the Google Tag Manager section, click Add container.
  3. Enter your GTM Container ID.
  4. Click Add container to confirm.

You can add more than one container. Fundraise Up loads all of them.

Step 3. Set up tags for donation events

 

Fundraiser pages open the standard Fundraise Up checkout, so they push three donation events into the data layer:

  • FundraiseUp.checkoutOpen — a supporter opens checkout.
  • FundraiseUp.donationComplete — a supporter completes a donation.
  • FundraiseUp.checkoutClose — a supporter closes checkout.

For Google Analytics and Meta Pixel, Fundraise Up provides container templates with the triggers, variables, and tags for these three events already built.

To import a template:

  1. In GTM, go to Admin and select Import Container.
  2. Select Choose Container file and upload the JSON file you downloaded.
  3. Select Existing to import into the container from Step 1.
  4. Select Merge as the import option.
  5. Select Rename conflicting tags, triggers, and variables.
  6. On the import preview screen, click Confirm.
Select Merge before you continue. The Overwrite option replaces your existing configuration with the settings from the template.

For any other analytics tool, create a Custom Event trigger for each of the three event names above, then build your own variables and tags on them. The steps match the ones under Track fundraiser registration on your website, with the donation event names in place of the registration ones.

Limits on fundraiser pages

 

Fundraiser pages run scripts only from analytics and ad tools that Fundraise Up has approved, and the approved list matches the one for . Scripts from any other tool do not load, even when the tag is configured correctly in GTM.

Approved tools can send requests only during a short window — about 10 seconds — after the checkoutOpen and donationComplete events fire. Requests sent after that window are blocked.

Separate test sign-ups from real ones

 

Registration events look identical whether a supporter creates a fundraiser page or you create one while checking your campaign. The events carry no field that marks the sign-up as a test, so your analytics tool counts both the same way. The Test mode tracking setting under Settings > Analytics tools does not change this. It does not apply to registration events, which reach the data layer whether the setting is on or off.

The page address is what tells them apart. A test sign-up runs through a P2P Fundraiser Link with ?fundraiseupLivemode=no added to its URL, and that parameter stays in the address while the registration form is open. To keep test sign-ups out of your reports, set up two things in GTM. A variable reads the parameter from the page address, and a trigger blocks your registration tags whenever the parameter appears:

  1. In GTM, go to Variables and click New.
  2. Select URL as the type, set Component Type to Query, and enter fundraiseupLivemode as the query key.
  3. Name the variable and save it.
  4. Go to Triggers and create a trigger that fires when this variable equals no.
  5. Open each registration tag and add this trigger as an exception under Triggering.

Your registration tags now report only the supporters who reach the form through your live Button or Link.

Ready to elevate your fundraising efforts?

Connect with our sales team to explore how our innovative tools can transform your online giving experience.

Request a demo