Targeting
Step 3 of the ad builder, headed Who should see it, is where you narrow the pool your campaign is placed into. Its lead says the whole of it: "All optional. Leave everything untouched and your ad reaches every eligible host — each filter you add makes the pool smaller but better matched."
Three of these controls are the reason to buy Lite or Plus for the exchange, so this page states exactly what each one does, what it costs you in reach, and which plan unlocks it.
Before you start​
- You are on step 3 of the builder, having chosen a topic and a level on step 2.
- Your run mode is Broadcast. Choosing Swap on step 4 hides this entire panel — a swap pairs with one partner channel, so there is no pool to filter.
- Every control here is optional. An untouched panel sends nothing, and your ad reaches the whole eligible pool.
Both are checked against a value the host channel declared about itself, and a channel that declared neither is excluded from a language-filtered or country-filtered campaign outright. Almost no channel in the pool has declared either, so setting a language or a country will starve your campaign of placements. Leave both untouched unless you are willing to trade nearly all of your reach for them.
What each control does​
The Matching block​
These tune how the matcher ranks the pool rather than which channels are in it. Both default to neutral, so an ad that leaves them alone behaves exactly as it would have before they existed.
| Control | What it does | Plan |
|---|---|---|
| Lookalike — "favour hosts like the channels that performed best for you." | Biases matching toward hosts resembling your own best past placements | Master and Ultimate |
| Audience-size match — a slider from 0.5 to 2.0 | Scales how harshly a size mismatch is penalised. Its live label reads "very close in size", "closer in size", "balanced" (the default), "a wider size range" or "any size" | Ultimate |
| Also match closely-related topics (off = your topic only). | On by default. Turning it off restricts matching to your own topic instead of letting an ad widen into neighbouring ones | Ultimate |
Where a control is not included in your plan it is hidden and a note names the rung: "Lookalike targeting is part of Master. Custom matcher weights are part of Ultimate."
The size slider and the topic switch apply to your own campaign's filter only. They never change how the exchange ranks anybody else's ad — there is no way to buy a thumb on the pool's scale.
The Targeting block​
Each box hides itself on a plan that does not include it, and a lock note underneath lists everything hidden and where it lives.
| Box | On-screen hint | What it filters on | Plan |
|---|---|---|---|
| Languages | "Tap the languages your ad is written for. No pick means every language." | The host channel's declared language. 27 to choose from | Every plan |
| Countries | "Where the host channel's audience is. No pick means everywhere." | The host channel's declared country. A searchable box of 50 markets | Lite and above |
| Host audience size | "Only place this ad in channels of the sizes you choose." | The host channel's subscriber count, banded | Plus and above |
| Post between | "The hours of the day your ad may go out, in UTC." | The hour a placement may be dispatched | Plus and above |
| Scheduled start | "Up to 90 days out. Leave empty to start as soon as it's approved." | When the campaign may begin delivering | Lite and above |
| Competitor blocklist | "Channels your ad must never sit beside — up to 50 on your plan." | Named @usernames, excluded outright | Plus and above |
The five audience-size bands:
| Band | Label | Subscribers |
|---|---|---|
| 1 | Micro | under 1K |
| 2 | Small | 1K–10K |
| 3 | Mid | 10K–50K |
| 4 | Large | 50K–200K |
| 5 | Major | 200K+ |
A channel whose size could not be read falls into no band at all and is excluded from an explicit band filter — an unmeasured channel is never allowed to satisfy a paid targeting promise.
Targeting by plan​
| Plan | Dimensions included |
|---|---|
| Free | Topic, language |
| Lite | Adds country and scheduled start |
| Plus | Adds audience-size band, day-parting and the competitor blocklist |
| Elite | Same set as Plus |
| Master | Adds lookalike matching |
| Ultimate | Adds custom matcher weights |
Topic and language are free at every rung on purpose: a badly matched placement wastes the host's audience too, so charging for basic relevance would make the pool worse for the side that is already scarce.
The competitor blocklist cap climbs with the plan:
| Plan | Channels you may block |
|---|---|
| Free | 0 |
| Lite | 0 |
| Plus | 50 |
| Elite | 100 |
| Master | 200 |
| Ultimate | 500 |
What the numbers mean​
| Limit | Value | Why |
|---|---|---|
| Values per language or country list | 12 | Beyond that a filter stops being targeting and starts being an enumeration of the pool |
| Audience-size bands | 5 — all of them | There are only five |
| Scheduled start | Within the next 90 days | A start further out is refused; a start in the past means "as soon as approved" |
| Day-parting window | Two hours that differ, or neither | An unset window means "any hour", in both directions |
| Blocklist | Your plan's cap, absolute ceiling 500 | An unlimited blocklist would let an advertiser test which handles are enrolled |
| Day-parting | UTC | Your posting window is read in UTC, never local time |
An ad outside its posting window is deferred to a later tick, not charged a drop. That is the good news. The bad news is a narrow window plus narrow targeting can leave a cycle with too few opportunities to hit its target — and a cycle that under-delivers is only made good on Ultimate. Widen the window before you widen anything else.
How a filter is checked​
Every dimension is checked for validity first and entitlement second, so a Free member who sends a malformed country code is told it is malformed rather than upsold to a plan that would also have rejected it.
An omitted or empty dimension is never treated as a lock. Clearing a filter stays possible after a subscription lapses — you can always edit your way back to neutral, even on a plan that could no longer set the value.
A locked dimension answers with HTTP 402 and a quantified explanation, for example: "Country targeting is part of Lite. Your ad will still run — it just reaches the whole eligible pool instead of the slice you picked." Nothing is charged, and no campaign is created.
What the exchange keeps private​
Your blocklist is the one field that names channels, and it is deliberately never echoed back. Reading a campaign returns only how many channels it blocks, never which. Returning the list would turn your own blocklist into a way of confirming which handles are enrolled in the exchange, which is exactly the leak host anonymity exists to prevent.
Checking your work before you submit​
Two tools tell you what your filters actually cost you, and neither is the reach line on step 2 — that one counts only how many channels accept your level.
- Targeting copilot (step 2, beside that reach line) computes the eligible pool with your filters applied, and the pool with each single filter dropped, so every filter's cost in channels is a real number. It then narrates the trade-off. It spends one AI text action — see AI tools in the exchange.
- Why? (on the campaign row, after approval) shows the Matching channels step: "12 of the 340 channels that accept level 3 match your targeting."
The filter with the fewest picked values is almost always the culprit — one language, one country, one band. Clearing it costs nothing and is reversible on your next campaign, whereas buying a delivery boost on a starved campaign buys placements the pool cannot deliver.
If something goes wrong​
| What you see | What it means | What to do |
|---|---|---|
| "Country targeting is part of Lite. Your ad will still run — it just reaches the whole eligible pool instead of the slice you picked." | A filter your plan does not include was sent | Clear it, or upgrade to the rung named |
| "Custom matcher weights are part of Ultimate. Your ad still matches on the standard weighting." | The size slider or topic switch was moved off neutral below Ultimate | Return the slider to "balanced" and leave the topic switch on |
| "Pick at most 12 language values." | Too many values in one list | Trim the list |
| "'xx' isn't a language we recognise." | An unknown code reached the server | Re-pick from the chips rather than pasting values |
| "Your plan lets you block up to 50 channels." | Blocklist over your plan's cap | Shorten the list, or upgrade |
| "'not a handle' isn't a usable @username." | A blocklist entry could not be read as a handle | Use plain @usernames, separated by commas or spaces |
| "Set both a start and an end hour for day-parting, or neither." | Only one hour was chosen | Set both, or return both to "Any hour" |
| "A day-parting window needs a start and end that differ — 09:00 to 09:00 is no window at all." | Both hours the same | Pick two different hours |
| "Schedule a start within the next 90 days." | The start date is too far out | Bring it inside 90 days |
| "That start date isn't a valid date and time." | The date field could not be read | Re-pick it from the date control |
| The campaign is approved but Matching channels reads 0 | Your filters exclude the whole pool | Clear the narrowest filter. If you set a language or a country, clear that one first |
Related​
- Running ads — the other three builder steps, and the Why? diagnostic in full.
- AI tools in the exchange — the Targeting copilot, its quota and its failure modes.
- Plans, tiers and limits — the whole ladder, including which rung adds which dimension.