You launch a campaign on social media or Google Ads, the link includes ?utm_source=... or ?fbclid=... and, without you noticing, every paid click can end up executing PHP and MySQL from scratch. The very traffic you're paying for is the one that should load the fastest.
Why campaign parameters break the cache
For many cache systems, /offer/ and /offer/?utm_source=facebook are two different URLs. If the second one has no saved copy, the server generates it dynamically. And since each campaign, ad, or social network adds different values (utm_campaign, fbclid, gclid), the number of variants grows without control.
The practical result: the page that's cached is the one with the clean URL, but your paid visitors almost never arrive through there.
How to detect if it's happening to you
- Compare times: open the clean URL and the same URL with
?utm_source=test&utm_campaign=prueba. If the second one takes clearly longer, the variant isn't being served from cache. - Check the response headers with the browser's developer tools (Network tab) and see if they change between the two.
- Look at the HTML: if your cache solution leaves a mark in the source code, verify that it also appears in the version with parameters.
What you should do
1. Treat tracking parameters as the same page
The utm_*, fbclid, and gclid parameters serve so that your analytics tools measure the origin of the visit. They don't change the content that's seen. The right thing is for the page with those parameters to come from the same static copy as the clean URL, and for the analytics JavaScript to keep reading the URL in the visitor's browser.
2. Don't cache what is actually dynamic
The opposite extreme is also a mistake. Cart, checkout, user accounts, internal searches, and POST requests depend on each visitor and must always go through WordPress. A good cache rule distinguishes between "marketing parameter" (ignored) and "functional parameter" (respected).
3. Review after every important change
A theme change, a new plugin, or a redirect rule can alter how URLs are handled. Repeat the timing test every time you touch something in the configuration.
How cache.lat solves it
cache.lat generates static HTML copies that are stored on your own hosting and rewrites rules in the .htaccess so that the visitor receives the file without executing PHP or MySQL. According to its description of how it works, among what is cached are URLs with campaign parameters (utm_*, fbclid, gclid), while cart, checkout, accounts, active sessions, internal searches, and POST are left out. That is, the separation we described above.
The requirement to keep in mind is that you need WordPress and access to the .htaccess on an Apache server. If you want to see the configuration details, the documentation is the best starting point.
Quick checklist before your next campaign
- Test your landing page with and without UTM parameters and compare times.
- Confirm that the checkout and cart aren't being served from cache.
- Verify that your analytics is still recording the origin correctly.
- Regenerate or purge the landing page's cache after editing it, so no one sees an old version.
- Repeat the test from mobile and on another network, to rule out browser caches.
Conclusion
Campaign traffic is the most expensive to get and the one you should leave to chance the least. Making sure that the variants with parameters are served just as fast as the clean URL is one of the simplest performance improvements with the best return. If you have doubts about your specific case, you can contact the TuNegocioEnLinea.net team, and if you want to compare plans, check the cache.lat prices.