1. Job-change alert on one person
Fire when title, position or company changes. Daily checks.POST /v1/signals
2. The fleet: job-change alerts on 1,000 champions
The flagship setup. Set the account default webhook once, then one bulk call:POST /v1/signals/bulk
POST /v1/signals/pause with { "tag": "q3-pipeline" }.
3. Watch anything change on a profile
Any non-volatile field (see Filtering — counters and media URLs are excluded from* by design).
POST /v1/signals
notify → account default webhook.)
4. Headcount moves on an account — with a noise floor
numeric_change with a threshold: ±5% fires, weekly drift doesn’t.
POST /v1/signals
5. New senior openings on a company’s job board
new_entity diffs the posting set — only new matching jobs produce Triggers.
POST /v1/signals
6. Net-new leads — Sales Nav saved-search style
Watch a people search (filters or a Sales Nav URL). Fire only when new people enter the result set — same idea as Sales Navigator’s “save search to get notified of new results.”POST /v1/signals
diff.added[].url into a batch enrich job if you need full profiles. Set "include_removals": true only if you also care about people dropping out of the ICP window.
Cost: 2 credits per check (50 results ≈ 2 pages × 1) — 2 credits a day.
Same pattern for companies: target.type: "company_search" + criteria.mode: "new_entity".
7. Posts mentioning your trigger phrase
text_match on a keyword post search — intent signals pushed to your webhook.
POST /v1/signals
6h.
8. A post crosses an engagement threshold
Engagement counts are volatile-excluded from* — name them explicitly with a floor.
POST /v1/signals
1h; drop to 6h for 4 a day.
9. Net-new reactors (or commenters / sharers) on a post
Watch who engaged — not just the count. Pairpost_reactions / post_comments / post_reposts with new_entity. Identity is the person (profile URN/URL); leave include_removals off so incomplete pages don’t false-fire removals.
POST /v1/signals
diff.added[] stubs include urn, url, full_name, headline (and reaction_type for reactions). Swap type to post_comments or post_reposts for the other engagement lists.
Cost: 1 credit per returned engager per check (same as /v1/posts/engagement/*); empty pages free. At max_results: 100 and 1h, budget for up to 2,400 credits/day if every check returns a full set — prefer 6h/1d on viral posts.
10. Complex logic with expressions
CEL oversnapshot and diff — e.g. headcount dropped ≥10% at a company you track:
POST /v1/signals
11. Estimate before you enable — and cap the blast radius
Spend iscredits per check × how often the Signal runs. The API projects it for you: estimated_monthly_credits on every Signal, combined totals on bulk create, and a standing burn figure on GET /v1/account.
Then set a hard ceiling:
PATCH /v1/account with monitoring.monthly_check_budget. If fleet growth ever outruns the plan, Signals pause with budget_exceeded instead of draining your enrichment balance.
Operational tips
- Dedupe on
trigger_id, order bycheck_number— retries reuse the ID, and delivery order isn’t guaranteed. - Watch for
signal.pausedevents — insufficient credits, budget exceeded, or a dead webhook. Signals never silently skip. - Start weekly, tighten later.
PATCH /v1/signals/{id}changes the interval in place — no need to recreate. - Test the plumbing:
POST /v1/signals/{id}/test-webhooksends a free signedsignal.testfixture (no scrape).POST /v1/signals/{id}/check-nowruns a real check (billed like a scheduled check) — poll delivery status viaGET /v1/webhook-deliveries/{id}.