Pixel and tag checks

How to check your Adform tracking point is working

Every page should send track.adform.net/Serving/TrackPoint with pm (your tracking setup ID) and a page name. Get the page names right first: Adform reports on them, and a page name built from the full URL turns one confirmation page into thousands.

Adform started in Copenhagen and is still most common in the Nordics and the rest of Europe, often run by an agency rather than the store itself. That is why the most common problems are about naming and ownership, not about the tag loading.

Skip the DevTools: the free scan loads your page in a real browser, accepts and rejects the cookie banner, and shows what the Adform tracking point actually sent.

At a glance

Tag script
trackpoint-async.js from adform.net
Event request
track.adform.net/Serving/TrackPoint/?pm=<setup ID>&ADFPageName=…
Setup ID
The pm value: a number identifying your tracking setup in Adform
Page name
Set with pagename, with levels separated by a divider (by default |)
Order data
order.sales, order.orderid, order.currency, plus product lines
A tracking point request, shortened
https://track.adform.net/Serving/TrackPoint/?pm=11234567&ADFPageName=2Shop%7CCheckout%7COrder%20confirmation
  1. pm= your tracking setup ID.
  2. ADFPageName= the page name, levels separated by the divider (%7C is |).

Example values. Long requests are shortened to the parameters that matter.

Check the requests

  1. Open DevTools on the Network tab, filter on adform, accept the cookie banner and load a page.
  2. Find the request to track.adform.net/Serving/TrackPoint. Check pm is your tracking setup ID and that the page name is the one you expect for that page.
  3. Open a few pages of the same type (two product pages, two category pages). Their page names should follow the same pattern, not contain IDs, session tokens or search terms.
  4. Complete a test order. The confirmation page's request should carry the sales amount, the order ID and the currency.

Common Adform mistakes

Page names that keep changing

Adform reports and builds conversions on page names. When the page name comes from the full URL, every product variant, filter combination or order number becomes its own name, and the conversion you set up on "Shop|Order confirmation" never matches. Set page names deliberately, per page type:

window._adftrack = {
  pm: 1234567,
  divider: encodeURIComponent('|'),
  pagename: encodeURIComponent('Shop|Checkout|Order confirmation')
};

Sales sent in a format Adform cannot read

The sales value should be a plain number with a dot as the decimal separator. A formatted price such as 1 299,00 kr ends up as no value or the wrong one. Send the currency with every order, especially if you sell in several currencies, and decide whether sales includes VAT and shipping: it should match what you compare it with.

No order ID

Without orderid, a reloaded confirmation page is a second sale, and you cannot match Adform's numbers to your orders. Use the shop's order number:

window._adftrack.order = {
  sales: 1299.00,
  orderid: '10045',
  currency: 'SEK'
};

Tracking before consent

Adform is a common ad server in the Nordics and the rest of Europe, where its tracking point sets cookies. Load it through your consent tool so it runs after the visitor accepts, and use a consent tool registered with IAB TCF so the consent string reaches Adform. See Ad pixel fires before consent or after "reject".

An old setup ID still on the site

Agencies often run their own Adform setup. After a change of agency, the old tracking point stays and keeps receiving your data, sometimes next to the new one. If the scan or the Network tab shows two different pm values, find out which setup is yours and remove the other.

What the free scan checks

  • Adform loads, and sends at least a page view
  • Only one Adform ID, or a warning if there are more
  • Adform waits until the visitor accepts cookies
  • Adform stops after the visitor clicks "reject all"
  • No email addresses in plain text in Adform requests

Server-side events (Conversions APIs, server-side tagging) are invisible to a public scan, so the report never marks them as working or broken.

Related

Sources

Based on the platforms' public documentation and the requests their public tags make; menus and names change, so check the linked pages if a step looks different.

Other platforms