All work
2026
Reporting what was banked, not just booked
For a luxury retailer: Google Ads, Shopify and their consignment CRM in one monthly report, showing what was banked, not just what was booked.
Small business
Reporting
Automation


Client
A luxury retailer
My role
Scoping, build and monthly analysis
Timeline
Since September 2026
Year
2026
A luxury retailer was running Google Ads for the first time, after we rebuilt the campaign in September. Google’s own reports said it was going well. The owners’ question was simpler: are the ads paying for themselves?
The challenge
Google’s figures answer a different question. Google counts a sale at checkout, at full price. A layby counts in full the day it’s placed, before it’s paid, and stays counted if it’s never finished. This retailer also sells on consignment, so it keeps a commission, not the full price. And Google only sees the sales it can track. Phone orders, in-store sales and a customer’s later orders don’t appear at all.
There’s a second problem: change a campaign too often and you can’t tell what worked. If results move after three changes in a week, nobody knows which one did it.
The approach
I built a pipeline that reads from each system, with read-only access: Google Ads for Search and Shopping, Shopify for orders, and the consignment CRM for what the store keeps on each piece. Code does the pulling, the matching and the maths, and tests check that the figures agree. AI drafts the month’s insights from those figures. I check them and rework what needs it, then we plan the month from there and decide what goes to the client. Each month’s report answers five questions.
What actually came in? Every sale Google counts is matched to its real order. Laybys and part-payments are tracked until they’re paid, so the month’s figure is money banked, not money promised. The report splits each sale into what the consignor is paid and what the store keeps, and works out the return on every dollar of ad spend from the store’s share.
Where did it come from? It shows online ad sales against everything sold through other channels, which brands are selling, and the path from click to purchase. It also shows the searches, keywords and pages behind each sale.
Who did the ads find? It shows whether each buyer is new or returning. A customer who first found the store through an ad stays linked to it, along with every order they place after that. Some people first come in through a seller ad, to consign a piece, and later buy one. Those sales are counted too, and credited to the seller ad. That’s the full value of an ad sale, and Google doesn’t show it.
What do we change next? Changes go in together, then the campaign is left alone for one to two weeks so Google can settle and the result can be traced back to the change. The report lists every change made and when, gives the date of the next change window, and sets out what we’ll change in it. Anything worth watching but not yet acting on is carried from month to month.
What do we still need to know? Open questions for the client sit at the bottom of the report, until each one is answered.
Built with Claude Code.
The outcome
The report has two parts. The overview gives the long view: how the ads are tracking month by month, the trend, and what’s changed over time. Each month then has its own page: what performed, the plan for the next window, and the detail behind it.
Next comes the other side of the business. A consignment store needs sellers as well as buyers: people who bring in pieces for the store to sell for them. A seller who finds the store through an ad usually calls or fills in a form, and their pieces can take months to sell, long after Google has stopped counting. The next version links each seller back to the ad that brought them in, and counts what their pieces earn the store whenever they sell. After that, every channel comes into one view, as a report or a live dashboard, so the store can see where each customer and each seller comes from.


Next project
Nodio: transcription that gets the specialist words right


Based in the Blue Mountains
Open to contract work
If you’re working out where AI fits in your team, I’d like to hear about it.
Email or LinkedIn is the easiest way to reach me.