Add Pulse to any website.
One lightweight script records pageviews, sessions, attribution, engagement, and configured conversions without analytics cookies.
1 Before you start
Create a website in Pulse settings. Copy its exact tracking snippet and complete the DNS verification shown there. Each website has its own site ID and goals.
Do not reuse a site ID on another domain. Pulse rejects events from domains that are not registered for that site.
2 HTML and site builders
Place the generated script once before the closing </head> tag. This works with plain HTML and site builders that support custom head code.
<script defer data-site="YOUR_SITE_ID" src="https://YOUR_PULSE_URL/t.js"></script>In Webflow, Framer, Ghost, Shopify, or Squarespace, add it to the global site-wide head—not to an individual page.
3 Next.js App Router
Add the tracker to the root app/layout.tsx. Pulse detects client-side navigation automatically.
import Script from "next/script";
export default function RootLayout({ children }) {
return (
<html lang="en">
<body>{children}</body>
<Script
data-site="YOUR_SITE_ID"
src="https://YOUR_PULSE_URL/t.js"
strategy="afterInteractive"
/>
</html>
);
}4 Conversion events
Create the goal in Pulse settings first, then call the matching event only after the business action succeeds.
window.pulse?.("signup_completed", { plan: "pro" });signup_completedtrial_startedpurchase_completedProperties may contain plan or product context, but never names, e-mails, passwords, access tokens, or payment details.
Copy a prompt for your AI coding agent
For a ready-to-use prompt containing your real site ID and goals, open that website's settings. This generic template works when you replace the placeholders.
Integrate Pulse privacy-first analytics into my website.
Configuration:
- Website domain: YOUR_WEBSITE_DOMAIN
- Pulse URL: https://YOUR_PULSE_URL
- Site ID: YOUR_SITE_ID
- Tracking snippet: <script defer data-site="YOUR_SITE_ID" src="https://YOUR_PULSE_URL/t.js"></script>
Requirements:
1. Inspect the project and find its global document layout or shared <head>.
2. Install the tracking snippet exactly once on every production page. For Next.js App Router, use next/script with strategy="afterInteractive" in the root layout. For a static site, place the snippet before </head>.
3. Preserve the existing design and application behavior. Do not install another analytics package.
4. Track these configured conversion events only after the action succeeds: REPLACE_WITH_GOAL_EVENT_NAMES.
5. Send events with window.pulse?.("event_name", { nonSensitiveContext: "value" }). Event names must use lowercase letters, numbers, and underscores.
6. Never send e-mail addresses, names, passwords, tokens, payment-card data, health data, or other personal information.
7. Do not fire conversion events on button clicks if the underlying action can fail; fire after the confirmed success response.
8. Run the project tests/build and report the files changed plus how I can verify a 202 response from /api/collect.
Make the code changes now.5 Attach Google Search Console
Open the website's settings and choose Connect Google. Sign in with an account that can read the matching verified Search Console property, then choose the property for the website.
Organic clicks, impressions, click-through rate, average position, and the top queries for the dashboard date range.
Pulse requests the webmasters.readonly scope. You can disconnect and revoke the stored token at any time from site settings.
Search Console data is supplied by Google and can arrive later than Pulse's live first-party traffic data.
6 Verify installation
- Deploy the tracked website to its registered domain.
- Open browser DevTools → Network and reload the page.
- Confirm
t.jsloads successfully. - Confirm
POST /api/collectreturns202. - Trigger a configured goal and check the dashboard after the next refresh.