Not a changelog. Infrastructure for
closing the adoption gap.

Signalpad covers the full lifecycle, from writing the update to proving the feature got used. Here is everything in the box.

The pipeline

From shipped to adopted,
on one record.

Every release moves through the same five stages, sharing a single data model. Step through each one.

github → signalpad · draft
3 merged PRs this release
#412Add voice note recorder to chat input
#418Waveform preview + send button
#421chore: bump depsFILTERED
FeatureAI draft · ready to review
Voice Notes — record right inside chat
Tap the mic to record and send a voice message without leaving your conversation.
Approve & publishEdit
The differentiator

Don’t just announce it.
Teach them how to use it.

Every other tool stops at “here’s what changed.” Attach a walkthrough to any update and take users straight to the feature, in the product, when they’re most primed to act. This is update-driven guidance, not an onboarding builder.

app.signalpad.app/flows/voice-notes
Guided flowLive
01Spotlightrecord-btnon launch
02Tooltip“Hold to record”after step 1
03Waituntil the user clickswait_for: click
04Modal“You’re all set”after step 3
Adopted whensignalpad.track("voice_note_sent")
Step types

Spotlight, tooltip, modal, wait

Four primitives cover every guided interaction, from drawing attention to holding until the user acts.

Element binding

Bound to refs, not selectors

Register elements by key with signalpad.registerElement(). Steps resolve to that key, so a UI refactor never silently breaks a flow.

Triggers

Auto, on click, or from your code

Launch on delivery, from the widget panel, or call signalpad.startFlow(). A wait step can hold until a custom event fires.

The rest of the box.

The cross-cutting capabilities that make the pipeline work.

Targeting

Who sees each update

All, new, or returning out of the box. Plan-based and behavioral rules, combined with AND logic across every dimension.

Behavioral on Pro+
Catch-up mode

One summary after time away

Returning users get a grouped panel by tag instead of a stack of missed notifications. Away-day threshold configurable up to 90 days.

Pro and Scale
Surfaces

Badge, panel, or modal

One script tag renders all three. Light, dark, or auto theme, with full CSS overrides to match your product.

SDK and events

registerElement, identify, track

Bind flows to element refs, attach user attributes, and fire adoption events. REST API for programmatic access.

API on Pro+
Public changelog

Auto-populated from your updates

The same updates feed a hosted changelog at your subdomain or a custom domain, with RSS and tag filtering.

Custom domain on Scale
Feedback

Reactions and written notes

Collected on every update and correlated with adoption in the dashboard, so you see sentiment against real usage.

A few SDK calls do the work.

One script tag renders the widget. A handful of calls power targeting, guided flows, and adoption tracking. No build changes, no backend.

your-app.js
<script src="https://signalpad.app/widget.js" data-project="your_key" />

// Who is this user? (powers targeting + analytics)
signalpad.identify("user_4421", { plan: "pro" });

// Bind a UI element by key, not a CSS selector
signalpad.registerElement("record-btn", ref);

// Fire the target action -> adoption analytics
signalpad.track("voice_note_sent");

// Launch a guided walkthrough from your code
signalpad.startFlow("upd_voice_notes");
1
identify

Attach a user id and attributes so targeting and analytics know who is who.

2
registerElement

Bind a UI element by a stable key. Flows point at the key, not a fragile selector.

3
track

Fire one event on the target action. Adoption rate is calculated for you.

4
startFlow

Launch any update’s guided walkthrough straight from your own code.

Works with React, Vue, Svelte, Angular, vanilla JS — anything with a DOM.

Built for the people who ship.

The technical questions, answered.

What step types can a guided walkthrough use?

Four: spotlight, tooltip, modal, and a wait step. A wait can hold until a click, a delay, or a custom event you fire from your code.

How does Signalpad know a feature was adopted?

You set a target event per update. Call signalpad.track("your_event") when the user performs the action, and anyone who fires it inside your window counts as adopted.

Do I point flows at elements with CSS selectors?

No. Register an element by key with signalpad.registerElement("key", ref). Steps bind to that key, so refactoring your markup never silently breaks a flow.

Can I launch a walkthrough from my own code?

Yes, call signalpad.startFlow(updateId). Flows also launch from the widget panel, or auto-launch when an update is delivered.

What sources can updates come from?

A manual editor, GitHub Sync that drafts from merged pull requests, AI drafting, and the REST API. Every source goes through human review before it publishes.

Which plans unlock behavioral targeting, the API, and custom domains?

Behavioral targeting and the REST API are on Pro and above. Catch-up mode is on Pro and Scale. A custom changelog domain is on Scale.

Everything you need to close the adoption gap.

Start free and explore every feature. No credit card, no trial expiration. Build your first guided update in under an hour.