Here is the retargeting setup most accounts actually run. Every campaign, from every channel, drives traffic to the same page. One audience is built from "everyone who visited in the last 30 days." One ad chases all of them. And then retargeting quietly underperforms, and the conclusion is "it just doesn't work for us."
It works. The setup is the problem, and it traces back to a mechanic most people never think about.
Same pool, opposite intent
Inside that one audience sit two completely different people. One clicked through, read your pricing page twice, and left to check with their team. The other bounced off the homepage in nine seconds and is never coming back. They are worth wildly different amounts, and they are getting the identical retargeting ad. The person who was ready to buy gets a soft brand nudge; the tire-kicker gets a hard closing offer. The ad fits neither, and the pool as a whole looks like proof that retargeting is weak.
The mechanic: the audience is keyed to the page
A website custom audience is built from three things: your pixel, the events it records, and the URL the visitor landed on. That is the whole list. The platform never receives "this person arrived from a high-intent search campaign." The campaign, and the intent behind it, are invisible to the audience. When you ask Meta for "people who visited specific web pages," you are handing it URLs, not campaign names or intent scores. Google Ads remarketing works the same way: its lists are built from on-site behavior, not the upstream source.
So the unit of segmentation is the URL. Two campaigns pointing at the same page produce one indistinguishable pool. The split you actually want, by intent, does not happen at the campaign level. It happens at the page level, or it does not happen at all.
The fix isn't a setting. It's architecture.
Because the URL is the unit, better retargeting is a structural decision you make before the spend starts, not a toggle you find later.
- Give each intent its own URL. A dedicated landing page per campaign is cleanest,
/demo,/pricing,/guide. If dedicated pages are too heavy, a consistentutm_campaignworks too, because an audience rule can match "URL contains." It is still URL-level segmentation. - Build one audience per page. A separate website custom audience for each page or URL pattern, so each pool means something.
- Match the ad to the intent. Pricing-page visitors get the closing offer. Cold browsers get the nurture. Suppress people who already converted with an audience exclusion so you stop paying to retarget existing customers.
One timing trap to avoid: these audiences do not backfill. They only start collecting from the day you create them, so if you launch traffic first and design audiences later, you have thrown away the first weeks of intent data. Set the pages and the rules up front. And when you seed a lookalike, seed it from the top rung, your converters, not from "all visitors," because a lookalike only copies the seed you feed it.
The takeaways
- A retargeting audience is built from the page a visitor hit, not the campaign or intent that brought them.
- One landing page for every campaign produces one blended pool of mixed intent, and one ad that fits no one.
- Segment at the URL level: a dedicated page per intent, or a "URL contains" rule on UTM parameters. Build one audience per page.
- Design it before you spend (audiences don't backfill), suppress existing customers, and seed lookalikes from converters, not all visitors.