Using Google Tag Manager
We recommend that you familiarize yourself with our data layer before starting to use it in Google Tag Manager.
GoFundMe Pro was previously known as Classy, so you may notice some triggers and values contain that name.
With an understanding of our data layer, you can use Google Tag Manager to take full advantage of it. As long as you set up your variables, triggers, and tags correctly, you can implement advanced conversion tracking, enhance your off-platform analytics, and fire advertising pixels exactly when needed.
Activate GTM
To get started, you'll need to work with our Care team to activate the connection to GTM on your account.
- Submit a case to our Care team and provide your GTM Account ID and GTM Container ID
Tip: Your Account ID contains only numbers and can be found in the Admin tab > Account Settings.
The Container ID starts with "GTM" and combines letters and numbers.
- The Care agent will send instructions in a separate email for you, or your GTM administrator, to approve the connection
- Let the Care agent know that the connection has been approved so they can complete the setup
Import container
With the setup complete, download our container template and merge it with your organization’s GTM account using the “Import Container” feature. The template contains all of our variables and triggers that you can use to easily configure new tags based on what happens on your campaign. Here are the steps:
- Download the Studio campaign container template by right-clicking the file and selecting Save Link As...
- For legacy campaigns, use this container template
Note: If you use both types of campaigns, download and import both container files.
- Log into your Google Tag Manager account
- Select the Admin tab
- Choose the container you have installed on your account
- Select Import Container
- Select Choose container file
- Select ClassyStudioGTMImport.json
- For legacy campaigns, the file name is ClassyVariablesAndTriggers.json
- Under Choose workspace, select Existing and whichever Workspace you plan to use.
- Under Choose an import option, select Merge.
Important: DO NOT select Overwrite on this screen. It will delete everything in your container, including existing tags, triggers, and variables. Double-check to make sure you have Merge selected before you move on.
- Review your settings and select Confirm to process the import.

Variables
Our container includes variables that will allow you to access specific information that we push to the data layer and send it along with your tags to the platform of your choice. All variables are created using the “Data Layer Variables” variable type.
The most common variables are: Campaign ID, Campaign Name, Campaign Type, Transaction ID, and Transaction Amounts. Check out the container JSON file for the complete list of variables.
Triggers
Setting up triggers in Google Tag Manager is essential to fire tags based on actions in your campaign, such as a donation. This is more precise and allows you to glean more information than simply tracking donations based on “Thank You” page views, since events will only fire once per action, which eliminates duplicate conversions if the page is refreshed.
| Trigger Name | Event Type | Data Layer Variable Name | Filter |
|---|---|---|---|
Classy Pageview |
Custom Event |
custom_page_view |
[none] |
Classy Studio Purchase |
Custom Event |
purchase |
[none] |
Classy Studio Recurring Donation |
Custom Event |
purchase |
Classy Studio Transaction Contains Recurring |
Classy Studio One-Time Donation |
Custom Event |
purchase |
Classy Studio Transaction All Items Frequencies Contains One-Time |
Classy Donation |
Custom Event |
transaction |
Classy Transaction Type = donation |
Classy Monthly Donation |
Custom Event |
transaction |
Transaction Type = donation Frequency = monthly |
Classy One-Time Donation |
Custom Event |
transaction |
Transaction Type = donation Frequency = one-time |
Classy Registration |
Custom Event |
transaction |
Transaction Type matches RegEx ticketed|reg_w_fund |
Classy Fundraising Page Sign-Up |
Custom Event |
fundraising_page_sign_up |
[none] |
Classy Fundraising Team Sign-Up |
Custom Event |
fundraising_team_sign_up |
[none] |
Classy Supporter Loaded |
Custom Event |
supporter_loaded |
[none] |
Tags
We have tested the following tag types and confirmed they work with your account. Additional tag types may be available through the Google Tag Manager integration, but full functionality is not guaranteed.
Tip: Since every organization is unique, please test each tag before launching your campaign to make sure it is working properly. We recommend using Tag Manager Preview Mode to make sure the tag is firing, pulling data correctly, and to confirm it in the platform you are pushing to.
- Google Analytics: GA4 Configuration (only recommended for event tracking; see notes below)
- Google Analytics: GA4 Event
- Google Ads Conversion Tracking
- Google Ads Remarketing
- Conversion Linker
- Hotjar Tracking Code
- LinkedIn Insights Tag
- Microsoft Advertising Universal Event Tracking
- Custom HTML
- Custom Image
Google Analytics:
- If you are looking to integrate Google Analytics 4, we recommend you do so within your account instead of implementing it via Google Tag Manager. The recommended method is the most direct way to implement GA4, and it will also enable eCommerce Tracking in the process, as long as you have it enabled in your GA4 account.
- If you’re using the GTM integration, you won’t be able to use our native GA4 integration, as both integrations are using conflicting scripts. We advise using the GA4 Configuration tag type to install and use the “All Pages” trigger to fire across your entire instance.
- Please note: eCommerce Tracking on GA4 is not enabled by default and must be custom-implemented for your organization. Learn more about ecommerce tracking and implementing GA4 in Google Tag Manager.
Things to keep in mind
- Scripts can affect pages in unexpected ways. We always recommend testing the donation flow when a new item is added.
- transaction.raw_currency_code and transaction.raw_donation_gross_amount are the values set by the donor in his/her currency, whereas transaction.charged_currency_code and transaction.charged_total_gross_amount are the values of the donation converted to the campaign currency.
- For conversion tracking purposes, we recommend using transaction.charged_donation_gross_amount over transaction.donation_gross_amount or raw_total_gross_amount, as it will ensure that the final changed amount is reflected based on the campaign’s preset currency.
- Both cart and donation conversions are called "transactions" in the data layer.
- transaction.billing_postal_code will only display the first three digits for security reasons.
- transaction.overhead_net_amount represents the amount of event/host fees.
- Add campaign.designation_name so a designation’s name can be pushed out on page load and add/remove to cart events. Campaign.designation_id does exist, but it requires some transaction when viewed in other platforms, whereas “name” does not. It’s preferable to have both.