The no-show playbook: how we stopped leads from ghosting. 8 fixes along the lead's path, plus the stack and what it costs.
The no-show playbook: how we stopped leads from ghosting. 8 fixes along the lead's path, plus the stack and what it costs.
Marketing
October 22, 2026
5 minutes

The No-Show Playbook: How We Stopped Leads From Ghosting Sales Calls

Leads were booking calls and never showing up. Here are the 8 fixes we built in one day, from phone validation and calendar gating to SMS reminders and instant lead alerts, plus the full stack, what it costs, and a checklist you can copy.

By Aram Melkoumov, CEO of Crowdlinker

We ran ads to a landing page. People filled in the form, booked a slot on my calendar, and never showed up. No reply to follow-ups either. Each no-show cost ad spend and a blocked hour of prep. We also had no phone number, so there was no way to reach them.

This is how we stopped paying for leads who book a call and then ghost. We built it in one day with tools most teams already pay for, at a few cents per lead.

‍

Fix it along the lead's path

Ghosting has more than one cause: fake contact details, bookings made weeks out, no reminders and slow follow-up. So we added a check at each step a lead goes through, in this order.

‍

1. Ask for a phone number

If someone doesn't show, you need a way to reach them besides email.

  • Add a required phone field to the form.
  • Carry it into the booking step. We pass it to Calendly as a prefilled answer, so the invitee doesn't type it twice and it appears on the meeting.
  • Send it to your CRM as the contact's phone property, not only in a notes field.

Tools: Webflow, HubSpot, Calendly

‍

2. Reject fake contact details at the form

A fake number or a throwaway inbox is the clearest early sign that someone won't show.

  • Phone format: validate in the browser with libphonenumber-js. Junk like 123 or 0000000000 is blocked with a clear message, and valid numbers are cleaned to international format.
  • Phone lookup: when the field loses focus, a small server function asks Twilio Lookup whether the number is valid and what type it is. Invalid numbers are blocked. VoIP numbers are noted in the CRM, not blocked, because plenty of real buyers use Google Voice.
  • Work email only: block Gmail, Yahoo, Outlook, iCloud, Proton and disposable inbox domains with “Please use your work email”.
  • Spam trap: a hidden field bots fill in and people never see. If it has a value, skip the CRM write and the ad conversions.

Tools: libphonenumber-js, Twilio Lookup

‍

3. Only show the calendar to people who fit

Low-fit leads book because the calendar is the next screen. Give them a different next step.

  • We ask one qualifying question (monthly LLM spend). $5K+ and “not sure” see the calendar.
  • Everyone else gets “Thanks. We'll review and email you within 1 business day.” They are still a lead and still count as a conversion for your ad platforms.
  • Tag each lead as qualified or not in your analytics, so you can compare channels on qualified leads instead of raw form fills.

‍

4. Shorten the booking window

Meetings booked two weeks out get forgotten. Meetings booked for tomorrow get attended.

  • Limit booking to 5 business days ahead. We were at 60 days.
  • Keep a minimum notice (we use 4 hours) so you have time to prep and reach out first.

Tools: Calendly

‍

5. Remind people and ask them to confirm

A text gets read. A confirmation request turns a silent booking into a yes or a reschedule.

  • 24 hours before: a text with a reconfirmation link, plus an email with confirm, reschedule and cancel buttons.
  • 1 hour before: a short reminder text.
  • Calendly Workflows handles both on its paid plans. It adds its own mobile number field to the booking page for text reminders.

Tools: Calendly Workflows

‍

6. Respond within minutes

The best way to prevent a no-show is to talk to the person while they are still on your site.

  • The moment someone submits the form, before they book, you get a text and a Slack post with their name, company, phone, email and whether they qualified.
  • You get a second alert when they book, and Calendly texts you too.
  • We send the text with Twilio from a small server function and post to a #leads channel through a Slack incoming webhook.

Tools: Twilio SMS, Slack, Vercel

‍

7. Never lose a lead to your own checks

Every check you add is one more thing that can break.

  • Every check fails open. If the lookup times out (we wait 2.5 seconds), the service is down or the browser blocks the script, the form still submits.
  • Only a clear signal blocks a lead: an invalid number, a personal email or a filled spam trap.
  • Keep secret keys on the server function. A landing page can't hold them safely.

‍

8. Ask for less at the top of the funnel

People ghost commitments they didn't really want. Ask for something smaller first.

  • In cold email, we are testing a reply-only offer (“send me your top AI workloads and I'll send a one-page teardown, no call needed”) against a link to the booking page.
  • Every reply posts to Slack so someone answers fast.
  • A reply stops the sequence for that person and for everyone else at their company.

Tools: Instantly, Apollo

‍

The stack and what it costs

ToolJobCost
WebflowLanding page and form, plus the validation scriptsExisting plan
libphonenumber-jsPhone format check in the browserFree
Twilio LookupNumber validity and line type~1¢ per lead
Twilio SMSInstant lead alert to your phone~1¢ per text
VercelSmall server functions that hold the keysFree tier or existing plan
Slack#leads alerts and reply notificationsExisting plan
CalendlyBooking window, reminders, confirmationExisting paid plan
HubSpotEvery lead, with phone and line type on the recordExisting plan
Instantly + ApolloOutbound that asks for a reply instead of a meetingExisting plans

What we skipped. Twilio can't tell you whether a Canadian number is mobile, landline or VoIP without access to Canada's number portability data. That requires a formal application, a legal attestation and annual fees. For lead screening it isn't worth it, so Canadian numbers get the validity check only.

‍

Copy this checklist

  1. Add a required phone field and pass it into your booking tool and CRM.
  2. Validate phone format in the browser with libphonenumber-js.
  3. Check number validity with a lookup service from a server function, and flag VoIP instead of blocking it.
  4. Block personal and disposable email domains.
  5. Add a hidden spam-trap field.
  6. Show the calendar only to leads who meet your qualifying answer, and email the rest.
  7. Limit bookings to about 5 business days out, with a few hours' minimum notice.
  8. Send a reconfirmation text and email 24 hours before, and a reminder text 1 hour before.
  9. Text and Slack yourself the moment a form is submitted, and again when they book.
  10. Make every check fail open, so a timeout never blocks a real lead.
  11. Test a lower-commitment ask (a reply, a written teardown) against a booking link.

‍

What we don't know yet

We just shipped this, so we don't have before-and-after numbers yet. I'll share them once we do. If you use it, tell me what changed for you.

‍

→ Talk to Crowdlinker about your funnel

Read more
Community posts

GET IN TOUCH
GET IN TOUCH

Want to learn more?

Let’s start collaborating on your most complex business problems, today.