Summary
The work in one page
Estimated ~$2,500 · Excludes ad spend and third-party subscriptions
| Phase | What it does | Deliverable | Estimate |
|---|---|---|---|
| Phase one | Correct the tracking faults we can fix from inside the ad account, then reconcile eighteen months of WooCommerce orders against Google's figures to establish what is real | Record of changes made, plus a baseline report: true revenue, true return on spend, confirmed cause | ~$600 |
| Phase two | Count only paid orders at the correct value, and capture the phone orders and enquiries that have never been recorded at all | Working measurement: paid orders, correct values, phone orders included | ~$1,900 |
| Estimated total | Both phases | ~$2,500 |
The work
Fix the measurement
Two phases. The first repairs what can be fixed from inside the ad account and establishes what the real numbers are. The second rebuilds the tracking so those numbers stay true.
Immediate fixes and baseline
Remove the known causes of bad data that sit within our control. All campaigns are already paused, so nothing is being spent while this runs.
| Task | Detail |
|---|---|
| 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. |
Find out what is 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. |
Rebuild the tracking
Make the purchase signal accurate
Count only real, paid orders, at the right value, once each. This is the part that addresses the list you sent.
| 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. |
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.
Next steps
What comes after
Once the numbers are trustworthy, the account can be judged properly for the first time. That is the point at which the rest of the plan becomes worth pricing: the product feed rebuild and the campaign restructure.
We will come back to you with what the corrected figures show and a recommendation on what to do next, rather than asking you to commit to any of it now.