Who This Is For
This article is for Cents customers who:
Have Google Tag Manager (GTM) installed
Have UTM parameters enabled in their Cents account (Contact CSM)
Are running paid ads on Google or Facebook
Are sending ad traffic to their Cents LiveLink URL (If you are sending ad traffic to your website, we currently do not have a snippet install
Want to see which campaigns drive orders and confirmed revenue
If you have not yet set up GTM, complete the prerequisite article first:
What You Will Be Able to See When Finished
After completing this guide, you will be able to answer:
Which Google and Facebook campaigns are driving order submissions
The full funnel: ad click → LiveLink → sign in → address → services → order submitted → order completed
Confirmed revenue attributed to each campaign, source, and medium
How attribution works at Cents
Because Cents hosts your LiveLink page, attribution uses a hybrid approach:
Google Tag Manager (GTM) fires funnel events directly on your LiveLink page — page views, address entry, service selection, and order submission. You connect your GTM container to LiveLink by adding your container ID in the Cents Dashboard. Cents loads it automatically from there.
🔗 Read: How to Set Up Google Tag Manager
Cents Webhooks fire server-side when an order is created, updated, or completed. This payload includes customer information, the confirmed order total (the actual weighed revenue), and the UTM parameters from the original ad session.
🔗 Read: Cents Webhooks
Both feed into the same GA4 property to give you the full picture.
Key distinction to understand before you start:
Event | What it means | How to send to GA4 |
Order submitted (various event names between GTM and webhooks, specified below) | Customer placed their order | Option A: GTM dataLayer event on LiveLink → GA4 |
Order completed | Order fulfilled, revenue confirmed | Cents |
Step 1: Link your ads to your Cents LiveLink URL
In your ad platform, set your LiveLink URL as the destination for your ad. Add UTM parameters directly in your ad platform's URL settings — when a user clicks your ad, those parameters are appended to the LiveLink URL automatically, and Cents captures them at session start.
In Google Ads:
In your campaign, open the ad and find the Final URL field
Enter your LiveLink URL (e.g.
https://livelink.trycents.com/your-store)In the URL suffix or Tracking template field, add your UTM parameters:
utm_source=google&utm_medium=cpc&utm_campaign=summer_promo
In Facebook Ads:
In Ads Manager, open your ad and scroll to the Destination section
Enter your LiveLink URL in the Website URL field
Click Build a URL Parameter and fill in the UTM fields, or paste them manually:
utm_source=facebook&utm_medium=cpc&utm_campaign=summer_promo
Parameter | Example | Purpose |
|
| Traffic source |
|
| Channel type |
|
| Campaign name |
|
| Ad variant (optional) |
|
| Keyword (optional) |
Once a user clicks your ad and lands on LiveLink, Cents captures the UTM parameters and carries them through to your order webhook payloads automatically, no additional setup needed on LiveLink itself.
If your ads drive traffic to your website first, read below
If your ads drive traffic to your website first, read below
If your ads link to your own website rather than directly to LiveLink, UTMs land on your site but won't automatically carry over when a user clicks your "Schedule Pickup" or equivalent button that links to the LiveLink. Create a new GTM tag for your website to read the UTMs from the current page URL and append them to any LiveLink link before the user clicks through.
Click New Tag > Conversion Linker > Enable linking on all page URLs > Enable linking across all domains > auto share with app.trycents.com. Sure to Trigger on All Pages
Once this tag is in place, users who click your "Schedule Pickup" button will arrive at LiveLink with UTMs intact, and Cents captures them from there. Ensure to set up a the correct tag via your Google Tag Manager (Can be labelled something like Website ad tracking)
🔗 Read: How to Set Up Google Tag Manager
Step 2: Make Sure UTM Parameters Are Present When Clicking from Ad
Your ad links should include UTMs, such as:
Common UTM Parameters
Parameter | Example | Purpose |
utm_source | Traffic source | |
utm_medium | cpc | Channel type |
utm_campaign | summer_promo | Campaign name |
GA4 automatically captures these when the session begins.
Step 3: Set up webhooks with Cents to forward server side events to GA4
Your server forwards the Cents webhook to GA4 using the Measurement Protocol so confirmed revenue is attributed to the correct campaign. Share the following endpoint with your CSM to subscribe to Cents Webhooks:
🔗 Read: Cents Webhooks
Endpoint:
POST https://www.google-analytics.com/mp/collect?measurement_id=G-XXXXXXX&api_secret=YOUR_SECRET
To get your api_secret: GA4 → Admin → Data Streams → select your stream → Measurement Protocol API Secrets → Create
Request body (mapped from the Cents webhook):
{
"client_id": "cents-server",
"events": [{
"name": "order_completed",
"params": {
"transaction_id": "19214",
"value": 34.50,
"currency": "USD",
"source": "facebook",
"medium": "cpc",
"campaign": "summer_promo",
"content": "retargeting_v2"
}
}]
}Field mapping reference:
GA4 Parameter | Cents Webhook Field |
|
|
|
|
|
|
|
|
|
|
|
|
Important: Only forward the event to GA4 if attributionSource is not null. Skipping unattributed orders keeps your reports clean and accurate.
Step 4: Track purchase events
When a customer submits their order, you can send that event to GA4 one of two ways. Choose the option that fits your setup.
Option A: Track through Google Tag Manager
Create a GA4 Event tag in GTM for each trigger you set up:
Go to Tags → New
Choose Google Analytics: GA4 Event
Enter your Measurement ID (format:
G-XXXXXXX— find this in GA4 → Admin → Data Streams)Set the Event Name using the mappings below
Attach the corresponding trigger
Save and publish
Recommended event name mappings:
LiveLink Event | GA4 Event Name |
User views order page after log-in |
|
Address is selected/input |
|
User adds a service to their basket |
|
User clicks next from basket to checkout |
|
User adds payment method |
|
User submits the order / Order created with RWG or Tune Up |
|
Option B: Cents order_created webhook → GA4
If you prefer a server-side source of truth, subscribe to the order_created webhook in Cents and forward it to GA4 via the Measurement Protocol (see Step 3 above for the full forwarding setup — the approach is identical, just using order_created as the event name and 0 for value since the order hasn't been weighed yet).
Example order_created payload:
json
{
"event": "order_created",
"order": {
"id": 19214,
"orderCode": "2992",
"status": "SUBMITTED",
"orderTotal": 0,
"orderType": "ONLINE"
},
"customer": {
"firstName": "Jane",
"lastName": "Smith",
"email": "[email protected]",
"phoneNumber": "+11234567890"
},
"attributionSource": "facebook",
"attributionParams": {
"utm_medium": "cpc",
"utm_campaign": "summer_promo",
"utm_content": "retargeting_v2",
"utm_term": null,
"gclid": null,
"fbclid": "AbCdEfGhIjKlMn"
}
}Note: attributionSource and attributionParams will be null when the order did not originate from a UTM-tagged ad link. Only orders placed via a tracked ad URL will have attribution data populated.
Step 5: Mark purchase as a conversion in GA4
In GA4, go to Configure → Events
Find the
purchaseeventToggle Mark as conversion
This ensures order submissions appear in your acquisition and attribution reports.
Step 6: Build your attribution dashboard in GA4
Revenue attribution table
Go to Explore → Blank Exploration and configure:
Dimension | Metric |
Session source | Order submissions ( |
Session medium | Confirmed revenue ( |
Session campaign | Conversion rate |
Example output:
Source | Medium | Campaign | Orders Submitted | Revenue Confirmed |
cpc | brand_search | 124 | $3,844.00 | |
cpc | retargeting | 86 | $2,107.00 | |
cpc | prospecting | 42 | $918.50 |
Funnel visualization
Go to Explore → Funnel Exploration and add these steps:
Session start — UTM parameters captured on LiveLink arrival
Sign in / page view — user authenticated and viewing LiveLink
Address entered —
add_shipping_infoCheckout started —
begin_checkoutOrder submitted —
purchaseOrder completed —
order_completed(confirmed revenue from webhook)
Troubleshooting
GTM events aren't firing on LiveLink Confirm your GTM container ID is saved in Cents Dashboard → Settings → Integrations. Use GTM Preview Mode to verify dataLayer events are pushing as expected.
UTMs aren't carrying over from your website to LiveLink Make sure the GTM link decoration tag from Step 1 is published and firing on All Pages. Check that your "Schedule Pickup" link href includes livelink.trycents.com so the selector matches.
Purchases show in GA4 but no UTM attribution Check that UTM parameters are present on the ad click URL. If attributionSource is null in the webhook payload, UTMs weren't captured for that session — typically because the user arrived at LiveLink directly rather than via a tagged link.
Facebook data showing as (direct) UTMs must be added manually to every Facebook ad URL. Facebook does not append them automatically.
order_completed events not appearing in GA4 Test your Measurement Protocol calls using GA4's Event Builder. Check GA4 DebugView to confirm events are arriving with the correct parameters.
Revenue in GA4 doesn't match Cents Dashboard Make sure you're mapping order.orderTotal from the order_completed webhook — not balanceDue, which reflects only fixed fees like delivery charges collected at submission.
Summary
GTM sends purchase events
UTMs identify ad source
GA4 ties sessions to conversions
Attribution appears in Acquisition and Exploration reports
Need Help?
If you need assistance validating your setup or creating a custom attribution dashboard, contact the Cents support team.
