Modern ad platforms do not just show your ads. They decide who sees them, when, and how much to bid, using automated bidding. These systems learn from one thing above all: the conversion events you tell them about. Tell them a purchase is the goal, and they hunt for buyers. Tell them a page view is the goal, and they hunt for people who view pages.
This is where many stores go wrong. A proxy metric, meaning a stand-in for the thing you actually want, is easy to track and plentiful. But if the algorithm optimises for the proxy, it quietly gets better at finding the wrong customer. Your dashboard looks healthy while profit stalls. This article explains how it happens and how to fix it.
What a conversion event tells a bidding algorithm
A conversion event is a signal you send back to the platform: this click led to something we value. The algorithm studies the people who triggered that signal, finds patterns, and bids more for similar people.
It has no idea what the event means to your business. If add-to-cart is your goal, it will favour people who add to cart often, including browsers who never buy. It does exactly what you asked.
Three things shape how well this works:
- Volume. More events give the system more to learn from.
- Accuracy. Each event should be real and counted once.
- Value. Events that differ in worth should be reported with different values.
Proxies score well on volume and badly on the other two.
Bad proxies for an online store
- Page views. Cheap to get, weakly linked to sales.
- Add to cart. Better, but many carts are abandoned. Discount-hunters add to cart a lot.
- Email sign-ups. Useful, but a sign-up for a free guide is not a customer.
- Form fills and quote requests. Without follow-up, spam and low-quality leads count equally.
- Button clicks and scrolls. Easy to inflate, rarely tied to revenue.
Here is a worked example. Two campaigns each spend 3,000. Campaign A is optimised for add-to-cart and records 600 of them, a cost of 5 each, plus 30 purchases. Campaign B is optimised for purchase and records 400 add-to-carts, a cost of 7.50 each, plus 60 purchases. The add-to-cart report says A is better. But A pays 100 per purchase (3,000 divided by 30) and B pays 50 (3,000 divided by 60). The proxy picked the wrong winner.
Value-based tracking
The fix is to report what each conversion is worth.
- Purchase value. Send the order total with every purchase, so the system learns that a 200 order matters more than a 20 one.
- Margin instead of revenue. Suppose product A sells for 100 at 20% margin, earning 20. Product B sells for 60 at 50% margin, earning 30. A revenue goal favours A. A margin goal favours B, which makes you more money.
- New versus returning customers. Existing customers often buy anyway. Most platforms let you give new customers extra value, or bid higher for them. Decide how much a new customer is worth to you over time, and reflect that.
Start simple. Accurate purchase value beats a complicated model that is wrong.
Clean up the data you send
Fix duplicate purchases
Before changing goals, make sure the purchase signal is clean. Common faults:
- The thank-you page fires the purchase event again on refresh or when the customer returns.
- Both a browser tag and a server-side tag report the same order with no shared order ID to remove duplicates.
- Tags from an old agency or app still run alongside new ones.
- Failed or pending payments are counted as sales.
For example, a store makes 200 real orders averaging 50, so real revenue is 10,000. Ad spend is 6,000. The true return is about 1.7 per unit spent. If tracking double counts half the orders and reports 300, reported revenue is 15,000 and the return looks like 2.5. Budgets get scaled on a number that is not real.
To check, compare platform-reported orders with your store's own order list for the same dates.
Import refund and offline data
Refunds, cancellations and chargebacks mean some conversions were not worth what you reported. Phone or wholesale orders may be missing entirely. Most major platforms accept conversion adjustments or offline conversions, usually with an order ID. Start with refunds. Even a weekly spreadsheet upload helps the system see which customers are costly.
A short diagnostic: six questions
- What is the main conversion each campaign optimises for? If it is not purchase, why?
- Does the platform's order count roughly match your store's? Allow for small gaps, investigate large ones.
- Is each order counted once? Check for duplicate tags and page refreshes.
- Does each purchase carry its real value? Check currency, tax and shipping handling.
- Are refunds and cancellations fed back? If not, how large is your refund rate?
- Can the platform tell new customers from returning ones? If not, are you paying to reach people who would buy anyway?
If you answer "I don't know" to two or more, start there.
Change goals without wrecking performance
Switching the goal resets what the system has learned, so expect a learning period, often a few weeks, when results can be unsteady. Reduce the risk:
- Change one campaign first, not the whole account.
- Check volume. If purchases are low, a rough guide is to keep a softer goal such as add-to-cart in the mix until purchases build up. Platform guidance varies, so check current advice.
- Move gradually. Shift budget in steps, for example a fifth at a time, rather than all at once.
- Avoid mid-learning edits. Constant tweaks restart the process.
- Compare on business results, not on the old proxy.
What to report instead
Drop cost per add-to-cart and page views from your headline report. Show new customers acquired, revenue and margin after refunds, cost per new customer, and blended return across all channels. Treat platform numbers as one input and your store's order data as the check.
What to do next
- Reconcile one week of orders between your ad platform and your store.
- List each campaign's conversion goal and mark any that is not a purchase.
- Fix duplicates first, then pass accurate order value.
- Plan a refund upload, starting weekly if daily is too hard.
- Pilot one campaign on a value-based goal and review it after the learning period.