I hope you get a prompt response, but it may take a while.
Besides the Cache Rule I’ve suggested as a workaround in your previous thread, there’s an even better way to make the gad=1
parameter get cached by APO.
Create a Transform Rule to remove the query string when the gad=1
parameter is present:
When incoming requests match...
SSL (on)
Hostname equals apo.example.com <<< your APO hostname, if applicable.
URI Query String contains "gad=1" (*** see note below)
Then
Path: Preserve
Query: Rewrite to...
Static: (leave value empty)
This will remove the query string when the URL is passed to Cloudflare cache or your origin.
When the full ad-URL, with all its parameters, is clicked, the Google Ads and Google Analytics JavaScript scripts in the visitor’s browser will process it accordingly, but your Cloudflare cache (or your origin) will only receive a request for the URL without the query string.
Removing the query string upstream is exactly what will happen if and when the APO decides to add the gad=1
parameter to their list, with one major difference. APO’s logic will treat as dynamic content if the URL contains other query string parameters besides the ones in their marketing list so that /utm_source=x&gad=1
would have the query string removed, while /my-query&gad=1
wouldn’t.
Meanwhile, the suggested Transform Rule will remove the whole query string in both cases. That shouldn’t be an issue for an ad, as their query strings do not normally contain elements that need processing by the origin, unless a query string parameter defines what content should be returned (something like. /path/to/page?page_number=123&gad=1
), in which case a more complex Transform Rule would be needed.
*** Despite Google Ads’ own working about it, the gad=1
parameter should only contain &
if it’s appended to a pre-existing string (ex.: /path/to/page?param1&gad=1
). Otherwise, it’s added by itself: /path/to/page?gad=1