Inboard for chat, support & embedded widgets

The installation guide built for embedded widget products.

Your widget is the best part of your product. It only appears if your users get the script onto their site. They don't know where scripts go. They're on WordPress, Shopify, Webflow, Framer, and a CMS they built in 2015. Inboard drops a widget on your dashboard that walks each user to the right spot on their site, and confirms your widget is live before they close the tab.

Free for 50 installs/month. No credit card.

The pain

“Paste this in your header” is where your product goes to die.

Our widget is incredible. Nobody sees it because they never installed it.
Support spends Mondays answering 'why isn't my chat showing up' — they pasted the script in a sidebar widget instead of the theme header.
We lose the trial at the one step we can't control: setup. And then we're blamed when the widget 'doesn't work'.

The flow

What your users hit today vs. what Inboard delivers.

Without Inboard
With Inboard
Docs page says "add to <head>". They have no idea where <head> lives on Shopify.
Widget shows them: Online Store → Themes → Actions → Edit code → theme.liquid → paste before </head>.
No feedback that the script landed — they reload the site, don't see the chat bubble, assume it's broken.
Widget polls your domain, confirms the script is live, green ✓.
Docs tell them to "customise position" — they never get that far.
Customisation is a later step — only shown after verification.

One requirement, three renders

One script tag. Three CMSes. Verified when your widget actually loads.

You declare
requirement: html-tag
type: script
location: body_bottom
content: |
  <script>
    (function(w,d,s,k){
      w.ACMEChat=k;...
    })(window,document,'script','acme-{{SITE_ID}}');
  </script>
Inboard fetches the user's site, confirms your script loaded and your widget's globals are bound. Green ✓ once live.
  • WordPress
    Auto-rendered
    Appearance → Theme File Editor → footer.php → paste before </body>

    Caching-plugin note included so users don't wonder why the widget takes a minute to appear.

  • Shopify
    Auto-rendered
    Online Store → Themes → Actions → Edit code → theme.liquid

    Mentions the block-theme vs classic-theme split for custom themes that diverge.

  • Webflow
    Auto-rendered
    Project Settings → Custom Code → Footer Code

    Publish-required warning called out — the most common "why doesn't my widget show up" ticket for Webflow.

The verification ends with a concrete next step: “Open your live site and you'll see your chat bubble in the bottom-right.” No guesswork, no cache-refresh limbo.

Platforms

Where your widget has to render.

Hosted CMS
  • WordPress
  • Ghost
  • Wix
  • Bubble
E-commerce
  • Shopify
  • WooCommerce
  • BigCommerce
  • Ecwid
Site builders
  • Webflow
  • Squarespace
  • Framer
  • Carrd
Frameworks
  • Next.js
  • Nuxt
  • Astro
  • SvelteKit
See the full platform catalog

Don't see the one you need? Tell us — we add platforms weekly.

Pricing

Pay for installs that worked.

Every plan bills on verified installs — the moment your widget is live and your globals are bound on the user's site. If the install didn't finish, you don't pay for it.

See full pricing
Free tier
Free
No credit card required
  • 50 verified installs / month
  • Shadow-DOM isolated widget on your dashboard
  • Widget-live verification on the installer's site
Start free

FAQ

What widget founders ask before they ship Inboard.

Does Inboard render inside my dashboard without breaking my CSS?

Yes. The widget lives in a Shadow DOM — your styles can't leak in, ours can't leak out. Custom CSS overrides are available from Growth up. Brand colour + logo on every paid plan.

What if my widget needs to be placed in a specific position?

You declare the location (head, body_top, body_bottom) and any DOM-target hints. We render the platform-specific instructions to match — and surface the caching / publish gotchas for the platforms that have them.

My script has dynamic config per customer — how does that work?

Placeholders. Your script includes {{SITE_ID}} or {{API_KEY}}. Your dashboard calls Inboard.init({ vars: { SITE_ID: '…' } }) and the widget pre-fills it. Required placeholders are validated before the widget renders.

Different vertical?

Pick the install problem that matches your SaaS.

Start free

See the 90-second clip of your widget installing on your users' CMS.

Tell us where your users mostly install — Shopify, WordPress, Webflow. We'll send you a clip of Inboard walking one through placing your widget there, ending with your widget rendering on a live page.

Free for 50 installs/month. No credit card.

What you get
  • One looping clip of your widget installing on your target CMS
  • Short note on the CMS-specific gotchas we handle for you
  • A live Inboard sandbox to point at your own script tag