Litestore · Operator guide

Ads

Learn how to sync Google Ads spend and reconcile it against your campaigns.

Marketing → Ads holds the ads synced from Google Ads, the only ad platform with a working adapter.

Each synced ad brings the platform's own impressions, clicks, conversions and spend. The revenue your store actually took from that ad is calculated separately, from the orders attributed to it.

Keeping those two apart is the whole idea of the page. The platform reports what it thinks it achieved; your database knows what was actually paid for and not refunded. Both numbers are shown, and neither is allowed to overwrite the other.

Every campaign's ad spend is recomputed from its ads after each sync.

The record behind the screen is the ad.

Connect it under Settings → Integrations with:

customer ID
developer token
OAuth client ID
OAuth client secret
refresh token

Meta Ads and TikTok Ads exist as platform labels on records, but no adapter fetches from them. Asking to sync any platform other than Google Ads is refused outright rather than quietly doing nothing.

Ads arrive by sync, not by hand

There is no create-an-ad form.

Once an ad is synced, what you can do with it is:

  • Change its status
  • Link it to one of your campaigns
  • Read its numbers

A status is one of:

active
paused
completed
archived

What the platform owns

Every sync overwrites these fields from Google Ads:

  • Name
  • External campaign name
  • Destination URL
  • Headline
  • Description
  • Status
  • Impressions
  • Clicks
  • Conversions
  • Spend

All ten are owned by the platform. Whatever they say after a sync is what Google Ads reported.

Rates are calculated, never stored

Four rates are computed from the four raw counters each time they are shown:

  • Click-through rate
  • Cost per thousand impressions
  • Cost per click
  • Cost per acquisition

Because they are worked out on the spot, they cannot disagree with the counters they came from.

Your revenue is not the platform's conversion count

Revenue and conversions per ad are derived when read, from the orders attributed to that ad, converted into your base currency and net of refunds.

The platform's reported conversion figure is kept as it was reported, alongside.

You are meant to see the gap between the two, not have it reconciled away for you.

Matching a landing URL to a product

The sync reads the ad's destination and tries, in order:

  1. Your canonical product path
  2. The Shopify-style path
  3. A collection path
  4. A short path
  5. A ?product= parameter
  6. An item path
  7. An external link whose address matches

An ad only attributes if its URL carries the reference

An ad whose landing URL carries no ad reference — a utm_content value or an ad id — still syncs its spend, but no order will ever be credited to it. Orders are matched through that reference in the checkout details.

Campaign ad spend is trued up

After each sync, every campaign's ad spend is recalculated from the ads it currently owns, and the difference is carried into its total spend.

Nothing is accumulated. A campaign's return on ad spend follows the platform rather than drifting away from it as corrections and restatements arrive.

An ad cannot be activated without something to sell

Activation is refused when:

  • The ad has no linked product
  • The linked product is not published
  • The linked product is out of stock

Paying for traffic to something nobody can buy is the failure this prevents.

Deciding what to do with an ad

Fix the landing URL first when an ad shows spend but no revenue of your own. Spend syncs regardless; attribution only happens through the reference in the URL.

Link the ad to a campaign when you want its cost to land in that campaign's spend and its return on ad spend. That link is yours to set — the platform does not know about your campaigns.

Trust your own revenue figure over the platform's conversion count when the two disagree. Yours is net of refunds and in your base currency; theirs is neither.

The question to ask of any ad on this page is:

Is this ad's cost landing in the right campaign, and can an order coming from it actually be traced back here?

On this page