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

# My agent is not answering

> Work through the causes in the order they actually happen

Start with the question that narrows it fastest: **does the agent answer in the
Playground?**

Choose **Chat bubble** for that test. The **Email** Playground is a formatting
preview with no message composer; test its answers by sending a real email.

If it answers there and nowhere else, the problem is the surface, and you want
[Nothing comes back on a channel or the widget](#nothing-comes-back-on-a-channel-or-the-widget).
If it fails in the Playground too, the problem is the agent, and you want [The
answer is wrong or empty](#the-answer-is-wrong-or-empty).

## Your workspace role does not allow an action

Ask a workspace Owner to review your role under **Workspace settings → Members**.
Viewers can read resources and use Playground and Compare, but cannot change
agents or handle tickets. Support Associates can work in Helpdesk, but cannot
configure agents or use Playground. Role changes and revoked access take effect
on the next server request. See [workspace roles](https://cntillion.com/docs/workspaces/members.md).

## Nothing comes back on a channel or the widget

Visitors and app users never see why: the widget and the mobile SDK show
"This agent is temporarily unavailable. Try again later." whenever the reason is
meant for you, such as a plan or credit limit or a missing model key. Send the
same message in Playground to read the reason.

### It says the agent reached its monthly credit limit

You set a monthly cap and the agent has spent it. Credits depend on the selected
model, each model request during a tool action, and any attached images or PDF
pages. Playground and Compare also consume message credits. Usage resets on the
first calendar day of each month in UTC.

Raise the number or turn the cap off under **Settings → General**. On a messaging
channel, the waiting messages are marked **Needs review** rather than lost, so
your team can still answer them by hand.

The cap is off unless you turned it on.

If the message says the **workspace** has run out of credits, an Owner can
upgrade or recharge in **Workspace settings → Plans**. Purchased credits do not
expire. If a feature became unavailable after a plan change, check its
[plan requirements](https://cntillion.com/docs/workspaces/billing.md).

### It says too many messages in a row

The rate limit. It ships at 20 messages every 240 seconds for each visitor, counted
per browser across every conversation on your site. The visitor who reaches it
waits until the window moves on, and everyone else keeps chatting. If every
visitor sees it at once, your site sent ten times the limit in one window, the
agent's safety net against scripted traffic. Only website conversations count
toward it; traffic on your other channels does not.

Change it under **Guardrails**, up to 1000 messages over a window of your
choosing.

### It says the agent is unavailable on this domain

The embed allowlist is on and the site is not on it. Open **Channels → Install**,
then **Website widget** or **Website iframe**, add the domain
under **Specific domains**, one per line, and save the list. See [Restricting
which sites can load your
agent](https://cntillion.com/docs/channels/website.md#restricting-which-sites-can-load-your-agent).

### The widget is hidden for some visitors

Open **Playground → Chat bubble** or **Center Stage**, then
**Display → A/B testing**. When **Show to a percentage of visitors** is on,
excluded browsers see no launcher or conversation. Their assignment persists
across visits, so reloading or calling `open()` keeps the widget hidden.

Set **100%** or turn testing off, choose **Save changes**, and reload your site
to check the installation. Browsers that block storage also stay hidden during
a partial rollout if they cannot save an assignment. Help page and the
Playground preview remain visible. See [A/B testing](https://cntillion.com/docs/channels/website.md#ab-testing).

### The widget's microphone does nothing or the call will not start

The call needs **Voice to text (Dictation)** on in **Display** settings, and
voice on for the agent. If the visitor blocked microphone
access, the widget says so; they have to allow it in the browser and try again.
An inline chat whose iframe lost `allow="microphone"` cannot reach the
microphone at all. See [Voice calls in the
widget](https://cntillion.com/docs/channels/website.md#voice-calls-in-the-widget).

### The agent does not recognise a signed-in customer

The widget treats a visitor as signed in only when their signature checks out,
and otherwise lets them chat anonymously without an error. Check that
**Settings**, **Identity** is on, that your server signs with the current secret
(rotating it invalidates every older signature), that a user hash is computed
over exactly the user id you pass beside it, and that a token has not expired.
The snippet must use `embed.js?v=2` or later. See
[Identity verification](https://cntillion.com/docs/customer-data/identity-verification.md).

### The embed address shows a page not found

Either the agent ID in your snippet is wrong, or website chat was never one of
this agent's surfaces. Copy the snippet again from **Channels → Install**, which
fixes the
first. For the second, see [Installing the chat on your
website](https://cntillion.com/docs/channels/website.md#before-it-will-work).

### A messaging channel answers nothing at all

Work down this list.

**Are automatic replies on?** Every connection is saved paused and stays that way
until you turn it on. This is the most common cause by a distance.

**Does the connection say Needs attention?** Provider access expires and gets
revoked. Reconnect the account and grant the same permissions.

**Has the reply window closed?** WhatsApp, Messenger and Instagram only allow a
free-form reply within 24 hours of the customer's last message, and that is the
provider's rule rather than ours. Past it, the agent cannot answer at all. On
WhatsApp you can send an approved template from the ticket instead.

**Did someone take the conversation over?** A teammate who took over, a customer
who asked for a person, or a reply your team sent from the WhatsApp Business app
or as your Facebook Page all pause that one conversation. For a Helpdesk live
chat, open its ticket and choose **Allow AI replies** when your team is done.
Resume other paused conversations from Channels.

**Did the customer reply STOP?** On WhatsApp that opts them out until they send
START.

**Is it a public comment?** Comments on Messenger and Instagram posts never get
an automatic reply, by design. Whether they become tickets depends on comment
monitoring, which is **off by default**: with it on, a new public comment
becomes a ticket for a person; with it off, the comment is discarded and
nothing appears anywhere. Turn it on in the connection's settings.

**Does the message say Needs review?** Open it, the reason is written on it. The
usual ones are an unconfirmed delivery, the hourly cap of about 200 automatic
replies per connection, or an attachment the agent cannot read.

### Everything is queued and nothing moves

Messages sitting on **Queued** across every connection, not just one, points at
the background worker rather than at any channel. That is a deployment problem
rather than a setting you can reach. Contact support.

### Email arrives but no reply reaches the customer

Open the email conversation and check whether it is blocked, held as spam,
waiting for the reply delay, or paused for a person. An unreadable attachment,
including a scanned PDF without text, can hold the answer for review.

Check forwarding and domain status in **Settings → Email**, then review the
selected sender in the channel settings. Delivery receipts and errors appear
on the conversation. Follow [Email settings](https://cntillion.com/docs/channels/email-settings.md) to test
the complete route, or [DNS authentication](https://cntillion.com/docs/channels/email-dns.md) when the sender
is not ready.

If the conversation was handed to Zendesk, automatic replies stay paused until
the ticket is **Solved** or **Closed**. A later manual takeover also keeps it
paused. Check the connection's webhook and trigger using the
[Zendesk handoff guide](https://cntillion.com/docs/helpdesk/zendesk-email.md#troubleshooting).

## The answer is wrong or empty

### It says it does not have that information

Usually true rather than broken. The agent answers from its knowledge and is told
to admit it when the knowledge does not cover something.

**Has automatic training finished?** Saving or importing a source queues
training in the background. Check the status on **Data sources** and the
individual source's progress. Updated content becomes searchable when training
finishes; a failed source retains its error so you can retry.

**Did the source import at all?** A source on **Needs import** was never fetched.
Use **Refresh source**. A source on **Error** failed, and opening it says which
page or file.

**Is the content actually in there?** Open the source and read what was
extracted. A PDF made of scans yields nothing, and a page built by JavaScript
sometimes yields very little.

### It answers, but the answer is wrong

The agent writes from the six passages it judged most relevant. Wrong answers
almost always mean it found the wrong six.

**Look for a contradiction.** Two pages that disagree, an old policy page still
on your site next to the new one. The agent has no way to know which is current.
Remove the old source or exclude the outdated page. It stops being used
immediately, and the remaining knowledge trains automatically.

**Pin the answer with a Q\&A entry.** For anything where the wording matters, a
matched Q\&A entry is used ahead of any searching. Add the question the way your
customers actually phrase it, and the variants. On a surface with no actions
configured it is sent word for word; with actions on that surface the model
writes the reply from it instead.
Files attached to the latest message also go through the model when AI is
available, so the reply can address the files even when the question matches
a saved answer.

**Trim rather than add.** Every extra page competes for the same six slots. There
is no relevance floor, so an agent with one good page and two hundred irrelevant
ones can surface the irrelevant ones.

### It will not hand over to a person

A customer asks for a human and the agent keeps trying to answer. Check the
following under **Tools**:

* **Centillion Helpdesk is enabled** for this agent. An Owner or Member can enable it in
  the tool setup or in **Helpdesk inbox**.
* **The right tool is enabled.** Use **Escalations** for a follow-up ticket or
  **Centillion live chat** for a person to join now. A draft saved with **Save**
  does not run; choose **Save & enable** when it is ready.
* **The tool covers this channel.** Live chat supports Chat bubble, Help page,
  Center Stage, the iOS and Android SDKs, email, Instagram direct messages,
  Messenger direct messages and WhatsApp. Only its three website channels are
  selected by default. Escalations
  defaults to Chat bubble, Help page and API, so check each action separately.
* **The trigger matches the request.** Review **When to use**. If **Only use in
  procedures** is on, an active procedure available on this channel must
  reference and invoke the action.

Test on the selected customer channel; these helpdesk actions do not run in the Playground.
Choosing a third-party helpdesk logo opens a contact dialog, so arrange that
connection with the Centillion team before expecting tickets there.

A follow-up ticket normally lets AI continue. To pause on ticket creation,
enable **Pause AI when a ticket is created** under **Helpdesk settings → Human
handoff**. **Human-first conversations** opens tickets before AI replies on
website and mobile SDK conversations that do not already have a ticket.

### The customer is waiting for live support

After a successful live-chat handoff, AI replies pause while your team handles
the conversation. Open the **Live chat** ticket in Helpdesk, check its assignment
and reply there. The customer can keep sending messages while waiting. For
website requests, check [Live alerts](https://cntillion.com/docs/helpdesk.md#live-alerts) if your team did not
receive a notification. Only enable live chat when someone can respond. If **Resume AI when all tickets close** is off, closing the ticket intentionally leaves AI paused;
choose **Allow AI replies** when you want to hand the conversation back.

A handoff on WhatsApp, Messenger, Instagram or email alerts your team in Slack
only, and only while the same alerts are on and a Slack channel is chosen.

### A reply in the Slack thread was not sent

When a reply in a [handoff thread](https://cntillion.com/docs/helpdesk.md#answering-a-handoff-from-slack)
does not go to the customer, Centillion answers in the thread. Most answers start
with **Not sent** and give the reason.

* **"This handoff has ended, so replies here no longer reach the customer."**
  Someone chose **Allow AI replies** on the ticket, or the agent handed the
  conversation over again and opened a newer thread. Open the ticket in
  Helpdesk, or reply in the newer thread.
* **"Your Slack email does not match an active Helpdesk member of this
  agent."** Centillion recognises you by the email on your Slack profile. Ask a
  workspace Owner to add you to the Centillion workspace with that address, or
  reply from Helpdesk.
* **"The reply window for this channel has closed, because the customer has
  not written for a day."** WhatsApp, Messenger and Instagram accept a
  free-form reply only within 24 hours of the customer's last message. On
  WhatsApp, send an approved template from the ticket.
* **"Slack has to be reconnected before replies from this thread can be
  delivered."** Slack did not let Centillion look up who replied. A workspace
  Owner or Member chooses **Allow replies from Slack** under **Settings →
  Notifications**.
* **"Slack has to be reconnected before files in this thread can reach the
  customer."** The workspace allowed replies before Centillion sent files. A
  workspace Owner or Member chooses **Allow files from Slack** under **Settings →
  Notifications**. Until then, reply with text only, or send the file from the
  ticket in Helpdesk.
* **"A file on this reply could not be read from Slack."** The file was
  deleted, a free Slack workspace hides it, or it is a link to a file kept
  outside Slack. Add the file again, or send it from the ticket in Helpdesk.
* **"Each attachment must be 10 MB or smaller."**, **"… is not a supported
  file type."**, **"Add up to 5 attachments per message."** and
  **"Attachments can total up to 25 MB per message."** The file breaks the same
  limit a file added in Helpdesk would. Reply again with a smaller or different
  file.
* **"A file added in this thread cannot be forwarded to the customer."** Slack
  sent the reply without naming its files, so Centillion could not fetch them.
  Add the files to a new reply, or send them from the ticket in Helpdesk.
* **"This alert was posted before replies from Slack were allowed."** The
  handoff message itself says to answer from the Helpdesk, and replies in its
  thread are never sent. Handoffs posted after replies were allowed are
  answered from their thread.

**"Centillion could not confirm that this reply reached the customer."** Centillion
tried to deliver the reply for several minutes without getting as far as
sending it. Open the ticket in Helpdesk: a reply that was sent appears there.
If it is missing, send it from the ticket.

An answer that ends with **"Open the ticket in the Helpdesk before you reply
again."** and does not start with **Not sent** is the message Helpdesk gives
for the same reply. **"Reconnect the originating channel before replying."**
means the customer's channel, such as the WhatsApp number, has lost its
connection: reconnect it under **Channels**. A file the customer's channel
cannot take is named in this message, such as **"IMG\_2439.png is too large for
WhatsApp, which takes images up to 5 MB."** Text messages (SMS) and Instagram
take no files at all. In these cases nothing of the reply was sent, so send it
again without the file or with one the channel takes. Otherwise either the
channel's provider rejected the reply, or its delivery could not be confirmed
or recorded. In that last case the customer may have received it, so check
the ticket before sending it again.

If the thread says nothing, check the ticket: a reply that was sent appears
there. A message that does not tag the agent's app is not sent, because it is
meant for the team: reply again and tag the app, as the handoff message
shows.
An edit of an earlier message is ignored. While the workspace has not allowed
replies from Slack, Slack does not send Centillion the replies at all, and the
handoff message says to answer from the Helpdesk.

A handoff message followed by **"This alert could not be recorded"** is one
Centillion could post and could not save. Replies in that thread are not sent:
answer from the ticket.

### It ignores an instruction

Instructions shape behaviour and are not a place for facts. If you wrote your
opening hours into the instructions, move them into knowledge, where they can be
retrieved and cited.

Check **Guardrails** as well. A rule there can be doing exactly what you asked and
not what you meant.

### A procedure does not start or stops during a task

Open [Procedures](https://cntillion.com/docs/agents/procedures.md) and resolve the errors listed in the
editor. Enable Trigger for a procedure that should start by customer intent.
With Trigger off, another procedure must reference it. Check that every tool is
enabled on the conversation's channel and included in any conversation selection.

A structured Ask step waits for an appropriate customer answer. A Tool step
without a failure handler ends the conversation if the tool fails; exhausting
Retry attempts does the same. Add a failure handler when recovery is needed.
Use Preview with mock tools, then test the complete exchange on the intended
channel. A published version is required for new customer conversations.

### Actions do not run in the Playground

Lead collection, escalation and custom API actions are skipped when you test in
the Playground. Test those on a real surface, such as the widget on a staging
page. Stripe actions can run for an Owner or Member through **Chat as user**
with Chat bubble selected and a linked contact's external User ID.

The Playground's **Actions** tab lists the actions on for the channel you are
testing, and their switches turn an action on or off for every channel it is set
up for. The change saves straight away. **Collect leads** can't be switched on
until it is fully configured. Open it from **Tools** and finish its
settings first.

### A Playground chat says automated replies are paused

Open the chat under **Conversations** and check its state. For a
**Paused** chat, choose **Resume conversation** from the conversation menu. For
**Taken over** or **Waiting for an agent**, open **View ticket** and choose
**Allow AI replies** in the ticket menu. The conversation's pause control is disabled
while Helpdesk owns the takeover.

### Stripe actions do not show billing records

Check **Integrations → Stripe** for the connected account and environment.
Verify the action is enabled for Chat bubble and the visitor has a valid signed
identity. The Contact's external ID must match that identity, and its
`stripe_account` attribute must contain the customer's `cus_` ID in the same
Stripe account and environment. A name or email entered in chat is not enough.

In the Playground, use **Chat as user** as an Owner or Member. Compare and
Action Preview cannot read billing data. For restricted keys, check that the
requested billing resource has read permission and portal actions have
Customer Portal write permission. See [Stripe billing](https://cntillion.com/docs/customer-data/stripe.md).

### The model I chose does not answer

The Playground shows an error instead of a reply when the model cannot run.
Choose an available model and try again. Unavailable entries explain whether
the deployment, credentials or billing rate needs configuration. A saved model
under **Current model** may no longer be supported; choose a replacement from
the catalog. Voice calls have their own selection under **Voice mode**.

### The agent does not see a photo on WhatsApp

Some models read text only. When a customer sends a photo, such a model is told
there is an image it cannot see, and it asks the customer to describe it. Pick a
model marked as supporting images if your customers send photos.

### Shopify actions do not change the store

Check that Shopify is connected and enabled under **Channels → Shopify**, that
the action is enabled for the current channel, and that the active theme has
**Centillion chat** enabled and saved. Test cart changes on the storefront;
the Playground has no real store session. Profile, address, and order-tag
actions require a signed-in Shopify customer.

If the cart badge is stale, open the store's cart page to inspect its contents.
Some themes need a listener for the cart update events. If chat reports an
uncertain mutation, review its record in **Channels → Shopify** and check
Shopify before retrying. See [Shopify limitations](https://cntillion.com/docs/channels/shopify.md#limits).

## Before contacting support

Have these ready:

* The agent's name, and its ID from **Settings → General**.
* Where it happened, and roughly when.
* What the customer asked and what came back, copied exactly.
* Whether the same question works in the Playground.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.