Cross-Source Consistency
Cross-source ad-tracking consistency audit
Fifteen checks that compare your GTM container, Google Ads conversion settings, and Performance report against each other.
A measurement setup is only as defensible as the consistency between its layers. A conversion action enabled in Google Ads but missing a matching GTM tag is a dead action. A GTM tag firing without a matching Google Ads conversion action is wasted JavaScript. A Performance report showing volume on an action that does not exist in current settings is orphaned data from a deleted configuration that nobody cleaned up.
AdLint's cross-source checks compare all three layers (GTM, Google Ads settings, Performance report) and flag mismatches. The critical findings: orphaned tags, ghost actions, conversion-label mismatches, transaction-ID deduplication failures, Enhanced Conversions configured without user-data flowing. The warning-tier findings: tag-count mismatches that signal forgotten implementations, value-config mismatches between layers, cross-currency inconsistencies, possible-rename detection.
These are the checks that catch the failures other audits miss because no single source-of-truth shows them.
critical (12)
Ads Conversion Missing GTM Tag
criticalAn enabled Google Ads conversion action exists with no matching Google Ads Conversion Tracking tag in the GTM container. Google Ads will keep listing the action as live, but the site never fires it. Volume will be zero or incomplete, and if the orphaned action is set Primary, Smart Bidding is learning from feedback that doesn't exist.
Conversion Callback Implementation
criticalOne or more Google Ads conversion tags in your GTM container fire on a form submit or link click trigger, then let the page redirect immediately. There's no `eventCallback`, no `event_callback`, and no tag sequencing. The browser tears down the request before the hit reaches Google. Your Google Ads conversion action records nothing for those users, and Smart Bidding never learns from them.
Conversion ID and Label Matching
criticalOne or more Google Ads conversion tags in your GTM container may be sending a conversion ID or label that does not match the intended Google Ads conversion action. The conversion ID and label are the only signals Google uses to route a hit to an action: if either is wrong, the tag fires successfully and the conversion lands in the wrong action or vanishes entirely.
Active Conversions with Zero Report Volume
criticalYou have enabled conversion actions in Google Ads that recorded zero volume in the Performance report window. Either the tag never fires, the Conversion ID and label do not match anything the site is sending, the date range of the two exports is misaligned, or the action is a recent addition that has not banked any conversions yet.
Duplicate Conversion Tracking
criticalTwo tags fire the same Google Ads conversion on the same trigger, or two Google Ads conversion actions track the same business event. Either way, every real conversion counts twice. Your reported CPA halves overnight without anything actually getting cheaper, and Smart Bidding starts spending against numbers that aren't real.
Dynamic Value Passing Validation
criticalYour account is set up for dynamic conversion values (each order ships its real revenue from the dataLayer to Google Ads), but one of the links in the chain is broken. Either a GTM conversion tag has a hardcoded value where it should reference a Data Layer Variable, the value parameter is malformed, or the Ads conversion action is configured for fixed values while GTM is sending dynamic ones. The pipeline pretends to work; the bidding signal is wrong.
High-Value Conversions with Wrong Counting Method
criticalA high-value action on this account (a purchase, sale, or any action with a configured value over 100 dollars) is set to count "One" per click. That means Google only records the first conversion from each ad click, even if the same user comes back and buys three more times. Repeat customers are invisible. Your reported revenue is the floor of what those customers actually generated.
Micro-Conversion Dominance
criticalA micro-conversion in your Performance report is generating more than 70 percent of total conversion volume on this account. Either a page view, a scroll event, a search, or a video start is being counted alongside real macro outcomes like purchases or leads. Smart Bidding sees the noise more than the signal and optimizes toward whichever traffic produces the most micro-hits, which is rarely the traffic that produces revenue.
Purchase Conversions Disabled While Others Enabled
criticalA purchase or sale action on this account is set to Disabled while other actions (signups, page views, add-to-carts) are still enabled. Smart Bidding has no purchase signal to optimize toward, so it picks whichever enabled action has the most volume. That is almost never the right target. For an e-commerce account, this is the most direct way to spend budget on the wrong goal.
Enhanced Conversions User Data Quality
criticalYour GTM container has Enhanced Conversions enabled on one or more Google Ads conversion tags, but the user data being collected is incomplete or improperly hashed. Either email is missing, phone and address are both absent (you need at least one), or the email is being passed unhashed instead of SHA-256. Google Ads silently drops or downgrades these hits, and the conversion match rate is far lower than the team expects.
GTM Conversion Tags Not in Ads
criticalOne or more Google Ads conversion tags in your GTM container do not match any conversion action in your Google Ads conversion settings. The tags fire on real user behavior, the hits go out to Google, but they land against a Conversion ID and label that Google Ads no longer has on file. The tag thinks it is working. Google Ads silently discards every hit.
Value Mismatch
criticalThe conversion value sent by your GTM tag doesn't match the value Google Ads is configured to accept (or expects from the business model). A fixed value of 1 on a purchase tag, a dataLayer variable that resolves empty, or a currency mismatch between site and account all produce wrong values in the report while the conversion count still looks correct. ROAS, tROAS, and any value-based bidding strategy break the moment values are wrong.
warning (11)
Conversion Tracking Funnel Coverage
warningYour enabled Google Ads conversion actions cover only one or two stages of the user funnel. When the entire conversion setup tracks just a single end-stage outcome (typically Purchase or Lead), teams lose visibility into whether media is generating qualified visits, product interest, checkout progress, or repeat value. For lower-volume accounts this also makes Smart Bidding brittle: it sees only sparse macro outcomes and no diagnostic signal in between.
Disabled Conversions with Active Volume
warningA conversion action in your Google Ads account is set to Disabled in Tools and Settings, but the Performance report still shows it accumulating conversions. Disabled actions should not be receiving hits. The fact that they are means either the tag is still firing in GTM, the report covers a window from before the action was disabled, or the action was disabled in Google Ads without anyone telling whoever owns the website.
Report Metrics Without Settings Configuration
warningYour Google Ads Performance report shows volume for one or more conversion actions whose names do not appear in your conversion settings export. Either the action was deleted from settings without removing the underlying tags, the report was pulled from a different account than the settings, or the action was renamed and the report kept the old name on historical volume.
Configured Value vs Actual Value Mismatch
warningA conversion action in your Google Ads settings is configured with one value (for example a default of 50 dollars per conversion), but the Performance report shows the actual average value per conversion is more than 50 percent off (for example 150 dollars). Either the configured default is stale, the dataLayer is sending a different value than the settings expect, or the action is using a static value while real transactions are dynamic.
GTM-Ads Currency Code Consistency
warningThe currency code sent by your GTM conversion tags does not match the currency configured on the matching Google Ads conversion action. Same conversion, two different currency labels. Google Ads will accept the hit, but the revenue numbers in Ads will not line up with the revenue numbers in your commerce backend, and every multi-currency ROAS calculation on this account is built on a quiet conversion error.
Static Round Value Detection
warningEvery conversion value on this account is a round number. 10, 25, 50, 100, 500. Real e-commerce values include cents and odd amounts (47.99, 129.43, 312.18). Round-everywhere values almost always mean someone configured a static default in Google Ads and the tag is not actually passing the real order total. Smart Bidding sees fake revenue and optimizes against it.
Extreme Attribution Window Configuration
warningOne or more Google Ads conversion actions in this account have attribution windows that fall outside normal ranges. A purchase action with a click window over 60 days, a view-through window longer than the click window, or a click window under a day. Each of these patterns is rarely intentional and usually means somebody adjusted a window without realizing how it changes attribution.
Very Long Attribution Windows
warningA conversion action on this account has an attribution window over 90 days for clicks or over 30 days for views. Windows this long attribute conversions to ad interactions that happened months earlier, which usually credits more conversions to Google Ads than the campaigns actually drove. Unless the business genuinely has a 90-day sales cycle, the window is probably inflating reported performance.
Tag Count Mismatch
warningThe count of Google Ads conversion tags in your GTM container is more than 50 percent different from the count of enabled Google Ads conversion actions, with a gap of at least two. That suggests either duplicate tags counting the same action, missing tags for actions that have no corresponding tag, or a desync between what GTM is firing and what Google Ads is expecting.
Transaction ID Deduplication
warningYour Google Ads conversion tags for e-commerce events do not pass a transaction or order ID. Google Ads has no way to deduplicate conversions when a user reloads the confirmation page, navigates back and forward, or hits the order endpoint twice for any other reason. Every refresh counts as a new purchase. The same order can fire two or three times before the user closes the tab.
Inconsistent User ID Implementation
warningSome Google Ads conversion tags in your GTM container send a `user_id` parameter; others do not. Cross-device attribution depends on a consistent user identifier across every conversion event. When half the tags ship a user ID and half do not, Google can stitch user journeys for the tagged half and not for the rest. The cross-device match rate gets worse as the inconsistency persists.
info (6)
Category Mismatch Between Settings and Report
infoA conversion action in your Google Ads conversion settings is labeled with one category (for example "Purchase") while the same action shows up under a different category (for example "Sign-up") in the Performance report row. Same name, two different categories across the two exports. The bidding logic and segmentation reports cannot both be right.
Settings vs Report Conversion Count Mismatch
infoYour Google Ads conversion settings show one number of enabled actions. The Performance report shows a very different number of actions with actual volume. The gap is more than 50 percent of the larger count and at least three actions apart. That usually means enabled-but-inactive actions, recently added actions that have not banked volume yet, or a date-range mismatch between the two exports.
Possible Renamed Conversions
infoAdLint found pairs of conversion names where one appears in settings and a similar-but-not-identical name appears in the Performance report. Same action, two near-identical names. Either someone renamed the action mid-cycle, the export was generated before settings caught up, or the account has duplicate actions tracking the same event under slightly different labels.
Secondary-Only Volume
infoOne or more conversion actions on this account have volume in the "All conversions" report column but zero in the "Conversions" column. That means the action is marked Secondary in Google Ads. It is recording for analysis but is not feeding Smart Bidding. Sometimes that is intentional; sometimes a valuable action got demoted by mistake and the bidding optimizer no longer sees it.
Category Diversity
infoMore than 80 percent of enabled conversion actions on this account share a single category (for example "Submit lead form" or "Page view"). Most accounts benefit from at least a small mix across the funnel: awareness, consideration, conversion, retention. Single-category dominance does not directly break bidding, but it limits diagnostic visibility and makes it harder to spot where the funnel is leaking.
First-Party Data Collection Completeness
infoYour Google Ads conversion tags are collecting fewer than half of the first-party data points Google Ads can use for matching. That includes email, phone, first name, last name, address fields, city, region, postal code, and country. The more of these fields you pass, the higher the Enhanced Conversions match rate. The current coverage limits the lift Enhanced Conversions can deliver on this account.
Run a free Cross-Source Consistency audit
AdLint runs every check on this page against your export in seconds. Nothing uploaded. Nothing logged. Everything stays in your browser.
Open the Cross-Source Consistency auditor