> ## Documentation Index
> Fetch the complete documentation index at: https://documents.xobito.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Real-time Updates (Pusher)

> How Xobito delivers new messages, campaign progress, and team events to your browser instantly.

Xobito uses a real-time messaging service called **Pusher** to push new events from the server to your browser without you having to refresh the page. When a new chat arrives or a campaign counter ticks up, Pusher is what makes it happen instantly.

<Note>
  Most customers never need to touch this page — real-time works out of the box. Read on if you want to understand what Pusher does, or if you'd like to use your own Pusher account.
</Note>

## What Pusher powers in Xobito

<CardGroup cols={2}>
  <Card title="Live Chat inbox" icon="comments">
    New customer messages appear in the chat list the moment they arrive.
  </Card>

  <Card title="Typing indicators" icon="keyboard">
    See when another agent is typing a reply in the same conversation.
  </Card>

  <Card title="Campaign progress" icon="chart-line">
    Live counters for sent, delivered, read, and failed messages.
  </Card>

  <Card title="Status updates" icon="circle-check">
    Message ticks (sent → delivered → read) update in place.
  </Card>

  <Card title="Assignments" icon="user-plus">
    You're notified when a chat or ticket is assigned to you.
  </Card>

  <Card title="Connection status" icon="plug">
    The green dot next to your phone number is refreshed in real time.
  </Card>
</CardGroup>

## Default setup — nothing to configure

By default, Xobito uses a managed Pusher service we provide. You don't need a Pusher account, you don't need to install anything, and you don't need to enter any keys.

<Check>
  As soon as you log into Xobito, the green "Live" indicator in the top bar tells you the real-time connection is active.
</Check>

## Using your own Pusher credentials (optional)

If you prefer to use your own Pusher account — for example, if you want to keep all traffic under your own billing or region — you can. This is entirely optional.

<Warning>
  Only change Pusher credentials if you know what you're doing. Entering the wrong values will break real-time features for everyone in your workspace until you correct them.
</Warning>

### What you'll need

1. A Pusher Channels account — sign up free at [pusher.com](https://pusher.com).
2. A new app in Pusher, created in the region closest to your users.
3. The four values from your app's **App Keys** page:
   * `App ID`
   * `Key`
   * `Secret`
   * `Cluster` (e.g. `mt1`, `eu`, `ap1`, `ap2`)

### Enter your credentials

<Steps>
  <Step title="Go to Real-time settings">
    Sidebar → **Settings → Real-time (Pusher)**.
  </Step>

  <Step title="Switch 'Use custom Pusher' to On">
    The input fields become editable.
  </Step>

  <Step title="Paste each value">
    Copy the four values from your Pusher dashboard into Xobito.
  </Step>

  <Step title="Click 'Test connection'">
    Xobito tries to open a real-time channel. A green "Connected" banner confirms success.
  </Step>

  <Step title="Save">
    Click **Save**. Every connected browser reconnects automatically within 30 seconds.
  </Step>
</Steps>

<Tip>
  After switching, ask a teammate to send a test message. It should appear in your inbox with no refresh.
</Tip>

### Reverting to the default

Toggle **Use custom Pusher** back to **Off** and click **Save**. Xobito switches back to the managed service. Your own Pusher credentials are cleared from the form.

## Troubleshooting real-time

### Symptom: messages only appear after I refresh

Most likely, the browser is not connected to the Pusher service.

<Steps>
  <Step title="Check the 'Live' indicator">
    Top-right of the dashboard. If it's grey or red, the connection is down.
  </Step>

  <Step title="Check your network">
    Corporate firewalls sometimes block WebSocket traffic. Try a mobile hotspot.
  </Step>

  <Step title="Check your ad blocker">
    Some privacy extensions block Pusher. Add `*.pusher.com` to your allowlist.
  </Step>

  <Step title="Hard refresh">
    Press **⌘ + Shift + R** (Mac) or **Ctrl + Shift + R** (Windows).
  </Step>
</Steps>

### Symptom: "Real-time disconnected" banner keeps popping up

This usually means your internet is dropping briefly. Xobito automatically reconnects and pulls any missed events.

If it keeps disappearing and coming back more than a few times a minute:

* Check your Wi-Fi signal — try ethernet if possible.
* Close other apps that use a lot of bandwidth.
* If you're on a VPN, try disabling it.

### Symptom: I'm seeing duplicate messages

This can happen if you have Xobito open in multiple tabs and one of them loses connection then reconnects. Close extra tabs and refresh.

### Symptom: counter on a live campaign isn't moving

<Steps>
  <Step title="Confirm the campaign is 'Running'">
    The counter only updates while the campaign is in progress.
  </Step>

  <Step title="Check real-time status">
    If the "Live" indicator is grey, real-time is down — fix that first.
  </Step>

  <Step title="Refresh the page">
    The current totals are always correct after a refresh — only live tick-up depends on Pusher.
  </Step>
</Steps>

## Security & privacy

* Xobito never sends message content through Pusher — only **event notifications** ("a new message arrived in chat #123").
* The actual message body is pulled from Xobito over HTTPS after you receive the event.
* Custom Pusher credentials are encrypted at rest.

## Limits

Pusher connections are tied to the number of active sessions in your workspace. If you consistently have hundreds of agents online at once, consider enterprise Pusher pricing or a dedicated plan — contact [support@xobito.com](mailto:support@xobito.com).

## Related

<CardGroup cols={2}>
  <Card title="Notifications" icon="bell" href="/settings/notifications">
    Configure what triggers a notification.
  </Card>

  <Card title="Common Issues" icon="stethoscope" href="/troubleshooting/common-issues">
    Quick fixes for day-to-day problems.
  </Card>
</CardGroup>
