Skip to content
LucidMetric
All work
Workflow Automation · CRM · Payments

Every airport run quoted, invoiced and dispatched without touching a keyboard twice

New Milford Car Service

Airport car service · Litchfield County, Connecticut

nmcarservice.com

New Milford Car Service drives Connecticut passengers to JFK, LaGuardia, Newark, Bradley, Westchester and Tweed. Demand was never the problem — the handling was. Every enquiry meant retyping the same trip into an email, a Square invoice and a calendar entry, then chasing the customer for an answer. We replaced that with a single chain: the customer fills one form, dispatch types one price, and the quote, the invoice, the driver's calendar and the follow-up all fire on their own.

~670

Quote requests through the system

10 months

Live and running in production

5 Zaps

80+ automated steps end to end

6 airports

Routed on their own branching logic

~12 min

Manual handling removed per request

Estimate

~130 hrs

Dispatch time given back

Estimate

Request volume, runtime and airport coverage are counted from the live Airtable base (requests #2–#676, Nov 2025 – Sep 2026). Time figures are our own estimate: roughly 12 minutes of reading, re-keying, invoicing and calendar entry removed per request, multiplied across that volume. They are not a client-audited number.

Before

  • Quote requests arrived as raw email and had to be re-read and re-keyed by hand
  • Prices were sent by text or email with no record of what was quoted, or when
  • Customers were created twice in Square because nothing checked for duplicates
  • Calendar entries were typed manually — often missing the flight number or return leg
  • Quotes that went quiet were never chased, and declined quotes were never explained

After

  • One website form branches on airport vs. address and won't submit without flight details
  • Dispatch sees only the requests that still need pricing, in one Airtable view
  • A branded quote goes out by email and SMS the moment a price is entered
  • Accepting a quote creates the Square customer, order and invoice with no retyping
  • Both legs of a round trip land in the calendar with one-tap Waze links for the driver
  • Silent quotes get chased daily and expire themselves; declined quotes ask why
End to end

Follow one trip from request to driveway

Eight stops. The passenger touches two of them; dispatch touches one. Everything between runs on its own.

  1. 1

    Stop 1 · Request

    A passenger asks for a price

    The trip starts on nmcarservice.com, where one form handles both airport runs and point-to-point trips.

    The form asks a single branching question — is one of your locations an airport? — and reveals only the fields that matter for that answer. Airport trips get an airport picker and require the airline and flight number; everything else gets a plain pickup and drop-off address. Round trips open a second date, time and return flight.

    The airline and flight number are required fields. They were optional at launch, and the calendar entries that reached drivers without them were the first thing we had to fix.

  2. 2

    Stop 2 · Capture

    Zapier files it and wakes up dispatch

    Submitting the form triggers the first Zap, which decides what kind of trip this is before it writes anything down.

    The Zap splits three ways on the airport question — no airport, airport at pickup, airport at drop-off — because each shape needs different fields stitched together. Each path creates the Airtable record, sends dispatch an SMS, reads the new record back to capture its ID, and fires a second confirmation. The record ID becomes the key that every later step in the chain hangs off.

  3. 3

    Stop 3 · Price

    Dispatch types one number

    This is the only human step in the chain, and the interface is built so it takes under a minute.

    An Airtable interface shows only the requests still awaiting a price — everything already quoted, accepted or declined moves to its own tab. The record opens with pickup, drop-off, passenger count, flight details and any customer note grouped for scanning. Dispatch enters the price and driver split, adds an optional comment, and presses Send Quote.

    Reordering this screen so unpriced requests surface first — instead of one long mixed list — was the single change that made the system usable day to day.

  4. 4

    Stop 4 · Quote

    The quote lands as email and SMS

    Within seconds the passenger has a branded quote in their inbox and a text on their phone.

    The Send Quote button posts to a webhook that pulls the full record and builds an HTML email: the route, the price, the trust badges, and two buttons — accept or decline. A personalised video is generated from a template and embedded as the hero, so the quote arrives as something the passenger actually opens. If the video render fails, the Zap falls down an error branch and the quote still goes out by email and SMS rather than silently dying.

  5. 5

    Stop 5 · Decision

    Accept or decline, in one tap

    Both buttons land on a real page on the company's own site, not a raw automation endpoint.

    Each quote carries two unique links stamped with the record ID. Tapping either one opens a branded confirmation page on nmcarservice.com and flips the record's status in Airtable — approved or denied — with no login and no reply-to-this-email step. That status is the switch the rest of the chain watches.

    The first version dropped customers on a bare automation URL. One confused passenger was enough — we moved both outcomes onto the company's own domain the same day.

  6. 6

    Stop 6 · Invoice

    Square builds the invoice itself

    An accepted quote becomes a real customer record, an order and a sent invoice without anyone opening Square.

    The approval webhook looks the record up, formats the dates, creates the Google contact and the Square customer, then branches on round trip versus one way — a return leg needs its own order lines and its own date maths. Square issues the invoice, and the Airtable record is updated with the invoice reference so quote and payment stay joined up.

    Only invoices raised through this chain are tracked. Anything typed straight into Square bypasses Airtable — a boundary worth naming out loud rather than discovering later.

  7. 7

    Stop 7 · Dispatch

    The driver's calendar fills in

    The trip reaches the driver as a calendar event they can navigate from, not a paragraph they have to decode.

    This is the widest Zap in the system: it branches on new versus recurring customer, on which end of the trip is the airport, and on which airport the return flies into — because a passenger who leaves from JFK and comes back into Bradley needs two different events. Each event carries the flight number, the passenger count and both addresses as one-tap Waze deep links.

    Google Calendar allows exactly one location field. Pickup goes there so the phone's default navigation picks it up; drop-off rides in the body as a Waze link.

  8. 8

    Stop 8 · Recover

    Nothing is left hanging

    The quotes that don't convert are worth as much as the ones that do — so the system asks about them.

    A declined quote triggers an email and SMS asking why, pointing at a short Airtable form with a set of reasons and a free-text option. Quotes that go quiet are chased daily until the pickup date, then expire themselves rather than sitting in the queue forever. Every reason lands back in the same base, so pricing decisions are made against recorded feedback instead of memory.

What ten months of live traffic taught us

The one manual step has to be the fastest screen they own

Pricing can't be automated — it depends on tolls, time of day and vehicle. So the whole design goal became making that one decision take under a minute: filter the queue to unpriced requests only, group the fields for scanning, and put the send action on the same screen.

Every dead end needs a branch, not an error

Video render fails, a return airport differs from the departure airport, a customer books six months ahead and won't pay yet. Each of those started as a support message and ended as an explicit path in the Zap. Real traffic finds the cases a spec never will.

Automation has edges — say where they are

Invoices raised by hand in Square never reach the calendar, because the chain keys off Airtable. Naming that boundary clearly, and giving dispatch a form to route those bookings through instead, prevented far more confusion than trying to catch every path would have.

Ship into live traffic, then keep tightening

This system went live early and was corrected in the open — required flight fields, reordered views, Waze instead of Google Maps, calendar events on acceptance rather than payment. Ten months of small corrections, each one triggered by something a real passenger did.

Running the same work by hand?

If your quotes, invoices and scheduling still pass through a keyboard three times, the same chain can be built for your business.

Services behind this build