Description
Pommy AI connects your site to Pommy (https://pommy.ai), a hosted AI customer-support chat service. A Pommy account is required: this plugin is a client for that service and does nothing on its own. Pommy offers free and paid plans — see https://pommy.ai for current plans and pricing.
Install the plugin, paste the Project ID from your Pommy dashboard into Settings Pommy AI, and the chat launcher appears in the corner of your site.
Read the External services section below before you install. It lists exactly what is sent to Pommy, when, and what is stored — including data collected from visitors who never open the chat.
Why a plugin instead of pasting code into your theme
- Works on block themes (the default since WordPress 5.9), which have no
header.phpfile. - Works on managed hosts where the Theme File Editor is disabled via
DISALLOW_FILE_EDIT. - Survives theme updates — no theme file is modified, so nothing gets overwritten.
How it works
The plugin registers a small loader script through the WordPress script API (wp_enqueue_script), printed in the site footer. The loader creates a cross-origin iframe that hosts the chat interface on Pommy’s own domain, so the widget’s code and storage stay separate from your site. The iframe is granted microphone permission, for the chat’s optional voice input, and clipboard access so a visitor can copy a reply.
No chat content is stored in your WordPress database, and your server makes no request to Pommy on its own — but the visitor’s browser does, on every page view. See External services.
What the plugin stores in WordPress
Four options in your WordPress database:
pommy_ai_project_id— your Pommy Project ID.pommy_ai_api_url— the Pommy API endpoint (defaults tohttps://api.pommy.ai).pommy_ai_hide_on_checkout— whether the launcher is hidden on the WooCommerce checkout page. On by default.pommy_ai_test_result— the outcome of the last “Test connection” check, or the reason a Project ID was refused. Cleared whenever the settings are saved, because an old verdict describes old settings.
Saving the settings screen writes these whether or not a Project ID is filled in. All four are deleted when you delete the plugin, along with the options used by the plugin’s earlier “Pommy Chat” releases.
External services
This plugin connects your site to Pommy (https://pommy.ai), the chat service that powers the widget. Without a Pommy account and a Project ID the plugin sends nothing.
1. The chat widget, running in your visitor’s browser
Once a Project ID is saved, every front-end page loads the widget from the Pommy API host you configured (by default https://api.pommy.ai). From then on the widget talks to Pommy directly, from the visitor’s browser rather than from your server.
Sent on every page view, before the visitor interacts with anything: your Project ID, the page URL and the referring URL, and — inherent to any request their browser makes — the visitor’s IP address and user-agent string. Pommy resolves the IP to a country and city and derives browser, operating system and device type from the user agent, and keeps this as a visitor record whether or not the visitor ever opens the chat. The widget repeats this roughly every 30 seconds while the page is open, and holds a WebSocket connection open to Pommy for the same period. It also fetches the widget’s configuration on load, and its interface translations when the visitor’s language needs them.
Sent only if the visitor uses the chat: the messages they write, and any contact details they choose to type in, for example a name or an email address.
Stored in the visitor’s browser: a visitor identifier and the most recent messages of the conversation, in local storage on Pommy’s domain rather than yours, so the chat survives a page change.
Not sent by the plugin: your WordPress user accounts, your posts, or your WooCommerce order and customer records. The plugin reads only its own settings and, on the settings screen, the current administrator’s capabilities.
2. Setup check, sent from your server
When an administrator presses “Test connection” on the plugin’s settings screen, WordPress makes one request from your server to POST {API URL}/api/plugin/verify.
Sent: your Project ID, your site’s home URL, and the plugin version.
When: only when that button is pressed. Your server contacts Pommy at no other time.
Returned: whether the project exists, whether the domain is verified, the project’s name, and the address of the Pommy API that answered — so a site pointed at the wrong environment names it rather than failing silently.
Pommy’s terms of service: https://pommy.ai/terms
Pommy’s privacy policy: https://pommy.ai/privacy
Screenshots


Installation
- Create a Pommy account at https://pommy.ai, then open Integrations WordPress in the dashboard and copy your Project ID.
- In WordPress admin, go to Plugins Add New, search for Pommy AI, click Install Now, then Activate.
- Go to Settings Pommy AI and paste the Project ID. If the dashboard showed you an API address other than
https://api.pommy.ai, paste that into the API URL field too. Click Save Changes. - Click Test connection. It asks Pommy whether this Project ID and API address really work for this site, and names what it reached.
- Visit your site — the chat launcher appears in the bottom corner.
FAQ
-
Where do I find my Project ID?
-
In the Pommy dashboard, under Integrations WordPress. It also appears inside the embed snippet on the Widgets page, as the value of
projectId. It is a UUID — it looks like123e4567-e89b-12d3-a456-426614174000. -
My theme is a block theme. Does this work?
-
Yes. The plugin enqueues its loader through the WordPress script API, which works on every standards-compliant theme — block themes included. It never touches
header.php. -
Does the widget appear on the WooCommerce checkout page?
-
No, not by default. On a phone the launcher lands in the same corner as the order button, so the plugin keeps it off that page. Untick Hide the chat launcher on the checkout page in Settings Pommy AI if you want live help during payment.
The widget also stays off feeds, AMP pages, and the editing canvases of Elementor, Divi, Beaver Builder, WPBakery, Brizy and Oxygen.
-
How do I hide the widget on specific pages?
-
Use the
pommy_ai_enabledfilter from your child theme’sfunctions.php:add_filter( 'pommy_ai_enabled', function ( $enabled ) { return is_page( 'pricing' ) ? false : $enabled; } ); -
What filters does the plugin provide?
-
pommy_ai_enabled— boolean, default true. Return false to keep the widget off the current request.pommy_ai_skip_contexts— boolean, always false when it runs. Return true to add a skip condition of your own. It runs after the built-in skips, so it cannot re-enable a page the plugin already skips.pommy_ai_loader_attributes— array of attribute name => value placed on the loader<script>tag. Pass true for a boolean attribute. Only loading attributes anddata-*names are honoured.
-
Does the plugin send data to Pommy from my server?
-
Only when you press “Test connection”. That sends one request containing your Project ID, your site’s home URL and the plugin version. Nothing else leaves your server at any time. The widget itself talks to Pommy from the visitor’s browser — see External services for what that involves.
-
I was using the “Pommy Chat” plugin. What do I do?
-
Activate Pommy AI; your Project ID and settings are carried over automatically. Then deactivate and delete the old Pommy Chat plugin — the folder name changed, so WordPress treats them as two plugins and would otherwise load two chat widgets on your site.
-
What happens when I delete the plugin?
-
All four plugin options are removed from the database, along with the options written by the earlier “Pommy Chat” releases, on single sites and on every site of a multisite network.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Pommy AI” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Pommy AI” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.4.0
- The plugin is now called Pommy AI, matching the service it connects to. Its settings screen moves to Settings Pommy AI, and the filters are renamed to
pommy_ai_enabled,pommy_ai_skip_contextsandpommy_ai_loader_attributes. Settings from the earlier “Pommy Chat” releases are carried over automatically; delete that plugin once this one is active. - The External services section now describes everything the widget sends from a visitor’s browser, including the data collected before a visitor opens the chat.
- The API URL field now accepts only pommy.ai addresses over HTTPS, and the setup check is sent through WordPress’ safe HTTP helper, so the field can no longer point your site’s script tag or your server at an arbitrary host. A site that needs a different endpoint can set
POMMY_AI_API_URLinwp-config.php. - Saving the settings on a site without WooCommerce no longer switches off the checkout protection for the store you install later.
- A Project ID left over from an older version that is not in the right format is now ignored rather than loaded, and the settings screen says the widget is not live instead of implying it is.
- The connection result is stored as a code rather than a finished sentence, so the message follows the language of whoever reads the screen, and it now says when the check ran.
1.3.5
- The readme now matches the plugin: it describes how the widget script is loaded, lists all four stored options, and no longer contradicts itself about requests sent from your server.
1.3.4
- The widget loader is registered and enqueued through the WordPress script API, and the async and cache-optimizer attributes are added through the
script_loader_tagfilter.
1.3.3
- Removed the Plugin URI header: it pointed at the same address as Author URI, and no page about this plugin alone exists yet.
1.3.2
- Housekeeping before the plugin directory submission.
1.3.1
- Translations now come from WordPress itself instead of a bundled folder that shipped empty.
1.3.0
- Documents the external service the widget talks to, what it sends and when — required reading before you install anything that phones home.
- Verified with WooCommerce: the launcher stays off the block checkout and returns when the setting is switched off.
1.2.0
- New “Test connection” button: asks Pommy whether this Project ID and API address really work for this site, and says which of the three things is wrong when they do not.
- The settings screen no longer claims the widget is active just because a Project ID is filled in — it reports what was actually checked.
- A Project ID that is not in the right format is refused with an explanation instead of being saved into silence.
1.1.0
- WooCommerce: the chat launcher stays off the checkout page by default, where it could sit on top of the order button on a phone. Switchable in Settings.
- The loader now carries the opt-out attributes that caching and optimization plugins look for, so tools such as Rocket Loader, Autoptimize, WP Rocket, LiteSpeed and Perfmatters leave it alone rather than deferring or combining it.
- The widget no longer prints inside page-builder editing canvases or on AMP requests.
1.0.0
- Initial release: settings page under Settings, front-end widget injection via
wp_footer, an enable/disable filter, full uninstall cleanup.
