Quickstart: Web (npm)
Add FounderHQ to a React, Next.js, Vue, or Svelte app with npm.
Install the package, initialize it once, and see your first event in FounderHQ. About 5 minutes.
Before you start
You need a FounderHQ account and a publishable key. In the app, open Sequences → Settings → Event API keys, create a key for Browser/mobile, and copy it. The full key is shown only once.
Install the package
npm install @founderhq/eventsInitialize once, at your app's entry point
import { founderhq } from "@founderhq/events";
founderhq.init("fhq_pk_XXXX");founderhq is a shared client. Import it anywhere. Calling init a
second time does nothing, so a hot reload is safe.
From here on, pageviews, page leaves, sessions, clicks, rage clicks, dead clicks, outbound clicks, scroll depth, and Core Web Vitals are captured for you. Single-page navigations count as pageviews.
Next.js App Router, or any framework that renders on the server? Put the call in a client component and render it once in your root layout.
"use client";
import { useEffect } from "react";
import { founderhq } from "@founderhq/events";
export function FounderHqAnalytics() {
useEffect(() => {
founderhq.init("fhq_pk_XXXX");
}, []);
return null;
}Identify the person when they sign in
founderhq.identify("user_8421", {
email: "jane@acme.com",
plan: "pro",
});Pass your own stable user ID, not an email. FounderHQ merges the visitor's anonymous history into that contact.
Call founderhq.reset() when the person signs out, so the next visitor
on that browser starts clean.
Capture your first event
founderhq.capture("trial.started", { plan: "pro" });Use lowercase names you will still understand in six months. Event
names that start with $ are reserved.
Verify
- Run your app and trigger the event.
- In FounderHQ, open Sequences → Events.
- You see
trial.startedwithplan: pro, plus a$pageview. - Open Sequences → Contacts. Jane is there with her email.
Events can take a few seconds to appear. The SDK batches them. To send
immediately, await founderhq.flush().
Troubleshoot
Nothing appears in Events
Check the network tab. If requests to /i/v2/e fail with a 401 or 403,
the key is wrong or your origin is not allowed. Check Allowed
origins on the key in Sequences → Settings → Event API keys.
Events fire twice in development
React Strict Mode runs effects twice. init is safe to call twice, but
a capture inside an effect is not. Capture on the user's action, not
on render.