Skip to main content

They Asked for a Demo, Saw Your Open Times, and Never Booked. Now Someone Notices

Β· 11 min read
Sunder Iyer
Founder, marketbetter.ai
Share this article

There's a lead-leak in B2B inbound that almost nobody instruments: the person who fills out your demo form, passes qualification, gets shown a live calendar with open times β€” and closes the tab.

Your CRM says a lead was created. Your form analytics say the form converted. Marketing counts it. And then nothing happens, because every system involved considers its job done. The one thing that didn't happen is the only thing that matters: no meeting exists.

In late October, one of our customers asked us for exactly this: follow up with people who fill out our demo form but don't book a meeting, using what we know to personalize the outreach. We shipped it over the following week, and it's live now as an opt-in for every workspace running our scheduler. This post is what it does β€” and, just as deliberately, what it refuses to do.

The gap nobody owns​

Walk through what your inbound stack actually does when a hand-raiser stalls.

The form vendor's job ends at submission. The enrichment vendor's job ends at the appended record. The scheduler's job ends when it renders available times. The CRM's job ends when the lead exists. Each tool completed its step, so no tool raises its hand about the step that never happened.

A rep might notice β€” if the lead routed to them, if the alert didn't scroll away, if they manually cross-check their calendar against their lead list. That's three ifs for a lead who already told you they want to talk. We wrote about the economics of fast inbound response in the inbound triage tier system, and this is the same math from the other side: the cost of silence is highest on the people closest to a meeting.

So the obvious question isn't whether to follow up with these people. It's why doing so has required a rep's memory.

What ships: a sweep that watches for the gap​

With the new setting on, MarketBetter checks every 15 minutes for qualified demo-form submissions that never turned into a booked meeting.

It doesn't pounce immediately. There's a grace window β€” 24 hours by default, configurable β€” because someone who opened the scheduler this morning and plans to book after their 2pm is still booking, not ignoring you. Chasing them at hour two reads as desperate and trains prospects to expect noise.

There's also a stop-after window β€” 72 hours by default, also configurable. A submission from three weeks ago is history, not a lead. Following up on it wouldn't be persistence; it would be an archaeology project with a reply-to address.

When a submission sits inside that window β€” qualified, shown times, still no meeting β€” the system writes a follow-up draft and places it in the task list of the rep the scheduler originally routed the lead to. If that rep has since left, it falls back to whoever the workspace assigns leads to. The lead never goes to nobody.

Where demo-form leads leak, and where the follow-up sweep catches them

The draft tells the truth about what happened​

Most "follow-up automation" fails at the copy. The system knows this person asked for a demo, but the email it generates is a cold-open pitch β€” because the model was handed a contact record and told to sell. Sending a stranger-pitch to somebody who already raised their hand is worse than sending nothing. It tells them your company doesn't know what's happening inside its own funnel.

Our drafts are grounded in three things:

  1. The complete original submission. Not a ten-field summary β€” everything they typed and selected, including structured and multi-select answers. If they described their problem in the message box, the draft engages with that problem.
  2. Research on their company, deliberately restricted to the domain of the email address they submitted with. The research can't wander off to an unrelated website and import someone else's business into the email.
  3. Prior email history with that person, so the draft never contradicts or repeats a conversation a rep already had.

And the framing is honest about the situation: you asked for a demo, you were shown available times, you didn't pick one β€” here's what you told us, and here's a direct way to grab a time. It's a four-email sequence, written in order, with each email aware of the finalized emails before it, so email three never re-introduces the sender like email one. We apply the same grounded-sequence discipline in Loops, our nurture agent β€” this brings it to the fastest-burning segment of inbound.

Four things it refuses to do​

The interesting engineering in a feature like this isn't the follow-up. It's the restraint. Four refusals are built in, and they're the reason we're comfortable shipping it.

It never sends on its own. Every draft waits in the rep's task list for a human Send click. That's not a temporary caution flag β€” it's the same human-in-the-loop boundary we hold across the product. The customer request that started this was phrased "the agent follows up," which could be read as autonomous sending. We chose to read it as "the agent does the work and a human owns the send," because an automated email to a stalled hand-raiser is exactly the message you most want a human to glance at first.

It never chases someone who was never shown times. If a lead qualified but no calendar was available to offer β€” the routed owner had no connected calendar β€” then "you saw our open times and didn't pick one" would be a lie. Those leads are excluded. So are leads who didn't pass qualification: a person you told "we're not a fit" is not an invitation to follow up.

It never tells someone with a meeting to book one. This is the refusal that took the most care. Internal "meeting booked" flags are optimistic bookkeeping β€” a prospect can close the scheduler and then book through a reply, a forwarded link, a colleague. So the system treats the calendar itself as the record: before any follow-up is created, it verifies against the actual connected calendar whether a meeting with that person exists. And when that answer can't be trusted β€” the rep left, the calendar disconnected β€” it doesn't guess. It withholds the follow-up entirely. The same fail-closed posture drove our champion job-change rework: when the data can't prove the premise of the email, the email doesn't exist.

It does nothing until you turn it on. The feature ships off for every workspace. When you do enable it, any backlog inside your stop-after window becomes eligible gradually β€” drawn down in small batches every 15 minutes, not dumped into your reps' task lists in one avalanche on day one.

If they book mid-sequence, everything stops β€” twice​

A prospect can book after the follow-up sequence starts. That's the good outcome, and it's also the moment automated follow-up usually embarrasses you β€” email three arrives the morning after they booked.

Two independent layers prevent that. The moment a booking is saved through the scheduler, the remaining sequence for that exact person is cancelled β€” queued emails included. And separately, every email re-checks for a booked meeting at send time, which closes the gap where a booking exists but hasn't synced everywhere yet. Belt, then suspenders, because "stop emailing people who already did the thing" is the one guarantee this feature cannot miss.

One lead, one thread β€” never a second task​

If your workspace also alerts reps at submission time, a stalled lead would already have a task with drafts in it. A naive implementation would add a second task for the same human β€” and now two threads, possibly two reps, are chasing one person.

Instead, the system re-angles the existing task: same task, same owner, drafts reframed from "thanks for your submission" to "help them pick a time." And it only does that if the task is genuinely untouched β€” nothing sent to that person, no rep edits to the drafts, no enrollment anywhere in the workspace. Any sign a human or the AI SDR already engaged, and the sweep stands down. Automation that overwrites a rep's work to insert its own isn't assistance; it's a race condition with a quota.

The next layer: forms they never finished​

Booking is one gap. There's an earlier one: the person who typed a valid email into your demo form and never hit submit.

That recovery layer is built and behind its own opt-in (off by default, on top of the follow-up setting). When someone enters a legitimate work email and then goes silent for 30 minutes without submitting, the same draft pipeline can produce a recovery email. We built it with a rule we'd want every vendor to adopt: fields from an unsubmitted form are confidential background, not quotable material.

The draft never quotes what they typed, never claims they submitted anything, and never asserts interest they didn't express β€” because they didn't express it; they walked away. Unsubmitted text informs relevance, not copy. And right before any recovery email sends, the system re-checks the capture: if they since submitted the form, withdrew, or corrected their email, the send is withheld.

Partial captures also skip the data-vendor reflex. An email alone doesn't trigger an identity purchase, a guessed first name scraped from the address, or a model-invented employer. If all we verifiably have is an email on a business domain, the draft is written knowing exactly that much. This pairs naturally with the chatbot's form-filler recognition, which attacks the same funnel from the chat side β€” and with the same philosophy: verified facts get used, unverified ones get withheld.

Where it lives, and what to set​

The control is in the scheduler settings, under Rules and Routing: "Follow up when they do not book." A toggle, a wait-before-following-up window, and a stop-after window. It runs only while the scheduler itself is on, and the settings copy says exactly what you get: a personalized draft in the routed rep's task list, nothing sent automatically.

Two suggestions from watching early usage:

  • Keep the default 24-hour grace unless your funnel says otherwise. Same-day double-touches on hand-raisers feel like pressure. Next-day reads like attentiveness.
  • Resist stretching the stop-after much past a few days. The whole premise β€” "you were just looking at our calendar" β€” has a half-life. We've written about signal decay in outbound; it's steeper on inbound, because the prospect remembers exactly when they visited you.

Why this is the right shape for agentic follow-up​

There's a version of this feature every vendor could demo: an agent that autonomously emails everyone who didn't book, immediately, forever. It would look spectacular for two weeks and then quietly torch the warmest segment of your funnel.

The shape we shipped is less cinematic: a sweep that waits a polite interval, verifies its premise against the calendar before writing a word, grounds the draft in what the prospect actually said, refuses to double-thread, stops the instant a meeting exists, and hands the send decision to a human. Every one of those constraints exists because the person on the other end already trusted you with their hand-raise once. The follow-up's job is to be worth that β€” signal-based selling applied to the signal you paid the most to generate.

If your demo form converts and your calendar stays empty, the leak is in between. Book a demo β€” we'll show you the follow-up the system would have drafted for your last stalled lead. And yes, if you fill out the form and don't pick a time, you now know exactly what happens next.

Share this article