---
title: "Connecting Ghost"
category: "Integrations"
source: "https://getbloggable.com/help/connect-ghost"
updated: 2026-09-10T18:45:45.313Z
---

# Connecting Ghost

Publish finished posts into Ghost — Ghost Pro or a Ghost site you host yourself. Images are uploaded into Ghost's own store, tags and excerpt come across, and you choose which staff user the post is published as.

The whole setup is one Admin API key.

## Before you start

You need **Administrator** access to the Ghost site, since only an admin can create a custom integration.

## Step 1 — create a custom integration in Ghost

1. In Ghost admin: **Settings → Integrations**.
2. Scroll to the bottom and click **Add custom integration**.
3. Name it — "Bloggable" — and **Create**.
4. Ghost shows three things: a Content API key, an **Admin API key**, and an API URL.

**Copy the Admin API key, not the Content API key.** This is the single most common mistake, and the two look similar at a glance. The difference is obvious once you know: an **Admin API key has a colon in the middle** — a 24-character id, a colon, then a 64-character secret. A Content API key is one unbroken 26-character string and is read-only, so it will never be able to publish.

Bloggable checks for this and tells you before you get a confusing 401.

## Step 2 — paste it into Bloggable

In Bloggable: **Blog settings → General → Site address → Your own platform → Ghost**.

1. **Site address** — the address you use to sign in to Ghost, *without* the `/ghost` part. For example `blog.acme.com`.
2. **Admin API key** — paste the full key including the colon.
3. Connect.

The connection is checked immediately, and the key is encrypted before it is stored.

## Step 3 — map it, then arm it

- **Tags** — pick the tags published posts should carry. Bloggable reads the real tag list from your site.
- **Author** — any existing staff user on the Ghost site. It has to be someone who already exists there; Ghost won't create a user for us.
- **Categories** — greyed out, because Ghost has no categories. It's disabled rather than accepted and quietly dropped.
- **Keep the Bloggable address live** — off by default, so your Bloggable addresses redirect to Ghost.
- **Publish new posts automatically** — off by default. Turn it on once you've watched a post land the way you expect.

## What arrives in Ghost

**Images in Ghost's own store.** Uploaded on the way in and rewritten in the body, so the published post doesn't depend on Bloggable staying reachable.

**Tags, excerpt and meta description**, all mapped at connect time.

**The byline you picked**, as long as that staff user still exists.

**Embeds travel as links** rather than iframes, the same as WordPress — a working link beats markup a sanitiser removes.

## Editing, unpublishing, disconnecting

Edit in Bloggable and the change is pushed to Ghost. Unpublish and the Ghost post reverts to **draft** — the public URL stops resolving and the post stays in Ghost. We never delete from a site we don't own.

Disconnecting leaves everything published exactly where it is.

## Troubleshooting

**"That looks like a Content API key."** You copied the wrong one. Go back to **Settings → Integrations**, open the custom integration, and copy the **Admin API key** — the one with a colon in it.

**"That doesn't look like a Ghost site."** Enter the address you sign in at, without `/ghost` on the end. If Ghost sits behind a proxy or on a subpath, use the address Ghost itself reports in **Settings → General**.

**"Those credentials were rejected"** after it worked. The custom integration was deleted or regenerated in Ghost. Create a new one and reconnect.

**A published post won't update.** Ghost blocks some transitions — a post moved from published back to scheduled, for instance. The connection row names what Ghost refused.

Still stuck? [Get in touch](/help/getting-support) with the site address and the error on the connection row.
