Phone validation that spots the fakes.

Send the phone number from a form or sign-up and get back whether it's valid for its country, a known fake, and whether it's a mobile, landline, VoIP, toll-free, or premium-rate line. US and Canadian numbers also get their carrier. GoodInbound Lead Screen runs the same check on every submission with a phone field.

200+ countriesCarrier for US and CanadaFake and 555 numbers flagged

One request, every check

POST /api/v1/leadscreen/checks

curl https://goodinbound.com/api/v1/leadscreen/checks \
  -H "Authorization: Bearer $GOODINBOUND_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"fields": {"phone": "+1 415 555 0132"}}'

{
  "action": "allow",
  "checks": {
    "identity": { "result": "warn", "summary": "Fake phone number" }
  },
  "phone": {
    "number": "+14155550132",
    "valid": true,
    "fake": true,
    "country": "US",
    "line_type": "mobile_or_landline",
    "carrier": null,
    "source": "numbering_plan"
  }
}

Valid, fake, or just mistyped.

Every number is checked against its country's numbering plan, so you know it can exist before anyone dials it. Numbers no real person has, like one digit repeated, straight runs, and the ranges set aside for film and TV, are flagged as fake.

Facts you can branch on

Phone facts next to the identity result

curl https://goodinbound.com/api/v1/leadscreen/checks \
  -H "Authorization: Bearer $GOODINBOUND_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"fields": {"phone": "+1 415 555 0132"}}'

{
  "action": "allow",
  "checks": {
    "identity": { "result": "warn", "summary": "Fake phone number" }
  },
  "phone": {
    "number": "+14155550132",
    "valid": true,
    "fake": true,
    "country": "US",
    "line_type": "mobile_or_landline",
    "carrier": null,
    "source": "numbering_plan"
  }
}

200+ countries

Numbers typed without a country code are read using the visitor's location.

Known fake patterns

555 numbers, 1234567890, repeated digits, and Ofcom's drama ranges in the UK.

Country mismatch

A number from a different country than the visitor's network is flagged for a second look.

Mobile, landline, or VoIP.

Most countries' numbering plans say which kind of line a number is. North American numbers don't, so US and Canadian numbers get the carrier routing record instead: the carrier that holds the number today, and its line type, ported numbers included.

From an AI agent

check_contact in the MCP server

// MCP tool: check_contact
{
  "email": "sam@northwind.io",
  "phone": "+44 56 0123 4567",
  "country": "GB"
}

// Result
{
  "result": "warn",
  "summary": "VoIP phone number",
  "email": { "valid": true, "work": true, "mx": true },
  "phone": { "valid": true, "line_type": "voip", "country": "GB" }
}

Carrier record

US and Canadian numbers return the carrier holding them and whether that's mobile, landline, or VoIP.

VoIP as a flag

Business phone systems are VoIP too, so VoIP warns on Balanced and fails only on Strict.

Premium rate

Premium-rate numbers are flagged, because real leads don't leave them.

Built for forms, fast enough to use there.

Local checks answer in milliseconds, and carrier records are cached for 30 days, so repeat numbers are instant. The check runs only after behavior and network checks pass, so bots never cost you a carrier lookup.

Check on blur

The Lead Screen script on any form

<script src="https://cdn.goodinbound.com/leadscreen.js"
  data-key="pk_live_..." data-checks="true" async></script>

<script>
  // Each checked email field gets data-leadscreen-check
  // ("allow", "screen_out", or "block") and an event.
  document.addEventListener("leadscreen:check", (event) => {
    console.log(event.detail.email);
  });
</script>

Under 500 ms

Typical checks answer well under half a second. A first carrier lookup for a number can take a little longer.

Email in the same call

Send email and phone fields together and get both sets of facts back.

On every submission

Lead Screen checks the phone field on hosted forms and any form with the script.

Google Calendar sync

Block busy time automatically and surface live availability.

Buffer times

Add breathing room before and after meetings without manual cleanup.

Timezone aware

Show the right local slot for every visitor without confusion.

Confirmation emails

Send booking details instantly once a slot is locked in.

Branded scheduling links and widgets.

Share booking pages and widgets that stay in sync with your calendar, handle timezones correctly, and confirm every slot the moment it is reserved.

Book a Consultation
30 min · Google Meet
March 2026
Su
Mo
Tu
We
Th
Fr
Sa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
10:00 AM
2:00 PM
4:00 PM
Your Details
Tue, Mar 24 at 2:00 PM · 30 min
Name
Email
Notes
Optional...
Booking confirmed!
Tue, Mar 24 at 2:00 PM · 30 min
Confirmation sent to sarah@company.com
Next

Conditional logic

Reveal the next question from what the visitor already told you.

File uploads

Collect briefs, assets, and supporting documents in the same flow.

Multi-step

Break longer forms into short screens that are easier to finish.

Validation

Catch missing or malformed inputs before the response is stored.

Build forms that adapt.

Create multi-step flows that branch based on answers, collect files, and validate the right fields before anything gets submitted.

Contact Info
Tell us how to reach you
Full Name
Email Address
Company
Company Size
Conditional
50–200
Project Details
Tell us about your project
Budget Range
Select...
Timeline
Select...
Additional Notes
Optional...
Response submitted!
We'll be in touch within 24 hours.
Next

Auto-tagging

Apply tags from answers, event type, or workflow branch automatically.

Activity timeline

See submissions, bookings, and follow-up actions in one stream.

CSV import

Bring existing contacts in without rebuilding your data manually.

Smart search

Filter people by tag, source, or recent activity in seconds.

Keep every contact organized.

Turn every form response and booking into a contact record with tags, history, and enough context for your team to act immediately.

Contact Details
SJ
Sarah Johnson
sarah@company.com
VIP
Active Lead
Activity
Booked consultation
2h ago
Submitted contact form
1d ago

Email triggers

Send confirmations, reminders, and follow-ups from one event.

Tag automation

Segment leads automatically as new activity comes in.

Webhooks

Push bookings and submissions into the tools you already use.

Conditional logic

Branch actions based on answers, timing, or event details.

Automate the busywork.

Trigger follow-ups from submissions and bookings, branch logic based on context, and keep repetitive post-submit tasks off your plate.

Workflow Editor
Form Submitted
Trigger
Send confirmation email
via Resend
Add tag 'Lead'
auto-tag
Wait 2 days
delay step
Send follow-up email
via Resend

Check availability

Query live scheduling windows before you show the next step.

Create bookings

Reserve slots directly from agents or custom application flows.

Submit forms

Post structured responses into your workflows without the widget.

Manage contacts

Read and update people records while your agents operate.

Let your agents handle everything.

Expose the same scheduling, forms, and contact workflows through an API so custom apps and AI agents can do the work programmatically.

Terminal
$curlGET/api/v1/availability/acme
...
fetching
200 OK
{
  "slots": [
    { "start": "2026-03-24T14:00" },
    { "start": "2026-03-24T15:00" }
  ]
}
$curlPOST/api/v1/bookings
201 Created
{
  "id": "bk_a1b2c3d4",
  "status": "confirmed"
}

Up and running in minutes

01

Create your project

Pick a name and slug — it becomes your namespace for forms, event types, and contacts.

02

Build forms & event types

Drag in fields, set availability rules, and brand everything to match your site.

03

Embed & go live

Paste one script tag or share your hosted link. Submissions and bookings flow in instantly.

GoodInbound hosted booking page with date and time slot pickerGoodInbound form builder editing a multi-step quote formGoodInbound workflow templates triggered by forms and bookingsGoodInbound contacts list inside the dashboard
Hosted booking pages
Embeds anywhere — WordPress, Webflow & plain HTML

Free for almost every use case

Unlimited projects on every plan. Pro adds advanced screening, enrichment, and analytics, with extra seats, contacts, and screened submissions when you grow.

MonthlyAnnual 2 months free

Free

Free, spam-filtered contact forms with notifications and workflows.

$0/month

Included features:

  • 500 screened submissions / month
  • 500 contacts
  • 250 workflow runs / month
  • 1 seat
  • Basic screening
  • Unlimited projects, forms, and booking pages
  • Custom CSS and branding removal
  • REST API and MCP access
  • Contact enrichment
  • Analytics

Pro

Advanced spam screening and bigger limits.

$29/month

Everything in Free, plus:

  • 2,500 screened submissions / month
  • 5,000 contacts
  • 5,000 workflow runs / month
  • 3 seats
  • Advanced screening
  • Contact enrichment
  • Analytics with 12-month history
  • Extra seats at $19/seat/mo
  • +3,000 contacts for $30/mo
  • +3,000, 10,000, 25,000 screened submissions for $30, $90, $200/mo
  • +10,000, 30,000, 50,000 analyzed ad visits for $120, $300, $450/mo

Enterprise

For headless volume, security reviews, and custom scale.

Custom

Everything in Pro, plus:

  • Volume pricing
  • SSO and SCIM
  • GDPR DPA and security review
  • EU data residency
  • Custom data retention
  • 99.9% uptime SLA
  • Priority support
  • Invoice billing
  • Onboarding and custom implementations

Frequently asked questions

The number in international format, whether it's valid for its country, whether it matches a known fake pattern, its country, its line type (mobile, landline, VoIP, toll-free, or premium rate), and for US and Canadian numbers the carrier. The identity result says pass, warn, or fail, with a reason.

Yes, through the carrier routing record, which says what kind of carrier holds the number today. The North American numbering plan alone can't tell them apart, so without the carrier record a US number reads as mobile or landline.

No. It checks the numbering plan and, for US and Canadian numbers, the carrier routing record. It doesn't send a message or query the live network, so a valid number can still be disconnected.

Not always. Business phone systems like RingCentral and Zoom Phone are VoIP, and so are free apps like Google Voice. That's why VoIP is a warning on Balanced and fails only on Strict, and you can turn it off.

Local checks are free on every plan and don't count toward your monthly screened submissions. Carrier lookups run on screened submissions and on server calls with your secret key, up to 500 a day per project.

Take your forms & scheduling to the next level

Create your free account and launch your first form or booking page in minutes. No credit card required.

View documentation
yoursite.com
You write this
<div id="booking"></div>
<script src=
  "https://cdn.goodinbound.com/widgets/booking.js">
</script>
<script>
  GoodInbound.booking({
    projectSlug: "acme",
    eventTypeSlug: "discovery-call",
    container: "#booking"
  });
</script>
Visitors see this
Discovery call
30 min · Google Meet
Mon
16
Tue
17
Wed
18
Thu
19
Fri
20
10:00 AM
11:30 AM
2:00 PM
4:30 PM
Confirm booking