Paddle does not offer simple checkout links you can paste into a button. Checkout requires a small JavaScript snippet embedded in your Ghost site. Step 5 covers this.
Prerequisites
- A Paddle account at paddle.com with at least one product and price created
- A Ghost blog connected in PayGlue (Connect Ghost)
Step 1: Create an API key
In your Paddle dashboard, go to Developer tools → Authentication. Click Generate API key, give it a name (e.g.PayGlue), and copy the key immediately — Paddle shows it only once.
[Screenshot — Paddle Developer tools → Authentication: Generate API key button and the resulting key field]The key starts with
pdl_live_ for live mode or pdl_sdbx_ for sandbox. PayGlue detects the mode automatically from this prefix — no separate setting needed.
Step 2: Add a notification destination
Go to Developer tools → Notifications and click + New destination.[Screenshot — Paddle Developer tools → Notifications: empty state with ”+ New destination” button]Fill in the form:
- Type: URL
-
URL: paste the webhook URL from your PayGlue Paddle connection page:
Replace
YOUR-SLUGwith your PayGlue organization slug (visible in the dashboard URL or on the Paddle connection page). -
Events: select all six of the following:
transaction.completedsubscription.activatedsubscription.resumedsubscription.canceledsubscription.pausedsubscription.past_due
[Screenshot — Paddle: New destination form with URL filled in and the six events checked]After saving, open the destination and copy the secret key (starts with
pdl_ntfset_). You will need this in the next step.
[Screenshot — Paddle: Saved notification destination with the secret key field visible]
Step 3: Enter credentials in PayGlue
In your PayGlue dashboard, go to Providers and click Connect Paddle. Fill in the two fields:- API Key — from Step 1
- Webhook Secret — the
pdl_ntfset_...secret key from Step 2
[Screenshot — PayGlue dashboard: Paddle connection page with API Key and Webhook Secret fields]Click Save credentials.
Step 4: Run a health check
Click Run health check to confirm PayGlue can reach your Paddle account. A green “Connection established” banner means everything is working.Step 5: Add Paddle checkout to your Ghost site
Paddle does not generate standalone checkout URLs. Instead, checkout opens as an overlay on your page, triggered by a JavaScript call. You embed Paddle’s script once in Ghost, then add a button wherever you want a buy button to appear.5a: Find your client-side token and price ID
You need two values from Paddle before touching Ghost: Client-side token — this is separate from the API key. In Paddle, go to Developer tools → Authentication → Client-side tokens and copy the token for your environment (starts withlive_ or test_).
[Screenshot — Paddle: Client-side tokens section with token value]Price ID — in Paddle, go to Catalog → Products, open a product, and copy the ID of the price you want to sell. Price IDs start with
pri_.
[Screenshot — Paddle: Product page showing price list with price IDs (pri_…)]
5b: Add Paddle.js to Ghost via Code Injection
In Ghost Admin, go to Settings → Code injection → Site header and add the following. ReplaceYOUR_CLIENT_TOKEN with the client-side token from above:
[Screenshot — Ghost Admin: Settings → Code injection → Site header with the Paddle script pasted in]Click Save.
5c: Add a buy button
Wherever you want a checkout button — in a Ghost page, post, or theme template — add a button that callsPaddle.Checkout.open. Replace pri_xxxx with your actual price ID:
[Screenshot — Ghost editor: HTML card with the Paddle checkout button code]When a visitor clicks the button, a Paddle checkout overlay opens. After a successful payment, Paddle sends a webhook to PayGlue, which then grants the Ghost membership automatically.
Step 6: Create a mapping
In your PayGlue dashboard, go to Buy Button, Paywall, or Pricing Table and select your Paddle product from the dropdown. Choose which Ghost newsletter to subscribe the buyer to and which welcome email to send, then save.Supported events
Sandbox mode
Use a sandbox API key (pdl_sdbx_...) and a sandbox client-side token (test_...) during testing. PayGlue detects sandbox automatically — no extra setting in the dashboard. Make sure your Paddle notification destination in sandbox also points to the same webhook URL.
Remove test members from Ghost Admin before switching to live credentials.
Troubleshooting
Health check fails after saving credentials Confirm you entered the API key (not the client-side token) in the API Key field. The API key starts withpdl_live_ or pdl_sdbx_; the client-side token starts with live_ or test_.
Checkout overlay does not open
Check the browser console for errors. Common causes:
Paddle is not defined— the Paddle.js script was not added to Code injection, or the page loaded before the script finishedInvalid token— the client-side token is wrong or belongs to the wrong environment (sandbox vs. live)
Webhook signature verification
Paddle’s notification delivery does not currently attach a cryptographic signature to the requests it sends. PayGlue stores your Webhook Secret and will verify thePaddle-Signature header automatically if Paddle starts sending one — no action needed on your part. Until then, the per-tenant webhook URL itself acts as the shared secret between Paddle and PayGlue.