Integrations are how Lumina publishes your finished drafts to the places your audience actually reads. You connect a destination once per brand, and from then on you can push any ready draft straight to it. Connections are managed from the Integrations section of your dashboard.
<!-- screenshot: Integrations page listing available destinations and their status -->Supported destinations
Lumina ships with three publishing destinations today:
| Destination | What you connect | What you'll need |
|---|---|---|
| WordPress | A self-hosted or WordPress.com site via the REST API | Site URL, username, and an Application Password |
| Ghost | A Ghost site via the Admin API | Admin API URL and an Admin API Key (id:secret) |
| Webhook / Custom REST | Any HTTP endpoint you control | Endpoint URL and a signing secret |
Each destination is a per-brand connection, connecting WordPress for one brand doesn't connect it for the others. See Workspaces & Brands.
Publishing is a plan-gated feature. If you don't see Integrations or the Push action, check your plan in Credits & Billing.
Connecting a destination
- Go to Integrations and choose a destination type.
- Fill in its fields (see below). Secret fields, passwords, API keys, signing secrets, are encrypted at rest and masked whenever you view the connection again.
- Lumina runs a test connection to confirm the credentials work before saving.
- The connection shows as Active when it's good, or Error if a later check fails (for example, if you rotate a key on the destination).
You can re-run the test at any time, reconnect with new credentials, or disconnect a destination entirely.
<!-- screenshot: Connect WordPress dialog with masked Application Password field -->WordPress
Lumina publishes via the WordPress REST API using an Application Password (not your login password). In WordPress, go to Users → Profile → Application Passwords, create one for Lumina, and paste it here along with your site URL and username.
Ghost
Lumina uses the Ghost Admin API. In Ghost, create a Custom Integration
(Settings → Integrations → Add custom integration) to get an Admin API key in
the form id:secret, plus the Admin API URL. Paste both here.
Webhook / Custom REST
For anything else, point Lumina at an endpoint URL you control. On publish,
Lumina sends a JSON POST describing the content, signed with an
X-Lumina-Signature: sha256=… header derived from your signing secret so
your receiver can verify the request is genuine. A ping event is sent when you test
the connection.
Publishing a draft
Once a destination is connected and a draft is Ready, use Push in the editor or draft view to send it. Lumina:
- Sends the title and body, as a published post (or a scheduled one, if you set a publish time).
- Records the result, the destination's post ID and a link to view it.
- Marks the publication published or failed, with the error if something went wrong, so you can fix the connection and try again.
See Drafts & Publishing for the full draft lifecycle.
Troubleshooting
- Connection shows Error: re-run the test. The most common causes are a rotated API key, an expired Application Password, or a changed site URL. Reconnect with fresh credentials.
- WordPress fails: confirm the Application Password (not the login password)
and that the REST API is reachable at
…/wp-json/. - Ghost fails: confirm the key is the full
id:secretAdmin API key and the URL points at your Ghost admin domain. - Webhook fails: confirm your endpoint returns a
2xxstatus for thepingevent and verifies theX-Lumina-Signatureheader.
What's next for integrations
The connection model is built to grow, destinations are pluggable, and OAuth sign-in (so you won't have to paste keys for some platforms) is on the roadmap. New destinations appear in the Integrations list automatically as they ship.
See also
- Drafts & Publishing: generating and pushing drafts.
- Workspaces & Brands: connections are per brand.
- Account & Settings: where Integrations live.
- Credits & Billing: which plans include publishing.