Template linter, simulator and tester
Check a tracking template before Google does — every linter code, the lint API, the Google Ads simulator with Google's Test statuses, and the transparency tester's checks.
Last updated 9 min read
On this page
TrackCrown has three tools that catch template problems before Google disapproves an ad:
Linter codes#
Errors make Google disapprove the template or break the redirect; warnings work but should be fixed; notes are informational.
Final URL suffix codes (suffix_leading_separator, suffix_has_lpurl, suffix_has_ignore,
suffix_has_url_param, and too_many_custom_params for suffixes) are listed in Final URL suffix + SDK.
Lint through the API#
POST https://app.trackcrown.com/api/v1/google-ads/lint — staff API keys (admin or analyst). Send a template, a suffix or
both:
Example, where trk.example.com is one of the workspace's certified tracking domains:
curl -X POST https://app.trackcrown.com/api/v1/google-ads/lint \
-H "Authorization: Bearer $ATK" -H "Content-Type: application/json" \
-d '{"template":"https://trk.example.com/c/demo?gclid={gclid}&gbraid={gbraid}&url={lpurl}","final_url":"https://shop.example.com/"}'{
"data": {
"ok": false,
"template": {
"ok": false,
"host": "trk.example.com",
"length": 72,
"tags": ["gclid", "gbraid", "lpurl"],
"issues": [
{ "code": "unknown_tag", "severity": "error",
"message": "{gbraid} is not a ValueTrack parameter. Google appends gbraid to the landing page by auto-tagging; the tracker reads it from url=.",
"hint": "Remove gbraid={gbraid}." }
]
},
"suffix": []
}
}ok is false when any error is present. Sending neither template nor suffix returns 400 invalid_request.
The host checks use the key's workspace: its active tracking domains and their certification status.
Simulator#
Google Ads → Simulator reproduces what Google requests when the ad is clicked.
Inputs#
Click Simulate. With Sample ValueTrack values on, ValueTrack tags get realistic sample values like Google
inserts at click time: a fresh test gclid per run (starting TeSt0gclid0Sim), campaign, ad group, ad, keyword and
match type, and {network} / {device} codes matching the Network and Device you chose — so the tracker
records the test click with a gclid, like a real one. Switch it off to insert every tag empty. You can run 20
simulations per minute.
How the URL is built#
- Final URL (the mobile one on mobile, when set).
- Final URL suffix appended before any
#fragment. - Custom parameters, then ValueTrack, substituted in the landing page;
{ignore}removed. - The most specific tracking template wins: Keyword › Ad › Ad group › Campaign › Account.
- Custom parameters, then ValueTrack, then the
{lpurl}family substituted in the template. In parallel mode{lpurl}ishttps://www.google.com/asnc/<random id>.
How Google built this URL shows every step. The chain is then followed with server-side redirects only (no JavaScript), HTTPS only, at most 10 hops and 5 seconds per request.
Statuses#
Transparency tester#
Google Ads → Transparency tester requests a URL from TrackCrown's servers without following redirects.
- Paste a URL or template into Tracking URL or tracking template, or pick one under Use a generated link (a workspace template per tracking domain and one per active offer).
- For templates containing
{lpurl}, enter the Expected final URL (required); it replaces{lpurl}. Enterhttps://www.google.com/asnc/TESTto test the parallel-tracking background call. - Optional: Also follow the full chain (max 10 hops) and the User agent (Tester (bot) or Mobile Chrome).
- Click Run test.
The verdict reads PASS — this link behaves like a certified transparent tracker or FAIL — Google would not accept this link as transparent. Checks:
With the full chain on, it also reports Chain reaches google.com/asnc, Second hop is the url= target, No uncertified intermediate trackers, redirect loops, chain length and whether the final page loads.
Google's Test button#
More fixes: Google Ads test failures. Every refusal code the tracker can return is listed in Error and reason codes.