What you can change today
Theme color
Drives the accent across every visible surface: header ring, send button, user bubbles, chips, loading dots.
Avatar
Bot picture shown on the header and beside each reply. Falls back to the ProBot mark tinted with the theme color.
Bot name & headline
Appear in the header once the widget hydrates.
Suggested questions
Up to five chips shown before the visitor asks their first question.
Script-tag attributes
The full embed contract is two attributes. Everything else is server-driven from the bot’s dashboard settings.Recipes
Change the theme color
Open Dashboard → Bot settings → Theme color. Pick a preset or a custom hex. The widget’s--probot-theme CSS variable updates on the next render.
The theme color is the only chrome property you can flip without touching
code. Most requests for “custom CSS” boil down to “I want a different accent
color” - this covers it.
Send the widget at a staging backend
For a staging or self-managed mirror of pro-bot.dev, pointdata-api-base
at your host:
probot-self-hosted npm package instead.
Position the widget on the page
The widget mounts a<div data-probot-widget> at the end of <body>. The floating bubble inside it is position: fixed, pinned to bottom: 20px; right: 20px of the viewport. Because of Shadow DOM isolation, host CSS cannot reposition it from the outside.
If you need it in a different corner, run a custom widget build and change the .probot-root selector in src/widget/widget.css, or use the probot-self-hosted npm package which lets you render the chat wherever you like.
What host CSS cannot do
These do not work, and understanding why saves you an afternoon of debugging:.shadowRoot returns null), and CSS selectors don’t cross the shadow boundary. This is by design: the widget looks the same on your carefully-crafted portfolio and on a Bootstrap-heavy blog that hasn’t been touched since 2018.
Deep customization
Two paths if the theme color + avatar aren’t enough:1. Custom widget build
Clone the repo, editsrc/widget/widget.css, rebuild:
public/widget.js from your own domain and point the embed’s src at it. You keep control of the dashboard-driven bits (theme color, avatar, etc.) - only the CSS diverges.
2. Fork probot-chatbot on npm
If you’d rather bundle the widget into a Vite/webpack/Next.js app, fork probot-chatbot, swap in your custom CSS at build time, and publish under a new name.
Both paths let you reshape anything - fonts, sizes, corner radii, animation timing, dark mode - because you own the CSS that lands inside the shadow root. Just remember: the moment you fork, upstream widget updates stop reaching you automatically.
CSS variables (for forkers)
If you self-host, these are the tokens.probot-root exposes at the top of widget.css. Overwrite them and every internal rule that uses var(--probot-*) re-tints together:
--probot-theme is wired to a dashboard control today; the rest are static defaults that would require a widget rebuild to change.
Related
- Embed & share - the two embed options and the npm package.
- Themes & avatar - the dashboard-driven identity controls.
- Self-hosted bot - embed the chat directly in your own web app via the
probot-self-hostednpm package.