Publishing channels
Publishing channels push or expose document content to external systems when documents change — complementary to Webhooks (which notify about events) and Export (manual one-off downloads).
Prerequisites
Section titled “Prerequisites”- Capability Publishing (or team admin)
- Server env:
PUBLISHING_ENCRYPTION_KEY(see Installation) - For Git mirrors: optional
GIT_MIRROR_ALLOWED_HOSTSfor non-default hosts
Access
Section titled “Access”Settings → Publishing — list of channels, delivery log, create/edit wizard.
Transport types
Section titled “Transport types”| Transport | How it works | Best for |
|---|---|---|
| Pull | Consumer fetches content itself via the token-secured Pull API (Bearer token) | Static sites, SSR apps, simple integrations |
| Webhook | Orimora POSTs document payload to your URL on change | CMS updates, custom pipelines |
| Git mirror | Orimora commits/pushes Markdown to a Git repository | Docs sites (GitHub Pages, GitLab CI) |
Each channel targets content by:
- Collection — one folder and its documents
- Tag — all documents with a specific tag
You must explicitly choose a collection or tag (no “entire workspace” wildcard).
Format
Section titled “Format”| Format | Description |
|---|---|
markdown | Markdown files (default for Git mirror) |
json | TipTap JSON |
html | Rendered HTML (where supported) |
Pull channel setup
Section titled “Pull channel setup”- Create channel → transport Pull, format Markdown. Optionally add a deploy hook URL (see below).
- Publish documents to the channel with “Send to channel…” — the Pull-API serves exactly that curated set (never an unpublished document)
- Create a token on the channel — treat it like a password
- Your consumer fetches on a schedule or at build time. The ready-made Pull API URL is shown on the channel card with a copy button.
Deploy hook: rebuild static sites automatically
Section titled “Deploy hook: rebuild static sites automatically”Static generators (Starlight, Hugo, Astro …) only pick up new content on their next build. Add your host’s build hook URL to the pull channel and Orimora POSTs to it after every publish, triggering the rebuild automatically:
- Netlify: Site configuration → Build & deploy → Build hooks
- Vercel: Project → Settings → Git → Deploy Hooks
- Cloudflare Pages: Settings → Builds & deployments → Deploy hooks
- Coolify:
POST /api/v1/deploy?uuid=<app-uuid>— additionally requires an Authorization header (Bearer <api-token>); use the optional header field below the hook URL on the channel
Server-rendered consumers (SSR/ISR) don’t need a hook — they fetch at request time. The hook is best-effort: if it fails, the publish still succeeds; the error shows on the channel.
How do I know it worked?
Section titled “How do I know it worked?”A pull channel deliberately creates no delivery on publish — content only becomes visible once a consumer fetches it. Three signals confirm success:
-
Right after publishing: the dialog confirms “Content is ready on the Pull API” (and whether the deploy hook fired).
-
“Last pulled” on the channel card: stamped on every authenticated Pull-API request — the honest end-to-end confirmation.
-
Manually via curl (values from the channel card):
Terminal window curl -H "Authorization: Bearer <token>" \"https://your-instance.example/api/v1/published/<channel-id>/documents"You must see your published documents as JSON.
Webhook transport setup
Section titled “Webhook transport setup”Similar to Webhooks but sends document payloads for publishing, not generic event envelopes. Configure URL and optional signing secret. Failed deliveries may auto-pause the channel (PUBLISHING_CHANNEL_* env vars).
Git mirror setup
Section titled “Git mirror setup”- Transport Git mirror
- Repository URL (GitHub, GitLab, Bitbucket, Gitea, Codeberg supported by default)
- Branch and optional path prefix
- Provide credentials (PAT or deploy key) — stored encrypted
Orimora pushes Markdown on document changes. Ensure the token has push access to the target branch.
Delivery log
Section titled “Delivery log”Webhook and Git-mirror channels show recent deliveries: status, HTTP code, duration, error message. Use this to debug failed pushes or webhook responses. Pull channels have no deliveries by design — use “Last pulled” on the channel card instead (see above).
Comparison: webhooks vs publishing
Section titled “Comparison: webhooks vs publishing”| Feature | Developers → Webhooks | Settings → Publishing |
|---|---|---|
| Purpose | Event notifications | Content sync |
| Payload | Event envelope + model snapshot | Document content in chosen format |
| Transports | HTTP POST only | Pull, webhook, Git mirror |
| Scope | Per event subscription | Per collection or tag |
See also
Section titled “See also”- Webhooks — event-driven automation
- Export — manual download
- Configuration —
PUBLISHING_*andGIT_MIRROR_ALLOWED_HOSTS - Permissions & groups — Publishing capability