Marketing wants to know which campaign sold last Saturday’s tickets. Google Analytics shows plenty of traffic to the tickets page and then nothing: no purchase, no revenue, sometimes a burst of “referral” traffic from a payment domain. The problem is rarely your tag. It usually comes down to where the Altru form actually runs and how much of it your tags can see.
Here’s how to work out what you can measure, how to set up Google Tag Manager (GTM) and GA4 around Altru web forms, and where you’ll have to rely on Altru’s own data.
Start by finding out where the form lives
Before you touch GTM, open your ticket or membership page in a browser, right-click the form, and inspect it. You’re trying to answer one question: is the form part of your page, or is it a separate page loaded from another domain?
- Embedded in your page’s own markup. GTM on your page can usually see clicks and field interactions. This is the friendliest case.
- Loaded inside an iframe from another domain. Your GTM container can’t see anything inside a cross-origin iframe. Browsers block that on purpose, and no tag setting gets around it.
- Hand-off to a hosted page. At some point (often payment) the visitor moves to a page on a different domain. Your container isn’t on that page unless the platform lets you add it.
Many setups combine these, so check each step of the flow, not just the first screen. If you can’t tell whether Altru lets you add your own scripts to its form or confirmation pages, ask Blackbaud support directly, and test any change on a non-production page first. Don’t assume a script field exists because another platform has one.
Tag the pages you control
Whatever the form does, the page that hosts it is yours. Get that part right first.
- Install GTM on every page of your site, including the pages that host Altru forms. Put the GA4 configuration tag (the Google tag) in GTM rather than hard-coding a second copy in the page, or you’ll double-count page views.
- Give form pages clear, stable URLs. “/tickets/general-admission” and “/membership/join” are easy to build funnels and audiences from. A single “/buy” page that changes its contents is not.
- Track the intent signals you can see. Clicks on “Buy tickets” or “Join” buttons, calendar date selections, and scroll depth on the form page are all measurable from your container. They won’t tell you revenue, but they tell you where people drop off before the form.
- Use UTM parameters on every campaign link (email, social, paid). If the conversion happens somewhere you can’t tag, the landing page’s source data is the best attribution you’ll get.
Cross-domain tracking: what it fixes and what it doesn’t
When a visitor moves from your domain to another one, GA4 normally starts a new session and credits the second domain as a referral. That’s why payment domains show up as a top “source” in some museum accounts.
GA4 handles this in the web data stream’s tag settings, where you list the domains that should be treated as one site. Two conditions have to be true for it to work:
- Your Google tag is installed on both domains, using the same GA4 property.
- The visitor moves between them via a link or form submit the tag can decorate. Iframes and some script-driven redirects don’t carry the linker parameter.
If you can’t put your tag on the Altru or payment domain, cross-domain configuration won’t create a continuous session. What you can still do is add those domains to GA4’s list of unwanted referrals, so returning visitors keep their original campaign source instead of being credited to the payment page.
Purchases and revenue
A GA4 purchase event with a value needs a tag to fire on a confirmation screen that knows the order total. If the confirmation step runs on a page you can’t add scripts to, or inside an iframe, you won’t get reliable ecommerce data from GTM alone. Be skeptical of workarounds that guess at a purchase from a click on “Submit”; they count failed card attempts and abandoned payments as sales.
The honest fallback is to treat Altru as the source for revenue and GA4 as the source for traffic and behavior:
- Report online revenue from Altru (a query on online transactions by date, with program or ticket type), not from GA4.
- Compare that against GA4 sessions and form-page visits by campaign for the same date range. The trend is useful even if the numbers don’t join row by row.
- If your forms capture any source or appeal field, make sure your campaign links pass through to it where possible, so attribution lands on the transaction itself.
Consent and privacy
If you run a cookie banner or consent mode, configure it in GTM so it applies to the form pages too. Also check what your tags capture: URL query strings and form field interactions can pick up email addresses or names. Strip personal data before it reaches GA4; Google’s terms don’t allow it, and it’s an awkward thing to explain to a board.
Video walkthrough
If it helps to see this on screen, the video below walks through related setup. Keep your own GTM container and GA4 property open alongside it so you can check your settings as you go.
When the form itself is the limit
Everything above works with standard Altru web forms. If measurement is one of several reasons you’re reconsidering how people buy online, Social Good’s Checkouts is a branded, mobile-friendly checkout for tickets, memberships, and donations that writes the data back to Altru. Ask us how analytics tagging would work with your site before you decide.
Quick answers
Can I paste my GTM snippet into an Altru web form?
It depends on what your form setup allows, and it’s worth confirming with Blackbaud support rather than guessing. You can always tag the page that hosts the form.
Why does a payment domain show up as my top referrer?
Visitors leave your domain to pay and come back. Add that domain to GA4’s unwanted referrals list so the original source is kept.
Should GA4 revenue match Altru?
No, and don’t try to force it. Use Altru for revenue and GA4 for where buyers came from and where they dropped off.



