"How long does it take a new SDR to ramp?" usually gets one number: about three months, the median in Bridge Group's 2025 study of 351 B2B companies. That is a useful benchmark. It says nothing about your team, or which part of ramp is slow.
Ramp is not one number. It is a series of firsts: the first reply from someone who owns the problem, the first meeting held with someone who decides, the first month at target. If you log activities in a CRM, you can measure each of those per rep with a few queries.
The tables
Most CRMs export something close to this:
create table rep (
rep_id int primary key,
name text,
start_date date not null
);
create table activity (
activity_id bigint primary key,
rep_id int references rep,
account_id int,
kind text, -- 'email_sent', 'reply', 'meeting_held'
is_decider boolean, -- contact is a decision maker on this account
happened_at timestamptz
);
Days to each first
select
r.name,
r.start_date,
min(a.happened_at::date) filter (where a.kind = 'email_sent') - r.start_date as days_to_first_email,
min(a.happened_at::date) filter (where a.kind = 'reply') - r.start_date as days_to_first_reply,
min(a.happened_at::date) filter (where a.kind = 'meeting_held' and a.is_decider) - r.start_date as days_to_first_decider_meeting
from rep r
left join activity a using (rep_id)
group by r.rep_id, r.name, r.start_date
order by r.start_date desc;
Postgres subtracts two date values as an integer number of days, so each column is a plain day count. A null means the milestone has not happened yet.
Weeks to target
Say the target is 8 meetings held a month. Count meetings per rep per 30-day window since their start, and find the first window at or above target:
with windows as (
select
r.rep_id,
r.name,
(a.happened_at::date - r.start_date) / 30 as month_n, -- 0 = first 30 days
count(*) as meetings
from rep r
join activity a using (rep_id)
where a.kind = 'meeting_held'
group by r.rep_id, r.name, month_n
)
select name, min(month_n) + 1 as first_month_at_target
from windows
where meetings >= 8
group by name;
Reading the result
Compare the gaps, not just the totals:
- Long start to first email: onboarding is too long, or the tools are not ready.
- Long first email to first reply: the accounts are wrong, or the message is generic. New reps often start on a database export and conclude the market does not reply, when the list was the problem.
- Long first reply to first decider meeting: the rep reaches the wrong person in the account.
Put the per-rep numbers next to each other and the slow step usually shows up on its own.
I wrote up the week-by-week onboarding plan these milestones come from, with what to teach in weeks one and two and when to start outreach, here: SDR onboarding plan: a 90-day template.
I'm the founder of SalesOne, which researches and qualifies B2B accounts before anyone reaches out.
Top comments (0)