GoHighLevel Review 2026: What It Does Well and Where It Falls Short
An honest, no-fluff GoHighLevel review from someone who builds accounts in it every week: the strengths, the weak spots, and who should skip it.
Learn moreGoHighLevel logs every text and email it sends, but it will not hand you a delivered to reply report on its own. Here is how to build one.
Short answer: GoHighLevel logs every SMS and email it sends, including delivery status, but it does not roll that data into a single report with open rate, click rate and reply rate over time. The native Reporting tab and Conversations view give you volume and per-message status, not a workflow-level trend. For a real report you add a tag or field when a message is delivered or answered, then export it or push it out with a webhook to a spreadsheet or database.
Open the Reporting tab in a sub-account and you get numbers: SMS sent, email sent, delivered, failed, and a rough cost per message. That view is account level. It does not break out by workflow, by campaign, or by a specific phone number unless you dig through conversations one by one.
Click into an individual contact's conversation and you can see the delivery status of each message: delivered, undelivered, or failed. That is useful for troubleshooting a single message. It is not a report you can hand to an owner who wants to know whether last month's follow up sequence actually worked.
Email tracking is built on two mechanisms that have existed for years: a tracking pixel that loads when the email is opened, and a redirect link that logs a click before sending the reader to the real URL. GoHighLevel uses both, so email open rate and click rate are real numbers in the Reporting tab.
SMS has no equivalent. Carriers do not tell any platform when a text message is opened, so open rate for SMS does not exist anywhere, not in GoHighLevel and not in any competing CRM. The closest signal you get is delivered versus undelivered, plus whatever the contact does next: a reply, a click on a link inside the text, or a booked appointment.
Since reply rate is not a native metric, you build it with a tag. When a workflow sends its message, have that same workflow add a tag such as promo-oct-sent. Build a second workflow triggered on inbound message received, with a condition that checks for the sent tag, and have it add promo-oct-replied only in that case.
From there, a smart list filtered on both tags gives you a count you can turn into a percentage by hand. It is not automatic, but it is accurate, and it works for any workflow you tag consistently. The trade-off is that every campaign or sequence you want to measure needs its own pair of tags, which adds up fast if you are not disciplined about naming them.
Tags work for a single workflow you check occasionally. They get messy fast if you want a rolling report across many workflows, several phone numbers, or a date range that spans months. At that point the more reliable path is a webhook step inside the workflow that fires on send, on delivery status change, or on reply, and posts that event to somewhere built for reporting: a Google Sheet, an Airtable base, or a database like Supabase.
This is the same pattern behind larger integration work, including the usage based billing system we built between GoHighLevel and Stripe, which also relies on GoHighLevel events pushed out through n8n rather than pulled from a native report. If your webhook stops firing partway through, the debugging steps are the same ones we cover in our guide to a GoHighLevel webhook not sending data.
| Option | What it shows | Setup effort | Best for |
|---|---|---|---|
| Native Reporting tab | Delivered and failed counts, plus email opens and clicks | None, already built in | A quick sanity check on send volume |
| Tag pair per workflow | Reply rate for one specific workflow | Low, a few minutes to set up per workflow | An owner checking one campaign at a time |
| Webhook to spreadsheet or database | Full history across every workflow, filterable by date and number | Higher, a webhook step plus somewhere to store the data | Agencies and owners who want an actual dashboard |
Even the native numbers cause confusion when a sub-account has grown without much order. We have inherited accounts running 160 workflows and 242 tags across six pipelines, and in that kind of account the tags meant to track replies get reused for something else, or three different workflows tag the same contact for unrelated reasons. At that point a report built on tags is only as good as the tagging discipline behind it, and nobody trusts the numbers anymore.
The fix is usually not more reporting tools. It is going back through the account, naming tags consistently, and retiring the ones nobody remembers the purpose of. A report is only useful if the person reading it believes the number.
Before building any new tagging system or webhook, we would look at what is already sending and whether the delivery numbers in the Reporting tab match what the owner expects. If the account has grown messy with duplicate tags or workflows that overlap, that gets cleaned up first, because a report built on top of a messy account just reports the mess more precisely. Our GoHighLevel account audit starts at $497 and covers exactly this: what is firing, what it is tagging, and whether the numbers you are already seeing can be trusted before we add anything new on top.
Yes. Email opens and link clicks are tracked natively and show up in the Reporting tab and on the contact's message history, because email supports a tracking pixel and click redirect.
No. Carriers do not report back when a text is opened, so no CRM, including GoHighLevel, can show a true SMS open rate. The closest native signal is delivered versus undelivered status.
Add a tag when the workflow sends its message, then use a second workflow triggered on inbound message to add a reply tag only when the sent tag is present. Count both tags in a smart list or export to get a rate.
Yes, either as a manual CSV export from a smart list, or automatically with a webhook step in a workflow that posts each event to a Google Sheet, Airtable base or a database.
There is a dashboard with basic volume and delivery numbers, but it does not filter cleanly by individual workflow across a custom date range, which is why most agencies build a separate report for that.
An honest, no-fluff GoHighLevel review from someone who builds accounts in it every week: the strengths, the weak spots, and who should skip it.
Learn morePodium is a polished review and texting inbox sold per location. GoHighLevel is a wider build-it-yourself platform. Here is how they compare and who should pick which.
Learn moreYour customers already know your number and you cannot change it. Here are the three ways to keep it with GoHighLevel today, and what to retire if HighLevel ships a native option.
Learn moreBook a 30-minute call. We look at the account live and tell you what is broken, what we would fix first and what it would cost.
No pitch deck. We look at your current setup and tell you what we would do and what it would cost.Need more than GoHighLevel? Yotomations, our parent company, also builds AI agents, custom software and websites.