Ghost + Patreon: Sync Your Patrons Into Ghost Tiers

SETUPGhost + Patreon: Sync YourPatrons Into Ghost Tiers
On this page

Patreon is the one provider on this list you might already be using. If you have a campaign with patrons on it, the pitch here is narrow and specific: keep the audience and the billing where they are, and let Ghost hold the content behind a gate that opens by itself.

There is one behaviour worth understanding before you map more than one tier, so it goes first.

The cancellation behaviour

When a patron cancels, every tier PayGlue granted them is revoked, not just the one they left.

The reason is in Patreon’s payload rather than in anybody’s choice. On cancellation, Patreon does not reliably say which tier the patron was on. Faced with that, PayGlue removes every active Patreon-sourced mapping for that member rather than guessing one and getting it wrong half the time.

For most campaigns this never comes up, because a patron holds one tier. If you map several and expect somebody to hold two at once, this is the thing to design around. Everything else about Patreon behaves the way you would expect.

Patreon has no checkout URL to generate. Patrons join through your campaign page, always.

That is not a gap in the integration, it is how Patreon works. In the Buy Button editor you turn off “Link to a product” and paste your campaign’s join URL. The button then links to Patreon, and the Ghost access still arrives automatically through the webhook once somebody pledges.

What you need

  • A Ghost site you administer
  • A Patreon creator account with an active campaign
  • Admin access to both

Connect Ghost first

In Ghost, open Settings, then Integrations, then Add custom integration. Name it PayGlue and copy the Admin API key along with your site URL.

Register a client on Patreon

In the Patreon developer portal at patreon.com/portal, register a client for your campaign and generate a Creator’s Access Token.

Make sure the token carries the campaigns.members[email] scope. This is the single most common thing to get wrong, and it fails in two places at once: without it PayGlue can neither read your tier list nor see patron email addresses. The symptom is an empty dropdown where your tiers should be, which looks like a connection problem and is not.

Paste the token into the Access Token field on the Patreon connection page in PayGlue.

That same token is what fetches your tiers, so they appear as a dropdown when you map. No typing tier names by hand, unlike Ko-fi.

Register the webhook

Still in the developer portal, register a webhook pointing at the Webhook URL shown on your Patreon connection page, and enable three triggers:

  • members:pledge:create
  • members:pledge:update
  • members:pledge:delete

Patreon then shows a Webhook Secret. Copy it into PayGlue and click Save credentials.

Both values are needed. With only the token, the connection stays incomplete.

Run a health check, and know its limits

Green means the webhook secret is saved. It does not mean Patreon is delivering anything, because Patreon has no endpoint PayGlue can ping to find out.

For a real check, send a test webhook from the developer portal, then open Analytics, then Webhook Events.

Which events do what

Patreon puts the event type in the X-Patreon-Event header rather than in the body, which is unusual but only matters if you are debugging raw deliveries.

Patreon event What happens in Ghost
members:pledge:create, members:create Access granted for the patron’s current tiers
members:pledge:update with status active Access granted for the patron’s current tiers
members:pledge:update with status former or declined All Patreon access revoked
members:pledge:delete, members:delete All Patreon access revoked

Note the third row. A declined payment revokes access the same way a cancellation does. That is the correct behaviour and it will occasionally surprise a patron whose card bounced, so it is worth a line in your own onboarding email.

Map a tier to a Ghost tier

Open Mappings and pick a Patreon tier from the dropdown. Choose which Ghost newsletter the patron should be subscribed to and which welcome email they get, then save.

From then on, every pledge, tier change and cancellation moves Ghost access on its own.

Test it

Send a test webhook from the developer portal, or wait for a real patron. The event should appear as Processed and the patron’s email should turn up as a member in Ghost Admin.

If the member is not created, open the event and read the error. A missing email in the payload is the token scope again.

Then test a cancellation. Given the revoke-everything behaviour above, that is the half worth confirming with your own eyes rather than assuming.

Where Patreon fits

Choose it when the audience is already there. Moving patrons to a new billing relationship costs you some of them, and if Patreon is working, the sensible move is to add Ghost behind it rather than to replace it.

Look elsewhere when you are starting fresh and would rather not hand over Patreon’s cut, or when you want the tax handled for you. Patreon is not a merchant of record, so VAT stays your problem. What that means.

The full comparison of every route is here.

Frequently asked

Can I generate a Patreon checkout link from PayGlue?

No, and not because of a missing feature. Patreon has no checkout URL to generate; patrons always join through your campaign page. In the Buy Button editor you turn off 'Link to a product' and paste your campaign's join URL instead. Access is still granted automatically through the webhook.

What happens to a patron on several tiers when one is cancelled?

All of their Patreon-granted access is revoked, not just the tier they left. Patreon's cancellation payload does not reliably say which tier ended, so PayGlue removes every active Patreon-sourced mapping for that member rather than guessing. If you map several tiers, plan for that.

Why do my tiers not appear in the mapping dropdown?

Almost always the token scope. The Creator's Access Token needs campaigns.members[email]; without it PayGlue can neither read your tiers nor see patron email addresses. Regenerate the token in the developer portal with that scope enabled.

Is Patreon a merchant of record?

No. Patreon processes the payment and takes its cut, and the tax position stays with you. If you would rather it did not, Polar, Paddle, Lemon Squeezy, Creem and Gumroad all take that on.

Does the health check prove Patreon is delivering?

No. It confirms the webhook secret is saved. Patreon has no endpoint PayGlue can ping for delivery, so send a test webhook from the developer portal and check the event log.