A thin, imperfect purchase signal did more to stop bot traffic than any targeting change did, 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, in the absence of anything better to chase. The fix isn't a smarter exclusion list. It's a reliable purchase signal flowing back from your own systems, verified against what actually happened in the store rather than modeled from a partial pixel fire. Once the platform has a real outcome to target, low-quality traffic becomes a worse trade for its own optimization, and it moves away on its own.