Table of Contents
Before launching a campaign, open its tracking link and check what reaches the landing page. A correct-looking URL can still lose parameters during a redirect. Use these 16 checks to review the link, the destination and the data your analytics tag collects.
Why Pre-Launch QA Saves Five-Figure Ad Budgets
When campaign parameters are lost before the analytics tag receives them, reports may not show the intended campaign values. Processed reporting is not necessarily retroactively corrected by changing a live link, so document the issue and investigate what data was collected before deciding how to report the affected period.
The 16-Point Pre-Launch QA Checklist
| Area | Check Item | Pass Criteria |
|---|---|---|
| Syntax | 1. Starting delimiter | URL has exactly one ? before first parameter. |
| Syntax | 2. Parameter separator | All subsequent parameters separated by &. |
| Syntax | 3. Case formatting | Use a consistent convention; lowercase is recommended for easier comparison. |
| Syntax | 4. Whitespace | Zero unencoded spaces (use hyphens or underscores). |
| Syntax | 5. Anchor hash order | Fragment identifier (#section) appears at the very end, after all query parameters. |
| Taxonomy | 6. utm_source validation | Matches approved platform name (e.g. linkedin, not lnkd). |
| Taxonomy | 7. utm_medium pattern review | Compare chosen values (e.g. paid_social, cpc, email) with current GA4 definitions; live assignment depends on collected traffic-source data. |
| Taxonomy | 8. utm_campaign structure | Follows enterprise formula (e.g. [geo]_[product]_[objective]_[date]). |
| Taxonomy | 9. utm_id presence | Included if uploading cost data from external platforms. |
| Routing | 10. HTTP status code | Returns 200 OK without intermediate 301/302 redirect loops. |
| Routing | 11. Trailing slash test | Destination matches server canonical (no redirect from /page to /page/). |
| Routing | 12. Parameter preservation | All UTM query parameters remain in address bar after final page render. |
| Analytics | 13. GA4 Realtime hit | Click appears in GA4 Realtime within 30 seconds. |
| Analytics | 14. DebugView verification | page_view and session_start events contain correct source and medium. |
| Integrations | 15. CRM form capture | Hidden form inputs successfully populate with UTM values from the session. |
| Integrations | 16. Privacy compliance | Zero PII (names, emails, phone numbers) anywhere in query strings. |
Step-by-Step Live Browser Testing Procedure
- Open a clean Incognito/Private browser window.
- Open Developer Tools (F12 or Cmd+Opt+I) and select the Network tab. Check "Preserve log".
- Paste the full tagged campaign URL into the address bar and press Enter.
- Inspect the first request in the Network log:
- If it returns HTTP 200, your server served the page directly. Great!
- If it returns HTTP 301 or 302, inspect the
Locationresponse header. If the query string was lost in transit, contact your web engineering team immediately to preserve query strings on server redirects.
For the broader setup, read UTM Strategy Guide: How to Build a Tracking System That Stays Clean at Scale. Browse the UTM Strategy & Governance guides to choose another troubleshooting task.
References
- Monitor Events in GA4 DebugView (Google Analytics Help)