
GoHighLevel Blog Builder: SEO Setup Guide (2026)
By Dr Priya Jaganathan, GoHighLevel Certified Admin · HL Growth Partner, Australia · Updated 24 September 2026 · 10 min read
Some links below are affiliate links — if you sign up through them, HL Growth Partner may earn a commission at no extra cost to you. It never changes what we recommend. Full disclosure.
The GoHighLevel blog builder is now a genuine publishing tool rather than the afterthought it was a few years ago, and for most agencies it is the fastest way to get indexable content live on a client domain. It sits inside Sites, shares your domain, and needs almost no maintenance.
What it is not is a full CMS. Three or four hard constraints in the HighLevel blog builder will quietly cost you rankings if you do not plan around them — and one is locked into the URL itself. This guide walks the setup in the order I use it for Australian clients, then says where the GHL blog stops being the right tool.
Quick Facts
| Item | Detail |
|---|---|
| Where it lives | Sites > Blogs inside a sub-account |
| Post URL format | yourdomain.com/post/post-name — /post/ is fixed |
| Mandatory fields | URL slug, category, author, title, post description |
| Sitemap | Auto-updates every time a post is published |
| Custom values | Not supported — no {{contact.name}} merge fields |
| Per-post JSON-LD | Not native; on HighLevel's roadmap as "in progress" |
Why the GoHighLevel blog builder earns its place in a 2026 SEO stack
Most clients do not need a blog platform. They need thirty useful pages on their funnel domain, indexed, without a developer.
The GHL blog does that. Posts inherit the sub-account domain, so link equity stays on one hostname instead of splitting across a blog subdomain that never quite ranks.
The biggest win is operational: the person writing the content is already logged in. No second CMS, no plugin updates, no separate login for the receptionist who actually writes the posts.
It slots in as a third content type alongside the GoHighLevel website builder and funnels.
How to create a blog inside Sites before you write a single post
Go to Sites > Blogs in the sub-account and create the blog itself. This is a container — you do it once per domain.
Name, domain and slug
You give the blog a name, select a domain (optional at creation, addable later) and set the URL slug, which behaves differently on a root domain versus a subdomain.
Add a description too. It is optional, but it feeds the blog home page's meta description — a real search result you will otherwise leave blank.
Authors and categories come first
Create authors and categories before you write anything, because both are mandatory on every post. Discovering that mid-publish is how posts end up with an author called "Admin".
Author records sit under the settings gear inside Blogs. Per HighLevel's 2026 support documentation, each author takes a name, a photo with alt text, a description and social links, with a 10 MB image cap.
Categories live in the same panel. Keep the list short — five to eight mapped to services the client actually sells.
The /blog and /post URL structure you cannot change
HighLevel forces a fixed segment into blog URLs, and the shape depends on whether you attach a root domain or a subdomain.
| Page type | Root domain blog | Subdomain blog |
|---|---|---|
| Blog home | abc.com/blog | blog.abc.com |
| Individual post | abc.com/post/post-name | blog.abc.com/post-name |
| Category archive | abc.com/blog/category/name | blog.abc.com/category/name |
| Author archive | abc.com/blog/author/name | blog.abc.com/author/name |
The index sits at /blog while posts sit at /post/ — siblings, not parent and child, which surprises WordPress migrants.
You cannot remove or rename the /post/ segment. HighLevel's ideas board lists "Ability to customise blog URL" with 194 votes and a status of Planned when checked in September 2026 — acknowledged, not shipped.
So every URL changes when you migrate an existing blog. Plan 301 redirects before you cut over, or you hand back the client's rankings.
The blog post settings that actually move rankings
Every post has a settings panel separate from the editor. That is where the SEO work happens.
| Setting | Mandatory? | What it controls |
|---|---|---|
| Title | Yes | The H1 on the post and the default SEO title |
| URL slug | Yes | The text after /post/ |
| Category | Yes | Archive membership and internal navigation |
| Author | Yes | Byline and author archive page |
| Post description | Yes | Meta description in search results |
| Keywords | No | Internal tagging; no direct ranking effect |
| Canonical link | No | Which URL Google treats as the original |
| Cover image + alt text | No | Social preview, image search, accessibility |
URL slug
Keep it short, hyphenated, and lead with the primary keyword. Since the folder is fixed, the slug is your only topic signal in the path.
Set it before you publish. HighLevel lets you update settings afterwards via the three-dot menu, but changing a live slug changes a live URL — and nothing creates a redirect.
Meta title and description
The post description becomes your meta description. Write it as a search result, not a summary — one sentence of promise, one of specificity.
Write the description before the article, not after. It forces you to commit to a single search intent instead of writing 1,500 words that serve three.
Canonical link
GHL auto-generates a canonical and lets you override it. Leave the auto value alone for original posts; override it only when the content genuinely lives elsewhere first, which is the use Google describes in its guidance on consolidating duplicate URLs.
Featured image and alt text
The cover image doubles as the social share image. HighLevel states no recommended dimensions but confirms the editor's content width is 736 px, so anything wider than about 1,200 px is wasted bytes.
Compress before upload — the habits in our guide to fixing slow GoHighLevel pages apply to blog posts too.
RSS, sitemap and how Google actually finds your GHL blog
Two things happen automatically, and one needs a deliberate step.
- RSS feed — available at your blog path plus
/rss.xml, generated without activation, showing published posts only. - Sitemap updates — HighLevel confirms the XML sitemap refreshes automatically every time a post is published.
- Sitemap generation — you still switch it on once, from Settings > Domains, via the three-dot menu on the domain.
Do the third step on day one, then submit the sitemap in Google Search Console. A missing sitemap is the top reason posts sit unindexed for weeks.
To see which posts produce enquiries, wire in measurement early: Google Tag Manager setup on GoHighLevel funnels covers the container work, and attribution reporting for lead sources covers reading the result.
Not on HighLevel yet? Start with a free 30-day trial here — long enough to build everything in this guide before you pay a cent.
Publishing, scheduling and the internal linking habit that compounds
Posts can sit in draft, publish immediately, or be scheduled for a future date. Scheduling is the right default for agencies — batch a month of writing into one session.
Publish on a cadence you can hold for six months, not the one that feels ambitious in week one. Two posts a month, forever, beats eight in March and nothing until August.
Internal linking is where the GHL blog quietly outperforms its feature list. Every post links to service pages, funnels and other posts on one hostname, so the signal passes immediately.
My rule per post: three links to other posts, one to a money page, and one link back from an older post — the step everyone skips.
Drafting at volume, the native AI tooling helps — watch the token consumption, covered in our notes on GoHighLevel Content AI setup and pricing.
Structured data limits in the HighLevel blog builder
Here is the honest gap. HighLevel ships a schema markup generator in the website and funnel builder, reachable from the SEO and AI search optimisation panel, in form view or raw JSON-LD.
Blog posts do not get the same treatment. HighLevel's ideas board carries "Enable Structured Data (JSON-LD) Support for Individual Blog Posts" with 154 voters and a status of In Progress as of late 2025. Schema currently applies at blog level, not per post.
So per-post Article and FAQPage schema is not a native blog feature yet. If a client's category depends on rich results or on being cited by AI assistants, that is a legitimate reason to build those pages as funnel or website pages instead, where the generator does work.
The usual workaround is injecting JSON-LD through Google Tag Manager. It works, but it is fragile, and not something to hand a client team.
When the GHL blog is good enough and when WordPress wins
| Requirement | GoHighLevel blog | WordPress |
|---|---|---|
| Same domain as funnels | Native, no extra hosting | Needs subdirectory or subdomain setup |
| Per-post JSON-LD schema | Not native yet | Standard via plugins |
| Custom URL structure | /post/ is fixed | Fully configurable |
| Forms inside posts | Not supported currently | Standard |
| Maintenance burden | None — platform managed | Plugin, theme and core updates |
| Client can self-serve | Yes, same login as the CRM | Second system to train on |
My verdict after building both: if the blog is a supporting asset for a local service business, the GHL blog is comfortably good enough. If content is the primary acquisition channel and the client competes on rich results, use WordPress and connect it back.
That second path is well trodden — see our breakdown of the GoHighLevel WordPress integration for how the two sit together without duplicating the domain.
For the current field list and interface, HighLevel's own documentation on creating a blog is the source of truth, and it is updated more often than third-party tutorials.
Common mistakes to avoid
- Publishing before generating the sitemap from Settings > Domains, then wondering why nothing is indexed.
- Migrating a WordPress blog without mapping 301 redirects for the forced
/post/segment. - Creating authors and categories mid-post, producing inconsistent archive pages.
- Overriding the auto canonical on original content, pointing Google at a page that is not yours.
- Uploading uncompressed cover images far wider than the 736 px editor width.
- Treating the blog as a content dump with no links back to service pages or funnels.
If you want a GoHighLevel blog set up properly — domain, sitemap, authors, categories and an internal linking plan your team can hold — book a strategy call with the HL Growth Partner team.
Or if you just need the software first: grab the 30-day HighLevel trial and book us when you're ready to scale it.
Frequently asked questions
Where is the blog builder in GoHighLevel?
It lives under Sites > Blogs inside a sub-account. You create the blog container first, then add posts to it. Authors and categories are configured from the settings gear icon in that same Blogs area.
Can I change the /post/ part of a GoHighLevel blog URL?
No. The /post/ segment is fixed for blogs attached to a root domain, so posts take the form yourdomain.com/post/post-name. HighLevel's ideas board lists a request to customise the blog URL with 194 votes and a status of Planned as at September 2026.
Does the GHL blog generate a sitemap automatically?
The sitemap updates itself automatically once a post is published, per HighLevel's support documentation. You still generate it once from Settings > Domains using the three-dot menu on your domain. Submit the URL to Google Search Console afterwards.
Is there an RSS feed for a HighLevel blog?
Yes. Add /rss.xml to your blog's URL — for example yourdomain.com/blog/rss.xml — and the feed renders with no activation step. It includes published posts only, so drafts and scheduled posts stay private until they go live.
Can I add Article or FAQ schema to individual GHL blog posts?
Not natively at the time of writing. HighLevel's schema markup generator sits in the website and funnel builder, and the request to extend JSON-LD to individual blog posts shows 154 voters with an In Progress status. Until it ships, schema is applied at blog level or injected through Google Tag Manager.
Can I embed a form inside a GoHighLevel blog post?
HighLevel's documentation states that forms and surveys cannot currently be added to blog posts, with custom code listed as coming soon. The workaround is to link from the post to a funnel step that carries the form. That also gives you cleaner conversion tracking than an inline embed.
Do custom values work in blog posts?
No. HighLevel confirms that custom values such as {{contact.name}} or {{custom_values.xyz}} are not supported in blog posts. Write everything as static copy and handle personalisation on the funnel pages you link to.
Should I use the GHL blog or WordPress?
Use the GoHighLevel blog when content supports a service business and the client wants one login. Choose WordPress when organic content is the primary acquisition channel, per-post schema matters, or you need full control of URL structure. Both can coexist on one brand if the domain architecture is deliberate.
Related Articles on HL Growth Partner
Building and converting pages
- A/B testing and split tests in GoHighLevel
- Setting up the GoHighLevel chat widget
- Ecommerce store setup and transaction fees
