<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Arslan Mumtaz</title>
    <description>The latest articles on DEV Community by Arslan Mumtaz (@arslanautomates).</description>
    <link>https://dev.to/arslanautomates</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4160866%2F24335383-96b3-4868-ac04-6997cc112797.jpg</url>
      <title>DEV Community: Arslan Mumtaz</title>
      <link>https://dev.to/arslanautomates</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/arslanautomates"/>
    <language>en</language>
    <item>
      <title>When GoHighLevel Isn't Enough: Custom API and Webhook Logic for CRM Automation</title>
      <dc:creator>Arslan Mumtaz</dc:creator>
      <pubDate>Thu, 08 Oct 2026 13:00:00 +0000</pubDate>
      <link>https://dev.to/arslanautomates/when-gohighlevel-isnt-enough-custom-api-and-webhook-logic-for-crm-automation-4bmn</link>
      <guid>https://dev.to/arslanautomates/when-gohighlevel-isnt-enough-custom-api-and-webhook-logic-for-crm-automation-4bmn</guid>
      <description>&lt;p&gt;GoHighLevel can do a lot without a single line of code: pipelines, workflows, calendars, SMS, email, funnels. But every real business has something specific that doesn't fit the platform. That's where most automation builds either stall or get bent into an awkward workaround.&lt;/p&gt;

&lt;p&gt;I'm a software engineer as well as a GoHighLevel builder, so when the platform stops short, I write the missing piece against its API and webhooks. Across my 13 case studies, almost every build needed at least one piece of custom logic. Here's what that looks like and when it's worth it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem with workarounds
&lt;/h2&gt;

&lt;p&gt;When a no-code tool can't do something, the usual options are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Change how the business works to fit the tool&lt;/li&gt;
&lt;li&gt;Chain together so many workflow steps that nobody can maintain it&lt;/li&gt;
&lt;li&gt;Leave that part manual and hope someone remembers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All three get worse as the business grows. A small, well-written piece of custom code usually beats all of them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real examples from my builds
&lt;/h2&gt;

&lt;p&gt;These are the places where GoHighLevel couldn't do something natively, so I built it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://arslanautomates.com/case-studies/law-firm/" rel="noopener noreferrer"&gt;Law firm&lt;/a&gt;:&lt;/strong&gt; flagging a potential conflict of interest against the firm's existing client records before a consultation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://arslanautomates.com/case-studies/veterinary-clinic/" rel="noopener noreferrer"&gt;Veterinary clinic&lt;/a&gt;:&lt;/strong&gt; calculating each pet's next vaccine or wellness date from the visit type and species.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://arslanautomates.com/case-studies/chiropractic-physio/" rel="noopener noreferrer"&gt;Chiropractic clinic&lt;/a&gt;:&lt;/strong&gt; working out each patient's expected rebooking window from their specific treatment plan.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://arslanautomates.com/case-studies/auto-dealership/" rel="noopener noreferrer"&gt;Auto dealership&lt;/a&gt;:&lt;/strong&gt; linking a vehicle sale to its future service history, so sales and service work from the same customer record.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://arslanautomates.com/case-studies/insurance-agency/" rel="noopener noreferrer"&gt;Insurance agency&lt;/a&gt;:&lt;/strong&gt; cross-referencing a client's policies against coverage gaps to trigger the right cross-sell offer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://arslanautomates.com/case-studies/property-management/" rel="noopener noreferrer"&gt;Property management&lt;/a&gt;:&lt;/strong&gt; matching a maintenance request to the correct unit and lease record.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://arslanautomates.com/case-studies/cleaning-company/" rel="noopener noreferrer"&gt;Cleaning company&lt;/a&gt;:&lt;/strong&gt; tracking each recurring visit against the master contract.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://arslanautomates.com/case-studies/restaurant/" rel="noopener noreferrer"&gt;Restaurant&lt;/a&gt;:&lt;/strong&gt; calculating each guest's visit frequency from raw booking data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://arslanautomates.com/case-studies/fitness-studio/" rel="noopener noreferrer"&gt;Fitness studio&lt;/a&gt;:&lt;/strong&gt; connecting the class-booking software's attendance data to GoHighLevel.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://arslanautomates.com/case-studies/hvac-plumbing/" rel="noopener noreferrer"&gt;HVAC &amp;amp; plumbing&lt;/a&gt;:&lt;/strong&gt; matching records between technicians, jobs and customers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Notice the pattern: most gaps are about &lt;em&gt;matching records&lt;/em&gt; or &lt;em&gt;calculating something&lt;/em&gt; from data the business already has. That's exactly what code is good at.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the pieces fit together
&lt;/h2&gt;

&lt;p&gt;A typical setup looks like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;A webhook fires&lt;/strong&gt; from a GoHighLevel workflow (or from another tool) when something happens, such as a visit being logged.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A small service receives it&lt;/strong&gt; and does the work the platform can't: a calculation, a lookup or a match across records.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It writes the result back&lt;/strong&gt; through the GoHighLevel API, usually as a custom field, tag or opportunity update.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Normal GoHighLevel workflows take over&lt;/strong&gt; from there, triggered by that field or tag.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That last step matters. The custom code does one narrow job and hands back to the platform. The business can still see, edit and understand its automations inside GoHighLevel, without needing a developer for every change.&lt;/p&gt;

&lt;h2&gt;
  
  
  When custom code is worth it, and when it isn't
&lt;/h2&gt;

&lt;p&gt;Write code when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The logic is core to how the business makes money&lt;/li&gt;
&lt;li&gt;The workaround would be fragile or impossible to maintain&lt;/li&gt;
&lt;li&gt;Two systems need to share data and there's no built-in integration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Stay no-code when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GoHighLevel already does it natively, even if it takes some setup&lt;/li&gt;
&lt;li&gt;The team needs to change the logic often themselves&lt;/li&gt;
&lt;li&gt;A standard n8n, Make or Zapier connection already covers it&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Building it safely
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Keep API keys out of the code&lt;/strong&gt; and in environment variables or a secrets manager.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Log every run&lt;/strong&gt; so you can see what the code decided and why.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Run it silently first.&lt;/strong&gt; In the law firm build, the routing logic ran against real leads for two weeks before a single automated message went out.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fail safely.&lt;/strong&gt; If the custom step breaks, the lead should fall back to a human, not disappear.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Need something GoHighLevel can't do?
&lt;/h2&gt;

&lt;p&gt;If you've been told "GoHighLevel can't do that," there's often a clean way to make it work. I build GoHighLevel systems with custom API and webhook logic wherever the platform falls short, so the system fits your business instead of the other way around.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://arslanautomates.com/blog/gohighlevel-custom-code-api-webhooks/" rel="noopener noreferrer"&gt;arslanautomates.com&lt;/a&gt;. I'm Arslan Mumtaz, a software engineer who builds GoHighLevel CRM and AI automation for service businesses. See my &lt;a href="https://arslanautomates.com/#work" rel="noopener noreferrer"&gt;case studies&lt;/a&gt; or &lt;a href="https://calendly.com/arslanmumtaz0000/30min" rel="noopener noreferrer"&gt;book a call&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>api</category>
      <category>webdev</category>
      <category>automation</category>
      <category>javascript</category>
    </item>
    <item>
      <title>How to Turn One-Off Customers into Recurring Revenue with CRM Automation</title>
      <dc:creator>Arslan Mumtaz</dc:creator>
      <pubDate>Wed, 07 Oct 2026 13:00:00 +0000</pubDate>
      <link>https://dev.to/arslanautomates/how-to-turn-one-off-customers-into-recurring-revenue-with-crm-automation-5ali</link>
      <guid>https://dev.to/arslanautomates/how-to-turn-one-off-customers-into-recurring-revenue-with-crm-automation-5ali</guid>
      <description>&lt;p&gt;The cheapest customer to win is the one you already have. Yet most service businesses spend their energy on new leads while past customers quietly disappear: the one-off clean that never became a contract, the gym member who stopped checking in, the diner who never came back.&lt;/p&gt;

&lt;p&gt;I build retention systems in GoHighLevel that notice these customers before they're gone and give each one a real reason to come back. This post covers three builds (a cleaning company, a fitness studio and a restaurant) and the pattern they share.&lt;/p&gt;

&lt;h2&gt;
  
  
  The pattern: notice, then nudge
&lt;/h2&gt;

&lt;p&gt;Every retention system I build has two halves:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Notice.&lt;/strong&gt; Track a signal that someone is drifting: no check-in for two weeks, no booking in 90 days, a one-off job with no follow-up.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nudge.&lt;/strong&gt; Trigger a well-timed, personal message with a specific offer or next step, before the customer has fully moved on.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The hard part isn't sending messages. It's choosing the right signal and the right moment for each business.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cleaning company: from one-off job to recurring contract
&lt;/h2&gt;

&lt;p&gt;Most cleaning customers start with a single clean. Without a system, many never book again. The fix was a post-job sequence: a thank-you message right after the clean, then a recurring-plan offer a few days later, while the customer is still enjoying the result.&lt;/p&gt;

&lt;p&gt;Once someone is on a weekly or fortnightly plan, every visit is confirmed automatically with a reminder 24 hours before. In that build, 38% of one-off cleans converted into recurring contracts.&lt;/p&gt;

&lt;p&gt;One detail needed custom work: GoHighLevel couldn't natively track each recurring visit against the master contract, so I built that logic against the API. &lt;a href="https://arslanautomates.com/case-studies/cleaning-company/" rel="noopener noreferrer"&gt;Read the cleaning case study →&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Fitness studio: catching members before they cancel
&lt;/h2&gt;

&lt;p&gt;Gym churn usually starts long before the cancellation email. Members stop showing up first. So the signal here is attendance: a member who hasn't checked in for 14 days gets a personal re-engagement message from the studio.&lt;/p&gt;

&lt;p&gt;The full system also covers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A follow-up sequence during the trial period, so trials don't go cold&lt;/li&gt;
&lt;li&gt;Renewal reminders ahead of each membership's expiry, with an early-renewal incentive&lt;/li&gt;
&lt;li&gt;A timed win-back sequence with a specific offer after a cancellation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The studio's class-booking software couldn't hand attendance data to GoHighLevel on its own, so I built that connection. Trial conversions rose 46%, and win-back and reactivation campaigns recovered 19% more revenue. &lt;a href="https://arslanautomates.com/case-studies/fitness-studio/" rel="noopener noreferrer"&gt;Read the fitness case study →&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Restaurant: remembering every guest
&lt;/h2&gt;

&lt;p&gt;A busy restaurant can't remember every regular by face. The system can. It tracks visit frequency to flag regulars and VIPs to the team, sends birthday and anniversary offers, and surfaces any guest who hasn't booked in 90 days with a reactivation offer.&lt;/p&gt;

&lt;p&gt;GoHighLevel couldn't calculate a guest's visit frequency from raw booking data, so that logic was custom too. Automated reactivation brought in 21% more repeat-visit revenue, and next-day review requests led to 4.8x more Google reviews a month. &lt;a href="https://arslanautomates.com/case-studies/restaurant/" rel="noopener noreferrer"&gt;Read the restaurant case study →&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How to choose the right signal
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Use behaviour, not just dates.&lt;/strong&gt; "Hasn't checked in for 14 days" says more than "joined 3 months ago."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set thresholds from the business's own data.&lt;/strong&gt; The 14-day and 90-day windows above came from each business's real patterns, not an industry benchmark.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Watch before you message.&lt;/strong&gt; At the fitness studio, inactivity alerts ran silently for a few weeks so coaches could check the timing against members they actually knew.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Let the team write the messages.&lt;/strong&gt; At the studio, coaches wrote and reviewed every message. At the restaurant, the owner approved every message in the restaurant's own voice. Retention fails the moment it feels robotic.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What stays human
&lt;/h2&gt;

&lt;p&gt;The coaching, the cleaning and the hospitality all stay human. The system handles what happens around them: noticing who's drifting, sending the right message at the right time, and making it easy to come back.&lt;/p&gt;

&lt;h2&gt;
  
  
  Want this for your business?
&lt;/h2&gt;

&lt;p&gt;If your past customers are quietly disappearing, a retention system is often worth more than another lead-generation campaign. I build them in GoHighLevel, with custom integrations when your other tools don't connect on their own.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://arslanautomates.com/blog/turn-one-off-customers-into-recurring-revenue/" rel="noopener noreferrer"&gt;arslanautomates.com&lt;/a&gt;. I'm Arslan Mumtaz, a software engineer who builds GoHighLevel CRM and AI automation for service businesses. See my &lt;a href="https://arslanautomates.com/#work" rel="noopener noreferrer"&gt;case studies&lt;/a&gt; or &lt;a href="https://calendly.com/arslanmumtaz0000/30min" rel="noopener noreferrer"&gt;book a call&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>automation</category>
      <category>crm</category>
      <category>smallbusiness</category>
      <category>marketing</category>
    </item>
    <item>
      <title>Automated Patient Recall in GoHighLevel: Dental, Veterinary and Chiropractic Examples</title>
      <dc:creator>Arslan Mumtaz</dc:creator>
      <pubDate>Tue, 06 Oct 2026 13:00:00 +0000</pubDate>
      <link>https://dev.to/arslanautomates/automated-patient-recall-in-gohighlevel-dental-veterinary-and-chiropractic-examples-17mb</link>
      <guid>https://dev.to/arslanautomates/automated-patient-recall-in-gohighlevel-dental-veterinary-and-chiropractic-examples-17mb</guid>
      <description>&lt;p&gt;Most clinics don't have a new-patient problem. They have a patients-who-never-came-back problem. Someone is due for a check-up, a booster or their next treatment session, nobody reminds them, and they quietly drift away. No one notices, because a patient who doesn't book doesn't show up anywhere.&lt;/p&gt;

&lt;p&gt;I've built automated recall systems in GoHighLevel for a dental clinic, a veterinary clinic and a chiropractic and physiotherapy clinic. The details differ, but the backbone is the same. Here's how it works and what I've learned building it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a recall system actually replaces
&lt;/h2&gt;

&lt;p&gt;Before automation, recall usually looks like one of these:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A paper recall book that someone works through when they have time&lt;/li&gt;
&lt;li&gt;Vaccine or check-up due dates tracked from memory&lt;/li&gt;
&lt;li&gt;Front-desk staff making reminder calls between patients&lt;/li&gt;
&lt;li&gt;No follow-up at all once a patient stops rebooking&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All of these depend on someone remembering, during the busiest part of the day. That's why recall is one of the first things to slip, and one of the most profitable things to automate.&lt;/p&gt;

&lt;h2&gt;
  
  
  The recall pipeline, step by step
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Self-booking.&lt;/strong&gt; Patients book their own slot from live availability, matched to the right appointment type and provider.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Confirmation and reminders.&lt;/strong&gt; A layered SMS and email sequence confirms each booking. In the chiropractic build, reminders go out at 48 hours and again at 2 hours before the session.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The clinician treats the patient.&lt;/strong&gt; This stays entirely human: examination, diagnosis and treatment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The next due date is set.&lt;/strong&gt; Once the clinician logs the recommended follow-up interval, the next visit is scheduled automatically.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recall fires on time.&lt;/strong&gt; When a patient is due or overdue, they get a recall message with a booking link.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reactivation for the lapsed.&lt;/strong&gt; Patients who've gone quiet for a longer period get a structured reactivation sequence instead of being forgotten.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Three versions of the same idea
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Dental: replacing the paper recall book
&lt;/h3&gt;

&lt;p&gt;For the dental clinic, overdue patients are now surfaced automatically and sent a recall campaign. The cancellation waitlist became automatic too: when someone cancels, the next waitlisted patient is offered the slot before the chair sits empty. Automated confirmations and reminders cut no-shows by 27%. &lt;a href="https://arslanautomates.com/case-studies/dental-clinic/" rel="noopener noreferrer"&gt;Read the dental case study →&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Veterinary: recall per pet, per species
&lt;/h3&gt;

&lt;p&gt;Vet recall is harder than it looks, because the next due date depends on the visit type and the species. After each visit, the system calculates the pet's next vaccine or wellness check and schedules the reminder. Prescription refill reminders go out before medication runs out, so that revenue stays with the clinic instead of a pharmacy down the road. &lt;a href="https://arslanautomates.com/case-studies/veterinary-clinic/" rel="noopener noreferrer"&gt;Read the vet case study →&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Chiropractic and physio: catching drop-off mid-plan
&lt;/h3&gt;

&lt;p&gt;Here the goal isn't yearly recall, it's finishing a treatment plan. If a patient hasn't rebooked within their expected window, staff get a drop-off alert while there's still time to step in. That build led to 42% more patients completing their full treatment plan. &lt;a href="https://arslanautomates.com/case-studies/chiropractic-physio/" rel="noopener noreferrer"&gt;Read the chiropractic case study →&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Where GoHighLevel needs custom logic
&lt;/h2&gt;

&lt;p&gt;GoHighLevel handles reminders and campaigns well, but recall often needs a calculation the platform doesn't do natively: a pet-specific due date from a logged visit, or an individual patient's rebooking window based on their treatment plan. In those builds I wrote that logic myself against the GoHighLevel API rather than forcing every patient onto one generic timeline.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting the timing right
&lt;/h2&gt;

&lt;p&gt;Timing is everything in recall. Too early feels like nagging. Too late and the patient has already gone elsewhere. A few rules I follow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Clinicians set the intervals.&lt;/strong&gt; In the chiropractic build, practitioners set the rebooking window for each treatment type from their own experience, not an industry average.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vets check the rules first.&lt;/strong&gt; A wrong vaccine interval isn't just annoying, it's wrong information about an animal's care. The vets checked the recall logic against their own protocols before a single message went out.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Run it silently first.&lt;/strong&gt; Drop-off alerts ran quietly for a few weeks before any patient-facing message was switched on. In the dental build, the new system ran alongside the old process for a month until staff trusted its output.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write like the clinic, not a robot.&lt;/strong&gt; A warm message from "the team at [Clinic]" gets far more bookings than a generic reminder.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What stays human
&lt;/h2&gt;

&lt;p&gt;Clinical decisions never move into automation. The system books, reminds, recalls and follows up. The clinician examines, diagnoses and treats. That separation is what makes staff comfortable with the system, and it's why patients experience it as good care rather than marketing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Want this for your clinic?
&lt;/h2&gt;

&lt;p&gt;If your recall still depends on a book, a spreadsheet or someone remembering, it's one of the highest-return systems you can automate. I build recall and retention systems in GoHighLevel, with custom logic for the parts the platform can't do on its own.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://arslanautomates.com/blog/automated-patient-recall-gohighlevel/" rel="noopener noreferrer"&gt;arslanautomates.com&lt;/a&gt;. I'm Arslan Mumtaz, a software engineer who builds GoHighLevel CRM and AI automation for service businesses. See my &lt;a href="https://arslanautomates.com/#work" rel="noopener noreferrer"&gt;case studies&lt;/a&gt; or &lt;a href="https://calendly.com/arslanmumtaz0000/30min" rel="noopener noreferrer"&gt;book a call&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>automation</category>
      <category>crm</category>
      <category>healthcare</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Missed-Call Text-Back in GoHighLevel: How I Build Speed-to-Lead Systems for Service Businesses</title>
      <dc:creator>Arslan Mumtaz</dc:creator>
      <pubDate>Sun, 04 Oct 2026 04:51:27 +0000</pubDate>
      <link>https://dev.to/arslanautomates/missed-call-text-back-in-gohighlevel-how-i-build-speed-to-lead-systems-for-service-businesses-4e1d</link>
      <guid>https://dev.to/arslanautomates/missed-call-text-back-in-gohighlevel-how-i-build-speed-to-lead-systems-for-service-businesses-4e1d</guid>
      <description>&lt;p&gt;A missed call is not a missed call. For a service business, it's a customer who is already dialling the next company in their search results. The fix isn't hiring someone to sit by the phone. It's making sure every caller hears back within seconds, whether you're on a job, in a meeting or asleep.&lt;/p&gt;

&lt;p&gt;I build these speed-to-lead systems in GoHighLevel for service businesses: HVAC and plumbing companies, law firms, clinics, cleaning companies and more. This post walks through how I set one up, what actually moves the numbers, and the mistakes I see most often.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why speed-to-lead decides who wins the job
&lt;/h2&gt;

&lt;p&gt;When someone needs a plumber, a lawyer or a dentist, they rarely call just one. They call down the list until someone responds. That means the business that replies first usually wins, often before price or reviews come into it.&lt;/p&gt;

&lt;p&gt;The problem is that the people best at the actual work are usually the ones who can't answer: the technician under a sink, the attorney in court, the clinician with a patient. So calls go to voicemail, web enquiries sit in an inbox, and nobody notices the leads that never turned into jobs, because they never show up anywhere.&lt;/p&gt;

&lt;h2&gt;
  
  
  The four parts of a speed-to-lead system
&lt;/h2&gt;

&lt;p&gt;Every build I do has the same backbone:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Instant acknowledgement.&lt;/strong&gt; Every missed call or web enquiry gets a text (and email, for web leads) within seconds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Triage.&lt;/strong&gt; The system works out what the person needs, and how urgent it is, from their reply.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Self-booking.&lt;/strong&gt; Routine requests get a booking link so they can lock in a time without phone tag.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Follow-up.&lt;/strong&gt; Anyone who doesn't book gets a structured follow-up sequence instead of quietly disappearing.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Just as important is what the system &lt;em&gt;doesn't&lt;/em&gt; do. Diagnosing a fault, assessing a legal matter or deciding which technician fits a complex job stays with people. Automation handles everything around those judgment calls.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: The missed-call text-back
&lt;/h2&gt;

&lt;p&gt;In GoHighLevel this starts as a workflow triggered by an inbound call that wasn't answered. The first action sends an SMS straight away. Keep the message short, human and specific to the business:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Hi, it's [Business] — sorry we missed your call, we're with a customer right now. Is this an emergency, or would you like to book a time? You can grab a slot here: [booking link]&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A few details make a big difference:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Send it immediately.&lt;/strong&gt; In my HVAC build, the text lands on the caller's phone in under 15 seconds. Every minute of delay gives them time to call someone else.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ask one question.&lt;/strong&gt; "Is this an emergency?" is easy to answer, and the reply tells the system where to route them next.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Include the booking link.&lt;/strong&gt; Plenty of people would rather pick a time than talk on the phone.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Handle repeat callers.&lt;/strong&gt; Someone who calls three times in five minutes should get one text, not three. A short wait step plus a contact tag stops the duplicates.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 2: Route emergencies differently from routine work
&lt;/h2&gt;

&lt;p&gt;Not every lead is equal. For a plumber, "burst pipe" and "quote for a new water heater next month" need completely different responses.&lt;/p&gt;

&lt;p&gt;When the caller replies, a second workflow checks the message for emergency language (for an HVAC company: "no heat", "burst pipe", "no hot water", "leak") and branches:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Emergency:&lt;/strong&gt; notify the on-call technician by SMS and push notification with the caller's details, and tell the customer someone will call them back within minutes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Routine:&lt;/strong&gt; send the booking link and let them choose a slot from live calendar availability.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a law firm the same idea becomes matter-type routing: a short qualifying question captures the type of case, and the lead goes straight to the right attorney or practice area.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Booking, confirmation and reminders
&lt;/h2&gt;

&lt;p&gt;Once someone books, the system takes over the admin that used to eat the front desk's day: an instant confirmation, a reminder before the appointment, and for field-service businesses an "on the way" text when the technician heads out. These are small touches, but they cut no-shows and make a small business feel organised.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Follow up with people who don't book
&lt;/h2&gt;

&lt;p&gt;This is where most of the money hides. A prospect who asked a question but didn't book isn't a lost lead. They're undecided. A short follow-up sequence (a check-in the next day, a helpful message a few days later, a final nudge) recovers a surprising number of them.&lt;/p&gt;

&lt;p&gt;In my law firm build, this follow-up on undecided prospects was one of the biggest drivers of signed retainers. Before, anyone who didn't sign on the spot usually never heard from the firm again.&lt;/p&gt;

&lt;h2&gt;
  
  
  When GoHighLevel isn't enough: custom code
&lt;/h2&gt;

&lt;p&gt;GoHighLevel covers most of this out of the box, but real businesses hit edges. Matching records between technicians, jobs and customers, or flagging a potential conflict against a law firm's existing clients, aren't things the platform does natively.&lt;/p&gt;

&lt;p&gt;That's where I write custom code against the GoHighLevel API and webhooks rather than settling for a workaround. Because I'm a software engineer, I can keep the system on the right logic instead of bending the business to fit the tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mistakes I see most often
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Skipping A2P 10DLC registration.&lt;/strong&gt; If you text US customers, register your business for A2P messaging first. Unregistered numbers get filtered by carriers, so your "instant" text never arrives.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sounding like a robot.&lt;/strong&gt; "Your call is important to us" gets ignored. Write like the owner would text.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automating judgment calls.&lt;/strong&gt; Don't let the system promise prices, diagnoses or legal outcomes. Route those to a human.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Going live without testing on real calls.&lt;/strong&gt; In the HVAC build, the text-back and routing went live first and were tested against real inbound calls for a working week, with the owner listening in, before running unsupervised. In the law firm build, the routing ran silently against real leads for two weeks before a single automated message went out.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No follow-up.&lt;/strong&gt; A text-back without a follow-up sequence only recovers the people who were already ready to book.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What results look like
&lt;/h2&gt;

&lt;p&gt;Every business is different, but here's what these systems did in two of my builds:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;HVAC &amp;amp; plumbing:&lt;/strong&gt; 89% of missed calls recovered by instant text-back, with texts landing in under 15 seconds. &lt;a href="https://arslanautomates.com/case-studies/hvac-plumbing/" rel="noopener noreferrer"&gt;Read the HVAC case study →&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Law firm:&lt;/strong&gt; 3.2x more consultations booked after switching to instant lead response, with first personalised responses in under 5 minutes. &lt;a href="https://arslanautomates.com/case-studies/law-firm/" rel="noopener noreferrer"&gt;Read the law firm case study →&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The same backbone works for clinics, med spas, cleaning companies, property managers and almost any business where the phone is the front door. You can see the other builds in my &lt;a href="https://arslanautomates.com/#work" rel="noopener noreferrer"&gt;case studies&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Want this for your business?
&lt;/h2&gt;

&lt;p&gt;If you're still losing calls to voicemail or answering web enquiries whenever someone has a spare moment, a speed-to-lead system is usually the highest-return automation you can build. I design and build these in GoHighLevel, with custom code wherever the platform falls short.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://arslanautomates.com/blog/missed-call-text-back-speed-to-lead-gohighlevel/" rel="noopener noreferrer"&gt;arslanautomates.com&lt;/a&gt;. I'm Arslan Mumtaz, a software engineer who builds GoHighLevel CRM and AI automation for service businesses. See my &lt;a href="https://arslanautomates.com/#work" rel="noopener noreferrer"&gt;case studies&lt;/a&gt; or &lt;a href="https://calendly.com/arslanmumtaz0000/30min" rel="noopener noreferrer"&gt;book a call&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>automation</category>
      <category>crm</category>
      <category>smallbusiness</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
