Google Cloud Contact Center AI Agent Availability Integration
How to make a CallGrid destination check a Google Cloud Contact Center AI instance for available agents before each call or bid.
Updated 5 min read
Browse the knowledge base
On this page
- What this article covers
- Prerequisites
- Step 1: Collect the CCAI details
- Step 2: Build the destination Ping in CallGrid
- Things to know
- Queue-specific availability
- Example response shape
- How it behaves on live traffic
- Rate limits and IP allowlisting
- Monitoring
- Troubleshooting
- Manual API test
- Google resources
- Do it with AI
What this article covers#
How to make a CallGrid destination check a Google Cloud Contact Center AI (CCAI Platform) instance for available agents before each call or bid. The check is the destination's Ping: an outbound request CallGrid sends to CCAI, whose response decides whether the destination is considered for that call.
Prerequisites#
- A Google CCAI Platform instance and an admin who can create or view API credentials.
- The instance's subdomain and domain (for example
yourcompanyandccaiportal.comif the portal isyourcompany.ccaiportal.com). - API credentials that can read agent statuses. CCAI Platform's API uses Basic auth with your subdomain as the username and an API credential token as the password; the older company key and secret are deprecated.
- A CallGrid destination (Buyers > Destinations) for this buyer, saved at least once. The Ping tab is enabled only after the destination is saved.
Step 1: Collect the CCAI details#
- In the CCAI Platform portal, note the subdomain and domain from the portal URL.
- Go to Settings > Developer Settings > API Credential management, click + Add API Credential, enter a name and click Create, then copy the token. CCAI Platform shows the token only once.
- Confirm the credentials can read agent statuses.
Step 2: Build the destination Ping in CallGrid#


- Open Buyers (Destinations), edit the destination and select the Ping tab.
- Ping Template: pick Google Cloud CCAI and fill in the template's two fields, Domain and Subdomain.
- Request Data: the template fills in the request. To build it by hand, use:
- Method: GET
- URL:
https://<Subdomain>.<Domain>/apps/api/v1/agent_statuses - Timeout: seconds CallGrid waits for CCAI. Keep it short; a slow response delays routing.
- Headers: the template sends no credentials, so add this header yourself:
Authorization: Basic [[b64:SUBDOMAIN:API_TOKEN]], with your subdomain and the API credential token from Step 1. The[[b64:...]]macro encodes the text for you.- Store the credential in the Ping only; never put it in a tag or a call-level field.
- Acceptance Parsing: Parsing Type Regex, matching
"status": "Available"(the template's rule). The ping is accepted when at least one agent in the response is Available, and rejected when none are. - Click Run Ping and read the raw CCAI response. If the ping is rejected while an agent is available, compare the regex with the response text. It must match exactly, including spacing: if the response shows
"status":"Available"with no space, change the regex to match. - Click Save Ping.
Things to know#
- CCAI returns a status per agent, not a count. The ping answers "is anyone available?", so it cannot require three or five free agents, and Field Mapping > Agent Availability has no count to read. Use Max Concurrent Calls and Capacity Guard to limit volume.
- These limits matter most when several campaigns or publishers share the same agents, since the ping reflects availability at that moment, not agents reserved for CallGrid.
Queue-specific availability#
Google's documented agent statuses response lists each agent's status but not the agent's queue, so it cannot be filtered by queue in Acceptance Parsing. Google's endpoint documentation describes narrowing the request to specific agent or team IDs; ask Google whether that fits your setup. For several queues, create one destination per queue.
Example response shape#
Shape from Google's agent status endpoint documentation (shortened), a list of agents with a status each:
[ { "agent_id": 11, "name": "Agent One", "agent_number": "Agent No.111", "status": "Available", "ip_addrs": ["203.0.113.10"] }, { "agent_id": 12, "name": "Agent Two", "agent_number": "Agent No.112", "status": "In-call", "ip_addrs": ["203.0.113.11"] }]The response has no available-agent count field.
How it behaves on live traffic#
- CallGrid sends the ping when the destination is being considered for a call or a bid.
- Turbo Routing can cancel this ping once a winning destination is decided.
- Ping Guard (bidding campaigns) reuses one ping per caller across duplicate bidders during the bid expiration window, which reduces calls to the CCAI API.
- Capacity Guard holds the destination out of new auctions for a set number of seconds after it wins, so one available agent is not offered overlapping calls.
- Pair availability with Max Concurrent Calls or Hard Concurrency Cap as a backstop.
Rate limits and IP allowlisting#
- Set Max Pings Per Minute on the destination (0 means unlimited). It applies on top of the buyer-level ping cap.
- Enable Ping Guard on bidding campaigns.
- A 429 returned by CCAI is counted under API Failed in the Pings report together with genuine errors, which inflates the failure rate. Check the ping's Code before assuming CCAI is down.
- If the CCAI instance only accepts allowlisted IPs, turn on Use Static IP on the Ping and allowlist 3.232.249.88 and 54.160.65.103. These IPs are used only when the checkbox is on. Most setups should leave it off.
Monitoring#
- Reports > Pings, grouped by DestinationName: accepted, failed, timeout, API failed and rate-limited counts, response time and average agents.
- Reports > Agents: agents available per destination from recent pings.
Troubleshooting#
Symptom | Likely cause | Fix |
|---|---|---|
401 or 403 on Run Ping | Missing or wrong credentials, or API access disabled | Check the Basic header (your subdomain as username, an API credential token as password; the older company key and secret are deprecated) and CCAI API permissions |
404 | Wrong subdomain, domain or path | Compare the URL with the portal URL and CCAI API docs |
Always rejected with agents online | Acceptance key or pattern does not match the response | Run Ping, read the actual response, then fix the key path or pattern (case-sensitive) |
High Timeout % | CCAI slow or Timeout too low | Raise Timeout slightly; a per-source override labelled Webhook Timeout on the campaign Sources tab also sets the ping timeout (the minimum is 1 second) |
High API Failed | Rate limited (429) or CCAI errors | Lower Max Pings Per Minute, enable Ping Guard |
Calls arrive when agents are busy | Availability changed between ping and call | Enable Capacity Guard, set concurrency caps |
Consider Rejection Protection ("Do not reject the call or bid if the webhook http status code is not 200") only if the buyer would rather receive calls during a CCAI outage than lose them.
Manual API test#
curl -u "yoursubdomain:API_TOKEN" \ "https://yoursubdomain.ccaiportal.com/apps/api/v1/agent_statuses"Google resources#
- Google Cloud Contact Center AI Platform documentation: https://docs.cloud.google.com/contact-center/ccai-platform/docs
Do it with AI#
Ask Griddy, Claude or ChatGPT. Try: "How many pings to my Google CCAI destination were rejected today?" Claude and ChatGPT need the CallGrid connector turned on (setup guides for Claude and ChatGPT).
The connector is read only. It looks things up and reads your data. You make the changes in CallGrid.
Was this article helpful?
Related articles
- RingCentral Agent Availability IntegrationPing RingCentral's call queue presence API from a CallGrid destination and only accept a call when enough agents are taking queue calls.
- Five9 Agent Availability IntegrationLet a CallGrid destination check Five9's live agent availability before a call is sent, with setup, acceptance parsing and troubleshooting.
- EnrollHere Agent Availability IntegrationHow to make a CallGrid destination check an EnrollHere dialer queue for available agents before each call or bid.