Competitor comparisons

Why we stopped reselling GoHighLevel and built our own platform

We resold GoHighLevel to hundreds of clients. Here is the pattern that made us stop and build StoryPages instead — told with respect for GHL.

The last GoHighLevel support call I remember clearly was about a button.

A client — an author, genuinely successful, sharp about her own business — needed the button on her book landing page to point at a new pre-order link instead of the old one. She had been logged into her own account for twenty minutes before she gave up and messaged us. We changed it in about forty seconds.

She apologised. That is the part that stayed with me. She apologised to us for not being able to change a link on her own website.

We did not start out as a software company

James Cook Media was a storytelling agency. That is still the sentence I would use to describe what we are good at: finding the actual story inside a business and making people care about it.

For years that was the whole engagement. We would do the positioning work, the narrative, the messaging — and then the client would say, reasonably, “so where does this live?”

They needed a website. Then a funnel. Then somewhere for the leads to land, and emails to follow up with. We started doing that work because the alternative was handing beautiful strategy documents to people who had nowhere to put them.

Why we became a GoHighLevel reseller

We tried the obvious combinations first. A site on one platform, a CRM on another, email somewhere else, a funnel tool bolted on. Every client became a small integration project, and every integration project became something we maintained forever.

Then we found GoHighLevel, and it solved a real problem for us. One login. CRM, email, funnels, pipelines, automations, phone. Sub-accounts so we could run many clients from one place. Snapshots so we could take a setup that worked for one coach and deploy it for the next one in an afternoon.

I want to be precise about this: GoHighLevel was the right decision at the time, and it was good software. It is mature, it is deep, and it earned its market position honestly. We made real money with it and we served clients well with it. Anyone who tells you GHL is bad software is either selling you something or has not used it seriously.

We became a substantial reseller. Over the years we built more than 300 client websites and funnels — most of them on GHL.

Three hundred is enough to see patterns.

The pattern we could not unsee

Here it is, and once you see it in one account you see it in all of them.

Every single client account needed us to operate it.

Not to build it — building it was our job, fair enough. To operate it. To change a headline. To add a page. To fix a broken link in a workflow. To duplicate a funnel for a new offer. To explain why an email had not sent.

The software was entirely capable of all of it. The owner was locked out — not by permissions, by comprehension. Sub-accounts, snapshots, triggers, workflows, pipelines, custom values: every one of those concepts is legitimate and well-designed, and together they are a platform you administer rather than a tool you use.

So the owner did not administer it. We did. Forever.

We had built three hundred businesses a website they could not touch. And we were charging them a retainer for the privilege of being the only people who could.

That was the turning point, and it did not feel like a business insight. It felt like a problem with our character.

The support call that ended it

Back to the button.

After that call I went through our support queue for the previous quarter and sorted the tickets by what was actually being asked. The result was uncomfortable: the overwhelming majority were changes the owner wanted to make, knew exactly what they wanted, could describe in one plain sentence, and could not execute.

“Change the button to this link.” “Swap the testimonial on the homepage.” “Add a page for the new workshop.” “Make the header say Founder instead of CEO.”

Every one of those is a sentence. Every one of those became a ticket, a context switch for us, and a small humiliation for a capable adult.

We had an entire revenue line built on the gap between a sentence and a platform.

You can respond to that in two ways. You can build a better snapshot library and a better onboarding video — we tried, for a couple of years, and it helped at the margins and changed nothing structurally. Or you can decide the gap itself is the product problem.

What we decided to build instead

The design constraint we started from: the owner has to be able to stay in control, without learning a platform.

That ruled out the obvious approach of “an AI that builds you a website while you watch”. Fully automatic is not control — it is a different kind of black box, and when it gets your positioning wrong you are back to asking somebody for help.

So the build is a conversation with approval gates. You describe the business. You approve the visual style. You approve the sitemap. You approve the wireframes. Then it goes live. Four decisions, each one yours, each one revisable by saying what is wrong with it.

app.storypages.ai/admin
The StoryPages AI builder with a business description typed into the prompt box
This replaces onboarding. No sub-accounts to provision, no snapshot to choose — a description of the business.

And critically, the assistant does not leave when the site launches. It stays in the rail. Month four is the month that decides whether a website is an asset or a liability, and month four is exactly when an agency-operated site starts to rot.

app.storypages.ai/admin/site-builder
The StoryPages site builder showing the AI assistant rail, build phase tabs, and the publish control
After launch the assistant is still there. 'Change the button to this link' is a sentence again, not a ticket.

Underneath it we built the things our clients actually needed anyway — a CRM, email marketing, a funnel builder, hosting, domains, SSL — because the integration-project era taught us that lesson expensively. Webinars and calendar booking are on the roadmap and I am not going to pretend they exist yet.

We also added something GHL did not have to worry about when it was designed. Our clients’ buyers increasingly ask ChatGPT and Claude for recommendations instead of typing into Google. So every site we build ships structured data, llms.txt, semantic HTML, and static pages by default — AI visibility is on, not an option. Doing that work manually per client was one more thing only we could do.

What we deliberately did not copy

This is the section that tells you whether to believe the rest.

Phone, SMS, and the dialer. GoHighLevel’s communications stack is genuinely good and we do not have one. That is a decision, not an oversight. Carrier relationships, deliverability, and compliance are a whole company’s worth of work, and a mediocre version would be worse than none. If your business runs on outbound calling, GHL is the better tool and I would rather you knew that now.

White-label SaaS reselling. GHL is architected so an agency can sell it as their own product. That is a real business model and GHL serves it well. But it pulls the product towards the agency as the primary user, and every decision downstream inherits that assumption. We pointed the other way on purpose. It costs us a revenue line we understand well — we lived it — and it is the only way the owner ends up in the chair.

The snapshot marketplace. Snapshots are efficient and they were good to us. They also encode the idea that your setup is a copy of somebody else’s, adjusted. We would rather generate from your actual story, which is the thing we were originally hired for.

A thousand configuration surfaces. Every setting we add is a setting a non-technical owner might have to understand. That trade-off used to be free for us because we were the ones configuring it. It is not free anymore.

Who StoryPages is and is not for

Being clear about this saves everyone money.

It is for the person whose name is on the business: authors, coaches, consultants and experts, local operators. People who need a professional site with the CRM and email underneath, who will be the one logging in most weeks, and who do not want to become an administrator of a marketing platform.

It is not for agencies whose product is a resold platform, businesses whose engine is outbound phone and SMS, teams that depend on a specific GHL snapshot ecosystem, or designers who want pixel control and will not accept an AI proposing a layout first.

If you are in the second group, GoHighLevel is probably still your answer, and we wrote a longer side-by-side comparison that tries to be fair about exactly where it wins. There is also a broader comparison overview if you are still shortlisting.

What this was really about

We spent years being paid to be the bottleneck. It was a decent business. Most agency businesses are, and I am not going to pretend we noticed the problem quickly or nobly — it took three hundred builds and a woman apologising to us for not being able to edit her own website.

The product is the correction. Describe your business, approve the plan, own the result. We would rather sell software than sell dependency, even though dependency has better margins.

If you want the longer version of who we are, it is on the about page. If you want to see whether this works for your business, the free plan exists precisely so you can find out without a call with anyone — including us.

Questions people ask about this

Did you have a falling out with GoHighLevel?
No. We left as customers on good terms and we still think it is strong software. Our disagreement is about who the software assumes is sitting in the chair, not about its quality or the company behind it.
Is StoryPages built on GoHighLevel?
No. It is a separate product with its own codebase and infrastructure. What carried over is the experience: 300+ client builds taught us which parts of the job clients could never take over.
Why not just build better GoHighLevel snapshots?
We tried that for years. A better snapshot makes the first day easier and changes nothing about month four, when the owner wants to add a page and still has to call us. The problem was the operating model, not the starting template.
Why did you deliberately leave out phone and SMS?
Because a communications stack is a serious business of its own — carrier relationships, deliverability, compliance — and doing it badly is worse than not doing it. If outbound calling and SMS are central to how you sell, GoHighLevel is the better choice and we will say so.
Will StoryPages offer white-label reselling?
Not today. GoHighLevel is architected around agencies reselling it as their own SaaS, and that shapes every decision in the product. We are built around the business owner being the primary user, which pulls in a different direction.
Who should not use StoryPages?
Agencies whose product is a resold platform, businesses that run on outbound phone and SMS, teams that need a specific third-party GHL snapshot ecosystem, and anyone who wants total pixel control over layout and will not accept an AI proposing it first.
What happened to your agency work?
James Cook Media still exists and still tells stories for a living. What changed is that we stopped selling website and funnel operations as an ongoing dependency, because we were building the thing that removes the need for it.
How is approving a plan different from using a builder?
In a builder, you make thousands of small decisions and any one of them can leave the page broken. In StoryPages you make four large ones — style, sitemap, wireframes, build — and you can revise any of them by saying what is wrong. The decisions stay yours; the assembly is not your job.

Stop reading about websites. Get one.

Describe your business to StoryPages and watch the sitemap appear. Free to start — you'll know in ten minutes whether this is for you.