Troubleshooting

Why a tab left open overnight stops getting answers

The widget holds a short lived token rather than the public key, which is what stops a conversation being taken up again later from somewhere else. The consequence a visitor meets is that a conversation left sitting stops working and a reload fixes it. The wording that explains this lives in the response rather than on the screen, which is the part worth knowing before you go looking for it.

The symptom

A conversation that was working stops answering. The visitor sees the offline message you configured, and everything works again the moment the page is reloaded.

What it usually is

In rough order of how often each one turns out to be the answer. Work down rather than across: each carries a way to tell whether it is yours before you change anything.

  • 1

    The token is older than 15 minutes

    Why
    A visitor token lasts 15 minutes. Refreshing one keeps the original session start rather than restarting the clock on the session as a whole, so a conversation open longer than that fails on its next message rather than at some random moment.
    How to confirm it is this one
    In the network tab the chat request returns 401, and the response body reads: Your session expired. Reload the page to continue. The panel never shows that sentence, so the network tab is the only place it appears.
    Fix
    Reload the page. There is nothing to configure and nothing was lost: every message already sent is stored against the conversation and is in your dashboard.
  • 2

    The visitor moved to another page and the thread started again

    Why
    The panel is a document inside the page, so a navigation ends it and the next page begins a new one. The conversation does not carry across, and to a visitor that is indistinguishable from an expiry: they ask a follow up and the assistant does not know what they are talking about.
    How to confirm it is this one
    In the conversation list you have two rows for the same visitor identifier a minute or two apart, with page addresses that follow on from one another. That is one person crossing a link, not a session that ran out.
    Fix
    Nothing to fix. It is worth knowing when you read conversations, because a thread that looks abandoned halfway through is often the same person carrying on under the next row down.
  • 3

    The assistant was paused while the conversation was open

    Why
    A paused assistant refuses new sessions outright and stops answering existing ones. The two failures look different because they happen at different points: a panel opened after the pause never gets a session at all, while a panel that already had one has its next message refused.
    How to confirm it is this one
    Opening the widget fresh puts a line in the panel reading: This assistant is currently paused. A conversation that was already running instead shows your offline message, and the chat request in the network tab returns 404 saying the assistant is unavailable.
    Fix
    Set the assistant back to active. Allow up to a minute before deciding it did not work, because the configuration the widget reads is cached for that long.
  • 4

    The session is older than 24 hours

    Why
    A session cannot outlive 24 hours from the moment it started, whatever happens in between. This is the ceiling that refreshing a token cannot lift, and it exists so that a token taken out of a browser has a definite end rather than an open ended one.
    How to confirm it is this one
    The chat request returns 401 as above, but the body reads: Session too old. That wording appears in no other situation, so it settles the question on its own.
    Fix
    Reload. In practice this is a tab left open overnight or across a weekend, on a kiosk, a shared machine, or a second monitor nobody ever closes.

If none of those fit

The status code separates these from everything else that stops an answer. 401 is the session, and the wording in the body says which of the two it was. 403 is an origin or a token binding problem rather than a timing one. 429 is a rate limit. A request that succeeds and streams an error is the workspace quota. Only the first of those is fixed by reloading, which is why the code is worth reading before anything is changed.

Questions

Why 15 minutes rather than a day?
Because the token is minted for anybody who opens a page and then lives in a browser nobody controls. A short life is what makes a copied one nearly worthless, and a reload costs a visitor nothing. The 24 hour ceiling exists so that even a token being kept alive has an end.
Can the visitor be shown the real message?
Not directly. The panel shows the offline message from your appearance settings whenever an answer does not come back. What you can do is word that message so it covers this case: something suggesting a page reload reads sensibly for a timeout and for a genuine outage alike.
Does the visitor lose the conversation when they reload?
From their side, yes: the panel starts fresh from the greeting. From yours, no. The messages are stored against the conversation and are in the dashboard, and anything said after the reload is stored as a new conversation beside it.

Keep reading

Try it on your own material

Upload a document or point it at your site, paste one line of HTML, then ask it something only your business could answer.