First-Party Data in Online Advertising, Part 3: Debugging – How to Verify Everything Work
Part 3 of our first-party data series gets technical again – we'll show you how to check that data is correctly reaching each system and doing what it should. We'll look at outgoing hits in DevTools and at checks directly in the ad platforms.
In the first two parts of this series, we explained why first-party data matters for campaign performance and how to send it from your website through server-side GTM to the ad platforms. Today, we'll look at how to verify that everything actually works.
Personal data flows from your form into the data layer, and you’re passing it via variables to both Google and Meta. You’ve already confirmed in GTM Preview mode that user_data is leaving your server-side GTM and that all the user parameters in your tags are populating beautifully – so you’re done.
Unfortunately, even when everything looks fine in GTM – tags fire and data goes out – things can still go wrong: the format, the hashing, incorrectly named parameters… For your implementation to actually improve your results and campaigns, it’s essential to check, in every system, how the data arrives and whether it’s being processed correctly.
Checking outgoing hits – the right tools
Put simply, every tag in GTM sends out a signal when it fires = a hit = a packet of information in a specific format that the platform can recognize and read. That’s exactly why the information needs to leave in the correct format – otherwise the invalid parts get discarded or, worse, in some cases they prevent the entire packet from being processed. For example, the Google Tag only recognizes personal data in the structured user_data object format; if it received data formatted the way Meta requires it, it wouldn’t process it and would accept no first-party data at all.
You can check the sending of this hit (= packet) from the user’s browser yourself. We’ll be using DevTools, available in Google Chrome, but other browsers have their own alternatives (Safari has Web Inspector; Edge and Opera have Chromium-based Developer Tools; and Firefox has its own Developer Tools, historically known as Firebug). You can also use the excellent mitmproxy (great for mobile debugging, for example).
On top of that, you also need to check the outgoing hit from server-side GTM – and for that, Preview Mode is all you need.
All tags (whether in the browser or on the server) send hashed values of the email address and phone number (the postal address may or may not be hashed depending on each platform’s requirements – Facebook requires it, Google doesn’t). Check what the hash of your test email should look like: hash it yourself at https://emn178.github.io/online-tools/sha256.html so you can compare it against what’s actually leaving in the requests. Use UTF-8 as the input encoding (generally the best choice for accented characters) and Hex (lowercase) as the output encoding.
Debugging in DevTools
Personally, I like to check everything at once, so I work through it alongside GTM in this order:
Open sGTM and start Preview Mode
Open the front-end GTM and start Preview Mode
Walk through the site up to the conversion I want to send first-party data with, and just before submitting it (completing the purchase, submitting the form), open DevTools
Open the Network tab and submit the conversion
Filter the requests by the request URL (the URL the hit is sent to):
Click the request and look either at the full request URL in the “Headers” section (I often use Claude to decode the request into a neat table for me), or at “Payload”, where the individual parameters and their values are displayed more clearly.
Meta debugging:
I check that I’m looking at the right request by matching the event name in the “ev” parameter – e.g., ev with the value Purchase.
I check the user data parameters being sent – they start with “ud”.
The Meta tag doesn’t only send user data hashed – it can actually appear in up to 4 formats (depending on the pixel version and event type):
Example of parameters in a network request for the Meta Pixel
What you’re primarily interested in is the parameter with the ud prefix for the values [em] = email, [pn] = phone number, [fn] and [ln] = first and last name, [external_id] = your CRM user_id – compare these against the hashes of your test values.
8. Google Ads debugging:
I verify I’m looking at the right request by comparing the conversion label from Google Ads with the value in the “label” parameter
I check that user data is being sent in the “em” parameter:
Example of parameters in a network request for the Google Ads tag.
You’ll find the email hash after “tv.1~em.”, the phone number after “~pn.”, and so on – again, you can compare these against your hashed test values.
IMPORTANT! Seeing a different hash in Meta and Google for the same email? That’s fine – remember that the two platforms have different normalization rules, which we covered in the previous article.
Debugging in sGTM Preview Mode
Open sGTM and start Preview Mode
Open the front-end GTM and start Preview Mode
Trigger the conversion you want to send first-party data with
First, check the Event Data tab to confirm that the user_data field is present.
Find the fired tag for the given platform and inspect its request body.
Meta:
Just like in DevTools, you’ll find it under the “em”, “pn” (etc.) parameters.
Request body of an sGTM hit to the Meta Pixel
Make sure the value being sent matches the one from the browser.
Google Ads:
The Google Ads tag behaves a bit differently in sGTM than other tags – because it wants to collect cookies, the server tag triggers a request in the browser:
HTTPS request from the browser in server-side GTM Preview Mode
Copy it and debug it in your notes app or with Claude – again, look for the hashes in the “em” parameter after the “tv.1~em.” value.
Other debugging tools
Here are a few useful tools you can use to verify that everything is going out as it should:
Test Events within the Meta Pixel(Events Manager > Test Events)
For CAPI, this is the key tool – it shows in real time what the server tag is sending, including all parameters.
Tag Assistant(Chrome extension)
Google’s tool for checking web browser events
Meta Pixel Helper(Chrome extension)
Meta’s tool for checking web browser events
Verifying in Google Ads
But how do you know it’s actually working?
Google Ads > Goals > Conversions > Summary
Select the conversion you’ve started sending user_data with
In the “Status” column, hover over the “Active” status (or whatever status you have there) – if you’ve done everything right, you’ll see “Enhanced Conversions is active”.
Note: it can take several days for changes to show up. If you run into an error, fix it, debug it, and then wait a few days – the difference won’t appear in the diagnostics immediately; it can take several days up to a week.
Conversion status in Google Ads
Then scroll further down to “Go to diagnostics” to check your coverage and match rate:
Impact of Enhanced Conversions in the conversion overview in Google Ads
Unfortunately, Google won’t tell you exactly what percentage of users are being matched, but it will signal that everything is running as it should via “High 16% – 100%”. Coverage should be 100% = personal data arrives with every conversion.
Verifying in the Meta Pixel
The Event Match Quality score in Meta.
Meta > Events Manager > Datasets > Pixel
Select the conversion you’re sending user_data with
If you’ve set everything up correctly, under “Advanced Matching Activity” you should see something like this:
Event detail in the Meta Pixel
Click “View details” at the bottom right and go through the individual metrics for the event. What interests you most is the “Event Match Quality” section, specifically “Shared parameters”, where you’ll see the coverage of the “Customer Information” parameters – i.e., exactly the email, phone number, and other personal data:
Personal data coverage for an event in the Meta Pixel
Ideally it will look something like this and you’ll get an Event Match Quality score of 9.3/10, which is Meta’s recommended value for optimal paid-advertising performance. Reaching results that high isn’t standard, though – the usual benchmark sits between 8 and 9.
To get there, you need Meta CAPI implemented and you need to genuinely send as many of these parameters as possible.
What if it doesn’t work?
The most common problems:
Coverage is low → user_data isn’t in the data layer for all conversions, or it only populates on a thank-you page that has no data
Match rate is “Low” → incorrect normalization (typically Gmail dots or a + alias, or a phone number without the country prefix)
Hashes don’t match → encoding (UTF-8 vs. something else), trailing whitespace, wrong letter case
The EMQ score isn’t going up → you’re sending too few parameters, or CAPI hasn’t kicked in yet
Monitoring
Implementation isn’t a one-off job. Any time a developer changes the structure of the order form, the checkout page, or the login flow, the flow of user_data into the dataLayer can break – and you might only find out a month later, when you notice your campaign performance has dropped.
What to monitor on an ongoing basis:
Google Ads diagnostics – coverage and match rate for all conversion actions you’re sending user_data to. Coverage should be a stable 100%, match rate ideally “High”. A drop of more than 10% within a week is a signal to investigate.
Meta Events Manager – the EMQ score per event, plus the Diagnostics section, where Meta flags incorrectly formatted parameters (e.g., “Phone number is not in the right format”).
GA4 DebugView – if you’re also sending user_data to GA4, this is a quick way to verify that events are arriving complete.
When to debug again:
After every deployment that touches forms, the cart, login, or thank-you pages
After changing your CMP or modifying the consent flow
After GTM template updates (both the Meta and Google templates get updated and occasionally change behavior)
If you see a warning in Google Ads diagnostics or the EMQ score in Meta drops by more than 0.5 points
What’s next
You now know how to verify that your first-party data actually arrives where it’s supposed to, in a form the platforms can process. That’s usually the most demanding part of the entire implementation. Once you have a working debug workflow, you can comfortably extend your measurement to additional events or platforms.
Who is behind the article
Lenka Pittnerová
Analyst
Lenka brings PPC expertise to web analytics and data solutions, helping companies gain reliable data for better decisions.
Part 3 of our first-party data series gets technical again – we'll show you how to check that data is correctly reaching each system and doing what it should. We'll look at outgoing hits in DevTools and at checks directly in the ad platforms.
A detailed guide to sessionizing the GA4 BigQuery export — from identifying sessions and reliably ordering events to two attribution models (First Event Available and Session Start), their limitations, and validating agreement between them.
Learn how to deploy server-side tracking on Google Cloud Run. Compare Stape vs Cloud Run, configure load balancers, choose billing types, and test your setup.
Complete technical guide to collecting first-party data via dataLayer, normalizing, hashing, and sending through server-side GTM to Google Ads and Meta.
Testing ClickUp MCP: hands-on experience with AI-powered automation, security concerns with access tokens, practical limitations, and who should use it.
Learn how first-party data improves campaign performance, measurement accuracy, and cross-device tracking. Discover practical ways to collect and use it.
Workshops on advanced digital analytics: BigQuery, cookieless tracking, consent, attribution, and building data warehouses for reporting and activation.
Why analytics is an excellent career for women, including those returning from maternity leave. A personal story about transitioning into data analytics.
A look back at Reshoper - advising e-shop owners on tracking and measurement, plus a roundtable on marketing automation with insights on self-hosted N8N.
From Idea to App in 48 Hours 🚀 Building AI-powered apps at #HackYourWeekend using Claude Code, tracking with BigQuery, and lessons from team development.
Recap of PPC Camp: my presentation on legally measuring data without user consent - cookieless tracking, sGTM, BigQuery, Facebook conversions, and Advanced Consent Mode risks.
Ready-to-use BigQuery SQL script to calculate Easter dates (2024-2100) using Computus algorithm. Perfect for filtering GA4 data and analyzing seasonal trends.
GA4 + BigQuery in practice: connecting analytics, CRM & media data, real-world use cases from IKEA, Shoptet, McDonald's & Česká spořitelna, and what it unlocks for marketing.
Vašek and Anička presented at MeasureCamp Prague on using Google Ads export in BigQuery, combining it with GA4 and CRM data to solve attribution issues.
Learn how to extend GA4 data retention from 2 to 14 months. Understand what retention affects, how to change settings, and what happens after data expires.
Public webinar on evaluating campaigns using GA4 dataset in Google BigQuery. Featuring Vašek Ráš and Honza Tichý on DBT, SQL queries, and data flattening.
Vojta works at MeasureDesign on developing technical and data solutions that are not only functional, but also practical and easy to use. He enjoys combining web development, automation, and data work to create solutions that make sense both from the user’s perspective and in terms of the technical foundations behind them. What he finds most rewarding is turning a more complex problem into a clean and reliable solution.
Jiří Otipka
Analyst
Jirka has been working in marketing for over 10 years, and if there is anything he enjoys more than numbers themselves, it is connecting them. He loves mathematics and data analytics, and thanks to his interest in exploring source code, he can easily communicate with developers in their own language. At MeasureDesign, he specializes in connecting new data sources - building custom connectors in Python, testing data quality, and exploring which data combinations make the most sense from a business perspective. He is completely at home in Looker Studio and also has extensive experience evaluating PPC campaign performance.
Lenka Pittnerová
Analyst
Lenka joined MeasureDesign at the end of 2025, bringing extensive experience from PPC marketing, where she spent many years working with Google Ads, Meta Ads, and other advertising platforms. While managing campaigns, she repeatedly ran into the same issue - poorly set up or insufficient web analytics, which made effective optimization nearly impossible. This challenge initially led her to analytics out of necessity, but over time she discovered that she enjoyed it even more than advertising itself. Today, she focuses primarily on implementing web analytics and data solutions that provide companies with high-quality, reliable data for strategic decision-making and performance marketing. She continues to work on selected PPC projects as well - not only because she still enjoys them, but mainly to stay closely connected to the reality of media platforms and the real needs of clients.
Martina Kvasničková
AI & Data Research
Marťa helps integrate AI into everyday work—making it faster, more efficient, and accessible to every team member. What excites her most is finding practical ways to use AI and turning new technologies into useful tools.
Anna Horáková
Analyst
Anička has over 7 years of experience in the agency world, where she has managed social media ad campaigns for clients, and especially for content-driven websites, her favorite. Wanting to broaden her perspective beyond campaign data, she gradually shifted her focus toward web analytics. She joined our team in 2022 and now specializes in data analytics, using GA4, BigQuery, Looker Studio, and other tools to connect and dig deeper into data — delivering insightful analyses and valuable input for business decisions. Anička was a member of our team until 2026.
Zuzana Mikyšková
Analyst & Co-Founder
Zuzka's career path led her through corporate innovation and research management, running word-of-mouth projects, and later to a digital agency, where she managed website development projects. However, Zuzka is naturally curious and wanted to understand how a website actually works once it is launched into the world. That curiosity led her to study web analytics — and eventually to a key collaboration with Vašek. In 2019, they founded the company together.
Vašek Jelen
Lead Analyst & Co-Founder
Vašek has been working in digital analytics for over 15 years — from setting up tracking to data storage, visualization, and interpretation. He helps companies keep their data in order and make full use of it. He focuses primarily on data from digital platforms such as websites, apps, and client zones, and on connecting that data with other business data like media and customer data. After years of freelancing, he co-founded the analytics studio MeasureDesign, where, in addition to working on analytics projects and bespoke training sessions, he also mentors and educates new analysts.
Blanka Hejduková
Back Office
Blanka joined our team in 2024 and has been responsible for back-office operations, including invoicing and administrative tasks, ever since. She draws on her experience from the Czech Post and her background in financial management to keep everything running smoothly. In her free time, she enjoys traveling with her two children and finds relaxation in working in her garden.
Markéta Svěráková
Analyst
Markéta started out in marketing, but then came maternity leave — and with it, total chaos. In an effort to hold on to the last bits of sanity, she turned to data. After all, numbers don’t yell, spill cereal into your keyboard, and at least they make some sense. She completed a data analytics course at Engeto Academy, where she bonded with SQL, Power BI, Excel, and Python, and started looking for patterns outside the bounds of children’s coloring books. Today, at MeasureDesign, she helps clients understand what their numbers are really saying.
Petra Súkeníková
Analyst
She joined MeasureDesign in 2023, specialising in measurement implementation and reporting. Her favourite moment is when, after all the setup and testing, the first data finally starts flowing in. Her biggest challenge? The unexpected (and often undocumented) changes from Google – those are the times when every analyst turns into a paranormal behaviour expert. 👻 She was a member of our team until summer 2026.
Klára Belzová
Analyst
Klára has been with the company since 2019. She focuses mainly on web analytics but is not afraid to dive into data work in BigQuery. What she enjoys most is guiding clients through the entire process — from defining their needs to implementing tracking and creating the final data visualizations.
She gets an almost suspicious amount of joy from a clean and well-organized GTM container or a report full of useful data.