Script options
Configure the attribu.tech pixel using data- attributes on the script tag.
All options
| Attribute | Required | Description |
|---|---|---|
data-website-id | Yes | Your site UUID from the attribu.tech dashboard |
data-domain | Yes | Your root domain (e.g. example.com). Used for cookie scoping and cross-domain tracking. |
data-api-url | No | Custom API endpoint. Useful if you're proxying the API through your own domain to avoid ad blockers. |
data-allowed-hostnames | No | Comma-separated list of additional domains for cross-domain tracking. |
data-allow-localhost | No | Set to "true" to enable tracking on localhost (disabled by default). |
data-disable-payments | No | Set to "true" to disable automatic Stripe Payment Link detection. |
data-calendar-domains | No | Comma-separated custom calendar domains for booking attribution. |
data-allow-file-protocol | No | Set to "true" to enable tracking on file:// pages (disabled by default). |
HTML data attributes
These attributes are placed on individual HTML elements (not on the script tag):
| Attribute | Element | Description |
|---|---|---|
data-attribu-goal | Any clickable element | Tracks a click event with the specified goal name. See custom events. |
data-attribu-goal-* | Same as above | Adds custom properties to the goal event (e.g. data-attribu-goal-plan="pro"). |
data-attribu-scroll | Any element | Fires an event when the element scrolls into view. See scroll tracking. |
data-attribu-scroll-threshold | Same as above | Visibility threshold (0-1) before the scroll event fires. Default: 0. |
data-attribu-scroll-delay | Same as above | Minimum time in milliseconds the element must be visible before firing. |
Example with all options
<script
defer
data-website-id="550e8400-e29b-41d4-a716-446655440000"
data-domain="example.com"
data-allowed-hostnames="app.example.com,shop.example.com"
data-calendar-domains="book.example.com"
data-allow-localhost="true"
src="https://attribu.tech/js/script.js"
></script>Proxying the script
Some ad blockers may block requests to attribu.tech. To avoid this, you can proxy both the script and the API through your own domain:
1. Proxy the script file
Set up a reverse proxy or rewrite rule so that yourdomain.com/js/script.js serves the attribu.tech script. For example, in Vercel's vercel.json:
{
"rewrites": [
{
"source": "/js/attribu.js",
"destination": "https://attribu.tech/js/script.js"
},
{
"source": "/api/proxy/events",
"destination": "https://attribu.tech/api/events"
}
]
}2. Update the script tag
<script
defer
data-website-id="YOUR_SITE_ID"
data-domain="yourdomain.com"
data-api-url="/api/proxy/events"
src="/js/attribu.js"
></script>The pixel automatically detects if it's not loaded from
attribu.tech and will usewindow.location.origin/api/events as the API endpoint, so if you proxy the API to that path, you may not even need data-api-url.Heartbeat
The pixel sends a lightweight heartbeat ping every 30 seconds while the tab is visible. This powers the real-time visitor count on the globe view. The heartbeat automatically pauses when the tab is hidden and resumes when it becomes visible again.