How to Add Ecommerce to Ghost CMS: Carts, Buy Buttons, and Memberships
Quick answer: Ghost doesn't have a built-in shopping cart, but you can add ecommerce in three ways: embed Gumroad or Shopify buy buttons directly in posts, use Snipcart for a full cart experience, or connect Stripe payment links for one-off product sales — all without touching your theme code.

Ghost is a publishing platform first. People stumble into the ecommerce question after they've built an audience and want to monetize beyond memberships — selling an ebook, a course, a print, a physical product. The forum lights up regularly with versions of the same question: "Can Ghost handle a store?"
The short answer: yes, but not natively. Ghost doesn't ship inventory management, a cart, or product pages out of the box. What it gives you instead is a clean HTML embed system and a flexible membership/subscription layer — and those two things, combined with the right external tools, get you to a working store faster than most people expect.
This guide covers every practical path: lightweight buy buttons for digital goods, a full cart for multiple products, and how to gate content behind a purchase without writing custom code.
Does Ghost support ecommerce natively?
No. Ghost's own help docs say it plainly: there's no built-in shopping cart and no inventory tools. What Ghost does handle natively is recurring subscriptions via Stripe — that's the membership system. One-time product sales need an external tool.
That said, Ghost's Code Injection (Site Header/Footer) and the HTML card in the editor both accept raw embed snippets. Every major ecommerce widget works via a JavaScript snippet + a button or embed code. So adding a store is less about Ghost configuration and more about picking the right payment tool.
Option 1: Gumroad — best for digital products and courses
Gumroad is the fastest path for digital goods: ebooks, templates, presets, guides, courses. You create the product on Gumroad, copy the embed code, and paste it into any Ghost post using the HTML card.
The embed renders a product card with a buy button. When clicked, Gumroad's checkout overlay appears — the reader never leaves your site. No API setup, no theme edits, no JavaScript to manage yourself.
To embed a Gumroad product in Ghost:
<!-- Paste into Ghost HTML card -->
<script src="https://gumroad.com/js/gumroad.js"></script>
<a class="gumroad-button" href="https://app.gumroad.com/l/YOUR_PRODUCT_ID">Buy on Gumroad</a>
To load the Gumroad script site-wide (so it works on every post), add the script tag to Ghost Admin → Settings → Code Injection → Site Header. Then only the anchor tag goes in each post's HTML card.
Gumroad's fees as of 2026: 10% per transaction on the free plan, dropping with volume. No monthly subscription needed to start.
Option 2: Shopify Buy Button — best if you already run a Shopify store
If you sell physical products and already use Shopify, the Buy Button channel lets you embed individual products or full collections into Ghost without redirecting customers to a separate storefront.
Setup steps:
- In Shopify Admin, go to Sales Channels → Buy Button
- Create a button for the product you want to embed
- Copy the generated JavaScript embed code
- Paste it into a Ghost post's HTML card or into Site Header for global access
The Buy Button renders inline on your Ghost page with an add-to-cart action that opens Shopify's checkout modal. Inventory syncs in real time with your Shopify store. It's a strong option if you want to keep Ghost as your content layer while Shopify handles fulfillment, shipping, and inventory.
Ghost's integration ecosystem officially lists Shopify as a supported partner.
Option 3: Snipcart — best for a full multi-product cart on Ghost
Snipcart turns Ghost into a proper storefront. It adds a persistent shopping cart to your site: readers can browse multiple products, add items, and check out — all within your Ghost theme. This is the closest you get to a native cart experience without switching platforms.
How to set up Snipcart on Ghost:
Step 1: Create a Snipcart account at snipcart.com and grab your public API key.
Step 2: Add the Snipcart script to Ghost's site header. Go to Settings → Code Injection → Site Header and paste:
<link rel="preconnect" href="https://app.snipcart.com">
<link rel="preconnect" href="https://cdn.snipcart.com">
<link rel="stylesheet" href="https://cdn.snipcart.com/themes/v3.7.3/default/snipcart.css" />
<div hidden id="snipcart" data-api-key="YOUR_PUBLIC_API_KEY"></div>
<script async src="https://cdn.snipcart.com/themes/v3.7.3/default/snipcart.js"></script>
Step 3: Add buy buttons to your posts using the HTML card:
<button class="snipcart-add-item"
data-item-id="ghost-ebook-001"
data-item-name="Ghost SEO Mastery Ebook"
data-item-price="29.00"
data-item-url="/ghost-seo-ebook"
data-item-description="Complete Ghost SEO guide"
data-item-image="https://yoursite.com/ebook-cover.jpg">
Add to Cart
</button>
Step 4: Add a cart link to your navigation. In Ghost Admin → Settings → Navigation, add a link with URL /#/cart.
Snipcart handles checkout via Stripe or PayPal. They charge 2% on transactions (plus Stripe's own fee) with no monthly fee on the free tier. It works for physical and digital products.
For sites that have invested in Ghost's theme and SEO setup, Snipcart is often the best pick — it stays within your Ghost domain and doesn't redirect anywhere.
Option 4: Stripe Payment Links — simplest checkout for one or two products
If you sell one or two things and don't want cart complexity, Stripe Payment Links generate a hosted checkout URL in under two minutes. No code, no embed library.
How it works:
- In your Stripe Dashboard, go to Payment Links → Create Link
- Add your product, set the price
- Copy the link (format:
buy.stripe.com/XXXX) - In Ghost, add it as a button using the Button card, or as a plain anchor in an HTML card
The buyer clicks, lands on a Stripe-hosted page, pays, and gets an email confirmation. You handle delivery manually (or use Stripe's built-in PDF attachment for digital goods). No third-party script on your page, zero setup overhead. The trade-off: the user leaves your Ghost site to check out.
How do I sell a paid newsletter or membership in Ghost?
This one Ghost does natively. Ghost's membership system lets you create paid tiers (monthly or annual) backed by Stripe. Readers subscribe from your site, pay in-app, and get access to gated content automatically.
You set it up under Settings → Tiers. Each tier can have a name, monthly price, annual price, and a list of benefits. You then restrict posts to specific tiers using the Access dropdown in the editor.
Ghost takes 0% of membership revenue on self-hosted installs. On Ghost(Pro), there's no additional transaction fee beyond Stripe's standard rate (1.4–2.9% + fee depending on region).
Comparing Ghost ecommerce options
| Tool | Best for | Cart? | Fee | Complexity |
|---|---|---|---|---|
| Gumroad | Digital products, ebooks | No (overlay) | 10% (free plan) | Low |
| Shopify Buy Button | Physical + existing Shopify store | Yes (modal) | Shopify plan | Medium |
| Snipcart | Multi-product store on Ghost | Yes (full cart) | 2% + Stripe | Medium |
| Stripe Payment Link | 1-2 products, simple checkout | No | Stripe only | Low |
| Ghost Memberships | Recurring subscriptions, gated content | N/A | 0% (self-hosted) | Low |
| BigCommerce Buy Button | Enterprise catalog | Yes (modal) | BigCommerce plan | High |
Can I use PayPal instead of Stripe on Ghost?
PayPal doesn't integrate with Ghost's native membership system — that requires Stripe. But for one-off product sales, you can embed PayPal's Buy Now buttons directly in any Ghost post or page using the HTML card.
Get the embed code from your PayPal account under Tools → PayPal Buttons, then paste the generated HTML snippet into Ghost's HTML card. It renders a standard PayPal checkout button. Snipcart also supports PayPal as a checkout method alongside Stripe.
How do I gate a product download behind a Ghost membership?
This is a common use case: sell access to a PDF, video, or file through Ghost's membership system rather than Gumroad. The setup:
- Upload your file to Ghost Media Library (Settings → Design → Upload) or to a storage bucket
- Create a paid tier under Settings → Tiers
- Create a post with the download link inside it
- Set that post's Access to the paid tier
Members who subscribe and pay through Ghost's checkout get immediate access to the post with the download link. Ghost handles authentication — non-members see your custom paywall message.
This approach keeps everything inside Ghost and avoids third-party fees beyond Stripe's cut. It's ideal for a single digital product or a library of gated resources.
You'll want to make sure your confirmation email links work correctly so new paid members land on the right page after signup.
Related Ghost Guides
- How to Restrict Content to Specific Membership Tiers — gate any post or page behind a paid plan
- Ghost Confirmation Email Goes to 404: Fixes — prevent broken member onboarding
- Ghost Mailgun Alternatives — send transactional and newsletter email without Mailgun
- Amazon SES with Ghost CMS — low-cost transactional email for high-volume stores
- Improve Google PageSpeed on Ghost — keep your store pages fast
- Add Full-Text Search to Ghost CMS — help customers find products via search
- What is Ghost Commerce? — broader context on the Ghost business model
- Ghost vs Gumroad — full comparison when you're choosing between them
Frequently Asked Questions
Does Ghost have a built-in shopping cart?
No. Ghost doesn't include a shopping cart or product catalog. You add one via third-party tools — Snipcart for a full cart, Gumroad or Shopify Buy Button for embedded checkout.
Can I sell physical products on Ghost?
Yes, with help from an external tool. Shopify Buy Button is the best option for physical goods — it connects to your existing inventory, handles shipping logic, and renders inline on Ghost pages. Snipcart also supports physical products with shipping rate configuration.
Is Gumroad free to use with Ghost?
Gumroad has no monthly fee. They charge 10% per sale on the free plan. That rate drops as your volume grows. For most creators selling ebooks or courses, it's the simplest and cheapest starting point.
Can I use WooCommerce with Ghost?
Not directly — WooCommerce is a WordPress plugin and doesn't embed into Ghost. You could use Ghost as a headless frontend and point links to a separate WooCommerce store, but that creates two separate sites. Snipcart or Shopify Buy Button is a better fit if you need multi-product cart functionality on Ghost itself.
How does Ghost's membership differ from Gumroad?
Ghost memberships are recurring subscriptions — readers pay monthly or annually for ongoing access to gated content. Gumroad is for one-time purchases of specific products. You can use both together: Ghost for the subscription, Gumroad for one-off digital sales.
Does Snipcart work with Ghost's theme system?
Yes. Snipcart runs via a JavaScript snippet added to Ghost's Code Injection header. It doesn't need theme modifications — the cart UI overlays your existing theme. You can style it with CSS variables if you want it to match your theme colors.
What's the cheapest way to start selling on Ghost?
Stripe Payment Links: free to set up, and you only pay Stripe's standard processing fee (1.4–2.9% + fixed fee per transaction). It's the lowest overhead option — no third-party platform fee, no monthly subscription. The trade-off is the buyer leaves your Ghost site to complete checkout.
Can I sell memberships and one-time products at the same time on Ghost?
Yes. Ghost's native membership handles subscriptions; Gumroad or Snipcart handles one-time sales. Run them in parallel — your paid members get gated content automatically, and anyone can buy individual products via the embedded cart or buy button, regardless of membership status.