Most B2B SaaS marketing teams run ads on both Google and Facebook simultaneously. And most of them are working with broken data because of it.
Here is the core problem: Google and Facebook each use their own attribution windows and default to last-touch models. Both platforms routinely claim credit for the same conversion. When you add up reported conversions across both channels, the total almost always exceeds what your CRM actually recorded. You end up making budget decisions based on inflated, contradictory numbers rather than reality.
This guide walks you through a practical, step-by-step process to track conversions across Google and Facebook accurately. By the end, you will have a unified conversion tracking setup that captures every touchpoint, reduces data gaps caused by browser restrictions and ad blockers, and feeds clean signal back to both ad platforms to improve their optimization algorithms.
This approach is built specifically for B2B SaaS teams running paid acquisition campaigns. Whether you are setting up conversion tracking from scratch or auditing a system that has drifted out of alignment, these steps apply directly to your situation.
The approach here moves beyond basic pixel tracking and into server-side event tracking, which is now the standard for accurate cross-channel attribution. Browser-based pixels have become less reliable due to iOS privacy changes, browser-level cookie restrictions, and ad blockers. Server-side tracking addresses this directly by sending conversion data from your server rather than the user's browser.
You will also learn how to unify data from both platforms into a single view so you can compare performance without platform bias. Each step builds on the previous one, so follow them in order for the cleanest setup.
Step 1: Define Your Conversion Events Before Touching Any Platform
Before you log into Google Ads or Meta Events Manager, you need a documented list of every meaningful conversion event in your funnel. Skipping this step is the most common reason cross-channel tracking setups fall apart.
Start by listing every action a prospect can take that signals intent or drives revenue. For B2B SaaS, this typically includes demo requests, free trial signups, MQL form fills, sales-qualified lead handoffs, and closed-won revenue. Each of these deserves its own tracking event.
Next, categorize each event by funnel stage. This matters because top-of-funnel micro-conversions (like a content download) should be weighted and used differently than macro-conversions (like a closed deal). Micro-conversions are engagement signals. Macro-conversions are revenue-driving actions. Knowing the difference shapes how you configure tracking on each platform and how you prioritize optimization signals.
Now assign a consistent naming convention across both Google and Facebook. This is non-negotiable for cross-channel comparison. If Google tracks an event called "Demo Request" and Facebook tracks the same event as "demo_request_form_submit," reconciling data later becomes unnecessarily complicated. Pick one naming standard and apply it everywhere.
Recommended naming approach: Use lowercase, underscore-separated names that describe the action clearly. For example: demo_request, trial_signup, mql_form_fill, opportunity_created, closed_won.
Document your full event list in a shared spreadsheet before building anything. Include the event name, funnel stage, conversion category (lead, signup, purchase), and whether it is a micro or macro conversion. This document becomes your single source of truth when configuring tracking on each platform. Reviewing best practices for tracking conversions accurately at this stage can help you avoid common structural mistakes before you build anything.
Common pitfall to avoid: Teams often track different events on Google versus Facebook because each platform was set up by a different person or at a different time. When this happens, cross-channel comparison becomes impossible. You cannot compare performance across channels if the channels are not measuring the same things.
Completing this step correctly means every subsequent step will be cleaner, faster, and more reliable. Think of your event list as the blueprint. Everything else is construction.
Step 2: Set Up Google Ads Conversion Tracking with Enhanced Conversions
With your event list documented, open Google Ads and navigate to the Conversions section under Goals. Create a new conversion action for each macro-conversion event you defined in Step 1. Start with your highest-value events: demo requests, trial signups, and any revenue-tied events.
When creating each conversion action, select the correct conversion category. Google uses these categories to inform its Smart Bidding algorithms. Assigning a form fill as a "Lead" and a closed deal as a "Purchase" helps Google understand the relative value of each event and optimize accordingly. Getting this wrong means you are training Google's algorithm on the wrong signal.
Now enable Enhanced Conversions. This is the step most teams skip, and it is one of the most impactful changes you can make to your Google tracking setup. Enhanced Conversions improve match rates by sending hashed first-party data (email address, phone number, or name) alongside your standard conversion signals. This helps Google match conversions to ad interactions that standard tags may have missed due to browser restrictions or cookie blocking.
To enable Enhanced Conversions, go to your conversion action settings and turn on the Enhanced Conversions toggle. You can implement it through Google Tag Manager by capturing form field values and passing them as user-provided data. Google hashes this data on the client side before it is sent, so no raw personal data leaves the browser.
Install the Google tag via Google Tag Manager if you have not already. Configure the Conversion Linker tag to capture the GCLID (Google Click Identifier) from the URL and store it in a first-party cookie. The GCLID is what connects an ad click to a later conversion, so this step is critical for attribution accuracy.
After your tags are live, verify the setup using Google Tag Assistant. Fire test conversions and confirm that events are appearing in the Google Ads interface. Conversion data typically appears within 24 to 48 hours of the first recorded event.
Pitfall to avoid: Do not import goals from Google Analytics into Google Ads as your primary conversion source. This approach creates attribution discrepancies because Google Analytics and Google Ads use different attribution models and session definitions. Use native Google Ads conversion tracking for any event you want Google's algorithm to optimize toward.
Once your conversion actions are verified and data is flowing, you have a solid Google-side foundation. Now it is time to address the Facebook side with equal rigor.
Step 3: Implement the Meta Conversion API Alongside Your Facebook Pixel
The Facebook Pixel alone is no longer sufficient for accurate conversion tracking. iOS privacy changes and browser-level restrictions now block a meaningful share of pixel-fired events before they reach Meta's servers. If you are relying exclusively on the Pixel, you are working with incomplete data, and Meta's algorithm is optimizing on an incomplete signal.
The Meta Conversion API (CAPI) solves this by sending conversion events directly from your server to Meta, bypassing the browser entirely. Events sent via CAPI are not affected by ad blockers, iOS restrictions, or cookie policies. Running CAPI alongside your Pixel gives you the most complete conversion signal possible.
The key requirement when running both simultaneously is event deduplication. If the same conversion fires both a Pixel event and a CAPI event, Meta will count it twice unless you configure deduplication correctly. This inflates your conversion counts and corrupts the optimization signals you are sending to Meta's algorithm.
Deduplication works by matching events based on two criteria: the event name and a unique event ID. Both your Pixel and your CAPI implementation must fire the same event name (for example, Lead) and include the same unique event ID for each individual conversion. Meta's system then recognizes that both signals refer to the same event and counts it once.
When setting up your CAPI events, include the following parameters for the strongest match quality:
Event name: Must match the Pixel event name exactly.
Event time: Unix timestamp of when the event occurred.
Event source URL: The page URL where the conversion happened.
User data: Hashed email, hashed phone number, and external ID (your CRM's user identifier). More user data parameters improve Meta's ability to match the event to a real person in their system.
Custom data: Value, currency, and any custom parameters relevant to your funnel stage.
After implementation, test your CAPI setup using the Test Events tool in Meta's Events Manager. This tool shows you in real time whether events are being received and whether deduplication is working correctly. Look for a high Event Match Quality score, which indicates that Meta can reliably match your events to users in their system. For a deeper look at how pixel data loss affects your campaigns, see this guide on fixing Facebook Pixel tracking data loss.
Pitfall to avoid: Sending CAPI events without deduplication is worse than not running CAPI at all. Inflated conversion counts mislead Meta's algorithm and cause it to optimize toward phantom conversions. Always verify deduplication before considering your CAPI setup complete.
Step 4: Add UTM Parameters and Click ID Capture to Every Campaign
UTM parameters are the foundational layer of cross-channel attribution. Without them, you cannot identify which campaign, ad set, or creative drove a specific conversion when you are looking at data outside of the native ad platforms.
Use a consistent UTM structure across every Google and Facebook campaign. The standard parameters are: utm_source, utm_medium, utm_campaign, utm_content, and utm_term. Understanding what UTM tracking is and how it helps your marketing will make your cross-channel comparison far more reliable. If one team member uses "facebook" as the source and another uses "meta," your data will be fragmented.
Recommended UTM conventions for B2B SaaS:
Google Ads example: utm_source=google / utm_medium=cpc / utm_campaign=brand-search-q2 / utm_content=headline-variant-a
Facebook Ads example: utm_source=facebook / utm_medium=paid-social / utm_campaign=demo-retargeting-q2 / utm_content=video-creative-b
For Google, auto-tagging automatically appends the GCLID to your destination URLs. Keep auto-tagging enabled. The GCLID is what allows Google Ads to attribute conversions to specific clicks, and it is also what you will use for offline conversion imports in Step 6. You still need UTMs for any analytics platform outside of Google's own ecosystem.
For Facebook, the fbclid parameter is automatically appended when users click your ads. Enable URL parameters in your Facebook ad account settings to ensure UTMs are consistently applied across all campaigns. You can set default URL parameters at the account level to reduce the risk of campaigns going live without proper tagging.
Here is the step that most B2B SaaS teams miss: store the GCLID, fbclid, and UTM values in your CRM at the moment of first touch. For SaaS companies with sales cycles that span weeks or months, this stored data is the only way to connect an ad click from early in the funnel to a closed deal that happens much later.
Configure your lead forms to capture hidden fields that pull UTM values from the URL and pass them into your CRM on every submission. Most CRMs support custom fields for this purpose. Verify that this data is being captured correctly by submitting test leads and checking the CRM record for UTM and click ID values.
Verification check: Pull a sample of recent CRM leads and confirm that UTM source, medium, campaign, and click ID fields are populated. If a significant portion of leads are missing this data, your form capture is not working correctly and needs to be fixed before moving forward.
Step 5: Connect Both Platforms to a Unified Attribution Layer
Here is the core limitation of everything you have built so far: Google Ads reports Google's version of performance. Meta Ads Manager reports Meta's version of performance. Neither platform knows what the other is doing, and both are incentivized to claim as much credit as possible.
Running Google and Facebook tracking in isolation means you will always be working with two competing narratives rather than one shared truth. A prospect might click a Google search ad, later see a Facebook retargeting ad, and then convert. Google claims the conversion. Facebook claims the conversion. Your actual CRM records one new lead. This is the attribution overlap problem, and it cannot be solved within either platform alone.
A unified attribution layer solves this by pulling data from both ad platforms, your CRM, and your website into a single view. This is where a platform like Cometly provides direct value. Cometly connects your ad platforms, CRM, and website to track the complete customer journey and show which sources actually drive revenue, without requiring you to build a custom data infrastructure.
With multi-touch attribution, you can see how Google and Facebook interact across the buyer journey rather than viewing them as separate silos. A first-touch attribution model might give all credit to the Google search ad that introduced the prospect. A linear model might distribute credit across the Google ad, the Facebook retargeting ad, and the email that preceded the demo request. Each model tells a different story about channel contribution.
This is why comparing attribution models matters. Run your data through first-touch, last-touch, linear, and data-driven models and observe how your budget allocation decisions change under each scenario. Teams that only look at one model are making channel investment decisions based on an incomplete picture.
Cometly's AI surfaces which ads and campaigns are performing across every channel, so you can scale what works with confidence rather than relying on each platform's self-reported numbers. The AI identifies high-performing campaigns and provides recommendations grounded in actual conversion and revenue data, not impressions or clicks.
The output of this step is a single dashboard where Google and Facebook conversion data is reconciled, deduplicated, and tied to actual pipeline and revenue. This is the single source of truth your team needs to make confident, data-driven budget decisions. Without it, you are always choosing between two platforms arguing over who deserves credit.
Step 6: Send Enriched Conversion Data Back to Both Ad Platforms
Most teams treat conversion data as something they collect and keep. The highest-performing teams treat it as something they collect, enrich, and send back to the platforms that need it most.
Once you have clean, unified conversion data in your attribution layer, the next step is to feed that data back to Google and Meta so their machine learning algorithms can optimize toward your actual business outcomes, not just surface-level lead volume.
For Google Ads, use offline conversion imports to send CRM-level data back to the platform. This means uploading events like qualified opportunities, sales-accepted leads, and closed-won revenue, matched back to the original GCLID that drove the first click. Google's algorithm uses this data to understand which types of users and queries are most likely to convert into actual customers, not just form fills.
The process works by exporting a CSV from your CRM that includes the GCLID and the conversion event name, then uploading it to Google Ads via the offline conversions interface. You can also automate this through the Google Ads API or through an attribution platform that handles the upload for you. Schedule uploads at minimum weekly to keep Google's algorithm working with fresh signal.
For Meta, use CAPI to send downstream funnel events beyond the top-of-funnel actions your Pixel is already tracking. If Meta is only receiving "Lead" events from form fills, it will optimize its targeting toward users who are likely to fill out forms. If you also send "Opportunity Created" and "Closed Won" events, Meta can optimize toward users who are more likely to become paying customers. Learn more about how to sync conversion data to Facebook Ads to make this process more efficient.
Cometly handles this automatically by feeding enriched, conversion-ready events back to Meta, Google, and other platforms. This improves targeting, optimization, and overall ad ROI because both platforms are now training their algorithms on the outcomes that actually matter to your business.
Pitfall to avoid: Only sending top-of-funnel events to ad platforms trains their algorithms to optimize for volume rather than quality. A campaign that generates many low-quality leads will appear to be performing well in the platform's reporting, but it will show poor results in your CRM and revenue data. Sending downstream signals corrects this misalignment and shifts optimization toward revenue-generating outcomes.
After implementing offline conversion imports and downstream CAPI events, monitor your lead quality metrics in the CRM over the following weeks. Teams that implement this step correctly typically see their ad platforms start delivering higher-intent traffic over time as the algorithms recalibrate toward better signals.
Putting It All Together: Your Cross-Channel Conversion Tracking Checklist
Accurate cross-channel conversion tracking is not a one-time project. It is an ongoing system that requires monitoring, maintenance, and regular audits as your website, CRM, and ad platforms evolve. Use the checklist below to verify your current setup or audit an existing one.
Step 1: Event Definition - Conversion events are documented with consistent naming across Google and Facebook, categorized by funnel stage, and separated into micro and macro conversions.
Step 2: Google Ads Setup - Native conversion actions are created for each event, Enhanced Conversions are enabled, the Google tag is installed via GTM, and the Conversion Linker is capturing GCLIDs.
Step 3: Meta CAPI Setup - The Conversion API is running alongside the Pixel, event deduplication is configured with matching event names and event IDs, and Event Match Quality scores are acceptable in Events Manager.
Step 4: UTM and Click ID Capture - All campaigns use a consistent UTM structure, GCLIDs and fbclids are being stored in the CRM at first touch, and hidden form fields are passing UTM data into CRM records on every submission.
Step 5: Unified Attribution - Both platforms are connected to a unified attribution layer (such as Cometly) that reconciles cross-channel data and enables multi-touch attribution model comparison.
Step 6: Enriched Data Feedback - Offline conversion imports are uploading CRM-stage events to Google Ads weekly, and downstream CAPI events are being sent to Meta beyond top-of-funnel actions.
If you are building this infrastructure from scratch or want to avoid the complexity of connecting these systems manually, Cometly provides the unified attribution layer that handles Steps 5 and 6 out of the box, with 70+ native integrations covering your ad platforms, CRM, and website data.
Audit your current setup against this checklist, identify the gaps, and address them in order. The goal is a single source of truth that connects every dollar spent on Google and Facebook to actual pipeline and revenue. Get your free demo and see how Cometly helps B2B SaaS teams build this foundation without the custom data engineering.





