Getting Started

From zero to tracking feature adoption in under five minutes. Signalpad works with any web stack — embed one script tag and you’re live.

1. Embed the widget

Add this script tag to the <head> or before the closing </body> of your app. Replace YOUR_PROJECT_KEY with the key from your project settings.

html
<script
  src="https://signalpad.app/widget.js"
  data-project="[your_key_here]"
></script>

The script is ~29 KB, loads asynchronously, and is served from the edge. It will not block your page render.

Where to find your project key: Dashboard → Settings → Widget → Project key. Each project has a unique key used for configuration.

2. Identify your users

Call signalpad.identify() after your auth flow resolves. This ties tracking events and guided flows to a real user in your system, enabling targeting by plan, role, custom attributes, behavioral history, and feature-usage signals.

javascript
// After login / session restore
signalpad.identify("user_8841", {
  plan:      "pro",
  role:      "admin",
  company:   "Acme Corp",
  createdAt: "2024-11-01",
});

If you skip identify(), Signalpad still works — events are tracked against an anonymous ID stored in a cookie. You can call identify() at any time; subsequent events are merged under the resolved user.

3. Track feature adoption

Call signalpad.track() when your users perform the key action tied to a feature. Signalpad correlates this event with the update that announced the feature to compute your real adoption rate.

javascript
// Fire when the feature is actually used — not when viewed
signalpad.track("voice_note.sent");
signalpad.track("export.completed", { format: "csv" });
signalpad.track("dashboard_widget.added");

Events auto-registerthe first time they arrive — no setup required. To measure a feature’s adoption, open the update in the dashboard and pick the event(s) that count as success under Adoption Tracking. You can link an event to an update any time, even after it’s been firing.

4. Target the right users

The signal you ship matters more than the volume. Signalpad supports increasingly precise targeting as you move up plans:

Rule familyExamplesPlan
Built-inAll users · New (≤7d) · ReturningFree
Custom attributesplan = pro · attr.role = admin · days_since_signup ≥ 30Growth+
Feature-usageHas used voice_note_sent · Has never used csv_export · Used dashboard_view 5+ timesPro+
Update engagementSaw update X · Dismissed update Y · Completed flow for Z · Reacted 👎 to WPro+
Activity velocityActive 5+ days in last 30 · Lifetime engagement ≥ 10Pro+

Build a segment from Dashboard → Audience → Segments, then pick it when creating an update. Rules are evaluated on widget load — users only see updates they actually qualify for.

The closed loop: behavioral targeting uses your real event history — every signalpad.track()call, every reaction, every flow completion. You can re-target users who dismissed an update weeks later, or quietly nudge users who've never tried a feature you shipped.

5. Publish your first update

Open the Signalpad dashboard, go to Updates → New update, fill in the title, pick a target audience, and click Publish. The widget in your app will display the update automatically — and if the user hasn't opened your product in a while, Catch-up mode (Pro+) can surface everything they missed in one summary.

Nothing auto-publishes. All updates — including those drafted by AI from GitHub commits — require manual approval before they reach your users.