Signal-based outbound
Trigger outreach off events that mark an account entering a buying window, rank signals by how tightly they predict a buy, and route each one to the play and the human that fit. The workflow, the reply math, the decay curve.
Woodpecker sorted 26,000 campaigns by how much targeting went into each one. Spray-and-pray replied at 1 to 3%. Segmented bulk got 3 to 7%. Signal-triggered outreach hit 10 to 20%, and fully personalized reached 20 to 40%. That is a 3-to-10x swing on the same product, the same offer, the same rep. The difference is whether you reached someone the week their world changed or on a random Tuesday.
A signal is an event that says an account entered a buying window. A high-intent list sitting in a spreadsheet is not a signal. It counts only once you have wired it to a workflow that picks the buyer, writes the reason-to-believe, and sends inside the window. Most of the value is timing, and timing decays fast enough that a weekly batch job throws half of it away before a rep ever opens the queue.
Rank signals by how tightly they predict a buy
Not all signals carry the same weight, and treating a weak one as strong is the fastest way to burn a list. First-party beats third-party. A single event alerts you; stacked events convert. A signal from the last 7 days is worth roughly 3x the same signal from a month ago. Rank them before you wire anything, because the rank decides which signals earn a rep’s 1:1 queue and which get a light sequence at most.
View as table
| Stage | Value |
|---|---|
| Champion job change / PQL | 95 |
| Web deanon (own site) | 78 |
| Funding (relevance-gated) | 62 |
| Technographic add | 50 |
| New hire in role | 44 |
| LinkedIn engagement | 32 |
| Third-party company intent | 22 |
Funding sits mid-pack for a reason. A raised round is only a signal if what you sell maps to where the money goes. A new exec spends about 70% of their budget in the first 100 days, so a champion moving into a buying role at a target account beats almost anything, up +114% on win rate in the studies, with a bigger average deal and a shorter cycle attached. Funding you act on inside 7 to 14 days. A pricing-page revisit you act on the same day. The table is the routing rule, so write it down and let the workflow read from it:
| Signal | Party | Predictive weight | Act within | Route to |
|---|---|---|---|---|
| Champion job change | First | Highest | 7 days | Rep 1:1, warm referral |
| PQL (product-qualified) | First | Highest | Same day | Rep 1:1, usage-anchored |
| Web deanon on own site | First | High | Same day | Rep 1:1 or light 1:1 |
| Funding round | Third | Medium (relevance-gated) | 7-14 days | Light sequence + rep review |
| Technographic add | Third | Medium | 14 days | Sequence |
| New hire in role | Third | Lower | 30 days | Sequence |
| Third-party company intent | Third | Lowest | monitor | Nurture, never 1:1 |
Sources: Woodpecker reply tiering (26,000 campaigns); champion job-change lift (UserGems 2025); PQL conversion 20 to 30% (vendor-claimed). The rank matters more than the exact number. Route a third-party intent whisper to a rep’s 1:1 queue and you have taught the rep to distrust the whole system.
Route the signal to the play, not to a shell sequence
The signal decides the play, the persona, and whether a human touches it. A champion job-change is a warm congrats and a referral ask, not a 12-email cold sequence. Dropping a strong first-party signal into a generic drip throws away the timing you paid to detect. The published register mocks the tired version of this for a reason: “I noticed you started a new job” no longer differentiates anyone, because every tool now sends it. The play is the referral and the context, not the observation.
The play library is small on purpose. You do not need a play per signal type. You need a handful of shapes, each mapped to a persona and a CTA, so a rep can execute without inventing copy under time pressure:
| Play | Trigger | Persona | CTA |
|---|---|---|---|
| Warm referral | Champion job change | The champion, at the new company | ”Who owns this now on your team?” |
| Usage-anchored | PQL crossed a threshold | The active user + their manager | ”Want the team plan walkthrough?” |
| Context-led cold | Job posting names your category | The hiring manager | ”15 min on how a similar team scaled?” |
| Relevance-gated | Funding, if spend maps to you | The budget owner in the funded area | ”Congrats. Here’s where teams your size invest first.” |
Everything else is a light sequence that floors coverage. The point of the library is that the workflow assigns the play, so no rep stares at a signal wondering what to send.
Speed and decay set the whole economics
Replies on a signal-triggered send decay fast: about 22% at 72 hours, 11% at a week, 7% at two weeks. If your pipeline pulls signals weekly and a rep works them the following Monday, you are sending into a window that has already half-closed. Daily ingest is the floor for anything time-sensitive, and same-day for a pricing-page revisit or a PQL.
View as table
| Point | Value |
|---|---|
| 72 hrs | 22% |
| Day 3 | 18% |
| Day 7 | 11% |
| Day 10 | 9% |
| Day 14 | 7% |
The decay curve is the argument for the whole architecture. A batch that runs Sunday night and lands in a rep’s queue Monday is already 24 hours into the decay. If the rep does not get to it until Wednesday, you are three days deep and the reply rate has dropped from 22% toward 18%, and that is the good case. Anything on a weekly cadence is sending into the flat tail of the curve where a signal is barely better than a cold list.
| Base ICP motion | Signal-triggered | |
|---|---|---|
| Trigger | A static list, enriched once, burned down | A live event that opened a buying window |
| Reply rate | 3 to 7% (segmented) | 10 to 20% |
| Volume shape | Steady, you control it | Lumpy; some weeks 40 accounts, some 200 |
| Copy | Value prop and proof | The event is the opener |
| Cadence | Whenever a rep has capacity | Daily ingest, same-day for hot signals |
| Role | Fills the gaps and floors coverage | Carries the reply rate |
Volume, deliverability, and the ceiling on sends
Signal volume is capped by how many real events fire, so reps need a base motion underneath to fill the light weeks. The blend I run is 60 to 70% signal-driven, the rest steady-state ICP coverage. That keeps the calendar full without forcing a rep to manufacture urgency that is not there.
The other ceiling is deliverability, and it is unforgiving. Plan on 30 to 50 sends per inbox per day, not the 100-plus a vendor will quote you. The spam-complaint hard cap is 0.30%, a number you never want to approach, with 0.10% as the real target. Cross it and the mailbox provider throttles you into the spam folder, at which point your reply rate is zero regardless of how good the signal was. Signal-based outbound wins here almost by accident: because you are sending fewer, more relevant emails to people whose world changed, complaint rates stay low and the whole program stays deliverable. The full architecture is in deliverability, but the one number to hold is the cap.
# Capacity math for a signal motion
target sends/day = 240 (the job-posting example above)
sends per inbox per day = 40 (conservative, keeps complaints under 0.30%)
inboxes needed = 240 / 40 = 6
mailboxes per domain = 3
domains needed = 2
Six inboxes across two secondary domains cover the example week. Because signal volume is lumpy, size the inbox pool for the 200-account weeks, not the average, or the hot weeks silently overflow into a slower cadence and you lose the timing you built the whole system to catch.
- 1
1. Define the signal narrowly
Event type, keyword filters, ICP constraints. A wide filter is noise you will not action. "Posted any engineering role" is noise; "posted a role naming dbt" is a signal.
- 2
2. Wire a live source
UserGems for job change, RB2B for US web deanon, Common Room or Trigify for social, Bombora for company intent, or Clay for job postings. Koala is shut down, so do not build on it.
- 3
3. Ingest daily and dedup
Pull into a Clay table or the warehouse every day, not weekly. Dedup against any account touched in the last 30 days so one account does not get hit three times.
- 4
4. Score by strength and recency
Weight each signal by its rank and multiply by recency. Only accounts above the floor enter a play; everything below it waits or nurtures.
- 5
5. Pick the persona from the signal
A security signal routes to the CISO, not the VP Sales already on file. The signal tells you who cares, so let it choose the contact.
- 6
6. Branch: rep queue or sequence
Tier-1 first-party signals go to a rep for a 1:1 within the window. Weaker signals get a light sequence that floors coverage.
- 7
7. Write outcomes back
Per-signal conversion tells you which sources to keep paying for and which to cut. A source that never converts is a subscription, not a signal.
The scoring step in the middle is where most builds go soft. It is tempting to blend signal strength and account fit into one number, but that hides the thing you need to see. Keep fit and intent separate, the same discipline covered in scoring and routing: a strong signal at a poor-fit account is not the same as a weak signal at a perfect-fit account, and one score cannot tell them apart. Gate on both, do not average them.
The mistakes that quietly kill the program
The whole motion rests on one input being clean: the contact you reach. A signal that fires on the right account at the right moment still dies if the email bounces, so the enrichment has to be verified before the signal ever routes. That is why signal-based outbound sits downstream of enrichment waterfalls: timing turns a clean address into a reply, but only if the address was clean first. Wire the two together, ingest daily, and start with the one signal you can prove. Everything else is patience.
Keep reading
All guides →Enrichment waterfalls
Chain providers so a miss from one becomes a hit from the next, order by marginal recovery instead of hit rate, and pay mostly on verified data. The build, the queries, the credit math.
BuildAI & agentic workflows
The 3% who got revenue from AI SDRs fed their agents proprietary context and fenced what they could say. Here is the guardrail stack, the shadow-mode scoring loop, and the human-in-loop gate that separate the two outcomes.
BuildAPI & webhook integration
Build pipelines that survive retries and rate limits: idempotency keys, backoff with jitter, and HMAC-verified webhooks that dedupe on delivery.