# 8x8 Contact Center Agent Availability Integration

> Let CallGrid check an 8x8 Contact Center queue for available agents with a destination ping before it routes a call to that buyer.

Source: https://callgrid.com/knowledge-base/8x8-contact-center-agent-availability-integration
Last updated: 2026-10-28
Topics: Integrations, Agent Availability

## Overview

This integration lets CallGrid check an 8x8 Contact Center queue for available agents before routing a call to that buyer. CallGrid sends a **destination Ping** to 8x8's Real Time Statistics API during routing. If the response shows agents waiting for calls, the destination is considered; if not, it is skipped and the call moves on through routing.

The check is configured on the destination's **Ping** tab. Destination webhooks are now called destination pings, so older instructions that say "Webhook tab" or "Run Webhook" refer to the Ping tab and **Run Ping**.

## Prerequisites

- An 8x8 Contact Center account with admin access to **Configuration Manager**.
- The 8x8 **platform subdomain** for the tenant, for example `vcc-na12` or `vcc-eu1`. It appears in the URL when you open 8x8 Configuration Manager.
- The numeric **Queue ID** of the queue that answers CallGrid calls.
- The **tenant name** and a **Data Request Token**.
- A CallGrid buyer and a saved destination for this queue (the Ping tab needs a saved destination).

## Step 1: Get the 8x8 credentials

In 8x8 Configuration Manager:

1. Go to **Integration > API Token**.
2. Next to **Data Request Token**, click **New Token** and copy it.
3. Go to **Queues** and note the numeric Queue ID of the queue to monitor.
4. Note the platform subdomain from the 8x8 login URL.

## Step 2: Configure the destination Ping

![Destination Ping tab with the 8x8 template selected](https://callgrid.com/api/media/file/kb-8x8-template.png)

1. **Buyers > Destinations**, open the destination for this 8x8 queue.
2. Open the **Ping** tab and enable **Ping Integration**.
3. Turn on **Ping Template**, select **8x8** and fill in the template fields:
  - **Queue ID**: the numeric Queue ID from Step 1.
  - **Platform Subdomain**: the platform subdomain from your 8x8 login URL.
  - **Basic Auth Token**: the Base64 encoding of `TENANT_NAME:AUTH_TOKEN`, your tenant name and Data Request Token joined by a colon.
4. **Request Data** (the template fills in the method and URL):
  - Method: **GET**
  - URL: `https://<Platform Subdomain>.8x8.com/api/rtstats/stats/queue/<Queue ID>.json`
  - **Timeout**: keep it short so a slow 8x8 response does not delay routing. New destination Pings default to 5 seconds; the per-source **Webhook Timeout** override has a 1-second minimum.
  - **Use Static IP for requests**: turn on only if your 8x8 tenant restricts API access by IP. Requests then come from `3.232.249.88` and `54.160.65.103`.
5. **Headers** (only if you build the request by hand instead of using the template): add `Authorization` with the value `Basic [[b64:TENANT_NAME:AUTH_TOKEN]]`. The `[[b64:...]]` macro inserts the base64 encoding of the literal text, which is what Basic auth needs. Do not paste the raw `tenant:token` unencoded.
6. Click **Save Ping**.

## Step 3: Acceptance Parsing

![8x8 acceptance parsing and field mapping](https://callgrid.com/api/media/file/kb-8x8-acceptance.png)

Acceptance Parsing decides whether the destination is available, and the 8x8 template sets this rule for you. Tooltip: "If accepted, the Destination will be considered in the route decision for calls and bids."

- **Parsing Type:** JSON
- **Property:** `queue.agent-count-waitTransact` (agents waiting for a transaction)
- **Operator:** Greater Than (options are Equals, Not Equal To, Greater Than, Less Than)
- **Value:** `0`

Add more criteria for stricter rules, for example `queue.queue-size` Less Than `10`. Business hours are not an acceptance rule; set them on the destination's **Business Hours** and **Timezone**.

**Rejection Protection** ("Do not reject the call or bid if the webhook http status code is not 200") keeps a destination eligible when 8x8 returns an error. Turn it on only if the buyer prefers receiving calls during an 8x8 API outage over losing them.

## Step 4: Field Mapping > Agent Availability

Map **Agent Availability** to `queue.agent-count-waitTransact`. Tooltip: "Parse agent availability status from ping responses." The mapped value appears as Agents in the Pings report and on **Reports > Agents**.

## Step 5: Test

1. In **Ping Testing**, click **Run Ping**.
2. Confirm the response is JSON queue statistics, not an authentication error.
3. Check the property paths against the real response and adjust Acceptance Parsing and Field Mapping if 8x8 nests fields differently.
4. Test with agents available and with none available, and confirm the destination is accepted and rejected respectively.
5. Place a live test call and check the call timeline and **Reports > Pings** (Accepted, Timeout, API Failed, Avg Agents).

## 8x8 response fields

Use **Run Ping** to see your queue's live response. Fields used in this article's examples:

| Field | Meaning |
| --- | --- |
| `agent-count-waitTransact` | Agents available to take calls |
| `agent-count-busy` | Agents on calls |
| `queue-size` | Callers waiting |
| `longest-wait-time` | Longest current wait, seconds |
| `enabled-agent-count` | Agents enabled on the queue |

## Example acceptance rules

| Goal | Criteria |
| --- | --- |
| At least one free agent | `queue.agent-count-waitTransact` Greater Than `0` |
| Keep a buffer | `queue.agent-count-waitTransact` Greater Than `2` and `queue.queue-size` Less Than `10` |
| Avoid long holds | `queue.longest-wait-time` Less Than `300` |

## How it behaves on a call

- The ping runs during routing for each call or bid that reaches this destination. It is not a background feed from 8x8.
- Availability can change between the ping and the call. Two calls a few seconds apart can both see the same free agent.
- If acceptance fails, CallGrid does not queue the call for this buyer. The destination is skipped and routing continues to the next destination or group; with **Failover Routing** and **Retry Routing Plan** on, a call that fails to connect or finds nothing can be rerouted or re-checked.

### Capacity backstops

Combine the ping with destination **Capacity and Limit Settings**: **Max Concurrent** calls, **Hard Concurrency Cap**, **Capacity Guard** with **Capacity Guard Seconds** (holds a destination out of new auctions after it wins), and **Concurrency Schedule** for staffed hours. **Max Pings Per Minute** limits how often CallGrid pings this destination, which protects the 8x8 API.

## Troubleshooting

| Symptom | Likely cause | Fix |
| --- | --- | --- |
| 401 or authentication error in Run Ping | Token wrong, expired, or not base64 encoded | Regenerate the Data Request Token; use `Basic [[b64:TENANT_NAME:AUTH_TOKEN]]` |
| Host not found or timeout | Wrong platform subdomain | Match the subdomain in the 8x8 login URL |
| 404 or empty queue data | Wrong Queue ID or inactive queue | Confirm the Queue ID in Configuration Manager |
| Always rejected although agents are free | Property path does not match the response | Copy the path from the Run Ping response |
| Calls reach a queue with no free agent | Availability changed after the ping | Add Capacity Guard or concurrency limits |
| Many Timeout or API Failed in Reports > Pings | 8x8 slow or rate limiting | Raise Timeout slightly, lower Max Pings Per Minute, contact 8x8 |
| 8x8 blocks requests | IP restriction on the tenant | Turn on Use Static IP and allow both IPs |

## 8x8-side limits

With high call volume, set a sensible **Max Pings Per Minute** on the destination, and ask 8x8 about any API limits that apply to your tenant.

## Security

- Store the token only in the destination Ping (the template's Basic Auth Token field, or the headers if you build the request by hand); regenerate it in 8x8 if it is exposed.
- All requests use HTTPS.
- Limit 8x8 Configuration Manager access to the people who manage the integration.

## Resources

- 8x8 Developer Hub: https://developer.8x8.com/
- 8x8 Contact Center Real Time Statistics API guide: https://support.8x8.com/contact-center/8x8-contact-center/developers/8x8-contact-center-real-time-statistics-reporting-api

## Do it with AI

**Ask Griddy, Claude or ChatGPT.** Try: "How many pings to my 8x8 destination were accepted today, and what was the average agent count?" Claude and ChatGPT need the CallGrid connector turned on (setup guides for [Claude](https://callgrid.com/knowledge-base/callgrid-mcp-connect-to-claude-desktop) and [ChatGPT](https://callgrid.com/knowledge-base/callgrid-mcp-connect-to-chatgpt)).

The connector is read only. It looks things up and reads your data. You make the changes in CallGrid.
