Work snippetTwilio voice + SMS

Twilio missed-call text-back and voice intake that creates a ServiceM8 or Jobber job

How I would approach missed calls for a 16-tech HVAC and plumbing business: a Twilio number that texts back within a minute, a short voice menu that takes the job details, and a ServiceM8 job or Jobber request with the recording, transcript and a summary note, with opt-outs honoured.

Work snippet with example figures.

Area
Twilio voice + SMS
Tools
Twilio · ServiceM8 · Jobber · n8n
Typical scope
US$2,400–4,000
Timeline
About 6 weeks · 4 fixed milestones

Problem

What the owner sees

  1. Calls that ring out while the office is on another call or out on a job
  2. Callers who leave no message and ring the next company
  3. Voicemails that someone retypes into the job system later, with the address misheard
  4. A customer who replied STOP and was texted again

Someone with a leaking tap rings the first company on the list and tries the second only if nobody answers. A text within a minute keeps that caller, and a short intake puts their details on a job without anyone retyping them. Texting and recording rules differ by country and state, so the wording is agreed with your own advisor before launch.

Where it goes wrong today
Everyday situationWhat goes wrong
Call rings out at 10:12No text and no record. The caller rings the next company within minutes
Voicemail leftSits in a phone inbox until someone listens, then is retyped with typos
Same customer rings from a mobile and a landlineTwo client records in the job system
Recording made without telling the callerA consent problem the business learns about later
Caller replies STOPThe next missed call sends another text anyway

System map

A 16-tech HVAC and plumbing business with one published office number, two office staff and about 146 inbound calls a week. Jobs run in ServiceM8 or Jobber, and the ledger is in Xero.

The example uses Twilio for the numbers, voice and SMS, n8n to run the rules, and a language model to turn each recording into a short note. A person reviews every job the intake creates.

System map: who and what does each job
PartWhat it does
Twilio numbersThe published number, forwarded or ported in, plus a tracking number for ads. Voice and SMS webhooks point at n8n.
n8n workflowReceives each webhook, checks the signature, applies the rules and calls the other systems. Every run is logged.
Office phonesFirst leg of every call. They ring for 20 seconds before the intake menu takes over.
Language modelTranscribes the recording and writes a five-line summary. It proposes a job type and never decides alone.
ServiceM8 or JobberReceives the client, the job or request, the note and the recording link.
Review queueEvery call the rules cannot close. The office works it each morning.
Suppression listNumbers that have opted out, checked before any text is sent.

How the data moves

  1. Inbound call
  2. Office rings 20 seconds
  3. No answer
  4. Menu or text-back
  5. Recording and transcript
  6. Job with summary note
  7. Office reviews

Rules agreed in writing

The rules are short, signed by the owner and kept in one table that the workflow reads. A change to the table is a written change, not an edit in the middle of a flow.

Rules agreed in writing (example settings)
ItemExample setting
Ring time20 seconds on the office phones, then the intake menu
Menu1 new job or quote, 2 existing job, 3 emergency, 0 office. Two attempts, then voicemail.
Recording noticePlayed before the menu: this call is recorded to take your details. Kept 90 days, then deleted.
Text-backSent to callers who hang up before finishing. One per number per 12 hours, within 60 seconds.
Text-back wordingNames the business, says it is an automated message, asks for the address and the problem, and ends with Reply STOP to opt out.
Quiet hoursNo text between 21:00 and 07:00 in the caller’s local time. Held and sent at 07:00.
Opt-outSTOP, STOPALL, UNSUBSCRIBE, CANCEL, END and QUIT end all texts. START resumes. HELP returns the business name and phone.
RegistrationUS local numbers need brand and campaign registration, and toll-free numbers need verification. Both start in week 1 because approval takes days.
Landlines and withheld numbersNumber type checked first. No text is sent to either, and the call goes to the review queue.

Flow steps

Ten steps from the first ring to a reviewed job. Each one writes its result to the call log, so a missing step is visible.

Flow steps, in order
StepTriggerWhat happensResult
1 Inbound callTwilio voice webhookSignature checked. Caller, called number and time logged. Office phones dialled for 20 seconds.Call record opened
2 AnsweredDial status completedNothing recorded. The call is closed in the log.No action
3 Not answeredDial status no-answer, busy or failedThe caller hears the recording notice and the menu.Menu started
4 MenuKeypad digitDigit 1 or 2: caller keys their ZIP code, then speaks name, address and problem for up to 60 seconds.Recording saved
5 Text-backCaller hangs up earlySuppression list, number type, quiet hours and the 12-hour window are checked, then the message is sent.Text sent or skipped, with the reason
6 TranscribeRecording status callbackAudio copied to private storage and transcribed.Transcript
7 SummariseTranscript readyThe model writes the summary and proposes a job type and urgency from a fixed list.Summary record
8 Match clientCaller numberMatch on number, then email, then address. An uncertain match is flagged, never merged.Client ID or new client
9 Create jobSummary storedA ServiceM8 job in the Phone inbox queue, or a Jobber request, with the note and the recording link.Job or request ID
10 RepliesInbound SMSKeywords checked first. Any other reply is added to the job note.Note updated

Field mapping

Two tables define the build: what is read from Twilio, and where each value lands in ServiceM8 or Jobber.

Twilio fields read and what they are used for (example settings)
Twilio fieldUsed forKept in
CallSidThe unique call key, so a repeated webhook never creates a second jobCall log
FromCaller number, normalised to E.164 and used for the client matchCall log, client match
ToWhich number was called: main, ads or on-callJob source
DialCallStatusAnswered or not, which decides menu or closeRules engine
RecordingSid and RecordingDurationFetching the audio and rejecting recordings under 4 secondsPrivate storage
Body and NumMediaReply text and any photos sent by MMSJob note, job attachments
OptOutTypeWhether Twilio has already recorded an opt-outSuppression list
Call data to ServiceM8 and Jobber (example settings)
Call dataServiceM8Jobber
Caller name from the transcriptCompany nameClient name
Caller numberCompany contact mobileClient phone
Address spoken, ZIP keyedJob address, note says unverifiedProperty address, flagged unverified
Problem summaryJob descriptionRequest details
Urgency proposedQueue: Phone inbox or UrgentRequest title prefix URGENT
Number calledJob categoryLead source
Transcript and recording linkNote on the jobNote on the request

Edge cases

Each of these is written as a test call or a test text before go-live.

Edge cases and how each is handled
SituationHow it is handled
Caller hangs up in under 5 secondsLogged. No text and no job.
Withheld numberNo text is possible. The menu or voicemail still runs and the call is queued for review.
Landline callerNo text. A task is created for the office to call back.
Caller replies with an address and photosThe text goes in the job note and the photos are attached to the job.
Transcript empty or unclearThe job is created from the call data with a note to listen to the recording. It is flagged.
n8n or the voice webhook is downTwilio’s fallback address rings the on-call mobile and an alert goes to the owner.

Human sign-off and audit trail

The automation creates and describes. People decide. Nothing is scheduled, quoted or promised to a caller by the workflow.

Who signs off what
WhoSigns offWhenIf nobody acts
Office coordinatorEvery job the intake creates, before it is scheduledMorning list, then every 30 minutes in office hoursThe job stays in the Phone inbox and a reminder goes out after 2 hours
On-call technicianEmergency calls, by answering the transferAt onceNo answer in 10 minutes: second contact called, then the manager
OwnerMenu wording, text-back wording, quiet hours and retentionBefore go-live and on any changeThe old wording stays live
Office coordinatorPossible duplicate clientsReview queueNothing is merged
Audit trail kept for every item (example entry)
FieldExample
Call IDCA…91c2 (Twilio call ID, shortened)
Received10:12:04, number called: main line
Rule that firedNot answered, menu, hung up at step 4
Text sentYes at 10:12:51, delivered at 10:12:53
Recording83 seconds, stored, deletes in 90 days
SummaryModel name and version, prompt version, accepted by Dana (office) at 10:40
JobServiceM8 job in Phone inbox, client matched on number

Data and privacy

Voice and SMS data is personal data, so it is kept in accounts you own, for as long as it is needed and no longer.

Where the data lives and who can see it
DataHandling
RecordingsStored in your own private cloud storage, not in the job system. The job note holds a link that needs a login. Deleted after 90 days.
TranscriptsKept on the job note. Card numbers are never asked for, and any run of 13 to 19 digits is masked before the transcript is stored.
Model useA hosted model on terms that do not allow training on your data, or a local model. The choice is written down at the Audit.
AccountsTwilio, n8n and the job system are in your accounts. I am a user, removed at handover.

Worked example

The tables below use one week of example figures. They show the shape of the numbers, not a client result.

One week of inbound calls (example figures)
MeasureCalls
Calls received146
Answered by the office94
Not answered52
Finished the menu24
Hung up early28
No text: withheld, landline, opted out or under 5 seconds6
Text-back sent22
Replies11: 9 with details, 2 STOP
Jobs created33: 24 from the menu, 9 from texts
Note on the job as the office sees it (example)
LineContent
SourceMain line, not answered, menu option 1, 10:12
SummaryKitchen tap leaking under the sink. Shut-off valve works. Wants a visit this week.
Proposed job typePlumbing repair, routine
Address as spoken42 Alder Street, Unit B. ZIP keyed: 60614
Check before bookingAddress unverified. Confirm on the callback.
Recording83 seconds, link, deletes in 90 days

Testing and checks

Every check has a written pass condition and fail condition before it is run. A FAIL stops go-live until it is cleared and the check is run again.

Test plan with PASS and FAIL conditions
IDCheckMethodPASS whenFAIL when
T1Webhook signatureSend a request with a wrong signatureRejected, no job, alert loggedAny job or text created
T2Office answers in 20 secondsTest call answeredNo text and no jobA text or a job appears
T3Hang up during the menuTest call, hang up at step 4One text within 60 secondsNo text, or two texts
T4Second missed callSame number again within 12 hoursNo second textA second text
T5STOP replyReply STOP, then call againNumber on the suppression list, no later textAny later text
T6Menu option 1 to a jobComplete the menu with a spoken addressOne job, right client, note and recording linkNo job, two jobs or the wrong client
T7Emergency optionPress 3 with the on-call phone offSecond contact called and job flagged urgentCall dropped
T8Landline and withheldCall from eachNo text, entry in the review queueA text sent
T9Workflow switched offDisable n8n and callFallback rings the on-call mobile and an alert is sentSilence
T10Quiet hoursMissed call at 22:30Text held and sent at 07:00Text sent at 22:30

Scope and milestones

A fixed scope agreed in writing before anything starts. Each milestone is paid when you sign off its deliverable.

Scope: what a project like this covers
AreaIncluded
Systems AuditReview of the current phone setup, call volumes and job system, a 45-minute call, written findings and a fixed quote
Twilio setupNumbers, forwarding or porting, registration support, webhooks and fallbacks
Text-back and opt-outWording, rules, suppression list and STOP, START and HELP handling
Voice menu and recordingMenu, notice, recording, transcription and summary
Job creationClient match and a ServiceM8 job or Jobber request with note and recording link
Review queue and alertsMorning list, reminders and failure alerts
TestingTen checks, run to a pass before go-live
HandoverWritten SOPs, a recorded handover video and files you own, plus 14 days of fixes after go-live
Not includedTax filing and statutory returns.
Also outside the scopeTwilio usage and number fees, billed to you by Twilio. Registration approvals, which Twilio and the carriers decide. Legal wording for recording and texting, which your own advisor should approve. Daytime call answering.
Fixed milestones
MilestoneDeliverableTimingShare
M1 Rules and numbersRules signed, numbers chosen, registration startedWeeks 1 to 225%
M2 Text-back and opt-outWorking in a test number, tests T1 to T5 passWeeks 3 to 430%
M3 Menu and jobsMenu, recording, summary and job creation, tests T6 to T10 passWeeks 4 to 530%
M4 HandoverLive on the main line, SOPs, handover video, 14 days of fixesWeek 615%

Typical scope for this kind of project: US$2,400–4,000

About 6 weeks across 4 fixed milestones. The Systems Audit (US$300, fixed) comes first and confirms the scope.

Describe what is going wrong between your job system and your books, and I will say where I would look first.

Send a short note through the form on the home page. I will reply with where I would start, and whether the US$300 Systems Audit is the right first step.

Hire me on Upwork (opens in a new tab)Hire me on Freelancer (opens in a new tab)