What Piano Analytics traffic looks like
Piano Analytics (formerly AT Internet, still widespread among European publishers and broadcasters) sends GET hits with the payload in the query string.
- Endpoint pattern
pa.piano.io; long-lived implementations still point at the legacyxiti.comorat-o.netcollection domains, with the SDK served fromaticdn.net- Transport
- GET requests with the payload in the query string; the modern SDK packs an
eventsparameter carrying a JSON array like[{"name":"page.display","data":{...}}], with multiple events per hit - Key parameters
snumeric site ID ·s2level-2 sub-site ·ppage name, with chapter hierarchy (chapter1::chapter2::page) on legacy setups;pchap/ptypeon others ·idclientvisitor ID- Built-in events
- Event names follow a dotted taxonomy (
page.display,click.action,click.navigation,publisher.impression), and each event'sdataobject holds its custom properties - Payload
stccustom variables as inline JSON on older implementations ·x1…x10numbered custom variables on the oldest ·vtag/ptagSDK version and type, useful when auditing a half-migrated setup
A decoded events parameter, as Event Watcher shows it:
[
{ "name": "page.display", "data": { "page": "forside", "page_chapter1": "nyheder" } },
{ "name": "click.navigation", "data": { "click": "menu_abonnement" } }
]
Debugging Piano Analytics with Event Watcher
- Recognizes both the modern
pa.piano.ioendpoint and the legacy AT Internet domains. European publisher sites frequently run mid-migration with both shapes live. - The parser pulls the event name out of the
eventsJSON array, falling back to the page or rich-media action for legacy hits. - Nested
dataobjects,stccustom variables, andx1…x10slots decode into labeled tables, with site ID, page, chapters, and visitor ID included. - Multi-event hits split out per event, the difference between auditing a page in minutes and an afternoon of reading url-encoded JSON-in-a-query-string by eye.
Piano Analytics and consent
Analytics consentThe extension checks Piano Analytics against the analytics consent category. Piano's SDK ships its own consent framework, with an exempt/hybrid mode aligned to the French CNIL's audience-measurement exemption.
Many French and Benelux publishers rely on it to measure pre-consent legally. Exempt-mode hits still flow to the same endpoint, so Event Watcher marks them pre-consent all the same.
Whether that is a violation or the intended CNIL-exempt behavior is a judgment call the decoded hit lets you make explicitly rather than by assumption.
Common debugging scenarios
- Hits split across old and new domains. Filter to Piano and check which endpoint each page section uses. Mixed
xiti.comandpa.piano.iotraffic usually means a stalled migration, double-counting nothing but confusing everyone. - Wrong site ID per country section. Scan
sacross pages in Grouped view; multi-country publishers routinely cross wires here. click.actionmissing custom data. Open the parsed event and check thedataobject as sent, not the report.- Chapter hierarchy garbled. Read
p/pchapvalues directly to see where the::separators break. - Pre-consent measurement review. List every Piano hit fired before the CMP grant and reconcile against what the CNIL-exempt config is supposed to allow.