Campaign Tracking
This page explains how to set up, validate, and report on campaign attribution using BaseQR scans together with UTM parameters in your analytics tools (for example, GA4). The goal is consistent, comparable reporting across channels without reprinting codes.
Tracking model
• BaseQR scans — BaseQR records Total Scans for each code and campaign. Use this for volume, timing, device, and location breakdowns.
• UTM attribution — Add UTM parameters to the destination URL so your web analytics platform (for example, GA4) can attribute traffic to the correct campaign and channel.
• Complementary views — BaseQR shows scan activity; GA4 shows on-site behavior and conversions. Use both for a complete picture.
Where and how to apply UTMs
• During creation — When you create a QR code inside a campaign, include UTMs in the destination URL (for example, https://example.com/landing?utm_source=retail&utm_medium=endcap&utm_campaign=2025_q2_eventseries).
• Mid-campaign updates — You can update UTMs at any time without reprinting. This is helpful for standardizing tagging or adding missing parameters.
• Bulk application — For many codes, use CSV import to apply or revise UTMs in one step. See Bulk Import Template (link placeholder).
• Avoid duplicates — Ensure your landing page or redirect service isn’t adding a second set of UTMs. The final URL should contain a single, consistent set of tags.
Recommended UTM convention
• Core fields — utm_source (channel), utm_medium (placement/format), utm_campaign(initiative).
• Optional fields — utm_content (creative variant) and utm_term (keyword or extra segmentation).
• Naming pattern — Keep values lowercase, hyphen-or-underscore separated, and predictable.
Example pattern:
utm_source=retail | print | event | dooh | email | socialutm_medium=endcap | postcard | badge | billboard | bannerutm_campaign=2025_q2_eventseriesutm_content=variant_a
• Align with campaign names — Mirror the campaign name in utm_campaign so BaseQR reports and GA4 dashboards line up.
Validating tracking
• Scan-test the final URL — After saving, scan the code and confirm the destination contains the expected UTMs.
• GA4 Real-Time — Trigger a test scan and verify that a session appears under the intended source/medium/campaign.
• Device and network checks — Test on iOS and Android, and on both Wi-Fi and cellular, to catch caching or connectivity issues.
• Redirect integrity — If your destination redirects, confirm UTMs survive the hops (no stripping or overwriting on the server/CDN).
Reporting in BaseQR
• Views — Use Overview, Devices, Locations, and Time Patterns to understand scan volume, audience context, and peak times.
• Filters — Filter by date range and (optionally) by campaign for focused analysis.
• Exports — Export CSV, Excel, or PDF reports. Categories include Total Scans, Device Breakdown, Location Breakdown, and Time Patterns.
Using GA4 with BaseQR
• Purpose — Attribute traffic and analyze behavior after the scan (engagement, conversions).
• Setup — Ensure GA4 (and optionally GTM) is installed on your destination pages. Keep UTM values consistent with the convention above.
• Dashboards — Build GA4 reports filtered by your UTM pattern to compare channels and creative variants alongside BaseQR scan trends.
Troubleshooting
• Scans vs. sessions don’t match — This is common. GA4 filters bot traffic, deduplicates sessions, and requires page load/consent; BaseQR records the scan event itself. Compare trends rather than exact counts.
• UTMs missing in GA4 — Check that the final landing URL retains your parameters, and that client-side redirects or consent gates aren’t stripping them.
• Unexpected attribution — Confirm casing and spelling of UTM values; a typo creates a new bucket in GA4.
Best practices
• Document the plan — Add your UTM convention and campaign goals to the campaign description so collaborators tag links consistently.
• Keep values stable — Limit midstream UTM changes to necessary corrections; frequent changes fragment reporting.
• Use bulk for scale — Apply or correct UTMs across many codes with CSV import to reduce errors.