{"id":359432,"date":"2026-08-27T09:42:19","date_gmt":"2026-08-27T09:42:19","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/wonderful-notification-popups\/"},"modified":"2026-08-27T09:41:47","modified_gmt":"2026-08-27T09:41:47","slug":"wonderful-notification-popups","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/wonderful-notification-popups\/","author":23357214,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"Wonderful Notification Popups","header_author":"Wonderful Plugins","header_description":"Configurable notification popups with your own messages, icons and per-language targeting, plus control over how often they appear.","assets_banners_color":"","last_updated":"2026-08-27 09:41:47","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wonderfulplugins.eu\/wonderful-notification-popups","header_author_uri":"https:\/\/wonderfulplugins.eu","rating":0,"author_block_rating":0,"active_installs":0,"downloads":44,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"wonderfulplugins","date":"2026-08-27 09:41:47","revision":3668487}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3668487,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3668487,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1-de.jpg":{"filename":"screenshot-1-de.jpg","revision":3668487,"resolution":"1","location":"assets","locale":"de","width":2560,"height":1600},"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3668487,"resolution":"1","location":"assets","locale":"","width":2560,"height":1600},"screenshot-2-de.jpg":{"filename":"screenshot-2-de.jpg","revision":3668487,"resolution":"2","location":"assets","locale":"de","width":2560,"height":2000},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":3668487,"resolution":"2","location":"assets","locale":"","width":2560,"height":2000},"screenshot-3-de.jpg":{"filename":"screenshot-3-de.jpg","revision":3668487,"resolution":"3","location":"assets","locale":"de","width":2560,"height":2000},"screenshot-3.jpg":{"filename":"screenshot-3.jpg","revision":3668487,"resolution":"3","location":"assets","locale":"","width":2560,"height":2000}},"screenshots":{"1":"Notification popups on the front end.","2":"Editing a notification: message, icon source with the built-in symbol set, language, style and optional link.","3":"The settings page: trigger, rhythm, placement and the sample notification set."}},"plugin_section":[],"plugin_tags":[7557,4906,491,14396,45353],"plugin_category":[],"plugin_contributors":[247385],"plugin_business_model":[],"class_list":["post-359432","plugin","type-plugin","status-publish","hentry","plugin_tags-announcements","plugin_tags-notifications","plugin_tags-popup","plugin_tags-social-proof","plugin_tags-toast","plugin_contributors-wonderfulplugins","plugin_committers-wonderfulplugins"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/wonderful-notification-popups\/assets\/icon-128x128.png?rev=3668487","icon_2x":"https:\/\/ps.w.org\/wonderful-notification-popups\/assets\/icon-256x256.png?rev=3668487","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/wonderful-notification-popups\/assets\/screenshot-1.jpg?rev=3668487","caption":"Notification popups on the front end."},{"src":"https:\/\/ps.w.org\/wonderful-notification-popups\/assets\/screenshot-2.jpg?rev=3668487","caption":"Editing a notification: message, icon source with the built-in symbol set, language, style and optional link."},{"src":"https:\/\/ps.w.org\/wonderful-notification-popups\/assets\/screenshot-3.jpg?rev=3668487","caption":"The settings page: trigger, rhythm, placement and the sample notification set."}],"raw_content":"<!--section=description-->\n<p>Wonderful Notification Popups shows small notification cards (\"toasts\") in a corner of your site \u2014 the kind of message that draws attention without interrupting anyone. You write the messages, pick the icons and decide the rhythm; everything else stays out of your way.<\/p>\n\n<p>Typical uses: highlighting a running promotion, showing short customer quotes, explaining a service through a series of example messages, or announcing opening hours and delivery times.<\/p>\n\n<p><strong>Everything stays on your own server.<\/strong> The plugin contacts no external service, loads no remote fonts or scripts, and sends nothing anywhere. The messages come from your own database and the popups are assembled in the visitor's browser from data that was already part of the page.<\/p>\n\n<h4>Start with the sample set<\/h4>\n\n<p>A single click on the settings page creates eight ready-made notifications covering the usual cases: a recent order, free shipping, a sale, a customer quote, a stock notice, a newsletter hint, a trust note and a thank-you. They are created as <strong>drafts<\/strong>, so nothing appears on your site until you publish what you actually want. Deleting them again is one click too, and it only ever touches the samples \u2014 your own notifications are never affected.<\/p>\n\n<h4>Three ways to give a notification an icon<\/h4>\n\n<ul>\n<li><strong>Built-in symbols<\/strong> \u2014 19 clean line icons (cart, bag, price tag, gift, delivery, price, star, heart, thumbs up, check mark, bell, message, envelope, person, clock, shield, highlight, information, warning). They are drawn inline in the accent colour of the notification: nothing to upload, no icon font, no extra request.<\/li>\n<li><strong>Emoji<\/strong> \u2014 type one in and you are done.<\/li>\n<li><strong>Media library<\/strong> \u2014 for a logo or a photo, served from your own domain.<\/li>\n<\/ul>\n\n<h4>You decide what starts them, and how often<\/h4>\n\n<ul>\n<li><strong>Trigger<\/strong> \u2014 right after the page loads, once the visitor has scrolled far enough, once a chosen element (your FAQ section, for example) becomes visible, or when the visitor is about to leave the page.<\/li>\n<li><strong>Rhythm<\/strong> \u2014 delay before the first popup, pause between two popups, how long each stays visible, and a maximum per page view.<\/li>\n<li><strong>Quiet period<\/strong> \u2014 optionally stay silent for returning visitors for a number of hours.<\/li>\n<li><strong>Background tabs<\/strong> \u2014 popups can pause while the tab is not in the foreground, so nobody comes back to a queue of messages.<\/li>\n<\/ul>\n\n<h4>And what they look like<\/h4>\n\n<ul>\n<li>Any of the four screen corners.<\/li>\n<li>Adjustable distance from the edges and an adjustable stacking order \u2014 so a sticky header, a cookie banner or a chat button cannot bury the popups.<\/li>\n<li>Light or dark colour scheme. Light is the default, because a popup should match the site it appears on; following the visitor's system setting is available but optional.<\/li>\n<li>Accent colour for the whole site, plus a per-notification style (neutral, positive, info, warning, critical).<\/li>\n<li>Optional close button, and an option to hide popups on small screens.<\/li>\n<\/ul>\n\n<h4>Language<\/h4>\n\n<p>Each notification can be assigned a language, and visitors only see the ones matching the language the page is rendered in, plus everything set to \"All languages\". Regional variants match each other, so a German notification also reaches Austrian and Swiss visitors.<\/p>\n\n<h4>Built-in safety rails<\/h4>\n\n<ul>\n<li>Notification text is treated as plain text and written into the page with textContent, so a message can never inject markup or scripts.<\/li>\n<li>The built-in icons travel as a list of plain shapes and are rebuilt with createElementNS \u2014 no markup is ever parsed in the browser.<\/li>\n<li>Only image attachments that actually exist can be used as icons.<\/li>\n<li>Every setting is validated against a whitelist or clamped into a sensible range before it is stored, and shortcode attributes go through the very same validation.<\/li>\n<li>Animations respect the visitor's \"reduce motion\" setting.<\/li>\n<li>If there are no published notifications, the plugin loads no CSS and no JavaScript at all.<\/li>\n<\/ul>\n\n<h4>Shortcode<\/h4>\n\n<p>Place the popups on a single page or post:<\/p>\n\n<pre><code>[wonderful_notification_popups]\n<\/code><\/pre>\n\n<p>Individual settings can be overridden per placement:<\/p>\n\n<pre><code>[wonderful_notification_popups position=\"top-right\" interval=\"15\" duration=\"6\" limit=\"3\" order=\"sequence\"]\n<\/code><\/pre>\n\n<p>Available attributes: <code>position<\/code>, <code>interval<\/code>, <code>delay<\/code>, <code>duration<\/code>, <code>limit<\/code>, <code>order<\/code>, <code>trigger<\/code>, <code>selector<\/code>, <code>depth<\/code>, <code>locale<\/code>.<\/p>\n\n<h4>For developers<\/h4>\n\n<p>The list handed to the browser can be changed with the <code>wonderful_notification_popups_notifications<\/code> filter.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin does not use any external service. No data of any kind \u2014 no visitor IP addresses, no page views, no message content \u2014 is sent anywhere. Everything runs on your own server and in the visitor's browser.<\/p>\n\n<p>The optional quiet period for returning visitors stores a single timestamp in the browser's local storage. It never leaves the browser, is not a cookie and is not used for tracking.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin.<\/li>\n<li>Open <strong>Notification Popups \u2192 Settings<\/strong> and click \"Create sample notifications\" to get a starting point, or go straight to <strong>Notification Popups \u2192 Add New<\/strong> and write your own: title, message, icon and, if you like, a language and a link.<\/li>\n<li>Publish the notifications you want to use.<\/li>\n<li>Back in the settings, choose what starts the popups, how often they appear and where on screen they belong.<\/li>\n<li>Either set \"Show popups\" to site-wide, or place <code>[wonderful_notification_popups]<\/code> on the pages that should have them.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"nothing%20appears%20on%20my%20site.%20what%20is%20wrong%3F\"><h3>Nothing appears on my site. What is wrong?<\/h3><\/dt>\n<dd><p>The most common reasons are that no notification is published yet \u2014 the sample set is created as drafts on purpose \u2014 that the display mode is set to \"shortcode\" while no shortcode is placed on the page, or that the language filter excludes every notification. The settings page tells you when there are no published notifications.<\/p><\/dd>\n<dt id=\"the%20popups%20are%20dark%2C%20but%20my%20site%20is%20light.\"><h3>The popups are dark, but my site is light.<\/h3><\/dt>\n<dd><p>Set \"Colour scheme\" to \"Light\" under \"Appearance and placement\". If it is set to \"Follow the visitor's system setting\", visitors whose operating system runs in dark mode get a dark popup \u2014 which looks out of place on a light site. That is why light, not automatic, is the default.<\/p><\/dd>\n<dt id=\"a%20cookie%20banner%20covers%20the%20popups.\"><h3>A cookie banner covers the popups.<\/h3><\/dt>\n<dd><p>Raise \"Distance from the top or bottom edge\" until the popups clear it, or raise the stacking order (z-index) so they sit above it. Both are in the \"Appearance and placement\" section.<\/p><\/dd>\n<dt id=\"does%20this%20collect%20any%20visitor%20data%3F\"><h3>Does this collect any visitor data?<\/h3><\/dt>\n<dd><p>No. The plugin sends nothing to any server and sets no cookies. If you enable the quiet period for returning visitors, a single timestamp is stored in the visitor's own browser so they are not shown the same popups again right away. Nothing about that timestamp is transmitted or readable by anyone else.<\/p><\/dd>\n<dt id=\"can%20i%20show%20different%20messages%20in%20different%20languages%3F\"><h3>Can I show different messages in different languages?<\/h3><\/dt>\n<dd><p>Yes. Each notification can be assigned a language, and visitors only see the notifications matching the language the page is rendered in, plus everything set to \"All languages\". Regional variants of one language match each other, so a notification set to German (Germany) also reaches visitors on the Austrian or Swiss locale.<\/p><\/dd>\n<dt id=\"can%20i%20use%20html%20in%20a%20message%3F\"><h3>Can I use HTML in a message?<\/h3><\/dt>\n<dd><p>No, and that is deliberate. Messages are plain text, which means a notification can never break your layout or inject a script. Emoji work fine. If you need the popup to lead somewhere, use the link field \u2014 it makes the whole popup clickable.<\/p><\/dd>\n<dt id=\"does%20exit%20intent%20work%20on%20phones%3F\"><h3>Does exit intent work on phones?<\/h3><\/dt>\n<dd><p>There is no \"moving the pointer out of the window\" gesture on a touch device, so the exit trigger falls back to the scroll trigger there instead of never firing at all.<\/p><\/dd>\n<dt id=\"do%20the%20popups%20slow%20down%20my%20site%3F\"><h3>Do the popups slow down my site?<\/h3><\/dt>\n<dd><p>The CSS and JavaScript together are a few kilobytes and are only loaded on pages that actually show popups. The built-in icons add no request at all. If no notification is published, nothing is loaded.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20i%20delete%20the%20plugin%3F\"><h3>What happens when I delete the plugin?<\/h3><\/dt>\n<dd><p>Deleting the plugin through WordPress removes the settings and every notification you created, including their meta data. Deactivating alone changes nothing.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Configurable notification popups with your own messages, icons and per-language targeting, plus control over how often they appear.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/359432","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=359432"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/wonderfulplugins"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=359432"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=359432"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=359432"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=359432"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=359432"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=359432"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}