Wiring a new client into the tracker
Fourteen steps, in order, from "client says yes" to "their leads and conversions show up correctly." Every field in the Admin Console's New Client form is tied to a step here — do the steps in order and the form fills itself in.
Get the exact thank-you / confirmation URL
Ask the client (or whoever built their site) for the literal URL their form redirects to after a real submission — not "somewhere on the contact page," the actual path. If nobody can tell you, submit a real test lead on their live site yourself and copy whatever URL you land on.
More than one form with different thank-you pages (e.g. a separate booking widget)? You'll comma-separate all of them in step 7.
Never fall back to a generic default like /thank-you/. If the client's real page is /booking-confirmed/ or carries a query string, a wrong guess here silently breaks every conversion for this client — with no error anywhere telling you it's wrong.
Create the "Form Submission" conversion action
| Setting | Value |
|---|---|
| Category | Submit lead form |
| Value | Don't use a value |
| Count | One |
| Click-through window | 30–90 days (90 gives more room for slower trades like remodeling) |
| Attribution model | Data-driven (Google's own recommendation) |
| Enhanced Conversions | On |
The name you give it doesn't matter to us — our system reads the Conversion ID and Label, never the name. Call it whatever you'll recognize later, e.g. Form Submission.
Our script already sends the lead's email and phone number along with every conversion event — Enhanced Conversions is free accuracy once you flip this one switch, no extra work.
Grab the Conversion ID and Label
Open the conversion action you just created, find its tag/data-source panel, and click See event snippet. You'll see something shaped like this:
<script>
gtag('event', 'conversion', {'send_to': 'AW-XXXXXXXXX/XXXXXXXXXXXXXXXXXXXX'});
</script>
You are not installing this snippet anywhere — our own script fires this event itself. Just split the send_to value at the slash: everything before it is the Conversion ID (AW-XXXXXXXXX), everything after is the Conversion Label. Both go into the client record in step 7.
Create the "Qualified Phone Call" conversion action
if client takes callsCategory Import, Primary action, Count One. There's nothing to import yet if CallRail isn't connected — create the action now, leave it empty, and come back to it after step 10.
Get the Meta Pixel ID
if client runs Meta adsIf the client already runs Meta ads, they almost certainly already have a pixel — copy its ID, a 15–16 digit number. If not, Connect Data Sources → Web and create one named after the client.
Grab the quick-access links
optionalWhile you're already sitting inside the client's Google Ads account and Meta Ads Manager, copy the URL straight out of your browser's address bar for each. These go in the two optional link fields in step 7, and save whoever's on this account later from hunting through account switchers.
Create the client record
In the Admin Console, click + New Client. Every field maps to a step you've already done:
| Field | Where it came from |
|---|---|
| Client ID | a slug you make up — lowercase, hyphenated, e.g. coradi-contracting |
| Client Name | the client's real name |
| Thank You / Confirmation Page URL(s) | Step 1 |
| Google Conversion ID | Step 3 |
| Google Conversion Label | Step 3 |
| Meta Pixel ID | Step 5 |
| Google Ads Direct Link | Step 6 |
| Meta Ads Manager Direct Link | Step 6 |
Click Create Client — this immediately opens the Client Setup Details modal with the finished script tag and a ready-to-send dashboard link (step 14 uses the second one).
Install the script tag on their site
Paste the block from the modal at the very end of <body>, on every page — not just the homepage:
<script src="https://reports.vatikcreative.com/v1/tag.js"
defer
data-client="CLIENT_SLUG"
data-api-key="THEIR_COLLECTOR_KEY"
data-thank-you-paths="/thank-you/"
data-google-conversion-id="AW-XXXXXXXXX"
data-google-conversion-label="XXXXXXXXXXXXXXXXXXXX"
data-meta-pixel-id="XXXXXXXXXXXXXXX"
data-endpoint="https://reports.vatikcreative.com/v1/log">
</script>
No direct code access? Use a header/footer code plugin (Header Footer Code Manager, WPCode) set to load on every page, or — the one case GTM is actually fine here since it's carrying our whole script, not replacing it — a single Custom HTML tag with an "All Pages" trigger.
Open the live site, open the browser console, and type window.VatikTracker. An object means it's live; undefined means the tag isn't loading.
Name campaigns so the dashboard shows real names, not numbers
Google's auto-tagging only ever appends a gclid — it never adds a campaign name, and there is no ValueTrack macro that inserts the real name (only {campaignid}, the numeric ID). Left alone, every campaign shows up in the dashboard as a raw number. Set this once, at the account level, and it covers every campaign forever — including ones that don't exist yet:
utm_source=google&utm_medium=cpc
&utm_campaign={campaignid}
&utm_content={adgroupid}
A new campaign shows up in the dashboard as a numeric ID the first time it gets a lead — spend the ~10 seconds renaming it once in the By Campaign table ("rename"/"name it" next to the row) and it's fixed for that campaign forever, retroactively.
Never put anything except {campaignid} (or {adgroupid}, {keyword}, etc.) in the campaign slot — there's no macro for the real campaign name. Reaching for one that looks close, like {creative}, gives a distinct value per ad instead of per campaign, and the By Campaign table turns into noise.
A campaign's own Final URL suffix doesn't combine with the account-level one above — whichever is more specific completely overrides the other for that campaign. Setting both just means the campaign-level one silently wins and the account-level default never applies there. One setting, one place, done.
Connect CallRail to this Google Ads account
if client takes callsSign in with the same Google login that manages this client's ads, select the right account, and map CallRail's qualified-call event to the "Qualified Phone Call" conversion action from step 4. Once connected, go back to that conversion action in Google Ads and confirm it shows a working tag status.
Set Meta's URL parameters
if client runs Meta adsutm_source=facebook&utm_medium=paid-social
&utm_campaign={{campaign.name}}
&utm_content={{ad.name}}&utm_term={{adset.name}}
Meta doesn't auto-tag anything the way Google does. Skip this step and every Meta lead shows up as organic/unknown in the dashboard instead of under Meta Ads.
If the client is on GoHighLevel
conditionalConfirm their forms have hidden fields named gclid, utm_source, utm_medium, utm_campaign, utm_content, utm_term. Our script fills these automatically on page load — GHL's own attribution reporting then picks them up naturally on submit, no further setup needed.
Prove it end to end before you call it done
Submit one real test lead through the client's actual live form, then check:
- It shows up in Recent Leads within a few seconds, with the correct platform pill
- The Google Tracking column shows a green checkmark, not "none"
- The dashboard's health banner reads "Conversion tracking healthy"
- The campaign it came from shows a real name, not a number — if step 9 is done for that campaign
Hand the client their own dashboard
Paste that straight into whatever message you send the client. There's no account for them to create — they paste the key once and bookmark the page.
Troubleshooting quick reference
| Symptom | Likely cause | Fix |
|---|---|---|
| Lead shows source "unknown" | No gclid/UTM in the URL at the moment of submission (e.g. an old bookmark, a share link with params stripped) | Check the Recent Page Visits table — if a gclid/UTM showed up on any page earlier in that session, our backfill should still catch it |
| Google Tracking shows ✗ on real ad clicks | Enhanced Conversions off, or a mismatched Conversion ID/Label | Re-check step 3's values character-for-character |
| Campaign shows a number | Step 9 wasn't done for that campaign, or was done after this lead already came in | Rename it once in the By Campaign table — applies retroactively |
| Client dashboard says "Invalid API key" | They were given the collector_key (public/write) by mistake instead of the api_key (private/dashboard) | Re-copy from the Client Setup Details modal — the second box, specifically |