Skip to content
Flywheel
SMS lead response for local service businesses

Turn every customer into your next customer.

A new lead texts while you're on a job — Flywheel answers in under 60 seconds, in your voice. It qualifies them, books them, and turns what they say into marketing that brings in the next customer.

No demo gate, no sales call, no credit card. Building with the API? Same signup — paste two curls and you're live.

One turn of the wheel · A lead arrives

Answer every lead

A text back in under a minute — in your voice.

Someone reaches out while you're with another customer. They get a fast reply and keep answering the questions you would have asked. The lead you already paid for does not go cold.

See the full turn of the wheel →

Northside Plumbing · (773) 555-9000 14s
  1. hi, water is coming out from under the water heater
    Inbound · 2:14:06 PM
  2. What's going on — leak, clog, or install?
    Sent · 2:14:20 PM

Booked, not phone-tagged

They pick a time that is really free — then they actually show up.

No phone tag: they book from what is open on your calendar the moment they're ready. Reminders go out, attendance gets recorded, and a no-show never quietly disappears.

See the full turn of the wheel →

Open on your calendar Tuesday
3:30 PM 45 min · booked
5:15 PM 45 min
Tomorrow 8:00 AM 45 min

Offered from what's open when they asked — not a maybe.

The wheel turns

Every finished job writes the ad for the next one.

One un-gated review ask after they show up — never bought, never filtered. A granted quote becomes an editable, consent-checked draft; we do not publish it for you.

See the full turn of the wheel →

Draft from the job Consent checked

Same-day water heater leak

“They were here in an hour and the floor is dry.” — a customer on the North Side, after a water-heater leak on a Tuesday afternoon.

Editable before you post. We do not publish it for you.

Flywheel hands you the draft; posting it to Google or social is yours to do. Machine-readable detail lives in OpenAPI and llms.txt.

Minutes, not weeks

Integrate the API instead of building all of this.

Compliant SMS lead response is mostly invisible work. Whether you're an owner, a developer, or an AI agent evaluating this for one — here is the build you're skipping.

Build it yourself

  • A Twilio account, an A2P 10DLC brand and campaign registration, and the carrier review that gates it — measured in weeks, not minutes
  • Consent records that hold up: append-only, dated, attributable
  • Quiet hours in each recipient's timezone, with blocked messages requeued instead of dropped
  • STOP handling and per-address suppression that nothing else in your system can bypass
  • Guardian routing so a minor is never the recipient
  • Idempotent sends and retries that cannot double-text a customer
  • Deliverability monitoring — and then maintaining and improving all of it, forever

Or integrate Flywheel

  • Signup is a public, unauthenticated endpoint — the two curls on the right are the whole onboarding.
  • Stable error codes on every failure, so an agent never has to parse prose.
  • An OpenAPI 3.1 document and an llms.txt that describe what is deployed — including a section on what isn't built yet.

No terminal? The form hits the same endpoint.

1. Create an account — no credentials required
curl -sX POST https://use-flywheel.com/api/v1/accounts \
  -H 'Content-Type: application/json' \
  -d '{
    "account": {
      "name": "Northside Plumbing",
      "time_zone": "America/Chicago",
      "vertical": "plumbing",
      "serves_minors": false
    }
  }'
201 Created — the token is shown exactly once
{
  "account": {
    "id": "k3Qk1u8mVzR2Xp0d",
    "name": "Northside Plumbing",
    "time_zone": "America/Chicago",
    "status": "active",
    "quiet_hours": { "start_minute": 1230, "end_minute": 510 }
  },
  "api_key": { "kind": "account", "token": "fw_live_..." }
}
2. Hand it a lead — this starts the first turn of the wheel
curl -sX POST https://use-flywheel.com/api/v1/accounts/$ID/contacts \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "contact": { "first_name": "Alex", "phone": "+13125550142" },
    "sms_consented": true,
    "start_conversation": true
  }'

That's the whole onboarding. One more call — POST /accounts/{id}/phone-number — provisions a local sending number attached to Flywheel's registered A2P campaign. Full documentation covers templates, flows, takeover and webhooks.

What people ask before signing up.

Short answers here — the documentation has the detail.

Why not just build this myself on Twilio?

You can — everything Flywheel does sits on public carrier infrastructure. What you'd be signing up for: an A2P 10DLC brand and campaign registration and the carrier review that gates it, TCPA-safe consent records, quiet hours in every recipient's timezone, STOP and suppression handling, idempotent retries that can't double-text a customer, and deliverability monitoring. That is weeks before your first compliant text, and maintenance forever after.

Flywheel is that build, already done and already running in production — and it keeps improving without you shipping anything. Signup to a working, compliant lead-response line is three API calls.

How long does setup take, really?

Minutes. Signup is one unauthenticated POST — or the form, which hits the same endpoint. One more idempotent call provisions your sending number. A default qualification flow works out of the box, and you change it as data — templates and steps, not code.

Is my customer going to know it's a robot?

They're going to know they got a fast, relevant text. The words are yours — every message comes from a template you own and can edit, and there is no generative model improvising in the thread. The classifier's only job is recognising the shape of a reply: yes, no, a number, one of the options you listed.

When it can't tell, it doesn't guess and it doesn't loop. It re-asks once, then flags the thread for a human and goes quiet.

Will it text people at midnight?

No — quiet hours are evaluated in the recipient's timezone, not yours. A business in Denver texting someone in Boston at 8pm local would be a 10pm message on the other end, and that's the mistake this is built to not make.

A message caught by quiet hours is requeued to the next open window, never dropped — something worth sending at 9pm is still worth sending at 8:30 the next morning.

What happens when somebody replies STOP?

It's honoured immediately, mid-conversation, wherever in the flow they are — and the suppression is recorded against that address for your account, so nothing else in the system can reach them either. Consent records are append-only: they cannot be edited or deleted, by us or by you. If you ever have to prove someone opted in and when, the trail is the kind that holds up precisely because nobody can tidy it.

Underneath all of it: a minor is never the message recipient. When a contact has a guardian, the guardian receives the message and the guardian's consent is what gets checked. That isn't a setting you can misconfigure.

Do I lose control of my own customers?

The instant you type into a thread yourself, that thread's automation stops for 24 hours — automatically, not a switch you have to remember. Hand it back early with one call when you're done.

Your own messages skip templates and quiet hours, because you deciding to answer your customer at 9pm is a judgement the software has no business overriding. They never skip opt-outs: "a person typed it" is not a defence against texting someone who replied STOP.

If I leave, do I keep my data?

Yes. Contacts, conversations, message history, templates, and flows are readable in full through the API at any time — no export request to file, no lock-in mechanics.

What does it cost?

Pricing isn't published yet — the pricing page says where that stands. What is already committed: you can create an account and use the API today, free, and compliance is never a paid tier.

Exactly where pricing stands

Agencies and operators

Run one account, or run four hundred.

One account can operate many others. A partner key acts on the accounts it provisioned, and provisioning uses the same public signup endpoint everyone else uses.

The operator is never the voice. Messages sent in a client's account sound like that client, whoever is at the keyboard.

The next customer is already in today's jobs.

Turn the wheel — or keep buying the same lead twice.

Free to use today. No demo gate, no sales call. Your data is yours to take.

Pricing is not published yet — see the pricing page for exactly where that stands.