generated: '2026-08-13'
method: searched
source: >-
https://docs.pirsch.io/get-started/frontend-integration and
https://docs.pirsch.io/advanced/embedding, read 2026-08-13.
description: >-
Pirsch ships two client-side surfaces that are not SDKs: a browser tracking
script loaded from the API host, and an embeddable dashboard delivered as an
iframe. Both are configured declaratively — data-* attributes on the script,
query parameters on the iframe.
families:
- name: Tracking script
kind: browser-script
loader: https://api.pirsch.io/pa.js
distribution: served from the API host, unpinned (always latest)
version: null
version_note: >-
The script URL carries no version segment and no integrity hash, so a
consumer cannot pin a build or tell which one they are getting. Recorded
as null deliberately — checked, nothing to pin.
example: |
required_attributes:
- {name: id, value: pianjs, description: Element id the script looks itself up by}
- {name: data-code, description: The domain's identification code}
options:
- {name: data-exclude, description: Regular expressions for pages to skip}
- {name: data-include, description: Allowlist of pages that should send data}
- {name: data-disable-query, description: Strip query parameters and UTM data}
- {name: data-disable-referrer, description: Do not send the referrer}
- {name: data-disable-resolution, description: Do not send screen dimensions}
- {name: data-disable-history, description: Turn off SPA URL-change tracking}
- {name: data-disable-page-views, description: Disable page-view collection}
- {name: data-disable-outbound-links, description: Stop tracking outbound link clicks}
- {name: data-disable-downloads, description: Disable file-download tracking}
- {name: data-enable-sessions, description: Activate session extension}
- {name: data-path-prefix, description: Prefix added to the recorded path}
- {name: data-path-suffix, description: Suffix added to the recorded path}
- {name: data-title-prefix, description: Prefix added to the recorded title}
- {name: data-title-suffix, description: Suffix added to the recorded title}
- {name: data-dev, description: Override the localhost restriction for local testing}
- {name: data-domain, description: Rollup view across multiple domains}
javascript_api:
- {name: pirschInit(), description: Manually initialize tracking when the script is injected dynamically}
note: >-
data-dev is the closest thing Pirsch has to a test mode — it lifts the
localhost guard, but the data it sends is written to the live domain.
- name: Embedded dashboard
kind: iframe
distribution: iframe against the Pirsch dashboard host
version: null
modes:
- name: public
description: >-
Uses an access link created on the Access settings page; no login
required by the viewer.
access_links_api: openapi/pirsch-access-links-api-openapi.yml
- name: private
description: Embeds https://dashboard.pirsch.io and requires the viewer to be logged in.
example: |
parameters:
- {name: domain, description: The domain to display}
- {name: interval, description: Time interval, e.g. 14d}
- {name: ui, values: [hide], description: Removes the Pirsch header and footer}
- {name: mode, values: [dark, light], description: Colour theme}
- {name: lang, values: [en, de, es, fr, nl, it, pt, ja], description: Dashboard language}
note: >-
Enterprise adds custom domains, custom themes and "extensive white
labeling" on top of the same embed.
public_demo:
url: https://pirsch.pirsch.io
description: >-
Pirsch runs its own analytics publicly. The homepage "View Live Demo" link
points at pirsch.pirsch.io — the real dashboard for pirsch.io, readable
without an account. It is the closest thing Pirsch offers to a console or
playground; there is no sandbox, no test mode and no seeded test data.
rendering: >-
Client-side only. The response is the same 2,817-byte SPA shell every
*.pirsch.io host returns; the dashboard resolves the subdomain in JavaScript.
Nothing on that URL is machine-readable.
not_offered:
- Web components or a element/UI library
- A hosted checkout or prebuilt form surface
- A React/Vue/Svelte component package (framework use goes through pirsch-sdk)