Fire Away

Install in one script tag

No plugin, no SDK, no build step. If you can edit your layout, you can install this.

1. Add the snippet

Paste this before the closing </body> tag on every page you want chat on. Your key is on the Sites screen in the dashboard.

<script>
  window.LiveChat = window.LiveChat || { q: [] };
  ['set','setUser','open','close','toggle','on'].forEach(function (m) {
    window.LiveChat[m] = window.LiveChat[m] || function () {
      window.LiveChat.q.push([m, arguments]);
    };
  });
</script>
<script async src="https://fireaway.chat/widget.js" data-key="YOUR_KEY"></script>

The first block is a stub that defines window.LiveChat before the bundle loads, so calls made during page render are queued and replayed. Nothing throws if the script is blocked.

2. Lock it to your domains

In the dashboard, under Sites, list the origins you embed on. The widget then refuses to run anywhere else, so a key lifted from your page is useless. Include staging.

https://yourcompany.com
https://app.yourcompany.com
https://staging.yourcompany.com

Leave the list empty and the widget works on any origin, which is the sensible default until you know your domains.

3. Tell it who the visitor is

Optional, and worth it. setUser prefills the pre-chat form; it never overwrites something the visitor has typed. set attaches custom data to the conversation.

LiveChat.setUser({ name: user.name, email: user.email })
LiveChat.set({ plan: user.plan, accountUrl: adminUrlFor(user) })

Up to thirty keys, values coerced to strings and capped at 500 characters. Agents see them in the order you set them, and a value that looks like a URL renders as a link.

4. Control the widget from your page

LiveChat.open()
LiveChat.close()
LiveChat.toggle()

LiveChat.on('ready', () => {})
LiveChat.on('conversation', (c) => {})

Handy for a "Chat to us" link in your footer, or opening the panel when someone lands on a help page.

Page tracking

Automatic, including single-page navigation: pushState, replaceState, popstate and hashchange are all followed. The last thirty pages arrive on the conversation with consecutive duplicates collapsed.

Troubleshooting

The launcher does not appear

Check the browser console for a blocked request, confirm data-key matches the site, and check whether you have set allowed origins that exclude the page you are testing.

It works locally but not on staging

Almost always the origin allowlist. Add the staging origin exactly, including the scheme.

Replies are not arriving by email

Email replies are sent on our domain, with your organisation name as the sender.

Get your key

Create a workspace and the snippet is waiting on the Sites screen.

Fourteen days free, no card.