Estopia CMS.
The content system we built and run ourselves. Edit your site, take enquiries and bookings, and see who visits, without waiting for a developer.
With every hosting plan
Your site, in your hands.
Everything your site shows from the CMS, you can change yourself.
Edit your content
Blog posts, team members, jobs, testimonials and anything else your site lists. Change a page and it updates in seconds, without a rebuild.
Publish when you're ready
Save drafts, preview them on your real site, and schedule posts to go live at a set time.
Undo any change
The last 50 versions of every entry are kept, and any of them can be restored in one click.
Images done properly
Upload once and smaller, faster copies are made for phones and desktops. Alt text is required, so every image is described.
Forms and enquiries
Contact and quote forms land in an inbox with spam filtered out. You get an email, and the sender gets a confirmation.
Your team, your rules
Give people author, editor or admin access. Every change is recorded in an activity log.
Add-ons
More than a content editor.
Switched on for your site when you need them, and priced with your hosting plan.
Bookings
Customers pick a service and a free slot from your opening hours. Deposits go straight to your own Stripe account, with reminders and self-service cancelling.
Newsletter
Sign-ups with email confirmation, a subscriber list you can export, and issues written in the CMS and sent from your own email address.
Visitor analytics
Page views, sources, countries and devices, with no cookies and no IP addresses stored, so no consent banner is needed for it.
Reviews
Invite customers by email to leave a review. You approve which ones appear on your site.
Referrals
Partners get their own link and code, and you see the enquiries each one sends you.
Client portal
While we build your site: an onboarding checklist, uploads and approvals. After launch: support tickets and billing in the same place.
See bookings working: our own booking page runs on it.
For developers
A headless CMS with a plain API.
Use it from any frontend. Published content is public and cacheable; editing needs a signed-in Estopia account or an OAuth app.
Base URL
https://api.estopia.net/cms/v1
Read content
Every site has a slug. List the published entries of a content type, or fetch one by its slug. Lists take limit (up to 100), offset, sort and filter[field]=value.
GET https://api.estopia.net/cms/v1/public/{site}
GET https://api.estopia.net/cms/v1/public/{site}/content/{type}?limit=10&sort=-published_at
GET https://api.estopia.net/cms/v1/public/{site}/content/{type}/{entry}
{ "items": [ { "slug": "…", "data": { … }, "seo": { … }, "published_at": "…" } ],
"total": 12, "limit": 10, "offset": 0 }Content types
Content types are made from fields. Each field can be required and can set a maximum length, a range, options or help text. Changes that would break existing entries are refused until you confirm them.
- text
- textarea
- richtext
- number
- boolean
- date
- datetime
- url
- phone
- select
- multiselect
- image
- list
Forms
Post a JSON body (up to 100 KB) to a form. Submissions with the hidden _hp field filled in are kept as spam, and Cloudflare Turnstile can be required per form.
POST https://api.estopia.net/cms/v1/public/{site}/forms/{form}
Content-Type: application/json
{ "name": "Sam", "email": "[email protected]", "message": "…" }Webhooks
Get a signed POST when content changes: entry.published, entry.updated, entry.unpublished and entry.deleted. Failed deliveries are retried after 1 minute, then 5, 30, 2 hours and 6 hours, and every attempt is logged.
Estopia-Event: entry.published
Estopia-Signature: t=1760745600,v1=<hex HMAC-SHA256 of "{t}.{body}">
{ "event": "entry.published",
"site": { "id": "…", "slug": "{site}" },
"entry": { "id": "…", "type": "blog", "slug": "…", "published_at": "…" } }Check the signature with your webhook secret and reject old timestamps before you trust the body.
Previews and access
Editors can preview a draft through a link that lasts an hour, served to your site's own preview route. Apps that edit content sign in with OAuth and ask for the cms:read or cms:write scope.
Questions about the CMS.
Do I get the CMS with my hosting plan?
Yes. Every hosting plan includes it for your content, forms and team. Bookings, newsletter, analytics, reviews and referrals are add-ons we switch on for your site, priced with your plan.
Is it WordPress?
No. We built Estopia CMS ourselves and run it on our own infrastructure. There are no plugins to update and nothing for you to patch.
How do I sign in?
With your Estopia account, using a password or a passkey. Each person on your team gets their own account and role.
Do I need a developer to change my site?
Not for content. Anything your site lists or shows from the CMS, you can edit yourself. New page designs or features are a small change we make for you.
Can my own developers use it?
Yes. Published content is available from a public API, changes trigger signed webhooks, and drafts can be previewed on any frontend. The details are below.
Run your site on it.
Tell us about your site and what you'd like to manage yourself. We reply within one working day with a plan and a price.