Marketing query parameter impact
This health check detects marketing query parameters that significantly slow down requests based on real user data.
It compares requests with and without specific query parameters and flags cases where parameters (e.g. utm_*, gclid, fbclid) cause noticeably worse performance.
Each todo represents a single query parameter that is associated with slower responses.
About this check
When this check is triggered
You’ll see this check when:
- A query parameter consistently increases response time (TTFB)
- The impact is visible in real user data (p75)
- There are enough events to validate the pattern
- Requests with the parameter are significantly slower than those without it
What you’ll see
Each todo includes:
- Query parameter
- Performance impact compared to requests without parameters
- Based on real user sessions
Example:
Investigate slow marketing query parameters for
utm_campaign
Pages with the marketing query parameter "utm_campaign" are experiencing slower load times compared to requests without parameters.
Why this matters
Marketing parameters are often appended to URLs for tracking, but they can unintentionally:
- Break caching (CDN or server)
- Trigger unnecessary backend logic
- Increase Time to First Byte (TTFB)
This leads to slower page loads for a large portion of traffic, especially from campaigns.
How to fix it
Most issues come from:
- Cache misses due to unique query strings
- Backend logic triggered by parameters
- Personalization or tracking logic executed server-side
- CDN not configured to ignore marketing parameters
- Duplicate cache entries per parameter variation
- Newly introduced parameter keys (like srsltid) by third parties
Possible causes and fixes:
1. Ignore marketing parameters in caching
Ensure tracking parameters do not create separate cache entries.
What to do
- Configure CDN to ignore query parameters like:
utm_source,utm_medium,utm_campaigngclid,fbclid(and other ad-related query string keys)- Use cache key normalization
Example (conceptual)
Instead of:
/page?utm_source=google
/page?utm_source=linkedin
Cache as:
/page
2. Prevent backend processing of tracking parameters
Marketing parameters should not trigger heavy logic.
What to check
- Avoid parsing query params unnecessarily in controllers
- Do not trigger database queries based on tracking params
- Strip parameters early in the request lifecycle if not needed
3. Normalize URLs early
Handle parameters before they reach expensive parts of your stack.
What to do
- Redirect to a clean URL (optional, depends on tracking needs)
- Or internally normalize request handling
4. Improve CDN configuration
Many regressions are caused at the CDN layer.
What to check
- Cache key settings
- Query string handling (ignore vs include)
- Edge caching rules
5. Avoid duplicate rendering paths
Different query params should not create different HTML responses unless required.
What to check
- SSR frameworks rendering unique pages per query string
- Static generation fallback behavior
- Cache fragmentation in edge functions
6. Browser cache
Allow pages to come from browser cache, even when query strings are suddenly involved
What to check
- Prefetched and prerendered pages without query strings, while actually clicked links do include query string keys
- Visitors landing on homepage from ads, and clicking on the logo which does not contain query string keys
- Both pagehits could be served from cache with No-Vary-Search response header (Chromium-only)
Further debugging
How to approach this in RUMvision
- Open the todo
- Identify the query parameter
- Compare:
- Requests with the parameter
- Requests without the parameter
- Check caching behavior:
- CDN cache hit rate
- Server response time
- Apply fixes (usually caching or normalization)
- Monitor improvement over the next 7 days
Pro tip
Focus on:
- High-traffic parameters (e.g.
utm_campaign,gclid) - Landing pages from paid campaigns
- Mobile traffic (often more sensitive to TTFB)
Fixing one parameter at CDN level can improve performance across all campaign traffic instantly.