How to add a popup to Ghost

To add a popup to Ghost, paste Popupsmart's embed code into Settings → Advanced → Code injection → Site footer and click Save. Ghost prints that code on every post and page, so you build and publish each popup in Popupsmart, with no theme edit and no Ghost integration to set up.

Ghost's own Portal handles member signups; Popupsmart adds popups that open on scroll, exit intent or a page rule.

Add a popup to Ghost
Ghost CMS logoPopupsmart logo

Setup at a glance

Runs on
Ghost CMS
Where the code goes
Settings → Advanced → Code injection → Site footer
Add-on
No integration needed

Before you start

You need three things, and a developer isn't one of them:

  • A Ghost staff account that can open Settings, such as the Owner or an Administrator.
  • A free Popupsmart account. The free plan covers one website and one live popup, so you can finish this guide without paying.
  • The address your readers use for the site, which Popupsmart verifies after the install.

How to add a popup to Ghost

A Ghost popup from Popupsmart needs one embed code in Ghost's site-wide code injection, added once. After that you build, change and publish popups in Popupsmart without opening Ghost Admin again.

Step 1: Create your Popupsmart account

Create your free Popupsmart account, or sign in if you already have one.

register to popupsmart

Step 2: Copy your embed code

In the dashboard, click Embed Code.

going to the embed code part

Your embed code opens in a window; copy it to your clipboard. The code is one line, <script src="https://cdn.popupsmart.com/bundle.js" data-id="…" async defer></script>, and the data-id belongs to your account.

copying the embed code

Step 3: Open code injection in Ghost Admin

In Ghost Admin, click the Settings icon (the gear) at the bottom left.

settings icon on ghost dashboard

Under Advanced, open Code injection.

code injection part on ghost dashboard settings

Paste the embed code into Site footer and click Save. According to Ghost's code injection tutorial, Site footer code is injected before the closing </body> tag, and site-wide code injection appears on every page, posts and pages alike.

pasting the embed code to the ghost website footer

Step 5: Add and verify your website

Back in Popupsmart, hover over the profile icon at the bottom left and click Websites.

websites section on profile

Click + New Website.

adding a new website to popupsmart

Enter your site's address in the Add a new website box and click Save.

entering a website and clicking save button

If the site shows as Unverified, click Unverified, then Verify website, and go back to the dashboard and click Refresh. The guide to verifying your website covers the other cases.

Step 6: Create your popup

On the dashboard, click New Campaign, name it, choose your Ghost site and pick a template.

creating a new popup campaign

Change its copy, colours and form fields to match your site, then click Save.

saving and publishing ghost popup

Step 7: Publish and check the popup on your site

Click Publish. Then open your site in a private window and load a post. The popup appears when its trigger fires.

publishing ghost popup

Does Ghost have a built-in popup?

Yes, for member signups. Ghost's Portal opens a signup and account window over your site: according to Ghost's Portal guide, it "handles the full membership experience for your subscribers" on any Ghost theme, and you customize it under Settings → Membership → Signup portal. Portal opens from the Portal button or from a link to #/portal; the guide doesn't describe opening it on a timer, a scroll or exit intent. Ghost also has embeddable signup forms, made under Settings → Growth → Signup forms, which sit inside a post, a page or another website.

Ghost Portal Popupsmart
What it is Ghost's signup and account window for members A popup builder with templates
How it opens The Portal button, or a link to #/portal Exit intent, scroll depth or time on page
Which pages Not documented URL and device rules on each campaign
Where signups go Ghost members of your publication The help center lists 19 destinations, including Mailchimp and MailerLite; Ghost isn't one of them
Paid tiers Shown in the signup form, with their prices Not covered: Popupsmart collects leads for your email tool
Price Part of every Ghost site Free plan: one website, one live popup, 5,000 pageviews a month; paid plans from $39 a month

Portal is the right tool for member signups and paid subscriptions: new members join Ghost's own list and receive your newsletter from Ghost. Popupsmart earns its install for the jobs around it: a popup that opens on scroll, exit intent or a page rule, a reader survey, an announcement, or signups for an email tool other than Ghost's newsletter. My advice on a Ghost site is to let Portal own member signups and give Popupsmart the other jobs, so a reader never sees two signup windows for the same newsletter.

How do you show a popup only on some Ghost pages?

Leave the embed code in the site footer and choose the pages in Popupsmart. The code only loads Popupsmart; which pages show a popup is a targeting rule on each campaign, such as "the URL contains /tag/" or "the visitor has scrolled half the post". Ghost also has code injection on each post, in the post settings, but code placed there loads on that one post only, and moving a popup means editing posts again.

Pages are half of the rule; timing is the other half. In Popupsmart's 2026 benchmark, popups that wait before appearing convert 0.83% against 0.61% for popups shown the instant the page loads (median campaign), a lean rather than a proven gap, and exit intent shows no statistically reliable advantage. When a popup fires is worth deciding on purpose, and on a post it decides whether a signup interrupts the first paragraph or waits until the reader has read enough to care.

Where do Ghost popup leads go?

Ghost popup leads from Popupsmart go to the Leads page in your Popupsmart dashboard, where you can export them, and to the email tool you connect in the campaign's Integration section. Ghost isn't one of the 19 destinations the help center lists, so a Popupsmart signup doesn't become a Ghost member on its own. If your newsletter goes out from Ghost, collect that signup with Portal; if it goes out from another tool, connect that tool.

The Mailchimp popup guide and the MailerLite popup guide walk through a connection; a webhook, Zapier or Make covers a tool that isn't on the list.

Ghost sites are built around posts and readers, so start there:

Does a popup slow down a Ghost site?

A Popupsmart popup doesn't hold up your Ghost pages: the embed code loads asynchronously (async defer), so the browser finishes building your page before it fetches Popupsmart. Nothing changes in your theme: code injection adds one script tag to the site footer, and you can remove it the same way.

  • The theme doesn't print code injection. Ghost adds code injection through the {{ghost_foot}} helper in the theme's default.hbs. Ghost's own themes include it; a custom theme that leaves it out drops the embed code.
  • The code is in one post's code injection. Then only that post loads Popupsmart. Move it to Settings → Advanced → Code injection → Site footer.
  • The website isn't verified. A campaign runs only on a verified website; see Step 5.
  • The address doesn't match. If your Ghost(Pro) site has a custom domain, add that domain in Popupsmart, not the ghost.io address.
  • A Content Security Policy blocks the script. If your server sends a CSP header, add Popupsmart's domains, starting with cdn.popupsmart.com.
  • The trigger hasn't fired yet. An exit-intent or scroll trigger waits for the reader to leave or scroll; test in a private window and behave like a reader.
💬
From the support queue: On Ghost, what I check first is where the code sits. Code in one post's code injection loads Popupsmart on that post only, so I move it to the Site footer under Settings → Advanced → Code injection. If it is already there, I open the theme's default.hbs and look for the ghost_foot helper: a custom theme without it drops everything in code injection, whatever you paste.

Still stuck? Contact Popupsmart support with your site's address and the campaign name.

Ghost popup FAQ

Is there a free way to add a popup to Ghost?

Yes. Popupsmart's free plan is permanent, not a trial: one website, one live popup and 5,000 pageviews a month, with Popupsmart branding. It is enough to install the code and run your first popup on a Ghost site.

The Popupsmart pricing page compares it with the paid plans.

Can Ghost Portal open automatically?

Not according to Ghost's Portal guide, which describes two ways to open it: the Portal button and links to #/portal on your site. To show a signup on a timer, after a scroll or on exit intent, use a popup tool such as Popupsmart and keep Portal for member accounts.

Do I need a Ghost integration or a theme edit for popups?

No. Code injection adds the embed code to every page without touching your theme files, and there is nothing to set up under Settings → Integrations.

Will the popup work with any Ghost theme?

Yes, as long as the theme includes Ghost's ghost_foot helper, which prints code injection on every page. Ghost's own themes include it; a custom theme that leaves it out drops the embed code.

Do Popupsmart popups work on mobile?

Yes. The same embed code loads on phones and desktops. The Popupsmart editor has a desktop and a mobile view, and device targeting lets you choose which devices a campaign shows on.