Impressions and clicks
You pay the ad set’s price on every surface: fixed_cpm_micros for every
1,000 viewed impressions, or fixed_cpc_micros for every valid click.
Invalid traffic is filtered out of impressions and clicks, and is never
charged. See Price.
Impressions
Insights report two impression counts.
impressions counts ads served. viewed_impressions counts ads on screen.
ctr and cpm_micros are measured against viewed impressions.
| Surface | Impression (served) | Viewed impression |
|---|---|---|
static | Adzen’s script placed the ad on the publisher’s page. | Any part of the ad was on screen for one continuous second, measured by Adzen’s script. |
ai | The ad was rendered in the conversation. | The AI platform reports the ad as on screen in the conversation. By default, Adzen’s AI SDK reports it once the whole ad has been on screen for one continuous second. |
ugc | The community platform reports the ad as shown in the reader’s feed. | The same event, so impressions equals viewed_impressions. |
Clicks
Every click passes through an Adzen redirect, which forwards the visitor to
the landing URL with an HTTP 302. Valid clicks are counted in
clicks. Invalid clicks are left out of clicks and counted in
invalid_clicks.
Invalid clicks
Break insights down by invalid_reason to see why clicks were filtered out.
Each invalid click has one reason. When several apply, the click takes the
first one in this table.
invalid_reason | Meaning |
|---|---|
blocked_ip | The click came from an IP address on Adzen’s blocklist. |
bot | The click came from a bot or crawler. |
high_frequency | Too many requests came from one IP address in a short time. |
duplicate | A repeat click by the same visitor on the same placement. |
no_impression | The click had no matching impression. |
malformed | The click was missing a required field. |
other | Any other reason. |
Landing URL parameters
Adzen adds its parameters to every landing URL, plus any parameters you set in
the campaign’s landing_page_configuration.query_string_template.
| Parameter | Value |
|---|---|
az_cid | The click id: 32 lowercase hexadecimal characters, like 8f3a91d2e7b44c06a1b2c3d4e5f60718. Send it back as click_id when you report a conversion. |
az_tid | Adzen’s tracking id for the click. Conversions do not use it. |
Adzen may add other parameters. Read az_cid.
Adzen’s parameters replace any parameter of the same name in the ad’s
target_url, ignoring case. The fragment (#...) of target_url is kept.
A landing page can receive the same az_cid more than once, for example when
one tap loads the page twice. Report the conversion once per dedupe_key; see
Deduplication.
Query string template
The template is a query string with {macro} placeholders:
utm_source=adzen&dsp_campaign={campaign_external_id}&dsp_ad={ad_external_id}| Rule | Value |
|---|---|
| Format | key=value pairs joined by &. No leading ?, no #, no spaces or control characters. |
| Size | At most 2,048 bytes and 20 parameters. |
| Keys | 1 to 64 characters of A-Z, a-z, 0-9, _, . and -. Each key once. A key cannot start with az_ in any case. |
| Values | Literal text and the macros below. |
| Remove | Send null. An empty string returns 400 invalid_value. |
| Macro | Value |
|---|---|
{ad_account_external_id} | The ad account’s external_id |
{campaign_external_id} | The campaign’s external_id |
{ad_external_id} | The ad’s external_id |
A template that breaks a rule, uses any other macro or has an unmatched brace
returns 400 invalid_value with param
landing_page_configuration.query_string_template.
When a click is redirected:
- A macro whose object has no
external_iddrops its whole parameter. So does a parameter whose value resolves to empty. - A template parameter whose key is already in
target_urlis skipped. Thetarget_urlvalue is kept. - When the template would make the landing URL’s query string longer than
2,048 bytes, template parameters are dropped from the end of the template
until it fits.
az_cidandaz_tidare always kept.