Skip to main content
Everything the chat widget shows is configurable through Plain.init: the launcher, the welcome screen, the theme, and the customer details you pass in.
Customization in Plain

General customization

Plain’s chat widget is fully customizable, so you can tailor it to match your brand and user experience. From appearance and behavior to pre-filled thread metadata and structured inputs, you can shape the chat flow to fit your support model.
  • Stay on brand with color, layout, and logo options
  • Capture structured data at the point of contact to help with triage and routing
  • Adapt the chat interface to different use cases across your product
  • Surface links to docs, forms, or key actions before a user starts a conversation
Whether you want to embed chat in a billing portal, an onboarding wizard, or a usage dashboard, the widget can adapt to fit your exact workflow and customer experience.

General customization code

Enhance your chat flows with Plain’s data model

Plain’s chat widget integrates directly with the platform’s data model. This lets you tag and structure threads from the start, so your team can triage without reading each one first. You can set the following on threads created from chat:
  • Labels
  • Priority
  • Tiers
  • Tenants
  • External IDs
There are several places in the configuration you can add these with varying effects:

All threads

Providing a top-level threadDetails object in the Plain.init function will set these fields on all threads created from the chat widget. You could, for example, set a label based on the page the user is on.

Thread details code

Chat buttons

You can configure the primary chat button and any additional chat buttons that appear on the intro screen with text and an icon using the chatButtons array. You can also pass threadDetails to a chat button to set fields on the thread when the user creates a chat from that specific button. If you provide the same field in both the top-level threadDetails and a chat button, any single value fields will be overridden by the chat button and any multi-value fields will be appended to.

Chat buttons code

Chat forms

Similar to chat buttons, chat forms allow you to set fields on the thread when the user creates a chat. These are specific to each chatButton.

Chat forms code

Additional methods

The Plain object has additional methods to provide more control over the chat widget. This may be helpful to keep the chat widget in sync with your existing application state.

Additional methods code