A thin, imperfect purchase signal stopped bot traffic more effectively than any targeting change, because bots are a symptom of a missing data feed, not a targeting failure.
When bot traffic spikes inside an ad account, the reflex is to tighten audience settings, add exclusions, or pull back a traffic objective's exposure. None of that addresses why the bots showed up in the first place. A campaign optimizing purely for clicks or landing-page views has no real business outcome to chase, so the algorithm optimizes toward whatever generates activity cheaply, and low-quality or automated traffic often clears that bar more easily than a genuine buyer does.
In one documented account, sending back even an imperfect purchase signal, an Event Match Quality score around 5 out of 10, far from a clean implementation, changed delivery. Bot-driven traffic dropped once the platform had something real to optimize toward, even a partial one. Campaigns still running on a pure traffic objective, with no conversion signal feeding back at all, kept attracting the same low-quality volume.
The platform isn't malfunctioning when it fills a traffic objective with junk clicks; it's doing exactly what it was told to optimize for, with nothing better available to chase. Tightening the exclusion list treats the symptom, not the cause. A reliable purchase signal flowing back from your own systems, verified against what happened in the store rather than modeled from a partial pixel fire, gives the platform a real outcome to chase instead. Once that outcome exists, low-quality traffic becomes a worse trade for its own optimization, and it moves away on its own.