Riqmiriqmi
PricingBook a demo

Guides

Riqmi CMS

Riqmi CMS turns your articles into a published blog you can serve on your own website. This guide takes you from switching it on to wiring it into your site.

What is Riqmi CMS

Riqmi CMS is a built-in headless content system. You write and manage articles in Riqmi, and it serves the published ones over a simple API your website reads from. There is nothing to host — Riqmi stores the content and exposes it ready to consume.

Riqmi CMS is one of several integrations you connect on the Integrations page. Pick Riqmi CMS to let Riqmi host and serve your blog; pick one of the other integrations (WordPress, Webflow, Wix, Notion, or a custom webhook) to publish into a CMS you already run.

  • Pick Riqmi CMS if you want Riqmi to host and serve your blog content and you just need to pull it onto your site.
  • Connect a different integration instead if you already have your own CMS or site builder and only want Riqmi to publish into it.

Turn it on

Riqmi CMS is connected on the Integrations page, like any other integration. Once connected, a Riqmi CMS card appears where you configure and manage it.

  • Open the Integrations page.
  • Select the Riqmi CMS card in the connect grid.
  • The Riqmi CMS card appears — use it to configure your blog and to open your live CMS. To switch away later, click Disconnect on that card.

Configure your blog

The Riqmi CMS card has two fields. Only the first is required.

  • Blog URL prefix — the base address where your articles live on your site, e.g. https://example.com/blog/. Riqmi appends each article’s slug to it to build the public article URL.
  • Revalidation webhook URL (optional) — when you publish or unpublish, Riqmi sends a request to this address so your website refreshes its cached pages. Leave it empty to disable; you can add it later.

Publish articles

An article only appears in your CMS once you publish it. You control this per article:

  • Publish — make the article available through the CMS for the first time.
  • Republish — push your latest edits to the live CMS after changing a published article.
  • Unpublish — remove the article from the CMS while keeping it in Riqmi.

You can publish from a few places: the action menu in the article list, the toolbar while editing an article, and the article sidebar.

Being Published in the CMS is separate from an article’s own workflow status. An article can be marked done in your editorial workflow yet still be a draft in the CMS until you publish it — and vice versa. The CMS only ever serves articles you have explicitly published.

See what’s live

Everything you publish is immediately reachable. From the Riqmi CMS card you can check exactly what your visitors and your website will receive.

  • View live CMS — opens the raw article feed your site reads, so you can confirm an article is being served.
  • sitemap.xml — an always-current sitemap of your published articles for search engines.
  • feed.xml — an RSS feed of your published articles.
From here, hand this to your developer

Connect your website

This last section is the technical wiring that pulls your published articles onto your own website. If you are not building the site yourself, hand it to your developer — the rest of the guide above is all you need.

Your site needs two values, which you set as environment variables. The base URL is your Riqmi deployment address; the site key is your business domain, lowercase and without www.

  • RIQMI_CMS_BASE_URL — your Riqmi deployment URL (ends in .convex.site).
  • RIQMI_CMS_SITE_KEY — your business domain, e.g. example.com (lowercase, no www.).
bash
RIQMI_CMS_BASE_URL="https://<your-deployment>.convex.site"
RIQMI_CMS_SITE_KEY="example.com"   # your business domain: lowercase, no www.

Install the official client. It is framework-agnostic and has no runtime dependencies.

bash
pnpm add @riqmi/cms-client
# or: npm i @riqmi/cms-client / yarn add @riqmi/cms-client

Create the client once and reuse it. createRiqmiCmsClient gives you listArticles, getArticle, and listTags, plus sitemap and feed URLs.

typescript
// lib/cms.ts
import { createRiqmiCmsClient } from '@riqmi/cms-client'

export const cms = createRiqmiCmsClient({
  baseUrl: process.env.RIQMI_CMS_BASE_URL ?? '',
  siteKey: process.env.RIQMI_CMS_SITE_KEY ?? '',
  // applied to every request; per-call options override it
  defaultRequestInit: { next: { revalidate: 300 } }
})

Render your blog from the client. This Next.js App Router page lists every published article; use getArticle(slug) for a single article’s full HTML.

tsx
// app/blog/page.tsx
import Link from 'next/link'
import { cms } from '@/lib/cms'

export default async function BlogPage() {
  const { items: articles } = await cms.listArticles()

  return (
    <main>
      {articles.map((article) => (
        <article key={article.id}>
          <Link href={`/blog/${article.slug}`}>{article.title}</Link>
          {article.excerpt ? <p>{article.excerpt}</p> : null}
        </article>
      ))}
    </main>
  )
}

To make publishes appear instantly, add a route handler for the revalidation webhook and paste its URL into the Revalidation webhook URL field. Every fetch is cache-tagged, so one webhook refreshes exactly what changed. The endpoint needs no secret — it only triggers a cache refresh.

typescript
// app/api/riqmi/revalidate/route.ts
import { revalidateTag } from 'next/cache'
import { parseRiqmiWebhook, riqmiTagsForPayload } from '@riqmi/cms-client'

export async function POST(request: Request) {
  const payload = await parseRiqmiWebhook(request)
  if (!payload) return new Response('Invalid payload', { status: 400 })

  for (const tag of riqmiTagsForPayload(payload)) revalidateTag(tag)
  return Response.json({ revalidated: true })
}

The core client works anywhere modern fetch runs — Remix, plain Node, or edge runtimes. The Next.js next caching options are simply ignored elsewhere, so the same code is portable.