Platforms

How to Add a Popup to PrestaShop

One script tag, three ways to deliver it, and one thing PrestaShop makes harder than other platforms: knowing what your own URLs look like. Here is the install, the targeting, and the cache traps.

📅 Updated August 2026 ⏱ 12 min read ✍️ By ChilliPopup
A PrestaShop store popup being designed in the ChilliPopup editor, with the canvas on the left and the block settings on the right

To add a popup to PrestaShop, get one script tag into your storefront's <head> — via your child theme's head.tpl, a custom-code module, or Google Tag Manager — and clear the cache. Everything after that happens outside PrestaShop: the design, the trigger, the pages, the offer.

The part that actually needs care on PrestaShop is not the install. It is the URL targeting, because PrestaShop paths change with your language, your friendly-URL settings and your theme. This guide covers both, plus multistore and the cache traps.

Key Takeaways

  • Three install routes — child theme head.tpl, a custom-code module, or Google Tag Manager. Same one-line tag.
  • Always use a child theme. Edit the parent and a theme update erases your install.
  • Clear the cache under Advanced Parameters → Performance, or the compiled template still has the old head.
  • Copy your own URLs before writing targeting rules — PrestaShop paths are localised and configurable.
  • Exclude checkout on every marketing campaign. The order-confirmation page is the one exception.

The three ways to install

Three ways to install a popup script on PrestaShop — child theme head template, a custom-code module, or Google Tag Manager

Three routes, one destination: the tag in the storefront <head>. Pick by what access you have.

Route 1 — the child theme's head template

The cleanest option if you have FTP or file-manager access. Open themes/<your-theme>/templates/_partials/head.tpl in your child theme and add the tag inside the head block, then clear the cache.

PrestaShop → themes/<child-theme>/templates/_partials/head.tpl
<script id="chillipopup-pixel"
  src="https://player.chillipopup.com/javascript/pixel.js?id=YOUR_WORKSPACE_ID"
  data-api="https://api.chillipopup.com"
  async="true"></script>

Child theme, never the parent. A PrestaShop theme update overwrites parent template files without warning, and the failure mode is silent — your popups just stop appearing one day and nobody connects it to the update.

Route 2 — a custom-code module

If you would rather not touch files, any module that injects code into the storefront header will do. Paste the tag into its header-code field, apply it to all shops if you run multistore, save, and clear the cache. The popup itself needs nothing server-side; the module is purely a delivery mechanism for one line of HTML.

Route 3 — Google Tag Manager

If GTM already runs on the storefront, this is the fastest install and keeps every marketing tag in one place: a Custom HTML tag firing on All Pages. Full walkthrough in the GTM install guide. The only caveat is that a GTM-delivered tag arrives a fraction later than a hard-coded one, which matters for nothing except a zero-second trigger — and you should not be using one of those anyway.

Whichever route you take, verify the same way: load the storefront, view page source, and search for chillipopup-pixel. Present means the install worked and any remaining problem is a campaign rule.


Build the popup

With the tag live, the store owner never opens PrestaShop to run a campaign again. Popups are built on a canvas with blocks — text, buttons, input fields, images, shapes, icons, a countdown timer, a coupon-code block, a YouTube embed — and published from the dashboard.

Designing a PrestaShop store popup in the ChilliPopup drag-and-drop editor

The offer, the copy and the discount code all live outside PrestaShop — so changing them is never a deploy.

Two practical notes for PrestaShop stores. First, match your storefront font: the editor ships a large Google-font catalogue and supports uploading a custom font, so the popup does not read as a bolt-on. Second, if your shop is multilingual, build one campaign per language and target it with a URL rule on the language path — a single popup cannot translate itself.

Test the voucher first. PrestaShop cart rules carry conditions, date ranges, per-customer limits and currency restrictions. Run the code through a real cart before the popup promises it — a rejected code at checkout costs more than the signup was worth.


Targeting PrestaShop URLs

This is where PrestaShop differs from a platform with fixed paths. Friendly URLs, language prefixes and theme routing mean your product and cart paths may not look like anyone else's. So do this first: open each page on your own storefront and copy the path out of the address bar.

Then build rules from what you actually see:

TargetHow to find the patternRule shape
All product pagesOpen two products, compare the pathsURL ends with .html, or contains the shared segment
One categoryOpen the category listingURL contains the category slug
CartAdd an item, open the cartURL contains the cart path or controller=cart
CheckoutStart a checkoutURL contains the order path — use this as an exclusion
Order confirmationComplete a test orderURL contains order-confirmation
One language onlySwitch language, watch the prefixURL starts with /fr/
Homepage onlyURL is exactly /

Never let a marketing popup reach checkout. Add URL does not contain your order path to every campaign. The single exception is the order-confirmation page, where the customer has already paid — and that page is one of the best places on the whole shop to ask a question.

Behaviour rules come next: a trigger (exit intent on desktop, scroll or inactivity on mobile), an audience, a frequency so a dismissal is respected, and turning off "show again after conversion". The targeting rules guide has the full set.

Run popups on your PrestaShop store

Build popups, forms, surveys, quizzes and games from one editor — and one script tag. Plans from $15/month with a 14-day free trial.

Start your free trial →

Four campaigns that suit a PrestaShop store

1. First-order voucher for new visitors

Exit intent on desktop, 50% scroll on mobile, category and product pages only, audience new visitors, one email field, code revealed on the thank-you screen. This is the baseline campaign every shop should have running.

2. Free-shipping nudge on the cart

Target the cart path, trigger on exit intent, and lead with the threshold rather than a percentage: "Free delivery over €49." Shipping cost is the most common reason a PrestaShop cart is abandoned, and a discount does not answer it. More in the cart-abandonment guide.

3. A "why didn't you buy?" survey

A one-question survey on exit intent from the cart, with four options: too expensive, shipping cost, just browsing, payment method missing. Four weeks of answers will tell you more about your conversion rate than any heatmap.

4. A restock or seasonal announcement

An announcement bar runs site-wide without covering content — the right shape for delivery cut-off dates, which every shop needs twice a year and which nobody reads when it is buried in the footer.


Common PrestaShop problems

SymptomUsual causeFix
Tag not in page sourceSmarty cache still serving the old compiled templateAdvanced Parameters → Performance → Clear cache
Worked, then stopped after an updateThe tag was in the parent themeReinstall in a child theme, or use a module / GTM
Popup on one language onlyURL rule includes a language prefixDrop the prefix, or duplicate the campaign per language
Popup shows during paymentNo exclusion ruleAdd does not contain your order path
Rules match nothingGuessed URLs instead of copying real onesCopy the path from the address bar of the real page
Appeared once, never againFrequency rule doing its jobTest in a private window
Nothing anywhere, tag presentCampaign still a draftPublish the campaign — drafts never serve

Add a popup to PrestaShop, step by step

1. Copy the snippet

From the install screen in your dashboard, with the Workspace ID already filled in.

2. Pick your route

Child theme file, custom-code module, or Google Tag Manager — whichever matches your access.

3. Put the tag in the storefront head

Inside the head block of head.tpl, or the module's header-code field.

4. Clear the PrestaShop cache

Advanced Parameters → Performance. Then check View Source for chillipopup-pixel.

5. Build and publish the popup

Design it, set the trigger, publish it. Drafts never serve.

6. Copy your real URLs, then target

Write rules from paths you actually pasted, exclude checkout, and test in a private window.

Related reading

Frequently asked questions

How do I add a popup to PrestaShop?

There are three routes and all of them end with the same script tag in your storefront's <head>: add it to your child theme's head template, inject it with a custom-code module from the admin, or fire it as a Custom HTML tag in Google Tag Manager if you already run GTM. Once the tag is live, every popup you build appears without touching PrestaShop again.

Do I need a PrestaShop module for popups?

Only if you want to avoid touching theme files. The popup itself needs no server-side module — it runs entirely in the browser — so a module here is just a delivery mechanism for one line of HTML. If you already use Google Tag Manager, you do not even need that.

Where is the head template in a PrestaShop theme?

In PrestaShop 1.7 and 8 it is themes/<your-theme>/templates/_partials/head.tpl. Always edit a child theme rather than the parent, or your change disappears the next time the theme is updated. Clear the cache from Advanced Parameters → Performance afterwards.

How do I show a popup only on PrestaShop cart or checkout pages?

Copy the real path from your own storefront — PrestaShop URLs differ by language, friendly-URL settings and theme — then write a URL rule that matches it. Use "contains" against a stable fragment such as the cart controller path, and add a "does not contain" exclusion so marketing popups never appear during payment.

Does this work with PrestaShop multistore?

Yes. If you add the tag in a child theme shared by several shops, or via a module set to all shops, every storefront gets it. To limit popups to one shop in a multistore setup, either install the tag only on that shop's theme or use a URL rule matching that shop's domain path.

Will popups slow down my PrestaShop storefront?

The tag is asynchronous, so it never blocks rendering, and the popup is drawn directly into the page rather than inside an iframe. Because everything runs client-side it is also unaffected by PrestaShop's page cache — you can change an offer without clearing anything.