There are three ways to customize the PLuG widget. They can be combined: SDK values take priority over dashboard settings, and CSS overrides both.
Dashboard settings — No-code configuration in DevRev Settings.
SDK initialization — Programmatic options passed to plugSDK.init().
CSS customization — Full brand styling via a custom stylesheet.
Go to Settings > PLuG & Portal > PLuG Chat.
Setting | Description |
|---|---|
Unique App ID | Widget identifier. Pass this as |
Enable PLuG widget | Master on/off toggle for all PLuG surfaces. |
Widget alignment | Left or right relative to the launcher. |
Enable default launcher | Show or hide the floating button. |
Custom launcher selector | CSS selector for a custom element to use as the trigger. |
Setting | Description |
|---|---|
Launcher logo | Image shown on the floating launcher button. |
Accent color | Primary brand color used for buttons and links. |
Primary text color | Main body text color. |
Theme | Light or dark mode. |
Brand logo | Logo displayed in the widget header. |
Launcher position | Bottom/side spacing from screen edges. |
Banner | Promotional banner shown on the home screen. |
Custom CSS | Upload a CSS stylesheet for deep brand styling (see section 3). |
Setting | Description |
|---|---|
Welcome message | Heading shown when the widget opens (max 50 characters). Configured here, not via SDK. |
Welcome subtitle | Supporting text below the welcome heading. |
Quick links | Predefined action buttons on the home screen. |
Show search | Display the search bar on the home screen. |
Show conversations | Display the conversations list on the home screen. |
Show tickets | Display the tickets list on the home screen. |
Setting | Description |
|---|---|
Auto-popup greeting | Automatically show a greeting when PLuG loads. |
Greeting delay | Delay (in seconds) before the greeting appears. |
Enable file attachments | Allow users to attach files in conversations. |
Enable emoji | Allow emoji in the message input. |
One message at a time | Prevent users from sending multiple messages while the CX Agent is responding. On by default. |
Setting | Description |
|---|---|
Language | Default language for the widget UI. Supported: English, Spanish, Dutch, Portuguese. |
Pass options to plugSDK.init(). These override any matching settings configured in the dashboard.
window.plugSDK.init({
app_id: '<your_unique_app_id>', // Required
theme: 'light', // 'light' | 'dark'
accent_color: '#0047FF', // Hex color
primary_text_color: '#111111', // Hex color
enable_default_launcher: true, // Show floating launcher button
custom_launcher_selector: '#my-trigger', // CSS selector for custom trigger
widget_alignment: 'right', // 'left' | 'right'
spacing: {
bottom: '20px', // Distance from bottom of screen
side: '20px', // Distance from side of screen
},
disable_plug_chat_window: false, // Set true to use search-only mode
session_token: '<backend_generated_token>', // Identifies logged-in users
enable_session_recording: false, // Enable session recording
session_recording_key: '<key>', // Key for session recording
send_button_disable_duration: 5000, // ms; controls one-message-at-a-time timeout
});Parameter | Type | Default | Description |
|---|---|---|---|
| string | — | Required. Your unique PLuG App ID. |
| string |
| Widget color theme: |
| string | — | Primary brand color (hex). |
| string | — | Main text color (hex). |
| boolean |
| Show or hide the floating launcher button. |
| string | — | CSS selector for a custom element to use as the widget trigger. |
| string |
| Widget position relative to launcher: |
| string |
| Padding distance from the bottom of the screen. |
| string |
| Distance between the widget and launcher icon. |
| boolean |
| Set to |
| string | — | Backend-generated token to identify logged-in users. |
| boolean |
| Enable session recording for analytics. |
| string | — | Key for session recording integration. |
Priority: Values passed to
init()override dashboard settings. CSS overrides both.
For full brand alignment — fonts, component shapes, spacing, etc — you can use Computer or upload a custom stylesheet manually. Both options are available from Settings > PLuG & Portal > PLuG Chat > Styling > Custom stylesheet.
Computer has a dedicated skill for PLuG theming. Describe your brand or share a screenshot, and Computer generates a theme, gives you a live preview URL to review, and can re-upload and publish directly. No manual file handling needed.
*"I want to redesign PLuG to match our brand. Here's our website: https://yourcompany.com"*
*"Redesign PLuG to match this screenshot."* [attach screenshot]
Iterate conversationally until it looks right, then tell Computer to publish. Nothing goes live until you approve it.
Go to Settings > PLuG & Portal > PLuG Chat > Styling > Custom stylesheet.
Click Download CSS template to get all available selectors with the BEM-style prefix.
Edit the file to match your brand. Override only the properties you need.
Upload it and click Preview to see changes live before publishing.
Click Save and Publish.
The class system covers all PLuG surfaces:
Class | Description |
|---|---|
| Common button class applied to all buttons for shared styling |
| Primary button style (e.g., Create Ticket, Send Message) |
| Secondary button style |
| Tertiary button style |
| Text label inside a tertiary button |
| Destructive button style (e.g., Delete, Remove actions) |
| Submit button in forms (e.g., Create Ticket form) |
| Cancel button in forms (e.g., Create Ticket form) |
| View All button in cards (e.g., Recent Tickets, Articles) |
| Search component in the header that opens the search page |
| Placeholder text displayed inside the search button |
Class | Description |
|---|---|
| Common card class applied to all card components for shared styling |
| Banner card component on the home page |
| Banner image in banner card |
| Recent conversations card on the home page |
| Recent conversation item in the recent conversations card |
| Recent tickets card on the home page |
| Recent ticket item in the recent tickets card |
Class | Description |
|---|---|
| Conversation list item in recent conversations card |
| Ticket list item in recent tickets card |
Class | Description |
|---|---|
| Tabs container component for navigation |
| Individual tab item |
| Active/selected state of a tab |
| Text label inside a tab item |
| Ticket tabs container component for switching between Public Comments and Details |
| Individual ticket tab item |
| Active/selected state of a ticket tab |
Class | Description |
|---|---|
| Common class applied to all SnapKit buttons |
| SnapKit primary button |
| SnapKit secondary button |
| SnapKit tertiary button |
| SnapKit destructive button |
Class | Description |
|---|---|
| Common class applied to all SnapKit card components |
Stylesheets are size-limited for performance. If your file exceeds the limit, PLuG falls back to defaults and shows an error in Settings.
Override only the properties you need. Avoid re-declaring the full default stylesheet.
Customizations apply per chat widget.
CSS overrides do not affect the Portal, only the PLuG widget.
When enabled, PLuG prevents users from sending a second message while the CX Agent is still responding. This avoids duplicate conversations and prevents automations from firing more than once.
How it works:
PLuG cannot always know upfront whether the conversation will go to a CX Agent or a human. So:
On the first message, the send button is disabled for up to 5 seconds ( This is customisable at org level ) while PLuG waits to learn who is responding.
If the response comes from a CX Agent, disabling becomes intelligent. The button stays disabled only while the agent is actively streaming, then re-enables automatically.
If the other side is a human agent, disabling stops entirely.
The input field remains active throughout so users can keep composing.
Toggle: Settings > PLuG & Portal > PLuG Chat > Conversations > One message at a time — on by default.
The CX Agent streams responses token-by-token so users see answers appearing in real time. Before its first tool call, the agent sends a brief personalised acknowledgement, which eliminates the silent wait.
Streaming is off by default for all organisations on web. To turn it ON pass enable_streaming parameter while initialising the SDK and make sure to turn ON the streaming for that respective agent via Agent studio.
window.plugSDK.init({
...,
enable_streaming: true,
});Streaming behaviour is configurable per agent via Agent Studio.
Value | Behaviour |
|---|---|
| Streams the final answer token-by-token. Default. |
| Also streams intermediate reasoning steps to the user. |
| Returns the full response at once with no streaming. |
On mobile SDKs (iOS / Android), streaming support has been added. Refer to the iOS and Android SDK reference pages for the current syntax.