Your Campaigns Bid on the Signal You Send, Not the One You Think You Send
Automated bidding does not know what a sale is. It bids toward whichever conversion events come back to it. What you send is what it chases.
Two ecommerce accounts I have worked on broke that loop in opposite directions. One fed Meta purchases its ads never influenced. The other fed Google Ads everything except the purchase. Both were integrated. Both were reporting conversions. Both were bidding on the wrong thing.
The first account: purchases Meta never influenced
A Shopify store running Advantage+ Shopping. Shopify's Meta channel has a data-sharing setting, and this store had it on Maximum, the highest level. That is the right setting for most stores. Maximum turns on the server-side path, so a purchase still reaches Meta when the browser pixel is blocked, delayed, or stripped by the device. On most stores I audit, I would set it to Maximum myself.
This store also sells wholesale. Those orders do not come through the online storefront. Someone on the team keys them into Shopify by hand, which is a sensible way to keep inventory and accounting in one place. On this store, Maximum did not distinguish. The hand-keyed wholesale orders went to Meta as purchase events alongside the online ones.
So Advantage+ learned that its ads produced wholesale volume they had nothing to do with. It did not learn this incorrectly. It learned exactly what it was told. Where it could match a wholesale buyer to an ad that person had been shown, it attributed the order, reported a purchase, and adjusted its bidding to find more of the same. Taking credit for the purchases it receives is its whole job.
The tell was not subtle once someone looked. Meta was reporting more purchases than the online store alone could have produced. Nobody had run that comparison, because the number was going up, and a number going up is the thing people check.
Three ways to fix it, and the one to argue against
The first option is to drop the setting from Maximum to Enhanced. That removes the server-side path, and the wholesale orders go with it, because a hand-keyed order has no browser session for a pixel to fire in. It also removes the server-side coverage on real online orders. You get a cleaner signal and a smaller one. On a store where many pixels are blocked, that is a real cost, and it is the cost most people accept because the change is one setting.
The second option is to keep Maximum and stop the wholesale orders from reaching Meta at the source. That keeps the clean signal and the full coverage. It also takes work. Someone has to route wholesale orders so they stay out of the channel's event stream, and someone has to keep them routed that way as staff and process change. It is the better outcome and the more fragile one, because it depends on a rule that lives outside the ad platform.
The third option is the one people reach for, and the one I argue against. Change the campaign to optimize toward add to cart, on the theory that add to cart is clean and purchase is not. It is clean. It is also the wrong thing. You have traded a polluted signal for the right action against a clean signal for the wrong one, and Advantage+ will get very good at finding people who add to cart. Some of them buy. It is not looking for those.
The second account: everything except the purchase
The second account was an ecommerce store on a different platform, and I will leave it at that. By the usual checklist, the measurement setup was thorough. Every meaningful action on the site was an event in GA4: newsletter signups, views of the newsletter page, account signups, add to cart, purchase. All of it was passed on to Google Ads.
In Google Ads, everything was counting as a conversion except the purchase. The one event that pays the business was the one that had not been set to count. Smart Bidding did what it does with the events it was given. Newsletter signups are plentiful and cheap compared with purchases, so the bidding found more of them, the cost per conversion fell, and the conversion count rose. The account was efficiently buying newsletter signups. Every report looked healthy.
What they have in common
Both integrations were on. Both dashboards showed conversions. In both accounts the conversion column was growing, and in neither account had anyone asked what the column was made of. The first account had a signal with too much in it. The second had a signal with the one thing that mattered left out. The failure is the same in both directions: the platform bid on what it was sent, and what it was sent was not a sale.
I made a narrower version of this point in a piece about a pixel that was already installed: a tag that fires is not a tag that is right. The same holds one layer up. An integration that is connected is not a loop that is closed.
A closed loop means the ad platform receives the action you actually want, from the source that defines that action, once per real occurrence, marked as the primary goal, with everything else deliberately excluded. Every clause in that sentence is a place where one of these accounts broke. The first failed on the source, because Shopify was defining a purchase as any order that landed in it, including the ones a person typed in. The second failed on the goal and on the exclusions, because the purchase was not the action the account was set to count, and everything around it was.
Five questions before you trust the conversion column
I wrote a longer piece on what to mark as primary in Google Ads. This is the short version, for any platform, in the order I check.
- Which action is primary, and is it the one that pays you? Not the one that is easiest to measure or the one that fires most often. The one that shows up as revenue.
- Where does it come from, and does any source send it twice? A browser tag and a server-side path can both be right and still produce two events for one order if nothing deduplicates them.
- What is in the count that should not be? Manual orders, test orders, wholesale, refunds still counted as sales, an event from some app that was mapped to purchase long ago and never revisited.
- What is missing that should be there? If the action that pays you is not in the count, the platform is optimizing toward something else, and it will find it.
- Does every change to the above have a recorded date? A conversion setting changed without a note means the before and after can never be read against each other, and the next person to open the account inherits a number with no history.
If your conversion column is growing and you are not certain what it is made of, that is the work behind my analytics and reporting engagements. Get in touch.