Skip to main content

Conversion Tracking for Google and Meta Ads Across Two Domains

Conversion Tracking for Google and Meta Ads Across Two Domains

Google 3rd-Party Integration
Google Ads and Meta logos with arrows pointing to a layered funnel

Overview

Many nonprofits run their main website on one domain while event registrations and donations happen on a third-party platform at a different web address entirely. This is common with hosted CRM platforms like Neon CRM. As investment in Google Ads and Meta Ads grows, so does the need to understand what is actually converting. Source attribution is lost the moment a visitor clicks through from the main site to a registration or donation form, and most hosted CRM forms do not push data to the dataLayer.

Here is how we connected them.

Solution

Cross-domain tracking was configured in GA4 by adding the Neon CRM subdomain as a linked domain, so sessions originating on the main site continue uninterrupted through the Neon forms rather than being treated as separate referral traffic.

Event registration tracking required a sessionStorage approach. The event ID and event name are only available on step 1 of the multi-step registration flow, and the confirmation page URL contains no identifying information. A GTM tag captures both values from the URL query string and the page DOM and writes them to sessionStorage using three custom variables (QS - Neon Event ID, JS - Neon Event ID, JS - Neon Event Name) and three triggers scoped to the registration URLs. On the confirmation page, a GA4 event tag reads those stored values back and fires neon_registration_complete with the event ID and name attached as parameters. Because Neon's Content Security Policy blocks GTM's standard Preview mode, tag verification required the browser's Network tab instead.

Donation tracking required a different approach. The Vue.js donation form never changes URLs between steps, so there is no page view or URL condition to trigger on. A custom GTM tag polls the Vue instance at a regular interval and fires a neon_donation_complete event via a GTM dataLayer push, capturing the donation amount and frequency in the process.

GA4 configuration included marking both events as Key Events and registering four custom dimensions: Neon Event ID, Neon Event Name, Donation Amount, and Donation Frequency.

Google Ads conversion goals were imported directly from both GA4 Key Events, with event registrations mapped as a Lead goal and donations as a Purchase goal.

Meta Pixel was deployed via GTM across both domains, with a CompleteRegistration event on the registration confirmation page and a Purchase event on the donation confirmation page. Tag sequencing ensures the base pixel fires before conversion events.

Results

With this setup in place, organizations using Neon CRM can see which campaigns, channels, and landing pages are driving real registrations and donations. Session continuity is intact across both domains. Google Ads receives conversion signals for both goal types, and Meta Pixel conversion events fire correctly on both the main site and the Neon subdomain.

Building custom tracking logic around the constraints of a hosted CRM platform delivers full-funnel visibility into paid ad performance without requiring any changes to the CMS or CRM configuration.

If you run paid campaigns and aren't sure what's actually converting, we can help connect the dots. Let's talk.

See how this implementation helped Palmer Land Conservancy put their ad budget to work.