Pitchbar for WordPress is the official companion plugin that connects your WordPress (or WooCommerce) site to a Pitchbar workspace and drops a streaming Sales-AI chat widget on every public page. The agent answers from your own posts, pages, and products — captures leads, applies real coupon codes to the cart, looks up the visitor’s orders, and hands off to a human operator in real time.
One click installs the widget on every public page. Posts, pages, and the entire WooCommerce catalog sync to your Pitchbar agent in the background. Five major page builders (Elementor, Divi, Beaver, Oxygen, Bricks) are rendered properly so their visible HTML actually reaches the agent. Every product / post in the WP admin gets an “Indexed” badge so you can see at a glance which entries are searchable.
Self-hosted, GPL-licensed, multi-page-builder, WooCommerce-aware. Built by the team behind Pitchbar.
WordPress + WooCommerce demo site (full admin access, the widget is loaded on the front end):
adminadminVisit the front end and chat with the widget in the bottom-right corner. Open Settings → Pitchbar in the WP admin to see the connection panel, the agent picker, and the “Sync posts now / Sync products now” buttons. Open Posts or Products to see the “Pitchbar” admin column with Indexed / Out of date / Not indexed pills.
What you need to run it: a Pitchbar workspace (the SaaS this plugin connects to). If you’ve purchased the main Pitchbar — Self-hosted Sales AI Widget you already have one. Otherwise create a free trial workspace at your Pitchbar deployment and paste the URL + API token into the plugin’s settings page.
post_content — every builder stashes its layout in postmeta. The plugin invokes each builder’s native renderer so the visible HTML reaches your AI agent intact.<script async> on wp_footer so it never blocks paint.wp_footer on every front-end request, scoped to the post types you opt into (Posts and Pages by default; tick more from the settings page).wp-login.php, AJAX, REST, XML-RPC, and cron requests — the widget never shows where it shouldn’t.data-page-dir="rtl" and the resolved data-page-locale so it mirrors correctly on Arabic, Hebrew, Persian, and Urdu sites.save_post / wp_trash_post / before_delete_post keep the agent up to date as you publish and unpublish.\Elementor\Plugin::frontend()->get_builder_content_for_display()setup_postdata() + the_content filter (so Divi’s shortcodes resolve correctly)FLBuilder::render_content_by_id()ct_template_output filterBricks\Frontend::render_content()pitchbar_post_content_html filter so themes or sites can post-process the rendered HTML (strip nav, force a specific template, etc.) without forking the plugin.woocommerce_new_product, woocommerce_update_product, woocommerce_delete_product, woocommerce_trash_product keep the agent current as you edit.WP_Query path for hosts whose wc_get_products hook chain hides custom types — a real fix for the “0 products, 0 queued” symptom on subscription / multilingual stores.wp_user_id + email_hash (SHA-256 of the email — never plaintext) into the visitor’s JWT so the agent knows who’s talking.lookup_order tool — the agent can ask “where’s my order?” and resolve to a real WooCommerce order. The plugin exposes /wp-json/pitchbar/v1/orders/lookup over HMAC-signed POST and returns the last N orders for the signed-in wp_user_id with status, items, total, tracking URL (AfterShip / Shipment Tracking / generic _tracking_url), and a deep-link to the customer’s view-order page.<coupon/> cards in chat with Copy and Apply buttons. Apply hits /wp-json/pitchbar/v1/cart/coupon, validates the code with WC_Coupon, and stages it in a 15-minute transient that fires $cart->apply_coupon() on the next cart load.wc_create_new_customer) when WC is active, or as a WP subscriber otherwise. Idempotent on email so refilling the form doesn’t create duplicates; the lead id and conversation id are stashed in user meta.added_to_cart / removed_from_cart) into localStorage so the widget’s abandoned_cart behaviour rule can engage when the cart sits idle past the configured threshold.post_modified_gmt advances past _pitchbar_synced_at (the row was edited after its last sync).admin_head CSS so the header text never wraps vertically (a real bug on crowded WooCommerce screens).wp:integration ability, 404 hints that the Pitchbar app isn’t fully deployed, 5xx points to the server log.shopper_signing_secret. The secret is delivered in the handshake response and stored in wp_options.wp_user_id + SHA-256 of the email — never plaintext.manage_options. AJAX endpoints verify a WordPress nonce on every POST.uninstall.php deletes every option the plugin wrote so a reinstall starts clean.Generic chat plugins drop a third-party script and call it done. Pitchbar for WordPress is built to actually work on real WordPress sites:
pitchbar before woocommerce on most sites — class_exists('WooCommerce') returns false at plugins_loaded priority 10 and WC features silently disable. The plugin listens for woocommerce_loaded instead and re-checks if WC already fired, so WC features always wire up correctly.shop_coupon CPT + direct new WC_Coupon($id) hydration. Replaces wc_get_coupons() which is not public WC API on every release.max_execution_time.wc_get_products returns 0. Real fix for a real symptom: subscription / multilingual / membership stores where WC’s query hook chain hides the catalog.class_exists('WooCommerce') guard so it never breaks anything.pitchbar.zip from your CodeCanyon downloads.A Pitchbar workspace — that’s where the AI lives. The plugin handles the WordPress side: widget embed, knowledge sync, store integration, admin badges. If you bought the main Pitchbar self-hosted item you already have a workspace. Otherwise you sign up for one in the Pitchbar deployment you want to use.
No. The widget loader is a single asynchronous <script> tag injected into wp_footer. The widget itself is under 25 KB gzipped and renders inside a Shadow DOM, so it never blocks paint and never interacts with theme CSS. Page-builder content is rendered server- side only when the “Sync now” button runs — never on every visitor request.
Yes — the product syncer doesn’t filter by type, so subscriptions, bundles, memberships, bookings, and any custom product type extensions register all sync. If your store has a multilingual plugin or subscription gate that hides products from wc_get_products, a fallback WP_Query against post_type=product picks them up automatically.
The syncer is resumable. After 20 seconds of wall-clock work it persists a resume marker in a transient, schedules a WP-Cron continuation 30 seconds out, and finishes the rest in the background. You’ll see a soft “is finishing in the background” notice on the Plugins screen while it works. Re-running “Sync now” just resumes from where the last pass left off.
Yes — every post and product gets a green “Indexed”, yellow “Out of date”, or gray “Not indexed” pill in the WP admin list tables. The status is computed from a sync timestamp + content hash the plugin stamps on every successful push.
No. The shopper context carried in the widget loader contains wp_user_id and a SHA-256 hash of the email — never the plaintext email. The Pitchbar server uses the hash to dedupe leads and correlate sessions, nothing more.
Yes. Each builder ships a public renderer; the plugin calls it server-side when syncing so the visible HTML reaches the agent intact. Without this, builder-owned pages have empty post_content and the agent silently has no knowledge of them. Divi posts route through the_content correctly with setup_postdata priming.
Yes — that’s the lookup_order tool. Enable it on the agent in your Pitchbar admin and the AI will call back to the plugin’s /wp-json/pitchbar/v1/orders/lookup endpoint over an HMAC-signed POST. The plugin returns the visitor’s recent orders with status, items, total, tracking URL (AfterShip / Shipment Tracking / generic _tracking_url meta), and a deep-link to their view-order page.
Yes. The agent emits a <coupon/> card with the code, label, and discount; the visitor clicks Apply; the plugin’s /wp-json/pitchbar/v1/cart/coupon endpoint validates the code with WC_Coupon and stages it in a 15-minute transient. On the visitor’s next cart load $cart->apply_coupon() fires automatically.
Yes — the settings page lets you tick which post types load the widget. Posts and Pages are enabled by default; uncheck them or tick custom post types (CPTs) as needed. Singular pages of unchecked types stay widget-free.
Yes — GPLv2 or later. No obfuscation, no encoder, no phone-home. Fork it, audit it, ship a variant — whatever you need.
pitchbar.zip — install-ready WordPress plugin (~45 KB).item_description.html.documentation.html — Mintlify-style standalone HTML reference covering install, configuration, sync, page builders, WooCommerce features, REST API, security, and troubleshooting. Open in any browser; no internet required.readme.txt — WordPress-compatible readme with changelog.languages/pitchbar.pot).Already on the radar for upcoming releases — every buyer in the major version receives every minor / patch release at no extra cost:
Pitchbar for WordPress is production-ready, GPL-licensed, and powered by the same team that builds the Pitchbar SaaS. Every feature on this page is shipped, tested, and visible in the demo site.
Drop it on your WordPress site. Connect to your Pitchbar workspace. Done.