Home > Avoiding Offline Requests


(Last Updated On: November 30, 2022)

About This Article

This article explains suggestions on how to avoid offline requests in most cases.

It is important to note that it is impossible to avoid 100% of all possible Offline Requests. 
In this doc, we will advise you on tips and best practices for avoiding as many Offline Requests as possible (if that’s what you’re after), and also explain why it is impossible to avoid every single offline request.

Steps to take to avoid Offline Requests

These are your best bets for avoiding Offline Requests:

For Design Studio users

  • In the Design Studio tab:
    • Edit your applied theme.
    • Under the type for “Offline Button” select “Show no Button”. This will hide the button entirely if chat is unavailable.

For all users

The following steps should be followed using the Design Studio:

  • In the Chat Assignment tab:
    • Set your “Waiting Queue Team Status” to go Unavailable when there is 1 Visitor in the Queue.
    • Carefully consider your “Auto Responder” setting.
      • The Auto Responder sends a message after X seconds of waiting in the Queue. This can be helpful for letting your Visitors know that your Agents are working to get to their request.
      • Optionally, the Auto Responder can also give Visitors waiting in the Queue the option to send an “Offline” message. (By putting a piece of text [inside square brackets like this].) This can be a huge user experience improvement, since it gives Visitors the option to leave a message before they leave instead of just getting frustrated and abandoning the chat altogether. However, the Auto Responder messages do count as “Offline Requests.”

Important Caveat about “Not Responded” Chats

You may have noticed a category in your SnapEngage Analytics called “Not Responded.” We consider these to be “Offline Requests” because no active chat ever takes place. (You can read more about Not Responded chats in the Analytics FAQ.)

If a Visitor comes to your site and clicks to start a chat, but an agent doesn’t respond for a minute+, they might get frustrated and leave before the agent ever responds. To avoid this type of “Offline Request,” make sure your Agents’ response times are excellent. If you need help improving Agents’ response time, check out the Tips and Best Practices guide, and have your Agents read it as well!

Why can’t I avoid 100% of Offline Requests?

We’ll illustrate with a (hopefully) simple example. Let’s say you have your widget set up with all the options outlined in the previous section. Your dynamic button’s offline image is “No image,” and your Chat goes to Unavailable when there is 1 Visitor in the Queue.

How do we end up with an Offline Request in this situation?

  • You have 1 Agent who can take chats.
  • The Agent currently has 0 chats.
  • 5 Visitors come to your website at the same time.
  • All 5 Visitors see the dynamic button reflect chat as being Available.
    • (Because at the time the page loads, chat is Available.)
  • Now, each of the 5 Visitors clicks to chat, one after another.
  • But the Agent can only handle 3 chats. So what happens?
    • The 1st, 2nd, and 3rd Visitors get to chat.
    • The Agent is now maxed out on chats.
    • The 4th Visitor goes into the Queue.
    • Since the 5th Visitor cannot get to a chat, they will be presented with the Offline Form.

The above example may seem contrived at first, but the fact is: the higher your average website traffic, the more likely the above scenario becomes. You can always put more Agents online to reduce the number of Offline Requests, but there will always be edge cases.

Advanced Steps for Web Developers

There are a few advanced ways to further reduce the possibility of Offline Requests, but it will require the assistance of a Web Developer who knows how to work with Javascript.

Refresh the Floating Button

If you’re using the Floating Button, you can copy/paste the following snippet into to the Javascript API Section of your SnapEngage Code Snippet. It will refresh the status of the button once every couple minutes. (It will also kill the status checks after twenty minutes or so — since people tend to leave tabs open for days at a time now it doesn’t make sense to be updating the button for those folks for days in a row, so it’s an unnecessary burden on our system to do so.)

    SnapEngage.BtnR = {
        tId: undefined, rT: 0, rD: 45000,
        refreshBtn: function() {
            var b = document.getElementById('SnapABug_bImg'); var nSrc = b.src; var pts = nSrc.split('&&');
            if (pts[pts.length-1].substr(0,3) === 'rnd') { pts.splice(pts.length-1); nSrc = pts.join('&&'); }
            b.src = nSrc+'&&rnd='+Math.floor(Math.random()*100000);
    SnapEngage.runBtnR = function() {
        if (SnapEngage.BtnR.tId) { window.clearTimeout(SnapEngage.BtnR.tId); }
        SnapEngage.BtnR.rT += SnapEngage.BtnR.rD;
        if (SnapEngage.BtnR.rT &>= 1200000) { return; }
        SnapEngage.BtnR.tId = window.setTimeout(SnapEngage.runBtnR, SnapEngage.BtnR.rD);

Refresh the Inline Button

If you would like to use the same functionality with an Inline Button instead, you can do so. All you have to do is:

  1. Give your Inline Button’s img tag an ID.
    • For example: <img id="SnapEngage_inlineBtnImg" ... />
  2. Adjust the string inside document.getElementById() to reflect that id.
    • For example: var b = document.getElementById('SnapEngage_inlineBtnImg');

That’s it!

Did you find this article helpful?

Not HelpfulNeeds WorkSo-soHelpfulVery Helpful (5 votes, average: 4.00 out of 5)
Loading ... Loading ...

Published October 10, 2014