---
title: "Run an awareness campaign with frequency control"
description: "Recipe for a branding/reach campaign — CPM pricing, per-user frequency caps that survive incognito, geo and device splits, share-of-voice via weights, and the viewability signals you can collect."
type: "howto"
audience: [network-manager]
keywords: [awareness, branding, reach, frequency cap, share of voice, CPM, geo split, device split, viewability, Open Measurement, OMID, pacing]
ui_path: "Account → Advertisers → advertiser → campaign"
---

Fetch the complete documentation index at: https://epom.com/ad-server/docs/llms.txt. Use this file to discover all available pages before exploring further. Append .md to any documentation page URL to get its markdown version.

# Run an awareness campaign with frequency control

The brief: show the brand to as many *different* people as possible, never bombard anyone,
stay inside the agreed geo and device mix, and hold an agreed share of voice against the
other campaigns on the same inventory. This recipe wires that together from CPM pricing,
frequency capping, targeting and weights.

## Who this is for

Network managers and advertiser users planning brand/reach flights. The stock Network Manager
role runs the whole recipe from the campaign, except the share-of-voice check, which reads a
placement's **Banners probability** card (supply-side). The stock Advertiser role sets pricing,
targeting and the flight dates, but has no **Frequency capping** card, sees the budget and
**Weight** read-only and has no impression caps — ask your network manager for steps 2, 4 and 5,
or to switch them on for your role.

## Prerequisites

- A [campaign](https://epom.com/ad-server/docs/guides/advertising/campaigns.md) with creatives linked to the target
  inventory.
- For the incognito-proof frequency cap: server-side capping storage enabled on your network
  (ask Epom support or your account manager) and a role that sees the **Subject** column (see step 2.3 for what
  that takes) — otherwise every cap you can create is cookie-only.

## Steps

### 1. Price for impressions

On the campaign's **Pricing** card pick **CPM** and set the Global row; add per-country
rows if the deal prices markets differently ([Configure pricing](https://epom.com/ad-server/docs/guides/delivery/pricing.md)).
Branding buys are impression deals — CPM also makes every report line directly comparable
to the media plan.

### 2. Cap exposures per person

1. On the campaign, open **Frequency capping** and switch it on. The switch creates one empty
   row each for **By impressions**, **By clicks** and **By conversions**, at Amount 0, which
   restricts nothing.
2. In the **By impressions** row, set **Amount** to **3**, **Period** to **1** and **Period
   type** to **Day(s)** — click a cell, type, press Enter. Each edit saves on its own; there
   is no Save button on this card. (**Add** creates a second cap, for example "10 per week" on
   top of "3 per day".)
   ![Frequency capping card with a By impressions row set to 3 per 1 day](https://epom.com/docs-images/ad-server/branding-reach-frequency/branding-frequency-cap.webp)
3. If the **Subject** column is shown, set the row to *User (cookie-based + server-side
   storage)*. Plain cookie caps stop working where the browser does not keep the cookie:
   private browsing, Safari, Firefox, Brave, DuckDuckGo and iOS devices. The mixed subject
   falls back to a server-side counter for exactly those visitors
   ([details](https://epom.com/ad-server/docs/guides/delivery/frequency-capping.md)). The column appears only when your
   network has server-side capping storage on, IP capping (or L.E.S. IP capping) enabled, and
   your role may pick an IP subject, which no role can out of the box (ask your network administrator); where
   it is missing, new rows keep the default *User (cookie-based)* subject.
4. Tick **Flat** if the exposures should be spaced out: 3 per day flat means each impression
   blocks the visitor for `period ÷ amount` — about 8 hours — instead of all three
   back-to-back in one session. A flat row keeps no counter, only a "blocked until" time.
5. If the brand runs **several campaigns at once** and the cap must hold across all of
   them, add an **advertiser-level** frequency cap too (the advertiser's card offers the
   Frequency kind only) — see the [capping matrix](https://epom.com/ad-server/docs/reference/capping-matrix.md). Caps at
   different levels stack: the visitor is blocked at whichever runs out first.

### 3. Split by geo and device

Two patterns, pick per how different the splits really are:

- **One campaign, combined targeting** — when the same creatives run everywhere: add a
  **Country** rule and a **Device Format** rule on the campaign's Targeting card; groups of
  different dimensions combine with **AND** by default (switching a pair to OR is a role
  permission; ask your network administrator if the switch is missing)
  ([Add targeting rules](https://epom.com/ad-server/docs/guides/targeting/add-targeting.md)).
  ![Country and device targeting](https://epom.com/docs-images/ad-server/branding-reach-frequency/branding-geo-device-targeting.webp)
- **One campaign per cell** — when each geo/device cell has its own budget, creatives or
  price: clone the campaign per cell (e.g. "Brand — DE mobile", "Brand — DE desktop") and
  give each its own targeting, limits and CPM rows. Separate campaigns also give you
  per-cell delivery lines in every report without extra grouping — which matters, because a
  General report cannot group by Device Format.

### 4. Hold the share of voice

Within one **priority tier**, traffic is split by campaign **Weight** — weight 2 gets
roughly twice the share of weight 1, all else equal — as long as the network runs the default
Manual Weighting algorithm; the eCPM algorithms replace the weighted draw with a price ranking
([Optimize ad rotation](https://epom.com/ad-server/docs/guides/delivery/optimization.md)). To hold a 30% share against
two other campaigns, keep all three in the **same priority tier** and set weights 3/4/3 (or
any same-ratio set).

Verify the resulting split on a key placement: **Account → Publishers → … → placement →
Banners probability**, set **Grouping** to **Campaign** — the card computes each campaign's
serving probability for a simulated request. Set its **Priority** filter to the tier your
campaigns share: the default, *Ignore Priority*, spreads probability across every tier at
once.

![Banners probability panel](https://epom.com/docs-images/ad-server/branding-reach-frequency/branding-probability-panel.webp)

### 5. Pace the delivery

If the flight has a fixed impression volume, set a start and end date on the campaign's
**Limits** card, put the volume in the **Impressions** row's **Total** cap — and a **Daily**
one beside it if the volume should arrive evenly — then turn on **Even pacing** so it spreads
across the flight instead of burning out in the first days ([Limits](https://epom.com/ad-server/docs/guides/delivery/limits.md)).
A stock network shows only the Daily and Total columns; Weekly and Monthly are off for every
role until your network administrator grants them. Pacing needs the end date: a total cap on a campaign with
no end date is not paced. A filled **Total** cap (and a passed end date) switches the campaign
off for good — turn it back on by hand if you extend the flight
([why](https://epom.com/ad-server/docs/guides/delivery/limits-how-caps-behave.md#total-caps-switch-the-entity-off--permanently)).

### 6. Collect viewability signals

Epom does not have a standard "viewable impressions" report column, but the signals are there:

- **Display:** on image banners served into Site / Non-standard placements, tick **Enable
  viewability tracking (beta)** under **Advanced settings** on the banner — see
  [Image banners](https://epom.com/ad-server/docs/guides/advertising/banner-image.md). No stock role has the checkbox; ask
  your network manager to switch it on.
- **Video:** enable the viewability events under **Viewability & other** on the video
  placement's **VAST tracking** card (*Ad Viewable Impression / Ad Repeated Viewable Impression /
  Ad Not Viewable Impression / Ad View Undetermined Impression*). On a player that supports
  IAB Open Measurement — Google IMA and the other major SDKs — Epom measures these itself
  against the MRC criterion (50% of the ad on screen for 2 continuous seconds), provided the
  tag is **VAST 4.1 or higher**; the new interface's version picker defaults to 4.2, so a
  freshly copied tag qualifies, while the classic placement page cannot reach 4.1 at all. In a
  player *without* Open Measurement there is no viewability at any version, and programmatic
  (OpenRTB) video is not measured by Epom at all. Each enabled VAST event is recorded through
  a system conversion action, so you can report on it with **Split columns by → Viewability**
  in the report builder, which picks and orders that family's actions for you. See
  [Video viewability and Open Measurement](https://epom.com/ad-server/docs/concepts/viewability-and-open-measurement.md) and
  [Video placements](https://epom.com/ad-server/docs/guides/inventory/placement-video.md).
- **Third-party measurement** (IAS, MOAT-style vendors): on video, attach the vendor's URL as a
  third-party pixel firing on a viewability event on the same VAST tracking card — Epom's
  verification script then calls it from inside the player's verification frame. Only the URL
  is called; the vendor's own script does not run there. Where that is not an option, the
  instrumented vendor tag rides along inside the creative markup itself — paste it as an
  HTML-code banner.

### 7. Read reach and delivery

Run a **General** report with **Group by → Campaign** (or **Campaign** and **Country**, to
audit the geo split) and the **Unique visitors** metric column — impressions against uniques is
your effective frequency check. That column is one of the most conditional in the product: it
appears only when the Group by is exactly Campaign, or exactly Campaign plus Country, with no
filter on Site, Zone, Placement, Placement Type, Placement Size, Banner, Channel, labels or
templates set, and only for roles whose report columns include it — the stock Advertiser
role's reports do not show the column
([metrics reference](https://epom.com/ad-server/docs/reference/metrics.md)). Put the flight's key chart on a
[dashboard](https://epom.com/ad-server/docs/guides/analytics/dashboards.md) for daily monitoring.

## Corner cases and gotchas

> **Corner case — share of voice only works inside one priority tier.** Priority beats
> weight: a Premium campaign takes *everything* it is eligible for before any Standard
> campaign serves. If one competing campaign sits in a higher tier, no weight ratio will
> produce your 30/40/30 split. Align the tiers first.

> **Corner case — cookie-only caps leak on private browsing.** With subject *User
> (cookie-based)*, an incognito visitor gets a fresh counter every session and can see the
> ad far more often than the cap says. Use the mixed subject. If the Subject column is not
> visible, either server-side storage is off for your network or your role may not pick an IP
> subject — ask your network administrator which; existing rows keep whatever subject they
> were created with, and the ad server still honours it.

> **Corner case — switching the card off deletes the caps; counters are per visitor.**
> Turning **Frequency capping** off deletes the cap rows, and turning it back on creates fresh
> empty ones at Amount 0. Counters already sitting in visitors' cookies or in the server-side
> store are not cleared by any of this — they expire on their own schedule. Changing an Amount
> reaches the ad server only with its next full rebuild (every 10 minutes), so raising a cap
> from 3 to 5 does not help a visitor already at 3 until then.

> **Corner case — the probability panel simulates a generic visitor.** It counts a banner or
> campaign whose limit is already reached (shown as NA), but it knows nothing about frequency
> capping — it cannot see an individual user's counters — so a real visitor who hit a cap sees
> a different rotation than the panel shows. It also models only nine kinds of targeting and
> not the CTR or I2C optimizers.

> **Note:** the Flat checkbox spreads *the cap*, not the budget. For budget pacing use
> **Even pacing** on the Limits card — the two are independent.

## Per-role notes

- **Advertiser:** on the stock role, pricing, targeting, flight dates and the report. Frequency
  capping, weights, impression caps, pacing, priority, the share-of-voice check and the **Unique
  visitors** column are not in it — ask your network manager to set them or to switch them on for
  your role.
- **Network manager:** the whole recipe, including the placement's **Banners probability** card
  and the **Priority** select.
- **Can view share:** pricing, caps and targeting are visible but read-only.

## Related

- [Set up frequency capping](https://epom.com/ad-server/docs/guides/delivery/frequency-capping.md)
- [Capping matrix](https://epom.com/ad-server/docs/reference/capping-matrix.md)
- [Add, edit, and remove targeting rules](https://epom.com/ad-server/docs/guides/targeting/add-targeting.md)
- [Optimize ad rotation](https://epom.com/ad-server/docs/guides/delivery/optimization.md)
- [Set volume limits and budgets](https://epom.com/ad-server/docs/guides/delivery/limits.md)
- [A/B test creatives](https://epom.com/ad-server/docs/use-cases/ab-testing-creatives.md)
- [Seasonal & dayparted campaign recipe](https://epom.com/ad-server/docs/use-cases/seasonal-geo-dayparting.md)