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="pk_live_YOUR_PROJECT_KEY"
></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 prefixed with pk_live_.

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_triggered", { format: "csv" });
signalpad.track("dashboard_widget_added");

The event name must match the Feature event key set on the update in the dashboard. A mismatch means the adoption metric won’t be recorded — double-check spelling and casing.

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.