Field notes

What we learn fixing GoHighLevel accounts.

Written for the person holding the account, not for search engines. If a post saves you from hiring us, that is a good outcome.

Fixes

The 15-point GoHighLevel account audit you can run yourself

Our entire internal audit, published. Work through it and you will find every broken workflow, dead automation and silent SMS failure in your account without paying anyone.

· 9 min read

Topic
Fixes
Reading time
9 minutes
Written by
Femi Koya

Nothing filed under that topic yet.

Fixes

The 15-point GoHighLevel account audit you can run yourself

By Femi Koya · · 9 min read

Short answer. Most underperforming GoHighLevel accounts fail on the same handful of things: workflows that were never published, SMS that never cleared registration, pipeline stages nobody updates, and a calendar that is not actually connected to the person who takes the calls. This is the checklist we run before quoting any job. It takes about an hour.

We audit every account before we quote on it, because roughly a third of the time the fix is far smaller than the client expected and we would rather say so than sell a rebuild. This is that audit, unedited. Work through it in order. Each point takes two to five minutes.

Start with what is actually running

1. List every workflow and check its status. Automation, then Workflows. Look at the Published column, not the name. A workflow in Draft does nothing at all, and draft workflows with confident names are the single most common cause of "the automation stopped working."

2. Check the enrolment history on each one. Open a workflow and look at how many contacts have entered it in the last 30 days. Zero enrolments on a published workflow means the trigger never fires. That is a trigger problem, not a workflow problem, and the fix is in the trigger conditions.

3. Find the orphans. Any workflow with no enrolments in 90 days and no obvious seasonal reason should be archived. Not deleted, archived. Accounts accumulate half-built automations and they make every future change harder because nobody knows what is safe to touch.

4. Look for duplicate triggers. Two workflows triggered by the same form submission will both run. This is how people end up sending two welcome emails, or worse, two different ones.

Then check whether messages can physically leave

5. Confirm A2P 10DLC registration is complete. Settings, then Phone Numbers, then Trust Center. You are looking for an approved brand and an approved campaign. A brand approved with no campaign approved means your SMS is being filtered by carriers, and GoHighLevel will often still show the message as sent. This is the most expensive silent failure in the platform.

6. Send a real test SMS to a real phone on a different carrier. Not to yourself on the same network. Check it arrives, and check how long it takes.

7. Check your email DNS records. SPF, DKIM and DMARC all need to be present and passing on the sending domain. If you are sending from a Gmail address through the platform, you have a deliverability problem that no amount of copywriting will fix.

8. Look at your bounce and complaint rates. Anything above 2 percent bounce or 0.1 percent complaints means list hygiene, not messaging, is your bottleneck.

Then the parts humans touch

9. Open your pipeline and ask who updates it. If opportunities are sitting in a stage for longer than your actual sales cycle, the pipeline is decorative. Either automate the stage movement or cut the stages down to ones people will genuinely maintain.

10. Count your stages. More than seven and adoption falls off. We have rebuilt twelve-stage pipelines down to five and seen reporting improve, because the data started being true.

11. Check calendar connections individually. Each calendar needs the right user's Google or Outlook account connected, with two-way sync on. One-way sync is how double bookings happen.

12. Test a booking end to end. Book yourself into every calendar. Confirm the confirmation email arrives, the reminder is scheduled, and the event lands in the correct person's diary with the meeting link attached.

Then the structure underneath

13. Read your tag list. If you have tags like lead, Lead, new-lead and newlead, your segments are wrong and every workflow keyed to them is firing on partial audiences. Consolidate before you build anything new.

14. Check custom fields for duplicates and orphans. Fields created for a form that no longer exists are still being written to and are still cluttering every contact record.

15. Open your forms and check where each one routes. Every form should trigger something. A form that only creates a contact and sends no notification is a lead sitting in a database that nobody is looking at.

What to do with the results

Sort what you found into three piles. Things that stop messages leaving the platform get fixed first, because nothing else matters while they are broken. Things that lose leads come second. Everything else is tidying and can wait.

If more than five points failed, the account needs a rebuild rather than patches. Patching an account with structural problems means every fix creates two more.

Frequently asked questions

How often should I run this audit?

Quarterly, and after anyone new has been given access to build in the account. Most damage happens when several people build in the same sub-account without an agreed naming convention.

Can I run this on a client sub-account as an agency?

Yes, and you should before onboarding. It gives you an accurate scope and it stops you inheriting someone else's mess at a fixed price.

What if I find something I cannot fix?

Send us view access and we will record a walkthrough of what is wrong and what it would take to fix, at no charge. You can act on it yourself or hand it to anyone.

Want us to look at your account?

Send view access and we will record a walkthrough of what is broken within 48 hours. Free, and you can act on it yourself.

Get the free audit
Pricing

What does it cost to have GoHighLevel set up for you?

By Femi Koya · · 7 min read

Short answer. A single focused build costs roughly $300 to $600. A complete account, meaning funnel, workflows, pipeline, calendars, messaging and payments, runs about $1,200 to $3,000. Multi-location or white label rollouts go higher. Ongoing retainers start around $800 a month. None of that includes your GoHighLevel subscription, which is separate and stays in your name.

Pricing for GoHighLevel work is opaque because most providers quote per project and never publish anything. Here is what the bands actually contain, based on what we deliver.

What each band buys

BandWhat it coversTypical timeline
$300 to $600One outcome. A funnel, or a set of workflows, or a calendar and pipeline setup. Good when you know precisely what is broken.5 to 10 working days
$600 to $1,200A connected slice. Lead capture through to booking, with the follow-up in between. Most single-service businesses sit here.10 working days
$1,200 to $3,000The whole account. Funnel or site, unlimited in-scope workflows, pipeline and tags, calendars with routing, Twilio and Mailgun, A2P registration, payments, dashboard, team training.2 to 4 weeks
$3,000 and upMulti-sub-account rollouts, white label setups, snapshot builds, migrations from another CRM with data mapping.4 to 8 weeks
$800+ per monthRetainer. Monthly build hours, new campaigns, workflow monitoring, performance review.Ongoing

Why the range is so wide

Four things move a quote more than anything else.

Whether anything exists already. Rebuilding a half-configured account often costs more than starting clean, because someone has to work out what the previous build was trying to do before touching it.

How many integrations are involved. Each external system, whether that is a dialer, a skip trace provider, an accounting tool or a proprietary API, adds scope and adds failure points that need testing.

Whether the copy is written. Sixteen email and SMS templates take real time to write. If you supply the copy, that comes off the quote. If you do not, it should be in it.

Whether decisions have been made. A client who knows their pipeline stages is quicker to build for than one discovering them during the project. Neither is wrong, but only one is cheap.

Three signs a quote is too low

No scope document. If nobody has written down what will be built before you pay, the scope is whatever the builder decides it is, and revisions become arguments.

A2P registration is not mentioned. It is unglamorous, it takes real time, and a quote that ignores it is a quote for a system that cannot send SMS.

Testing and handover are not in the price. Building is maybe 60 percent of the work. Testing every path with live data and recording a walkthrough your team keeps is the rest. A quote without them is a quote for something you will be paying someone else to finish.

What you are also paying for separately

Your GoHighLevel subscription. Twilio usage for SMS and calls, billed on what you send. Mailgun for email volume. Domain registration. Any paid media. None of these belong in a build quote, and a provider who bundles them is either marking them up or about to run out of budget.

Frequently asked questions

Should I pay hourly or fixed price?

Fixed price against a written scope, for build work. Hourly makes sense only for ongoing maintenance where the work genuinely cannot be defined in advance.

Is it cheaper to learn it myself?

If you have the time, yes, and we publish a self-serve audit checklist for exactly that reason. The platform is learnable. The question is whether the 40 to 60 hours it takes to get competent is worth more or less to you than the fee.

What does Koya Marketing charge?

Focused builds from $300, complete accounts from $1,200, retainers from $800 a month. Fixed and quoted before we start. Projects run through Fiverr, so payment sits in escrow until you approve the delivery.

Want us to look at your account?

Send view access and we will record a walkthrough of what is broken within 48 hours. Free, and you can act on it yourself.

Get the free audit
Deliverability

A2P 10DLC registration in GoHighLevel, explained properly

By Femi Koya · · 12 min read

Short answer. A2P 10DLC is the registration US carriers require before a business can send SMS from a standard 10-digit number. It has two stages: a brand, which verifies your company exists, and a campaign, which describes what you will send. Both must be approved. Brand approval usually clears quickly. Campaign approval is where almost everyone gets stuck.

If your GoHighLevel SMS is not arriving in the United States, this is the first thing to check and usually the answer. It is also the part of the platform with the worst documentation, so here is what actually matters.

Why it exists

US carriers got tired of spam sent from ordinary phone numbers. A2P 10DLC is the registry they built in response. It means application-to-person messaging over 10-digit long codes. Unregistered traffic is filtered aggressively, and the filtering is silent. Your platform reports the message as sent, the carrier drops it, and nobody tells you. That gap between "sent" and "delivered" is why people spend months blaming their copy.

The two stages

Brand registration verifies your business is real. It needs your legal entity name exactly as registered, your tax ID, your registered address, and a website. The tax ID and the legal name must match your government registration character for character. "Koya Marketing LLC" and "Koya Marketing, LLC" are different strings and one of them will fail.

Campaign registration describes what you intend to send and how people consented to receive it. This is the stage that gets rejected, and it gets rejected on the consent story far more often than on anything technical.

What carriers are actually assessing

They are trying to answer one question: can this business prove the recipient asked to hear from them? Everything in the campaign submission is evidence for that.

  1. Your opt-in description must say where consent happens and what the person agreed to. "Customers opt in" fails. "Customers submit a quote request form on koyamarketing.org which includes a checkbox consenting to SMS updates about their enquiry" passes.
  2. Your sample messages must match what you will genuinely send, must identify your business by name, and must include opt-out language. Samples that are obviously generic get rejected.
  3. Your opt-in evidence must be reachable. If you point at a form, that form must be live at the URL you gave, and the consent language must be visible on it without logging in.
  4. Your use case must match your samples. Selecting a mixed or marketing use case and then submitting purely transactional samples reads as inconsistent.

The mistakes that cause most rejections

What you didWhat to do instead
Legal name does not match the tax ID recordCopy it exactly from your registration document, including punctuation
Opt-in described in one vague sentenceDescribe the specific form or checkbox and quote the consent wording
Sample messages with no business namePut your business name in every sample
No opt-out language in samplesEnd at least one sample with "Reply STOP to opt out"
Opt-in URL points to a page behind a login or a 404Point at a public page where the consent language is visible
Website does not mention SMS at allAdd SMS consent language to your privacy policy before submitting

How to read a rejection

Rejections come back with a reason code and usually a short note. Read the note rather than the code. Most of them reduce to one of three things: your identity documents do not match, your consent story is not specific enough, or your samples do not match your stated use case.

Resubmitting the same submission with small wording tweaks rarely works. Fix the underlying thing being questioned, then resubmit.

What to do while you wait

Do not send. Sending unregistered traffic while registration is pending is the fastest way to accumulate the reputation problems that make later approval harder. Use email and calls in the meantime, and if your business genuinely depends on high-volume messaging, a toll-free number with verification is a different path worth discussing.

Frequently asked questions

Do I need this outside the United States?

No. A2P 10DLC is US carrier policy. UK, Australian and other markets have their own sender ID and compliance rules, which are generally lighter but not absent.

My brand is approved but SMS still is not delivering.

Then your campaign is not approved, or your number is not attached to the approved campaign. Check both in the Trust Center. Brand approval alone does nothing for deliverability.

Can Koya Marketing handle registration for me?

Yes, it is included in our complete account builds. We cannot make carriers approve you, but we can make sure the submission does not fail for a reason within our control.

Want us to look at your account?

Send view access and we will record a walkthrough of what is broken within 48 hours. Free, and you can act on it yourself.

Get the free audit
Industry

GoHighLevel for real estate investors: the CRM setup that works

By Femi Koya · · 11 min read

Short answer. Investor CRM fails differently from agent CRM. Agents work a lead for weeks. Investors work a lead for years, and the deal usually closes on the fourth or fifth contact months after the first. So the build has to be organised around long-horizon follow-up and around motivation, not around a short sales cycle.

This is the structure we build for investor clients. It is opinionated, because the default pipeline that ships with the platform is built for a different business.

Pipeline stages that people will actually maintain

Five stages, not twelve. Every extra stage is another thing an acquisitions person has to remember mid-call.

  1. New lead. Everything lands here. No qualification yet.
  2. Contact made. A human has spoken to the seller. Not left a voicemail. Spoken.
  3. Qualified. Motivation confirmed, condition understood, timeline understood.
  4. Offer made. A number is on the table.
  5. Under contract. Everything after this is transaction coordination and belongs in a second pipeline, not this one.

Add a sixth if you need it: Nurture, for qualified leads who said no on price. That is where most of your future deals live and it deserves its own stage rather than being buried in Lost.

The fields that matter

Resist the urge to capture everything. The fields that change what you do next are: motivation, condition, timeline, asking price, mortgage balance, and whether the seller is the sole decision maker. That last one saves more wasted appointments than any other field in the system.

Skip trace data should land in its own field group, clearly named, so it is obvious which numbers came from the seller and which came from a data provider. Calling a skip-traced number is a different conversation from returning a call.

Follow-up built for a long horizon

The single biggest difference between investor setups that work and ones that do not is what happens after month one. Most builds have an aggressive two-week sequence and then nothing.

Build it in three layers instead.

Speed to lead, first hour. An automated text within sixty seconds of the lead arriving, then a task for a human to call. Not an automated call. A human.

Active follow-up, first 30 days. Alternating calls and texts on a decreasing frequency. Daily for three days, then every other day, then weekly.

Long nurture, months 2 to 24. Monthly, low-pressure, genuinely useful. Market updates for their street. A note when a comparable sells. This is the layer almost nobody builds and it is where the margin is, because a seller who said no in March is a different person in November.

What to automate and what not to

AutomateKeep human
Speed-to-lead first textEvery phone conversation
Task creation for callbacksOffer conversations
Appointment remindersMoving a lead to Qualified
Long nurture sequenceAnything after Offer made
Stage-change notifications to the teamNegotiation of any kind

Reporting that tells you something

Track cost per qualified lead by source, not cost per lead. A source producing cheap leads that never qualify is more expensive than an expensive source that converts, and the default dashboard will not show you that unless the pipeline stages are being maintained honestly.

Frequently asked questions

Can GoHighLevel replace my dedicated investor CRM?

For acquisitions and follow-up, generally yes. For deep transaction coordination and disposition workflows, some teams keep a specialist tool alongside it and connect the two. It depends on your volume.

How do I handle multiple markets?

Tags and pipelines within one sub-account if the team is shared. Separate sub-accounts if the teams are separate and reporting needs to be separate. Splitting too early creates work; splitting too late creates confusion.

What about cold outreach compliance?

Cold SMS to skip-traced numbers is a compliance question with real consequences, and A2P campaign registration asks you to describe consent you may not have. Take advice on it rather than assuming the platform handles it.

Want us to look at your account?

Send view access and we will record a walkthrough of what is broken within 48 hours. Free, and you can act on it yourself.

Get the free audit
Industry

Missed call text back for home service businesses

By Femi Koya · · 6 min read

Short answer. Missed call text back sends an automatic SMS the moment a call goes unanswered, so the caller gets a response in seconds instead of ringing your competitor. For plumbers, roofers, HVAC and electricians it is the single highest-return automation in the platform, because your leads call rather than fill in forms and they call the next name on the list when nobody picks up.

Why it matters more in home services than anywhere else

A homeowner with water coming through the ceiling does not submit a contact form and wait. They call three companies and book whoever answers. Every unanswered call at 2pm on a Tuesday, when your technician is under a sink and cannot pick up, is a job that went to someone else.

The automation does not replace answering the phone. It buys you the fifteen minutes you need to call back.

The workflow

  1. Trigger: Call Status, set to No Answer. Not Missed Call alone, because that behaves differently depending on your call routing.
  2. Filter: inbound calls only. Without this, your own outbound calls that go unanswered will text your customers.
  3. Wait: five seconds. Long enough that the text arrives after the caller has hung up rather than while they are still listening to the ring.
  4. Send SMS with the wording below.
  5. Create a task for whoever handles callbacks, due in 15 minutes.
  6. Add tag: missed-call, so you can report on volume later.
  7. Branch: if the contact replies, notify the team immediately and stop the sequence.
  8. If no reply in 4 hours, one follow-up text. Then stop. Two is plenty.

The wording

Three rules. Name your business, because an unknown number texting about a missed call reads as spam. Say what happens next with a specific time. Ask one question that is easy to answer from a phone while holding a bucket.

The structure that works: business name, acknowledgement that you missed them, a specific callback window, and one question asking what they need. Keep it under 160 characters so it sends as a single segment, and include opt-out language on the first message to a new contact.

Avoid anything that reads as marketing. This is a service message answering a call they made, and it should sound like a person who was busy, not a campaign.

What breaks it

SymptomCause
Nothing sends at allA2P campaign not approved, so carriers are filtering silently
Customers get texted after you call themNo inbound-only filter on the trigger
Text arrives minutes laterWait step too long, or the workflow is queued behind another
Replies go nowhereNo notification step, so nobody sees the conversation
Customers get two texts for one callDuplicate workflows on the same trigger

Measuring whether it works

Track three numbers monthly: missed calls, replies to the automated text, and jobs booked from those replies. If replies are healthy but bookings are not, the problem is callback speed, not the automation. Fix the human side before touching the workflow.

Frequently asked questions

Will customers find it annoying?

Not when it reads as a service response to a call they made. It becomes annoying when it sounds like marketing, or when it arrives and nobody follows up.

Does it work after hours?

Yes, and that is often where most of the value is. Change the wording for out-of-hours to set a realistic morning callback time rather than promising 15 minutes at midnight.

How long does it take to set up?

The workflow itself is under an hour. If A2P registration is not already complete, that is the real timeline, and it is the part worth starting today.

Want us to look at your account?

Send view access and we will record a walkthrough of what is broken within 48 hours. Free, and you can act on it yourself.

Get the free audit
Deliverability

Why your GoHighLevel SMS messages are not being delivered

By Femi Koya · · 8 min read

Short answer. In roughly eight cases out of ten it is A2P 10DLC registration, and the confusing part is that the platform will still mark the message as sent while the carrier quietly drops it. Work down this list in order. It is ordered by how often each cause turns out to be the actual problem, not by how easy it is to check.

1. A2P 10DLC registration is incomplete

Check Settings, then Phone Numbers, then Trust Center. You need an approved brand and an approved campaign, and your sending number must be attached to that campaign. A brand approved on its own does nothing. This is the cause most of the time.

2. The number is not attached to the approved campaign

People register successfully, then buy a new number later and never attach it. The new number sends unregistered traffic. Check every number you send from, not just the first one.

3. The contact opted out

A contact who replied STOP is suppressed at the carrier level, not just in your account. Nothing you do in the platform will reach them, and it should not. Check the contact's DND status.

4. Message content is triggering filters

Shortened links from public shorteners are heavily filtered, because spammers use them. Use a branded or platform link domain instead. Also watch for all-caps words, excessive punctuation, and words associated with lending, gambling or cannabis, all of which draw scrutiny regardless of your actual business.

5. You are sending from a toll-free number that is not verified

Toll-free numbers have their own verification process, separate from A2P 10DLC. An unverified toll-free number is filtered the same way an unregistered long code is.

6. The number format is wrong

Numbers must be in E.164 format, meaning a plus sign and country code. Imported lists are the usual culprit. A US number stored as ten digits with no country code will fail silently on some routes and work on others, which is why the problem looks intermittent.

7. You are hitting throughput limits

Registered campaigns have message-per-second limits tied to your brand's trust score. Blasting a large list can queue messages for hours. If your sends are arriving but late, and late only on big campaigns, this is it.

8. Carrier-level spam reputation

If you sent unregistered traffic for months before registering, the number may carry a reputation problem that registration does not clear. The fix is a new number, correctly registered from the start, and better sending behaviour on it.

How to tell the difference quickly

What you seeMost likely cause
Nothing delivers, to anyone, everRegistration incomplete (1 or 2)
Delivers to some carriers, not othersContent filtering (4) or reputation (8)
One specific contact never receivesOpt-out (3) or number format (6)
Small sends fine, big sends lateThroughput (7)
Worked before, stopped suddenlyCampaign lapsed, or a new number was added (2)

Frequently asked questions

Why does the platform show the message as sent?

Because it was sent, to the carrier. Carrier filtering happens after that handoff and the rejection is not always passed back. Sent and delivered are different states and only one of them means the customer read it.

How do I test properly?

Send to real phones on at least two different carriers, and check delivery status rather than trusting the send confirmation. Testing on one network tells you almost nothing.

Is email affected by the same rules?

No. Email deliverability is its own problem, governed by SPF, DKIM and DMARC on your sending domain. Fixing SMS does nothing for email and the reverse is also true.

Want us to look at your account?

Send view access and we will record a walkthrough of what is broken within 48 hours. Free, and you can act on it yourself.

Get the free audit

Rather have us look at it?

Send us view access to your GoHighLevel account and we will return a recorded walkthrough within 48 hours. Free, and you can act on it yourself.