Verify your installation
Check that the Pengo widget is live on your site, see what Pengo detected, and fix the common reasons a chat bubble doesn't show up.
On this page
After you add the snippet, take a minute to confirm the widget is live. There are two checks: you can see the bubble on your site, and Pengo shows the website as installed.
#1. Look for the bubble
Open your site in a new private or incognito window, so you see what a first-time visitor sees, without your cache or logged-in session. The chat bubble appears in the corner after a moment. Click it and send a test message, then reply from your Pengo inbox.
#2. Check the status in Pengo
Go to Settings Workspace Websites . Each website’s card shows its install status:
| Status | What it means |
|---|---|
| Installed | Pengo has seen the widget on your site within the last week. The card shows when it was last seen. |
| Not detected | Pengo hasn’t seen the widget on your site yet. |
| Not seen lately | The widget was seen before but not in the last 7 days. Check it’s still on your site. |
| Paused on your plan | Your plan includes fewer websites than you have, so this one is paused and the widget doesn’t show. |
You can also click Install widget (or Install code) on the card. The install window shows Detected or Not detected. Open your site in another tab, then click Check again.
#What counts as detected
Pengo marks a website as installed when a page loads the widget from the domain in the website’s Website URL, one of its subdomains, or a domain in your allowed domains list. If the widget runs somewhere else, such as a staging copy on another domain, it still works there, but the status doesn’t change.
To check the Website URL, a workspace owner can hover over the website’s card and click the edit (pencil) button.
#If the bubble doesn’t show
Work through this list. Most installs are fixed by the first three.
#The snippet isn’t on the page
- Make sure the snippet is in a shared layout, theme or footer, so it’s on every page and not just the one you edited.
- Check that your changes are published or deployed. Website builders need a publish step, and custom code often doesn’t run in their editors or previews.
- View the page source in your browser and search for
Pengo Widget. If it’s not there, the page you’re looking at doesn’t have the snippet.
#A cache is serving the old page
Caching and optimization plugins, your host and CDNs can keep serving the page from before you added the snippet. Clear every cache, then reload in a private window. If a plugin combines, delays or defers JavaScript, exclude the Pengo snippet from it.
#The website ID is wrong
The snippet’s propertyId must match a website in your workspace. Copy the snippet again from Settings Workspace Websites rather than editing it by hand. Open your browser’s developer console on your site and look for messages that start with [Pengo], such as Missing propertyId or Failed to load settings.
#Allowed domains are blocking it
If Restrict widget to allowed domains is on in Settings Security Allowed domains , the widget only loads on domains in that list. Each entry matches one exact domain, so example.com and www.example.com are separate entries. Add every domain your site uses. If the setting is on and the list is empty, the widget doesn’t load anywhere.
A browser that was blocked remembers it for up to an hour. After fixing the list, test in a new private window. See domains and multiple websites.
#Your widget settings hide it
Some settings hide the launcher on purpose:
- Hide on phones hides it on small screens.
- Show on these pages only hides it everywhere except the pages you list.
- An offline behavior of Hide widget hides it for new visitors while your team is offline.
Check these in visibility and branding.
#An ad blocker or privacy extension
Some blockers hide chat widgets. Test in a private window with extensions turned off, or in a different browser. If you load Pengo through Google Tag Manager, blockers that block GTM block Pengo too.
#A Content Security Policy blocks it
If your site sends a Content-Security-Policy header or meta tag, it must allow Pengo, otherwise the browser blocks the widget and logs a CSP error in the console. All of Pengo’s widget files, requests and the chat window come from https://app.pengo.chat:
| Directive | Allow | Why |
|---|---|---|
script-src | https://app.pengo.chat and the inline snippet | The loader and widget scripts. The snippet itself is an inline script, so allow it with 'unsafe-inline', a nonce or a hash. |
connect-src | https://app.pengo.chat | Loading your settings and recording visitor activity. |
frame-src | https://app.pengo.chat | The chat window, which runs in a frame. |
style-src | 'unsafe-inline' | The widget adds its own styles inside the page. |
img-src | https://app.pengo.chat and wherever your team photos or custom launcher image are hosted | Avatars and launcher images. |
For example:
script-src 'self' 'unsafe-inline' https://app.pengo.chat;
connect-src 'self' https://app.pengo.chat;
frame-src https://app.pengo.chat;
style-src 'self' 'unsafe-inline';
img-src 'self' data: https:; Live messages are delivered inside the chat window, which has its own policy, so you don’t need to allow any other hosts for real-time chat.
#Still stuck?
Email support@pengo.chat with your website’s address and a screenshot of your browser console. We’ll take a look.
Common questions
How long does detection take?
Usually seconds. The status updates once a page with the widget loads Pengo's settings, which happens a few seconds after the page opens. Click Check again in the install window to refresh it.
The bubble shows on my staging site but the status still says Not detected. Why?
Pengo only counts pages on your website's address, its subdomains, or a domain in your allowed domains list. Other domains still show the widget but don't change the status.
Was this guide helpful?
Your answer helps us improve it.
Sorry about that. or contact support, and we'll fix the guide.