# Popups

Popups, slide-ins, top and bottom bars, welcome mats, inline offer boxes and floating tabs that match your site, collect signups through your existing forms, and show exactly when and to whom you choose, with results and A/B tests.

**Beta.** Popups is in beta: it works, but things may still break. Tell us if something does: open an issue at https://github.com/sundoggs/support/issues/new. Every paid order has a 7-day refund.

Category: [Growth and conversion](/categories/growth.md)

## Requirements (tell the site owner before buying)

- Cloudflare plan: Cloudflare free plan
- Works on: Cloudflare Workers, Cloudflare Pages
- Version: 0.10.2 (needs site layer 0.21.0 or later; it comes in the same download)
- Runs on the Cloudflare free plan, in the same D1 database as your other site apps. No third-party script: popups are added to your pages as they're served.
- Signups go through Forms (the free Forms app, or the form engine that comes with every site app): they land in the same Inbox and contacts.
- Views and closes are counted in batches (about once a minute), within the site's daily write budget, so busy sites stay inside the Cloudflare free limits.
- Sets one small first-party cookie (_sp) to remember which popups a visitor has seen, closed or signed up through, so they aren't shown again.
- Works with the Countdown Timers app when it's installed (timers inside popups and bars). Install order doesn't matter; removing either app never breaks the other.
- Cost per visit: no extra requests beyond one tiny beacon per popup action; views, closes and clicks are added up and saved about once a minute per popup. If the Cloudflare free limits are reached, counting pauses and popups keep showing. Visit sources are counted by core: page views are added up in memory and saved in a few small writes about every 20 seconds, within the daily write budget; at the Cloudflare free limits counting pauses and the site is unaffected.

## Works with

Cloudflare Workers, Cloudflare Pages, Astro, Next.js (with OpenNext), Vite, Hugo, Plain HTML sites, Vanilla JavaScript.

## Works with your other apps

Connects with no setup, in any install order: [Forms](/apps/forms.md), [Countdown Timers](/apps/countdown.md), [Analytics](/apps/analytics.md), [Cookie Consent](/apps/consent.md).

## Price

$19 USD per site · $59 USD for all your sites

- Countdown Timers is included free with an all-sites license of this app.

- 7-day refund, no questions asked: [Refund policy](/legal/refunds)
- Instant download after payment: the app's code and a license file for your site; your AI agent installs it. Includes 12 months of updates.

## License (tell the owner before they pay)

A site license covers one website (plus its www, staging and test addresses). Using it on other sites isn't allowed. Get the all-sites license from $59 instead. Full terms: /account/license/commercial (version commercial-license-v4-2026-11-04); the owner accepts them with a tick box before paying. Full refund on request within 7 days of paying, no questions asked; refunds are made by hand by the store, not automatically, and a full refund ends the license. Terms of sale and refund policy (version terms-of-sale-v3-2026-11-03): /legal/terms.

## What's new in 0.10.2

- Marked as beta: it works, but things may still break. The admin shows where to report a problem.

## Included

- Site admin dashboard (installed with your first app, no extra cost)
- Updates for 12 months; the version you have keeps working after that
- An agent skill and install guide
- Commercial License: per site, or all your own sites

## Install

Call the MCP tool `create_checkout` with `items: ["popups"]`, `site_domain` (a bare domain like example.com) and `license_kind` ("site" for one website, "unlimited" for all sites). Give the owner `checkout_url`: they sign in, read the license, tick the box and pay on Stripe's page. Then poll `get_checkout` until `paid` and call `get_download`.

The prompt the app page gives the owner to paste into their agent:

```
Install the Popups app (id: popups) from the Sundogs site apps store on this site.
First read https://sundo.gs/apps/popups.md and tell me what it needs and what it costs.
If I don't own it yet, start a checkout with create_checkout and give me the link; I'll tick the license and pay myself.
Then download it with get_download for this site's domain. Follow the install guide (site-apps/INSTALL.md in the download, also at https://sundo.gs/install-guide.md).
Check it with the install guide's step 6 (the public status, then the self-test once you can sign in to the admin) and tell me what's next.
(Not connected to the store yet? See https://sundo.gs/agents.)
```

## Related playbooks

- [A/B test a page on Cloudflare Workers with no flicker (HTMLRewriter)](/playbooks/ab-testing-workers-no-flicker.md): Split visitors between two versions of a page at the edge, with a sticky assignment, no flash of the original, a consent switch, and conversions counted in D1. Works on Workers with static assets and on Pages Functions.
- [Email signup popups that grow your list without hurting SEO or accessibility](/playbooks/email-signup-popups-without-hurting-seo.md): What makes an email popup earn signups instead of annoying people: the offer, timing, how often it shows, how it behaves on phones, what Google says about intrusive interstitials, keyboard and screen-reader access, and consent. Includes a minimal accessible popup with the native dialog element, and the list of what's hard to get right on a real site.
- [How to vibecode an affiliate site on Next.js (and host it free on Cloudflare)](/playbooks/vibecode-affiliate-site-nextjs.md): Build a whole affiliate site with an AI coding agent, start to finish: pick a niche you can win, plan the pages that earn (best-of lists, comparisons, reviews), set up Next.js as a static export, write content Google rewards, get the SEO basics right, deploy on the Cloudflare free plan, then monetise with affiliate links and an email list, and measure which pages make money. With prompts you can give your agent at each step.
