TL;DR: Settings → Sources. Connect the inputs that feed your signals — LinkedIn accounts for keyword tracking, a webhook from your sequencer for reply capture, and the Sync browser extension that captures your accounts.
Browser extension
Install: Settings → Sources → Browser Extension → Install for Chrome / Firefox / Safari.
After install, the Sync extension captures sources from your signed-in browser without asking you to pick a provider. Captured sources show up in Settings → Sources, under Mine and Team.
The extension uses the same workspace credentials as the web app — it auto-detects your login session via shared cookies.
LinkedIn accounts
For 2nd-party signals that read LinkedIn (Keywords, Authors, Post Engagement, Profile Intent, Job Changes, Hiring Intent), an authenticated LinkedIn account is needed. To add one:
- Sign in to the LinkedIn account in your browser — personal (standard LinkedIn) or Sales Navigator (preferred for higher-volume / advanced search)
- The Sync extension captures it from your signed-in browser, without asking you to pick a provider
- Set the account's signal scope — which signals can use this account for scraping
Multiple LinkedIn accounts are common — one for your CEO's network (high-trust connections), one for an SDR's Sales Nav license (broader search).
Other networks
Sources connect across LinkedIn, LinkedIn Sales Navigator, GitHub, Medium, Product Hunt, Quora, Slack, Substack, X, Telegram, WhatsApp, Eventbrite, Luma and Partiful. WhatsApp and Telegram link by scanning a QR from your phone, and nothing is posted or read without your action.
Sequencer integrations
For Replies signal: open the Replies signal page, copy its webhook URL, and paste it into your sequencer's webhook settings. Replies arrive as inbound webhooks in any JSON shape, with no payload mapping. Conversions work the same way, from the Conversions signal page.
When a reply comes into your sequencer, the sequencer POSTs the reply event to that URL. The Replies signal captures it; if autoqualify is on, the record qualifies (or re-qualifies with updated engagement).
Settings → New people decides whether a person who replies or converts but no signal had found becomes a record.
Webhook source
For anything else — your product's events, a custom integration, an AI agent's discoveries:
Settings → Sources → Webhook → + New endpoint:
- Unstuck Engine generates a unique webhook URL for your workspace
- Configure your sender to POST signal events to that URL
- Set authentication (header token)
- Pick which signal types this webhook can fire
The Signals API (POST /signals) is a related but different surface — the webhook source is for inbound events with a specific URL per workspace; the Signals API is for bidirectional REST usage with API keys.
Source health
Each connected source has a status:
- 🟢 Connected, capturing
- 🟡 Connected, no recent captures (>7 days)
- 🔴 Connection error (token expired, auth failure, rate limit)
Click into any source for the last 100 events, error counts, and last-error message. Re-authenticate from there if needed.
Removing a source
Settings → Sources → row → Disconnect. Stops the source from feeding signals. Any captured records remain — only the live feed pauses.
Signals that depend on the disconnected source go into Needs source status until reconnected.