Inconsistent User ID Implementation
Some 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.
Why It Matters
User IDs let Google connect conversions that happen on different devices or browsers for the same user. A prospect clicks an ad on mobile, signs up, then completes the purchase on desktop a week later. With a `user_id` on both the signup tag and the purchase tag, Google can credit the desktop purchase to the mobile click. Without consistent user IDs, the desktop conversion arrives as a fresh anonymous user and the mobile click goes unattributed. The failure mode in this finding is partial coverage. The Purchase tag was built with user_id because someone read the Enhanced Conversions docs. The Lead tag was built earlier, before the team standardized on user IDs, and never got updated. The two tags now produce conversions Google cannot link to the same user even when they describe the same person. The usual cause is timeline. Tags get built over months or years, by different team members, against different specs. The newest tags follow the current best practice. The older tags carry the legacy implementation. Audits surface the inconsistency; the fix is mechanical.
How To Fix It
- Open the AdLint details and list each Google Ads conversion tag, marked with or without `user_id`.
- Decide whether to standardize on sending user IDs across the board. For accounts with signed-in users (most SaaS, ecommerce with accounts, B2B), the answer is yes. For accounts with mostly anonymous traffic, the lift is smaller and the consistency question is moot.
- For tags missing user_id, add a Data Layer Variable bound to the signed-in user ID from the dataLayer or auth context. Pass it as the `user_id` parameter on the conversion tag.
- Confirm the user_id is stable across sessions for the same user. Generated timestamps and random IDs do not work. Use the persistent customer ID from your auth system.
- Verify in GTM Preview that all conversion tags ship a populated `user_id` and that the value matches across tags fired for the same test user.
Example
Tags with user_id: "AW - Purchase", "AW - Subscribe"
Tags without user_id: "AW - Lead", "AW - Newsletter Signup"
Fix: add user_id parameter to the two older tags.This GTM container has Google Ads conversion tags with inconsistent `user_id` implementation: some tags pass a stable user identifier while others do not. Per Google's Enhanced Conversions and user-data documentation, cross-device attribution depends on a consistent user identifier across every conversion event; partial coverage fragments user journeys and prevents Google from linking conversions for the same user across devices or sessions. The typical root cause is tags built across multiple project phases against different specs, where newer tags follow current best practice and older tags carry the legacy implementation. Fix: standardize on a persistent customer ID from the auth system, add the `user_id` parameter to every Google Ads conversion tag via a Data Layer Variable, and verify in Preview that all tags ship the same `user_id` value for the same test user. Source: support.google.com/google-ads/answer/9888656.
Drop this paragraph into your client deliverable. Sources back to the canonical platform documentation linked below.
References
Audit your own files for this check
AdLint runs this check (and 177 others) against your GTM, Google Ads, Meta, TikTok, LinkedIn, Pinterest, Twitter/X, and Snapchat exports. Everything stays in your browser. No uploads, no accounts.
Run a free audit