Messenger Settings
Style the messenger, choose what each audience sees, control who can start conversations, and install it on your site — with a live preview that repaints as you type.
Where to find it
Open Messenger settings
Sidebar → Settings → Modules → Messenger
Direct link: https://app.productbridge.io/dashboard/settings/messenger
In-app path: Sidebar → Settings → Modules → Messenger
Requires: a plan that includes the support feature, plus support:view to read conversations and support:manage to configure them.
The page has three tabs — Customization, Conversations, and Installation — with a live preview beside them.
Overview
Open Settings → Messenger. The page has three tabs — Customization, Conversations, and Installation — with a live preview beside them: the real messenger, repainted on every keystroke, with a Light/Dark toggle so you can check both themes before saving. Nothing ships until you press Save Changes.
Audiences: Visitors vs. Users
Most content and behavior settings exist twice — once for anonymous Visitors, once for identified Users. A segmented control at the top of each relevant card switches which audience you're editing, so you can, say, show the Roadmap tab to signed-in users only, or greet known customers by name while visitors get a generic welcome.
Customization
-
Appearance. Default theme (Light, Dark, or System), launcher position (bottom right or bottom left), launcher color, and brand colors — one for light, one for dark. Leave brand colors empty to inherit your organization's brand color.
-
Languages. Pick a default language and enable additional locales. Every text field below carries a language switcher so you can localize content per locale.
-
Content. Greeting and introduction for the Home tab — type
{{name}}to insert the customer's name where it's known — plus the start-conversation button text. -
Tabs. Enable or disable Home, Messages, News, Roadmap, and Help per audience. Messages is always on — it's the point.
-
Home cards. Compose the Home tab from cards: the ask-a-question card, quick-action chips, a news preview, and more, ordered how you like.
Conversations
-
Allow starting conversations. Turn off to stop an audience from opening new threads — existing threads keep working. New-conversation attempts are refused at the API level, not just hidden in the UI.
-
Prevent replying to resolved conversations. When on, a resolved thread is read-only for the customer; they must start a new conversation instead. Useful for keeping metrics honest.
-
Reply expectations. Show or hide the "we typically reply in…" line, and set its text. Outside office hours the messenger automatically switches to "back on Monday"-style messaging.
Installation
The messenger ships as a single script. Grab the snippet from the Installation tab — it's pre-filled with your organization id:
<script src="https://app.productbridge.io/sdk/pb-messenger.js" async></script>
<script>
window.pbMessengerReady = function () {
ProductBridgeMessenger.init({
organizationId: "YOUR_ORGANIZATION_ID",
});
};
</script>
import { useEffect } from "react";
export function Messenger() {
useEffect(() => {
window.pbMessengerReady = () => {
window.ProductBridgeMessenger.init({
organizationId: "YOUR_ORGANIZATION_ID",
});
};
const script = document.createElement("script");
script.src = "https://app.productbridge.io/sdk/pb-messenger.js";
script.async = true;
document.body.appendChild(script);
return () => script.remove();
}, []);
return null;
}
init accepts a few options beyond the required organizationId:
| Option | What it does |
|---|---|
userToken | A signed identity token — see Identity Verification. |
position | bottom-right (default) or bottom-left. |
buttonColor | Launcher bubble color. |
hideLauncher | Hide the bubble and open the messenger yourself via ProductBridgeMessenger.open(). |
hideOnMobileBelow | Hide the launcher below this viewport width in pixels. |
zIndex | Stack the launcher above or below your own UI. |
The SDK also exposes open(), close(), openTab("news"), identify(token), and logout() for driving the messenger from your own UI, and emits an unread event so you can badge your own controls.
Settings you pass explicitly in the snippet win over dashboard settings — handy for per-page overrides, but remember that a hardcoded value in an old snippet keeps winning until the snippet is updated on your site.
Identity Verification
Connect logged-in users of your product to the messenger so conversations are tied to real accounts.
Get your secret
Copy the identity secret from the Installation tab and store it server-side — never ship it to the browser.
Sign a token on your backend
Sign an HS256 JWT containing at minimum the user's userId and email. Add name and any custom fields — unknown claims automatically become user attributes on the contact, ready for segmentation.
import jwt from "jsonwebtoken";
const token = jwt.sign(
{ userId: user.id, email: user.email, name: user.name },
process.env.PRODUCTBRIDGE_IDENTITY_SECRET,
{ algorithm: "HS256" }
);
Pass it to the messenger
Provide the token as userToken in init, or call ProductBridgeMessenger.identify(token) after your own login flow.
For prototyping, an unsecure mode toggle accepts a plain identity payload without a signature. Leave it off in production — with it off, unsigned identities are rejected.