Skip to Content
API referenceAds APIImpressions and clicks

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.

SurfaceImpression (served)Viewed impression
staticAdzen’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.
aiThe 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.
ugcThe 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_reasonMeaning
blocked_ipThe click came from an IP address on Adzen’s blocklist.
botThe click came from a bot or crawler.
high_frequencyToo many requests came from one IP address in a short time.
duplicateA repeat click by the same visitor on the same placement.
no_impressionThe click had no matching impression.
malformedThe click was missing a required field.
otherAny 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.

ParameterValue
az_cidThe click id: 32 lowercase hexadecimal characters, like 8f3a91d2e7b44c06a1b2c3d4e5f60718. Send it back as click_id when you report a conversion.
az_tidAdzen’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}
RuleValue
Formatkey=value pairs joined by &. No leading ?, no #, no spaces or control characters.
SizeAt most 2,048 bytes and 20 parameters.
Keys1 to 64 characters of A-Z, a-z, 0-9, _, . and -. Each key once. A key cannot start with az_ in any case.
ValuesLiteral text and the macros below.
RemoveSend null. An empty string returns 400 invalid_value.
MacroValue
{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_id drops its whole parameter. So does a parameter whose value resolves to empty.
  • A template parameter whose key is already in target_url is skipped. The target_url value 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_cid and az_tid are always kept.
Last updated on