Most sequences in HubSpot run the cadence the original author copied from a template three years ago. Day 1, day 3, day 5, day 8 — never tested, never tuned, identical for an SMB SaaS buyer and a hospital procurement lead. Reply rates suffer and reps blame the list. The fix is calibrating delays per audience and per step, not per template.
Why default delays are wrong
A 2-day delay between email one and email two means your prospect gets the follow-up before they finished triaging the first. A 7-day delay means they forgot you exist. Neither lands. The right delay is the median time-to-reply for your responding prospects, plus one day. Pull that from sent records, not from a Reddit post.
Pull the numbers from your own portal
Filter: Sequence enrollment date last 90 days
Filter: Reply received = true
Calculate: median(reply_received_at - email_sent_at) per step
Output: median delay between original send and prospect reply
Set the next step’s delay just past that median. If your responders typically reply 3.5 days after step one, schedule step two at day 5. You catch the late deciders without crowding the early ones.
Mix channels with intent
A 5-touch all-email sequence reads like a bot. Insert a manual call task and a LinkedIn step at calibrated delays:
Day 0 - Email 1 (intro)
Day 2 - LinkedIn connection note
Day 5 - Email 2 (proof)
Day 7 - Manual call task (15 min window)
Day 12 - Email 3 (breakup)
The manual task forces a rep decision and the LinkedIn step warms the inbox. Reply rate lifts measurably when the channel mix breaks the pattern.
Time-of-day matters more than day-of-week
HubSpot lets you set a send window per step. Use it. A 6 a.m. sender wins inbox order against the 9 a.m. flood. For executive personas, schedule between 6:30 and 7:15 a.m. local. For ops personas, 1:30 p.m. after the lunch slump beats 9 a.m.
// Delay block in a custom code action
const sendHourLocal = 6.5; // 6:30 AM
const tz = await getContactTimezone(contactId);
const nextSend = computeNextWindow(sendHourLocal, tz);
return { outputFields: { sendAtIso: nextSend.toISOString() } };
Stop on signal, not just on reply
Default sequences exit on reply or meeting booked. Add exits on opportunity created, opt-out, hard bounce, and any workflow that flags do-not-contact. Stale enrollments still send — audit weekly and unenroll anyone in a pipeline stage past discovery.
Per-step performance, not per-sequence
The sequence-level reply rate hides which step is dead weight. Build a custom report grouped by step number with reply-per-sent and meeting-per-sent. Cut any step under half the sequence average. A 5-step sequence with one low performer almost always beats the 6-step original.
What to do this week
Pick your top three sequences by enrollment volume, pull median reply latency per step, and adjust delays to match. Add one channel switch where there was none and audit exit triggers before you push the changes live.