Connect Strapi (CMS)
What you'll learn
- Where Strapi fits in m18t — and why m18t pushes to a CMS rather than hosting your site.
- How to generate a Strapi API token and wire it into m18t.
- How to map an m18t content type to a Strapi collection.
Why Strapi
m18t is an operations workspace, not a website host. It doesn't render pages for your visitors. When you draft a blog post or web page in the content workspace, it eventually needs to land in a headless CMS that serves your site. Strapi is that CMS.
Strapi is the CMS m18t supports natively today — self-hosted or Strapi Cloud both work. Other vendors (WordPress, Sanity, Contentful, Payload) are on the roadmap, not available yet; if you're not on Strapi, this is the one to know about.
It's BYOK: you point m18t at your Strapi instance with your API token.
Step 1 — Generate a Strapi API token
In your own Strapi admin (the interface changes across Strapi versions, so follow the intent):
- Open Settings → API Tokens.
- Create a new token. Set the duration to unlimited so it doesn't expire on you.
- For type, Full access is simplest. A custom-scoped token also works, but it must allow create, update, and publish on every collection you'll push to — otherwise publishes fail with a permissions error.
- Copy the token. Strapi shows it once.
Step 2 — Wire it into m18t
- Go to Business Settings → Connections (
/studio/business/connections). - Click Add Connection.
- Pick a brand — connections are per brand. Choose the brand this CMS belongs to. (One Strapi for several brands? See Per-Brand Integrations.)
- Pick a provider — under CMS, choose Strapi CMS.
- On the setup step, set the Environment (Production/Development/Local — this is how you run Strapi-prod and Strapi-staging side by side), confirm the Label, and set the Base URL to your Strapi instance, e.g.
https://cms.yourdomain.com. Don't add a trailing slash. - On the Authentication step, choose + Add new vault key. The wizard suggests
CMS_PROD_API_TOKEN; paste your token. It's encrypted in the Vault before storage. - Continue to Outlets (Step 3 below), then Create connection.
Step 3 — Map a content type to a Strapi collection
Because m18t lets you define custom content types, it needs to know which Strapi collection each one targets. You configure this on the Outlets step of the wizard:
- Give the outlet an Outlet label (e.g. "Acme Production CMS").
- Set the Content type slug — the Strapi collection this outlet routes to (e.g.
blogorweb-page). The publisher uses the connection'stype_mapconfig to route m18t content types to the right Strapi endpoint.
So when you push a blog post, m18t sends the payload to the matching collection on your Strapi instance.
Step 4 — Allow m18t through Strapi's CORS
Strapi blocks unknown origins by default. Add your m18t Studio origin to your Strapi instance's CORS configuration, or every push will fail before it reaches the API. This is configured on your Strapi server, not in m18t.
FAQ
Pushes fail with a 403 / permissions error. Your token is missing create/update/publish rights on the target collection. Use a Full access token, or widen the custom token's scope, then rotate the value on the Vault tab.
Pushes fail with a CORS or origin error. Strapi is rejecting the m18t origin. Add it to your Strapi CORS allowlist (Step 4).
Content lands in the wrong collection — or nowhere. The Content type slug on the outlet doesn't match a real Strapi collection, or the type isn't mapped. Edit the outlet/connection so the slug matches the Strapi endpoint exactly.
Can I connect both production and staging Strapi? Yes. Create two Strapi connections for the brand with different Environment values. The credential tuple is per (brand, service, environment), so they coexist.
Does m18t support WordPress / Sanity / Contentful? Not yet — Strapi is the only native CMS today. Others are on the roadmap.
What's next
- What gets pushed (and how SEO/i18n travel with it): Pushing to Your CMS.
- Define the types you'll push: Registering a Custom Content Type.
- Credential storage and brand mapping: The Secret Vault · Per-Brand Integrations.