Summary
The plan in one page
| Phase | What it does | Deliverable | When |
|---|---|---|---|
| 0. Immediate fixes | Correct the tracking faults we can fix from inside the ad account, and hold the campaigns we currently can't measure | Record of changes made, with reasoning | This week |
| 1. Measurement | Part A. Compare WooCommerce orders against Google's figures to find out what is real | Baseline report: true revenue, true return on spend, confirmed cause | Weeks 1–2 |
| Part B. Count only paid orders, and capture phone orders and enquiries | Working measurement: paid orders, correct values, phone orders included | Weeks 2–4 | |
| 2. Product feed & Shopping | Fix broken listings, enrich titles, restructure Shopping around high-value stock | Rebuilt Shopping campaigns and a clean feed | Weeks 3–5 |
| 3. Rebuild & expand | Brand defence, budget rebalance, new revenue lines | New account structure with a target ramp plan | Weeks 5–8 |
Phase 0
Immediate fixes
Everything here sits inside the ad account, needs no developer, and can be done this week. Two of these repair tracking faults we can trace to a specific date and change. The rest holds spend on campaigns we currently have no reliable way to measure.
Immediate fixes
Remove the known causes of bad data that sit within our control, and avoid spending into campaigns we can't yet read.
| Task | Detail |
|---|---|
| Hold the Search campaigns | Branded, High-Intent and Retargeting paused while we establish the baseline. They spent $5,169 over 90 days with no recorded sales, and until the tracking is sound we can't tell whether that is real. Shopping and Performance Max keep running. Reversible at any point. |
| Demote the checkout-step conversion | Change add_payment_info from Primary to Secondary so it stops driving automated bidding. It stays visible for reporting. Created 11 May 2026 as a workaround for the underlying purchase-tracking issue. Phase 1 replaces it properly. |
| Remove three inactive goals | Android app installs, YouTube channel subscriptions and YouTube follow-on views are all set as Primary actions. None exist for this business. |
| Strip the broken tracking templates | Remove the tw_ parameters applied at campaign and ad group level in April 2025, and the manual UTM tags that overwrite Google's own click ID. These are the cause of the malformed links corrupting analytics attribution. |
| Stop visits losing their original source | When someone arrives via an old domain that redirects to coinsonline.com, or steps out to a payment page and comes back, Analytics currently treats the return as a brand-new visit from an outside website. The original source, including whether they came from an ad, is discarded at that moment. Adding the two legacy domains, coinsonline.com itself and the payment provider to the referral exclusion list stops that happening. It currently affects around 8,900 visits. |
| Filter internal and non-market traffic | Set up internal traffic filters for office and agency IP addresses, so staff visits stop counting as customers. Separately, around 3% of recorded traffic comes from data-centre locations rather than people, and a further 5% from countries the ads don't target. Neither costs ad spend, but both distort the percentages in reporting. |
Change confirmation. A short written record of every change made, with the date and reason, plus the spend saved. Nothing here requires input from your side.
Phase 1
Measurement
One piece of work in two parts: find out what is actually true, then rebuild the tracking so it stays true. The second part runs whatever the first part finds. Counting only paid orders and capturing phone revenue are worth doing either way.
Find out what's real
Compare what WooCommerce recorded against what Google recorded, and settle whether this is a tracking problem, a data-quality problem, or a demand problem.
| Task | Detail |
|---|---|
| Order export by month and status | Last 18 months. Order count and gross revenue, split by paid or completed versus on-hold, pending payment, cancelled and refunded. This one table tests the whole theory. |
| Payment method mix and funding rate | What share of orders arrive by wire or check, and what percentage of those complete. Tells us how much historical revenue was counted but never received. |
| Build a margin model by category | Work the pricing sheet into four to six margin bands: junk silver bags, sealed monster boxes and tubes, gold coins, silver coins and bars, graded and collectible. This is what tells us which products can reach a $100 target and which can't. |
| Purchase event audit | Establish when the purchase event last fired reliably, and check whether multiple tags are firing it at once. The conversion action itself has been correctly configured and untouched since February 2025, so the fault sits on the website side. |
| Order value inspection | Inspect the raw purchase data sent on a multi-unit order such as a 500-coin monster box. Analytics and Google Ads currently disagree on average order value by 77%, which suggests a quantity or price calculation error. |
Baseline report. A short document stating three things: your true revenue from advertising over the last 90 days, your true return per $1 spent, and the confirmed reason the reported figures diverged.
This is the number the $100 target should be measured against from here on. We'll walk you through it before moving on to the strategy work.
Rebuild the tracking
Count only real, paid orders, and start capturing the revenue that has never been counted at all. This is the part that addresses the list you sent.
Make the purchase signal accurate
| Task | Detail |
|---|---|
| Fire on payment, not on submission | Send the purchase event only once an order reaches paid or completed status, rather than when the order-received page loads. |
| Exclude unpaid and failed orders | Cancelled, failed, fraudulent and pending-payment orders are kept out of the conversion signal entirely. |
| Send correct order value | Final paid value, with the multi-unit calculation error corrected. |
| Pass the transaction ID | Prevents the same order being counted twice on a refresh or bookmark. |
| Remove duplicate tags | Check whether more than one tag is firing the purchase event and remove the extras. |
| Refund and cancellation adjustments | Orders that reverse after the fact are removed from the figures, not just excluded at the point of sale. |
| Retire the interim conversion | Once the purchase event is verified, remove the checkout-step conversion entirely. |
Capture the revenue that has never been counted
| Task | Detail |
|---|---|
| Make phone orders visible | Orders taken over the phone are created in the WooCommerce admin and carry no record of which ad brought the customer in, so Google never sees them. We store Google's click ID against the order at checkout, then upload completed orders back to Google. Phone revenue starts counting toward the campaigns that produced it. |
| Call tracking and call buttons | Dynamic call tracking, plus call assets on every campaign. There are currently none in the account. |
| Enquiry conversions | Track the sell-to-us form and appointment requests. Zero enquiries have been recorded in 573 days. |
| Tag the email links | Add campaign tags to Klaviyo so email traffic is credited correctly. Analytics currently sees 19 email visits where the real figure is around 556. |
| Enhanced conversions | Improves match rates on a high-consideration purchase where buyers research across devices. |
Working measurement. Only paid orders counted, at the correct value, with phone orders and enquiries included. Confirmed against a sample of real orders before we call it done.
Phase 2
Product feed & Shopping
Shopping produces your cheapest clicks by a wide margin. It has never been set up to take advantage of that.
Product feed & Shopping
Repair the catalogue, then rebuild Shopping around the products that can actually reach a $100 target.
| Task | Detail |
|---|---|
| Fix the broken product pages | The American Gold Eagle 1 oz and American Gold Buffalo 1 oz are both blocked for “product page unavailable.” These are two of the best-converting items in the catalogue. |
| Clear the feed warnings | Resolve the currency setting and remaining feed errors. Worth doing, though not the main constraint. |
| Enrich product titles | Add weight, purity, mint, year handling and packaging. For example, “1 oz Gold American Eagle Coin, .9167 Fine, US Mint, Random Year.” We will send a proposed format for a handful of items before applying it across the catalogue. |
| Change the Shopping bid strategy | Move off Maximize Clicks, which is designed to buy the cheapest traffic available and is why coin-value lookups dominate. Manual bidding in the interim, then a value-based strategy once conversion data is trustworthy. |
| Split the catalogue by value tier | High-value stock such as monster boxes, gold tubes and kilo bars moves into its own campaign with its own budget, separate from low-ticket inventory. Separate budgets give real control; bid adjustments alone do not. |
| Filter the coin-value searches | Around 36% of Shopping clicks are people looking up what a coin is worth. These are blocked using precise phrases such as “worth money” and “half dollar value” rather than single words, because several of your own products contain “Face Value” in the title and would otherwise be blocked too. |
Rebuilt Shopping campaigns and a clean product feed. Delivered with a before-and-after summary of eligible products, and a proposed title format for your sign-off before the full catalogue is changed.
Phase 3
Rebuild & expand
Only once the numbers can be trusted. Some of this depends on what the baseline report shows.
Rebuild & expand
Rebuild what should exist, retire what cannot work at a $100 target, and open the revenue lines that are currently untouched.
| Task | Detail |
|---|---|
| Rebuild brand defence | Relaunch the branded campaign on exact and phrase match only, with manually capped bids. Generic terms such as “collectible coins for sale” move out of the brand budget. Brand clicks currently cost $3.35 and should be well under $1. |
| Rebalance the budget | Weight toward Shopping and Performance Max. At a $100 target, a $7 search click needs the site to convert between 3% and 28% depending on order size; it currently converts at 0.07%. |
| Build a sell-to-us campaign | “Sell coins online” is already one of your top organic search terms. Measured on cost per enquiry, not return on ad spend. It is a lead-generation motion and should not be judged against the $100 target. |
| Test dynamic search ads | A low-cost way to capture long-tail catalogue searches. Runs after Phase 3, since it depends on product pages being reachable. |
| Activate the abandoned-cart audience | 5,802 people are sitting in an audience that has never been advertised to. A campaign for it already exists and has never spent. |
| Route ads to matching pages | 40 of 48 active ads currently point at the homepage. Each ad group gets a landing page matching its subject. |
| Housekeeping | Time-of-day and device bidding. 29.6% of spend currently runs between midnight and 6am at six times the evening click cost. Plus the 35 disapproved ad extensions, untouched since October 2025. |
New account structure, documented. Campaign map, budget allocation by channel, and the reasoning behind each choice.
Plus a target ramp plan. Once measurement is trustworthy we will not set a $100 target immediately, because that would choke delivery. We ramp from the real baseline in stages, and the plan sets out those stages and the expected timeline.
Expectations
What to expect along the way
Three things will look like problems and are not. Worth knowing in advance.
- Reported return on ad spend will fall before it rises. Once only paid orders count, the reported figure will drop below the historical number. That is the correct outcome. We will finally be looking at real revenue rather than orders that were counted but never funded.
- Conversions will appear to arrive late. Confirmed-payment conversions land days after the click rather than instantly. Reporting will look thin for a fortnight while Google's bidding adjusts.
- Performance will dip during the re-learning period. Roughly two weeks after the measurement changes go live. Expected and temporary.
We are not rebuilding non-branded search, adding new campaigns beyond those listed, or scaling budgets. Non-branded advertising currently reports $1.43 per $1 across the account's history, and until we know whether that figure is real there is nothing solid to optimise against. It may look very different once measurement is fixed.
Next steps
What we need from you
Two things, both in week one. Everything else is on us.
| Item | Detail |
|---|---|
| WooCommerce order export | Last 18 months, month by month, split by order status: paid or completed versus on-hold, pending payment, cancelled and refunded. This one table is what settles the whole question. |
| Payment method mix | What share of orders come in by wire or check, and roughly what percentage of those actually fund. This tells us how much historical revenue was recorded but never received. |
We already have access to Tag Manager, Analytics and Merchant Center, and we have your pricing sheet, so nothing further is needed there.
Phase 0 is in progress this week. It needs nothing from your side, removes two known sources of bad data, and frees roughly $1,700 a month to redeploy once we know where it works hardest.