You launch a print campaign. Posters go up, menus get new QR codes, product packaging ships with a fresh scan prompt. Two weeks later you open GA4 to measure performance and see a spike in direct traffic. No campaign, no source, no medium. Your QR scans are in there somewhere, mixed in with people who typed your URL by hand. This is the default behavior for QR code GA4 tracking, and it will keep breaking attribution on every physical campaign you run until you fix it. TL;DR QR scans arrive in GA4 as direct traffic because phones send no HTTP referrer when opening a URL from a camera app. The fix is always-on UTM tagging: every QR destination URL needs at minimum utm_source , utm_medium , and utm_campaign . GA4 has no built-in QR channel — create a custom channel group so tagged QR traffic is not bucketed as "Unassigned." Use a consistent lowercase naming convention or your data fragments into separate line items that look like different sources.…