WordPress

How to Add a Popup to WordPress

Three routes in — the free plugin, one script line in your theme, or Google Tag Manager — and everything that comes after: the popup types that suit a content site, the display rules that respect your readers, a worked newsletter popup with real copy, and the numbers that tell you it's working.

📅 Updated August 2026 ⏱ 12 min read ✍️ By ChilliPopup
How to add a popup to WordPress — plugin, one script line, or Google Tag Manager, without slowing your site

There are three ways to add a popup to WordPress: install the free plugin from the WordPress plugin directory, paste one script line into your theme, or ship that same line through Google Tag Manager. Each takes under ten minutes, and none of them requires writing code.

The route you pick matters less than what most guides skip: the popup should not slow your site down, and on a content site it has to behave differently than it would on a store — a blog earns its signups mid-article, not on arrival. This guide covers the three installs step by step, the speed question honestly, and a complete newsletter popup you can copy, rules and all.

Key Takeaways

  • The plugin is the easiest route — install ChilliPopup from wordpress.org, paste your Workspace ID, done. No theme edits, and it survives theme changes.
  • All three routes load the same async script, so the popup is managed from a dashboard — you never redeploy WordPress to change a headline.
  • Async means no render blocking: the browser never pauses your page to wait for the popup script, so readers see your content at full speed.
  • Blogs convert on engagement triggers — 50% scroll and time-on-page beat show-on-arrival, and exit intent catches desktop readers on the way out.
  • Target by URL, cap the frequency. A recipe popup on /category/recipes/ shown once a week converts; the same popup on every page view gets your site resented.

The three ways to add a popup to WordPress

Whatever the route, the architecture is the same: a small script loads on your pages, checks which campaigns are published for your site, and renders them according to their display rules. The three methods only differ in how that script gets onto the page — so you can switch between them later without rebuilding anything.

Diagram of the three ways to add a popup to WordPress — the ChilliPopup plugin, one script line in the theme, or a Google Tag Manager custom HTML tag — all loading the same async popup script

Plugin, theme script or Tag Manager — three doors into the same room.

Method Best for Time Survives a theme change? Watch out for
WordPress plugin Almost everyone — bloggers, site owners, anyone with wp-admin access ~5 min Yes Nothing much — it's one settings field
Script in the theme Sites that keep plugin count minimal, or headless/customised setups ~5 min No — re-paste after switching themes Theme updates can wipe manual edits; use a child theme
Google Tag Manager Teams that already manage every tag in GTM, or marketers without wp-admin access ~10 min Yes (GTM container stays) Loads after GTM itself; blocked wholesale by anything that blocks GTM

Method 1: the WordPress popup plugin (easiest)

The ChilliPopup plugin is free and listed in the official WordPress plugin directory. It does exactly one thing: it adds the popup script to every page of your site, tied to your account. That thinness is a feature — no bundle of CSS and JavaScript riding along, nothing to keep patched beyond a one-field plugin.

  1. In wp-admin, go to Plugins → Add New and search for ChilliPopup.
  2. Click Install Now, then Activate.
  3. Create a free ChilliPopup account and copy the Workspace ID from the dashboard's install screen.
  4. Paste it into the plugin's settings page in WordPress and save.

That's the entire integration. From here on, everything — building popups, changing copy, pausing a campaign — happens in the ChilliPopup dashboard and goes live immediately; you never touch WordPress again to edit a popup. The step-by-step with screenshots is in the WordPress install guide.

Why this beats pasting code for most people: the plugin survives theme switches and theme updates, it can't be broken by a typo, and removing it is one click.


Method 2: paste the script in your theme

Prefer zero extra plugins? The dashboard's install screen gives you a single script line for your site's <head>. Copy yours from the dashboard rather than retyping — it already contains your ID:

Your install snippet — copy the exact line from Dashboard → Install
<!-- ChilliPopup — one async line, place before </head> -->
<script async src="https://player.chillipopup.com/javascript/pixel.js?id=YOUR-WORKSPACE-ID"></script>

Where to paste it, from safest to least safe:

This is the same universal snippet that works on any site, WordPress or not — the any-website install guide covers it in full.

The ChilliPopup dashboard install screen showing the one-line script snippet to copy into a WordPress theme header

The install screen generates your exact snippet — copy it from here, never retype it.


Method 3: Google Tag Manager

If your site already runs Google Tag Manager, deploy the popup script like any other tag — useful when the person running campaigns has no wp-admin access, or when policy says every third-party script goes through the container.

  1. In GTM, create a New Tag → Custom HTML.
  2. Paste the install snippet from your ChilliPopup dashboard into the HTML field.
  3. Set the trigger to All Pages.
  4. Preview, then Publish the container.

Two honest trade-offs: the popup script can only start loading after GTM itself has loaded, so it appears a beat later than the direct routes; and anything that blocks Tag Manager blocks everything inside it, popup included. If GTM is your standard, follow the Tag Manager install guide; if not, the plugin is the better default.

Pick one route, not two. If the plugin is active and the script is in GTM, the script loads twice and your popups can double-fire. Before installing by a second method, remove the first.


Will a popup slow down your WordPress site?

This is the question that stops most bloggers, and whether a popup costs you page speed depends entirely on how its code arrives.

Popups built into a heavy theme or assembled inside a page builder typically ship their CSS and JavaScript as part of the page itself. Every visitor downloads that weight on every page, whether a popup ever fires or not — and anything loaded synchronously in the head pauses rendering until it's fetched and parsed. That's the "my popup tanked my scores" story, and it's an architecture problem, not a popup problem.

A hosted script flips the model. ChilliPopup renders through one lightweight script that loads asynchronously: the browser starts fetching it and immediately carries on building your page, so your content renders at full speed in parallel. There's no iframe embedded in your page either — the popup renders directly into it.

Timeline showing a render-blocking popup bundled into a WordPress theme delaying the page, versus a hosted async popup script loading in parallel while the page renders

Async loading in one picture: the page never waits for the popup.

Three properties answer the follow-up questions too:


Store popups push discounts. Content-site popups trade value for attention — four formats are worth building first:

The email list popup

The workhorse. One headline, one email field, one button, triggered mid-read when the post has proven its worth. If you build only one popup, build this — it's the worked example later in this guide.

The exit intent popup

Fires when the cursor heads for the tab bar — the reader was leaving anyway, so the interruption costs nothing. On a blog it's the natural second campaign: a last offer of the newsletter, or a pointer to your best related post. One caveat: exit intent reads mouse movement, so it's a desktop behaviour — give mobile readers a scroll-triggered popup instead.

The inline form

Not every ask should interrupt. A form is the quieter twin of a popup — same builder, same fields, same targeting — for the moments a modal feels too loud: a footer signup, a "request the checklist" box after a tutorial, a contact form on your about page.

The blog-to-newsletter bridge

The most underrated pattern on content sites: a popup that offers more of exactly what the reader is consuming. On recipe posts it offers a weekly recipe; on finance posts, the monthly breakdown. Same template, duplicated per category, each with its own URL targeting and headline — specific beats generic, and page targeting makes specific cheap.


Display rules that matter on a blog

Installing the script puts you on the field; display rules decide whether you play well. Four do most of the work on a content site:

Wireframe of a WordPress blog post with a scroll-depth scale showing the newsletter popup firing at 50 percent scroll, when the reader is invested

Scroll depth is a proxy for trust: at 50% the reader has decided your content is worth their time.

Rules stack as AND conditions, so combine them: 50% scroll + URL contains /category/recipes/ + once every 7 days + never after conversion surfaces at most once a week, mid-read, to unconverted recipe readers only — a popup nobody writes an angry tweet about. Device targeting layers on top when you want a desktop exit-intent campaign and a separate mobile scroll campaign.


Worked example: a newsletter popup for a recipe blog

A complete build you can adapt line for line — a fictional food blog turning recipe readers into newsletter subscribers.

Start from a template

In the dashboard, open the popup template gallery and pick a simple newsletter layout — image, headline, one field, one button.

The ChilliPopup popup template gallery — starting point for a WordPress email popup

Start from a newsletter template and edit the words; don't start from a blank canvas.

The copy

Notice what the copy does: it names the exact thing subscribers get ("one tested dinner recipe"), the exact schedule ("every Friday"), and it disarms the two standard objections (spam, rambling preamble). The button repeats the reward instead of saying "Subscribe", and the visible decline link matters: readers who can leave politely don't punish you for asking.

The rules

Editing a WordPress newsletter popup in the ChilliPopup drag-and-drop editor — headline, email field and button blocks

Everything in the example — headline, field, button, decline link — is a block you drag and edit.

Publish and verify

Publish the campaign, open a recipe post in a private window (so yesterday's testing doesn't suppress it), scroll halfway, and watch it appear. Submit a test email and confirm it shows up in your dashboard. Total build time: about twenty minutes, most of it on the headline — the right place to spend it.


Six common WordPress popup mistakes

  1. Installing the script twice. Plugin + GTM, or plugin + pasted snippet, loads everything twice and can double-fire your popups. One route only.
  2. Firing on arrival. A popup at zero seconds converts strangers at stranger rates and trains regulars to close it reflexively. Trigger mid-read, when the value exchange makes sense.
  3. No frequency cap. Showing the same popup on every page view is the fastest way to make loyal readers resent you. Once every few days is plenty.
  4. Leaving "show after conversion" on. Your most engaged people — existing subscribers — get nagged with an ask they already said yes to.
  5. Full-screen takeovers on mobile. Search engines penalise intrusive mobile interstitials on content pages, and readers hate them anyway. Keep mobile popups modest in size, easy to dismiss, and scroll-triggered.
  6. A generic pitch on specific pages. "Subscribe to our newsletter" under a post found by searching "how to sharpen a knife" wastes your targeting. Duplicate the campaign per category and make each headline about that category.

Measuring whether your WordPress popup works

Every campaign reports its own views, clicks, submissions and conversion rate in the analytics dashboard — no extra tracking plugin, no spreadsheet.

The ChilliPopup analytics dashboard showing views, clicks, submissions and conversion rate for a WordPress popup campaign

Views, submissions and conversion rate per campaign — the three numbers that settle every popup argument.

Read them in this order:

Give any change two weeks before judging it — blog traffic swings by weekday and by which post happens to rank, so a three-day verdict mostly measures noise.


The 20-minute setup, start to finish

Everything above, compressed into one runnable checklist:

1. Install the plugin

Plugins → Add New, search "ChilliPopup", install and activate. (Or use the theme script / Tag Manager route — one of the three, never two.)

2. Connect your Workspace ID

Create a free account, copy the Workspace ID from the dashboard's install screen, paste it into the plugin settings, save.

3. Build the popup from a template

Pick a newsletter template and rewrite the four lines that matter: headline, body, button, decline link.

4. Set the rules

50% scroll, URL targeting for the posts it belongs on, frequency capped at once every few days, "show again after conversion" off.

5. Publish and verify

Open a targeted post in a private window, scroll halfway, watch it fire. Submit a test email and check it lands in the dashboard.

6. Read the numbers in two weeks

Views tell you if the rules work; conversion rate tells you if the copy works. Fix whichever is weakest, one change at a time.

Put a popup on your WordPress site today

Install the free plugin, paste one ID, and build your first newsletter popup from a template — popups, forms, surveys, quizzes and games, all from one editor. Plans from $15/month with a 14-day free trial.

Start your free trial →

Frequently asked questions

What is the easiest way to add a popup to WordPress?

Install the free ChilliPopup plugin from the WordPress plugin directory, activate it, and paste your Workspace ID from the ChilliPopup dashboard into the plugin's settings. That is the whole install — you build and edit the popups themselves in the dashboard, and they appear on your site without touching any theme code.

Do I need to know how to code to add a popup to WordPress?

No. The plugin route involves no code at all, and even the manual route is a single copy-paste — one script line into your theme's header, or the same line inside a Google Tag Manager tag. The popup itself is built in a drag-and-drop editor, and changing it later never touches WordPress again.

Will a popup slow down my WordPress site?

Not if it loads the right way. ChilliPopup renders through one lightweight script that loads asynchronously, so the browser never pauses your page to wait for it — readers see your content at full speed whether or not a popup ever fires. Popups baked into heavy theme or page-builder bundles are a different story: their CSS and JavaScript load on every page, for every visitor, popup or not.

How do I add an exit intent popup to WordPress?

Install ChilliPopup using any of the three methods in this guide, then build a popup and pick exit intent as its trigger in the display rules. It fires when the visitor's cursor moves to leave the page. Exit intent relies on cursor movement, so it is a desktop behaviour — pair it with a scroll-percentage trigger for mobile readers.

Can I show a popup only on certain WordPress posts or categories?

Yes — with page targeting by URL. Add a rule like "URL contains /category/recipes/" or "URL starts with /reviews/" and the popup only appears on matching pages. Because the rules match URL patterns, a consistent permalink structure — category in the path, or a shared slug prefix — makes per-topic targeting easy.

Does a WordPress email popup send the emails too?

No — and that separation is deliberate. ChilliPopup collects the signups and stores every submission in your dashboard; you then send the newsletter from your own email tool. That means you can switch email providers at any time without rebuilding your popup, and redesign your popup without touching your email tool.