# Activate an AI Agent
Source: https://docs.armin.cx/ai-agents/activate
Turn an AI Agent on, keep it manual-only, or pause it without losing its setup.
Activation controls whether an AI Agent runs on live customer tickets. Saving a draft and activating the agent are separate steps.
## Statuses
The agent auto-runs on tickets that match its triggers. You can still assign it to a ticket by
hand.
The agent never starts from triggers. It only runs when you assign it to a ticket.
The agent is paused. It does not run automatically and does not appear in assignment menus.
## Where to change the status
Open the agent from [AI Agents](https://armin.cx/app/_/ai/agents-v2). The status control sits next to the agent name in the header, and again next to **Save changes**.
When you save while the agent is inactive, one dialog lets you keep it **Inactive**, set **Manual only**, or **Save & activate**. If a New ticket trigger has no filters, the dialog warns that the agent will run on every new ticket.
## Activate safely
Confirm instructions, triggers, actions, and approval settings. A passing test does not make the
agent live.
Choose **Active** in the status control, or pick **Active** in the save dialog. If the trigger
has no filters, check that the agent is intentionally meant to run on every new ticket.
Open [run history](https://armin.cx/app/_/ai/agents-v2/runs) and the Inbox filters for this
agent. Keep sensitive actions on approval until you trust the results.
## After a run finishes
When an AI Agent finishes its current work, Chatarmin CX usually clears the live AI Agent assignment on the ticket. That does not mean the conversation is forgotten.
* After a normal reply, the same agent can continue customer follow-ups for up to 30 days.
* While the agent is paused for customer input, a delay, or approval, the ticket stays assigned.
* A hand-off to a human clears the AI Agent assignment immediately.
Read [Routing and ownership](/ai-agents/routing-and-ownership) for the full follow-up rules.
## Watch agents in production
Use Inbox views to observe what an agent is doing:
* **AI Agent is** — tickets currently assigned to that agent
* **AI Agent was assigned** — tickets the agent has ever handled
* **AI Agent is last** — tickets where that agent was the most recent AI handler
See [Views and filters](/inbox/views-and-filters) for the full condition list.
## FAQ
Tests exercise the agent in isolation. Real inbound tickets only start an Active agent whose
triggers match. Check the status first, then the trigger filters.
Yes. Use **Manual only** to keep the agent available for assignment without auto-running on new
tickets.
# AI credits
Source: https://docs.armin.cx/ai-agents/ai-credits
Understand AI Agent usage and see the credits used for common support jobs.
AI credits measure the work Chatarmin CX does when an AI Agent handles a customer request. They help you understand your AI usage without needing to follow the technical details behind each run.
There is no credit balance to top up. Your usage accrues during the billing cycle and is settled with your subscription.
## What uses credits
An AI Agent uses credits when it works on a ticket. A short answer from your knowledge base usually uses fewer credits. A ticket that needs live order data, an approved action, a longer conversation, or exception handling usually uses more.
The exact number is shown after each run in [AI usage](https://armin.cx/app/_/settings/billing/usage).
## Typical support jobs
These are typical ranges. Your usage can vary with the information, actions, and conversation needed to complete the job.
| Support job | Typical credits |
| - | - |
| CSAT follow-up | 1 |
| FAQ answer | 1–2 |
| WISMO or order tracking | 1–2 |
| Address change | 2–4 |
| Discount recovery | 2–4 |
| Scheduled support report | 2–5 |
| Return or refund | 3–6 |
| Damaged order or complex exception | 4–8 |
## Check your usage
Go to **Settings** → **Billing** → **AI usage and credits**, or [open AI usage](https://armin.cx/app/_/settings/billing/usage).
You can review usage over the current billing cycle, see recent agent runs, and check the credits used for each run.
## FAQ
No. AI usage accrues during your billing cycle. There is no prepaid wallet or “out of credits” state.
Each customer request is different. More information to review, live data to check, actions to take, or exceptions to handle can make a run use more credits.
Your AI Agents can pause when your AI subscription is past due, payment has failed, or there is no active subscription. Your Inbox and the rest of Chatarmin CX stay available. See [Billing](/settings/billing) to review payment details.
Related: [AI Agents](/ai-agents/intro), [Billing](/settings/billing).
# Email sender exclusions
Source: https://docs.armin.cx/ai-agents/email-sender-exclusions
Keep email from selected senders human-only by preventing automatic AI replies and AI Agent work.
Email sender exclusions keep incoming email from selected addresses available in the Inbox without letting AI answer or act on those tickets automatically.
## What it does
When an excluded sender emails you, Chatarmin CX still creates or updates the ticket. Your team can read the message and reply manually, but conversational AI does not engage with it.
The exclusion stops:
* AI Agents from starting or continuing work
* automatic AI-generated replies configured for the email channel
Manual work in the Inbox still works. Your team can reply, assign the ticket, use macros, and manually request an AI draft when needed.
Exclusions apply only to email. They do not block WhatsApp, Instagram, or other channel messages from the same contact.
## When to use it
Add addresses that should always reach a person, such as manufacturers, marketplaces, payment providers, or automated system senders. Use the exact sender address that appears on incoming email.
## Set it up
Go to **Settings** → **AI & Agents**, or [open AI & Agents settings](https://armin.cx/app/_/settings/ai-agents).
Under **Skip AI agents for email senders**, enter each email address that AI should ignore.
Save the settings. Future incoming email from those addresses remains available for manual handling without automatic AI engagement.
## Remove an exclusion
Open the same setting, remove the address, and save. New incoming email from that sender can then be handled by your configured AI Agents again.
## FAQ
### Does this delete or reject email?
No. The email still appears as a ticket in the Inbox.
### Does this block every address on the contact?
No. Chatarmin CX checks the sender address of the incoming email. Add every address you want to exclude.
### Does this prevent manual AI drafts?
No. A team member can still request a draft manually. The setting prevents automatic AI engagement.
# Examples
Source: https://docs.armin.cx/ai-agents/examples
Launch AI Agents for common customer-support jobs.
Choose a template to open Ask Torben with the exact supported setup prompt. Review the draft, connect the required systems, and test it before activation.
## Current templates
Answer recurring questions and assign uncertain cases.
Answer WISMO with current order and shipping data.
Check eligibility, process valid requests, and escalate exceptions.
Wait 23 hours, confirm the ticket is still resolved, then share the survey in the conversation.
Update delivery details before dispatch and explain the outcome.
Handle public comments, DMs, mentions, and sensitive content across connected social channels.
## What to review in each draft
| Template | Data and actions | Human handoff |
| - | - | - |
| Instant FAQ | **Search knowledge base**, **Send reply**, **Hand off ticket** | No confident answer |
| Order tracking | Order and shipment lookup, **Send reply**, **Update ticket** | Missing, damaged, refund, return, or cancellation cases |
| Returns handler | Order lookup, policy check, refund action | Policy exception or sensitive decision |
| CSAT collection | Delay, **Get CSAT survey link**, **Send reply** | Complaint or unresolved question |
| Address update | Order lookup, **Update shipping address**, **Send reply** | Order already dispatched or data mismatch |
| Social media | **Search knowledge base**, **Send reply**, **List AI agents**, **Call specialists**, **Hide message**, **Update ticket** | No suitable AI Agent or a case that needs human judgment |
Consequential write actions ask for approval every time by default. Read-only lookups and some internal ticket actions can run without approval. Review the decision mode for every action in the draft instead of assuming the same setting applies to all actions or templates.
## Scheduled support report
AI Agents can use delay-based timing, support data, report output, and email actions to send a report after a defined support window. For example, send a summary after a ticket has remained resolved for 24 hours.
Ask Torben to include:
* a delay-based trigger for the reporting window
* the support metrics or ticket facts to include
* the recipients and email channel
* a clear report format
* escalation when required data is missing
[Ask Torben to create a scheduled support report](https://armin.cx/app/_/ai/agents-v2?askTorben=Create%20an%20AI%20Agent%20that%20uses%20a%20delay-based%20trigger%20to%20prepare%20a%20customer-support%20report%20after%20the%20reporting%20window%2C%20collects%20the%20available%20support%20metrics%2C%20formats%20a%20concise%20summary%2C%20and%20sends%20it%20to%20the%20configured%20recipients%20by%20email.%20Ask%20me%20which%20metrics%2C%20delay%2C%20email%20channel%2C%20and%20recipients%20to%20use.).
Learn how agents are selected in [Routing and ownership](/ai-agents/routing-and-ownership).
# Getting started
Source: https://docs.armin.cx/ai-agents/getting-started
Create, test, and activate your first AI Agent.
Use this guide to turn one customer-support job into a tested AI Agent.
## Before you begin
Connect the channel and business systems the agent needs. Then decide:
* which customer problem the agent should handle
* which channels it should work on
* what should start it
* which data and actions it needs
* when it should ask for human approval
* when it should escalate
## Create an AI Agent
Ask Torben turns your support goal into a draft with instructions, triggers, skills, actions, and tests.
Go to **AI** → **AI Agents**, or [open the AI Agents overview](https://armin.cx/app/_/ai/agents-v2).
Click **New agent**, choose a template, or [open Ask Torben](https://armin.cx/app/_/ai/agents-v2?askTorben=open). Edit the prompt before sending if needed.
Explain what customers ask, what a successful outcome looks like, and when a person must take over.
Check the instructions, triggers, skills, actions, and approval settings. Connect any missing integration or [MCP connection](https://armin.cx/app/_/ai/agents-v2/mcp).
Use **GPT 5.6 Luna**. It is the recommended default and is sufficient for supported customer-support use cases, including multi-step jobs with lookups, updates, delays, follow-ups, and escalation.
Test realistic happy paths, missing data, exceptions, and messages that should go to a person.
Require approval for sensitive actions at first. Review [run history](https://armin.cx/app/_/ai/agents-v2/runs) before giving the agent more autonomy.
Agent-specific links contain private route IDs. Open the agent from the [overview](https://armin.cx/app/_/ai/agents-v2), then use its **Runs** and **Tests** tabs.
## Best practices
* Start with one clear job per agent.
* Combine exact filters with a clear description of customer intent.
* Give the agent explicit escalation rules.
* Require approval for refunds, cancellations, and other sensitive changes.
* Use tests for both expected and edge-case customer messages.
* Review early runs before enabling more automatic behavior.
Ask Torben can [diagnose a run and improve the agent](https://armin.cx/app/_/ai/agents-v2?askTorben=Help%20me%20diagnose%20an%20AI%20Agent%20run%20and%20suggest%20specific%20improvements.%20Ask%20me%20for%20the%20agent%2C%20ticket%2C%20or%20run.) when a test or live ticket behaves unexpectedly.
Next, learn how [routing and conversational ownership](/ai-agents/routing-and-ownership) work.
# Human in the loop
Source: https://docs.armin.cx/ai-agents/human-in-the-loop
Keep a person in control of sensitive replies and business changes with approval safeguards.
Human-in-the-loop is the approval safeguard for AI Agents. Every sensitive action can pause and ask a person before anything customer-visible or business-changing happens.
## Decision modes
Each action has a decision mode:
The agent prepares the action, then pauses for your approval. This is the safer default for
replies and writes.
The agent executes the action without asking. Use this only after you trust the agent on that
specific action.
**Send reply** starts as **Ask every time**. A new agent therefore proposes a customer reply by default. It does not send immediately unless you change that action to **Always run**.
## What approval looks like
When an action needs approval:
1. The agent run pauses in **awaiting approval**.
2. The Inbox shows the proposed action on the ticket.
3. You approve or reject it.
4. On approval, the agent continues. On rejection, the run stops that action.
Open the agent from [AI Agents](https://armin.cx/app/_/ai/agents-v2), then set the decision mode on each action under **Actions**.
## Start strict, then loosen
Keep approval on:
* customer replies, until tone and policy look right
* refunds, cancellations, and address updates
* discounts or replacement shipments
* other writes to commerce or ERP systems
After you review early runs, switch only the proven actions to **Always run**. Leave rare or high-risk actions on **Ask every time**.
Manual assignment still respects the agent's decision modes. Assigning an agent to a ticket does
not force auto-send. If **Send reply** is set to ask every time, the agent proposes a reply for
approval.
## Best practices
* Treat approval as a training wheel, not a permanent bottleneck.
* Prefer one clear owner for approvals on a queue so proposed replies do not sit unreviewed.
* Use [run history](https://armin.cx/app/_/ai/agents-v2/runs) to see which actions paused and why.
* Combine approvals with narrow actions. A returns agent should not have unrelated catalog or marketing writes.
Next, learn how to [activate an agent](/ai-agents/activate) and [run it on existing tickets](/ai-agents/run-on-existing-tickets).
# AI Agents
Source: https://docs.armin.cx/ai-agents/intro
Automate customer support tickets from first request to resolution.
AI Agents automate customer support tickets end to end. They understand the request, use current business data, take approved actions, and keep the customer informed until the ticket is resolved or handed to a person.
## Watch the demo
[Watch the AI Agents demo](https://supercut.ai/share/chatarmin/5cdanKlG7VbNqmgfqRbs39)
## One conversation owner
Think of a ticket like a relay baton. One AI Agent owns the customer conversation at a time. For up to 30 days after a normal AI reply, the same agent normally handles the customer's follow-up with context. It can consult a specialist for deeper work, or hand the ticket to a human.
After the agent finishes normal work, a human reply stops that agent's follow-up. A later message can be matched again. If the agent is still paused for customer information, a delay, or approval, the human reply prevents it from resuming, but the open pause also blocks a fresh AI Agent. Read [Routing and ownership](/ai-agents/routing-and-ownership) for the full behavior.
## What an AI Agent can do
An AI Agent can:
* understand the customer's intent and conversation history
* retrieve live order, shipment, return, and customer data
* answer questions and update connected systems
* wait, follow up, and collect feedback
* route or escalate sensitive and exceptional cases
* resolve completed tickets
* prepare and send scheduled support reports
Channels bring conversations into the Inbox. Integrations and more than 1,200 MCP connections give agents access to the business systems needed to complete the job. Ask Torben helps you create, test, diagnose, and improve each agent.
## Common support jobs
Answer WISMO questions with live shipping status.
Reply from your knowledge base and route uncertain cases.
Check policy and order data, then process or escalate.
Change delivery details while the order is still editable.
Detect an at-risk customer and send an approved offer.
Follow up after support and share recurring reports.
## Start here
Create, test, and activate your first focused AI Agent.
See typical credit use for common support jobs.
Start an agent from an exact match, customer intent, or a delay.
Understand which automation owns the customer conversation.
Connect knowledge, business data, actions, and approvals.
Validate behavior and inspect every execution.
Launch from current customer-support templates.
## Open AI Agents
Create agents and review support automation at a glance.
Inspect live and test executions across agents.
Review automation opportunities and new specialist agent ideas.
Connect more business systems to your agents.
Use AI Agents for customer-support automation. Use Rules only for exact, deterministic if/then changes. See [Routing and ownership](/ai-agents/routing-and-ownership).
# Replace Classic AI
Source: https://docs.armin.cx/ai-agents/migrate-from-classic-ai
Rebuild legacy Classic AI behavior with an AI Agent.
Replace Classic AI with one **First Level router** that answers from your knowledge base and consults specialists when deeper work is needed.
## Build the replacement
Go to [AI Agents](https://armin.cx/app/_/ai/agents-v2).
Ask Torben to create one broad router for your support channels. Add **Search knowledge base**, **Send reply**, and **Escalate**.
Add the support topics, escalation rules, channel scope, and brand voice that your previous setup used. Keep tone in a reusable skill.
Create focused AI Agents for jobs that need customer data or actions, such as order tracking, returns, refunds, or subscriptions. Let the router consult them.
Test common FAQs, specialist requests, and human hand-offs. Activate the router for a controlled scope, review its runs, and then expand.
Prefill Ask Torben with the replacement setup.
## Translate the old setup
| Previous configuration | AI Agent replacement |
| - | - |
| Knowledge sources | **Search knowledge base** action |
| Instructions and guidance | Concise First Level policy and decision rules |
| Handover and assignment logic | Routing and escalation instructions with **Escalate** |
| Tone, brand identity, and channel style | Reusable tone skill |
| Channel assignment | Exact channel filters |
Do not recreate handover topics as a separate concept. Write plain routing policy: what the router answers, what a specialist owns, and when a human takes over.
For the target architecture, see [Router and specialists](/ai-agents/router-and-specialists).
# Replace Workflows
Source: https://docs.armin.cx/ai-agents/migrate-workflows
Rebuild legacy Workflow automation with AI Agents.
Rebuild previous Workflow automation as an AI Agent that can understand the ticket, use business data, take approved actions, and follow up.
## Build the replacement
Go to [AI Agents](https://armin.cx/app/_/ai/agents-v2) and start with Ask Torben.
Provide the old trigger, branches, actions, reply guidance, delays, and approval requirements. Describe the customer outcome instead of copying node-by-node logic.
Use a specialist for one focused job. Add broad multi-topic routing policy to the existing First Level router instead of creating a second router.
Check instructions, actions, trigger scope, and approvals. Test examples that previously followed different branches.
Start with a controlled ticket scope. Review run history, correct gaps, and expand after the replacement is reliable.
## What belongs in Rules
Use [Rules](/rules/intro) only when both the condition and the change are exact, such as adding a tag for one known channel. If the automation must understand a request, choose among paths, communicate, wait, or use business data, keep it in an AI Agent.
For the recommended setup, see [Router and specialists](/ai-agents/router-and-specialists) and [Skills and actions](/ai-agents/skills-and-actions).
# Router and specialists
Source: https://docs.armin.cx/ai-agents/router-and-specialists
Build one clear entry agent with focused specialists.
Use one **First Level router** as the broad entry point for customer requests, then let focused specialist agents handle deep support jobs.
## Why this setup works
The First Level router keeps one agent responsible for the customer conversation. It decides which job the customer needs, consults the right specialist, and sends the final reply.
Specialists stay narrow. A returns specialist can validate return eligibility. An order specialist can check delivery data. An address specialist can update an order. They do not each need to repeat your brand voice, general routing policy, or human-escalation rules.
This gives you:
* one place to maintain routing decisions
* fewer competing AI triggers
* smaller, clearer specialist instructions
* one consistent customer reply
* easier testing when you add another support topic
## Configure the First Level router
Give the router a broad exact scope, such as all supported email channels. Do not add an AI trigger to the router. Exact channel filters are checked before meaning-based AI triggers, so this router becomes the stable entry point for those channels.
The router should:
1. identify the customer's immediate request
2. ignore incidental, negated, or already solved topic mentions
3. consult the specialist whose scope fits
4. combine the specialist result with shared policy and brand voice
5. reply to the customer or hand the ticket to a human
Keep one First Level router. Multiple broad routers can overlap and make routing depend on which
agent was created most recently.
Consult specialists. Do not hand the customer conversation to another AI Agent. A handoff is only for a person, team, or human queue.
## Configure specialists
Give every specialist one support job and a detailed AI trigger. The trigger should include:
* the customer outcome the specialist owns
* typical phrases in your customer languages
* explicit exclusions for adjacent specialists
* edge cases such as short follow-ups or negated mentions
Keep specialist instructions focused on business policy, required data, actions, and the result they must return. If the specialist is only consulted by the router, it does not need separate tone, reply-style, or general escalation instructions.
Read [Triggers and filters](/ai-agents/triggers-and-filters) for a complete AI-trigger example.
## Add a specialist safely
Go to [AI Agents](https://armin.cx/app/_/ai/agents-v2) and ask Ask Torben to create the focused
support job.
Define what belongs to the specialist and what belongs to adjacent agents.
Add one branch to the First Level router that names the specialist. Ask Torben proposes this
router edit after creating the specialist; review it before applying it.
Test requests that should use the specialist, adjacent requests that should not, and ambiguous
requests that should reach a human.
## Keep the router current
When you change a specialist's scope, update its AI trigger first. Then update the matching branch in the First Level router. The router branch should be based on the specialist's full trigger, not a short label such as “Returns” or “Orders.”
Use [Testing and run history](/ai-agents/testing-and-runs) to verify which specialist was consulted. Learn how the consultation works in [Subagents](/ai-agents/subagents).
# Routing and ownership
Source: https://docs.armin.cx/ai-agents/routing-and-ownership
Understand which automation owns a customer conversation.
Chatarmin CX gives one AI Agent responsibility for a customer conversation at a time.
Think of a ticket like a relay baton. One owner holds the conversation. That owner can keep it for a follow-up, consult a specialist, or hand it to a human. The owner is the AI Agent still responsible for the conversation. It is not always the latest assignment shown in the Inbox.
## What happens after an AI reply
### The agent finished its current work
After an AI Agent sends a normal reply and finishes its current work, Chatarmin CX usually clears the live AI Agent assignment on the ticket. The conversation is not forgotten.
The same agent can continue customer follow-ups for up to 30 days:
* If the customer replies within 30 days and before a human does, the same agent continues with the earlier context.
* If a support teammate replies to the customer first, that agent does not continue on the next customer message.
* A later customer message can then be checked again and matched to an eligible agent.
* After 30 days, the previous agent does not restart. Chatarmin CX checks the message again for another eligible automation.
In the Inbox, use the **AI Agent** filter with `was assigned` or `is last` to find tickets after the live assignment was cleared. See [Views and filters](/inbox/views-and-filters).
### The agent is still paused
An agent may still be waiting for customer information, a scheduled delay, or approval. While that pause is open, the ticket stays assigned to the AI Agent. If a support teammate replies to the customer during that pause, the old agent work cannot resume.
The open pause still blocks a fresh AI Agent. The human team owns the conversation while that paused work remains open.
Assigning the ticket to a person without replying does not stop an AI Agent by itself.
### Messages that arrive during current work
If the customer sends more messages while an agent is still working, Chatarmin CX waits until the current work finishes. It then gives the agent the latest update. It does not start a duplicate agent.
## Keep a ticket human-only
Narrow or disable every AI Agent trigger that could match the next customer message. Test the next message before relying on a human-only hand-off.
## How new messages are routed
When a customer message needs a new owner, Chatarmin CX checks in this order:
1. **Check existing work.** If an AI Agent is already responsible and can continue, it goes first. If a human replied while AI work was paused, that old work cannot resume, but its open pause still blocks a fresh AI Agent.
2. **Pick one AI Agent.**
* **Exact match:** An eligible agent with exact filters and no semantic filter goes first. These filters can use the channel, language, team, or tags. If several agents match, the newest matching agent is selected.
* **Meaning-based match:** If there is no exact match, Chatarmin CX uses AI to compare the customer's message against each eligible agent's trigger. It matches on what the customer means, not just the exact words they used — so "where's my package?" can match an order-tracking agent even when those words are not in the trigger examples. Chatarmin CX only selects an agent when the match is confident; ambiguous messages fall through.
* **Catch-all:** If neither option finds an agent, an agent without conditions can act as the fallback. If several catch-all agents exist, the newest is selected.
Existing responsible work can still take the conversation before any new match is considered.
## Consult a specialist AI Agent
In the recommended [router-and-specialist setup](/ai-agents/router-and-specialists), the First Level router keeps responsibility for the conversation. It can consult one or more focused specialists for evidence or actions.
The specialists report their results to the router. They do not send separate customer replies. The router combines the results, applies shared policy and brand voice, and sends one final reply.
This consultation is different from a handoff: the router remains the owner. Read [Subagents](/ai-agents/subagents) for the complete flow.
## Hand off to a human
If no specialist fits or the case needs human judgment, the agent can hand the ticket to a configured person, team, or human queue. This ends the current agent's responsibility.
AI specialists are consulted, not handed the conversation. A handoff is only for a person, team, or human queue.
A later customer message may still be routed to an eligible AI Agent. To keep the ticket human-only, narrow or disable every AI Agent trigger that could match the next message.
Not every case needs a reply or a human alert. For example, some out-of-scope messages, duplicate requests, already solved issues, or simple thank-yous may end quietly when no action is needed.
## Automations that can run alongside the owner
Rules, automatic tagging, and automatic resolution can change a ticket without owning the customer conversation. Keep Rules limited to exact, deterministic changes, and test combined behavior when several automations touch the same tickets.
## Examples
### Order tracking keeps the follow-up
An order-tracking agent says the parcel should arrive on Friday. The customer asks, "Can you send me the tracking link?" No teammate has replied in between. The same agent continues with the earlier order context.
### A human replies after finished AI work
An order-tracking agent answers and finishes its current work. A teammate then tells the customer, "I will check this with the carrier." When the customer replies again, the order-tracking agent does not continue its follow-up chain. Chatarmin CX checks the new message again. Another eligible agent could be selected.
### A human replies while AI work is paused
A returns agent asks the customer for a photo and waits. Before the photo arrives, a teammate replies to the customer and takes over. The returns agent cannot resume. While that paused work remains open, Chatarmin CX does not start a fresh AI Agent. The human team owns the conversation.
### A router consults a damaged-product specialist
The First Level router learns that an item arrived broken. It consults the damaged-product specialist, receives the eligibility and next-step result, then replies to the customer itself.
### No specialist fits
A customer asks for an exception to the return policy. No suitable AI Agent can decide it. The agent hands the ticket to the configured human returns team.
### No reply is needed
A customer writes, "Thanks, that solved it." The agent sees that no answer or action is needed. The case can end quietly without a human alert.
### A message arrives while the agent is working
An agent is checking a delayed order. Before it finishes, the customer writes, "The delivery address changed," and then adds the new address. After the current work finishes, the agent receives the latest update. Chatarmin CX does not start a second copy of the agent.
### A returns agent continues after waiting
A returns agent has asked the customer for a photo and is waiting. The customer sends the photo. The waiting agent resumes with that context. Chatarmin CX does not start a new order-tracking agent.
### An exact match goes before meaning
An agent is configured for German email tickets assigned to the Returns team. The ticket also looks like a refund request. The exact match goes first. If two exact agents match, the newer one is selected.
### Meaning, then catch-all
A customer asks where an order is. With no exact match, a confident order-tracking match is selected. If no agent matches the meaning confidently, a catch-all agent can take the ticket.
## Configure safely
* Use one broad First Level router with exact channel filters and no AI trigger.
* Give specialist agents detailed AI triggers with intent scope, example phrasings, and exclusions.
* Keep the router responsible for the final customer reply.
* Update the router branch whenever a specialist's trigger changes.
* Define when the router should consult a specialist or hand off to a human.
* Test tickets where independent Rules also match.
* Use [run history](https://armin.cx/app/_/ai/agents-v2/runs) to confirm which path won.
Continue with [Router and specialists](/ai-agents/router-and-specialists), [Triggers and filters](/ai-agents/triggers-and-filters), or [Testing and run history](/ai-agents/testing-and-runs).
# Run on existing tickets
Source: https://docs.armin.cx/ai-agents/run-on-existing-tickets
Assign an AI Agent to open tickets one by one or in bulk so it can work your backlog.
Triggers cover new matching tickets. To work tickets that are already open, assign an AI Agent to them.
Assignment always starts a run. If you assign an agent, it runs.
## Assign one ticket
Open the ticket in the [Inbox](https://armin.cx/app/_/inbox).
In the ticket properties, open the **AI Agent** row under the human assignee.
Pick an Active or Manual only agent. Inactive agents do not appear in the list.
The agent then follows its instructions and action settings. If **Send reply** is set to ask every time, the agent proposes a reply for approval instead of sending it immediately. See [Human in the loop](/ai-agents/human-in-the-loop).
## Assign many tickets
Use bulk assign when a backlog is already tagged or filtered for one support job.
Build an Inbox view or filter for the open tickets, for example all open return tickets.
Select the tickets in the ticket list. You can select a page or the matching set.
Open the assign action in the selection bar and choose the AI Agent. Recent AI Agents appear
near the top with an AI badge.
Larger selections process asynchronously. Direct bulk assign stays synchronous up to 100 tickets; bigger sets continue in the background.
## After the run
When the run finishes, Chatarmin CX usually clears the live AI Agent assignment on the ticket. History remains available through Inbox filters:
* **was assigned** — tickets this agent has handled
* **is last** — tickets where this agent was the most recent AI handler
* **is** — tickets currently assigned while a run is active or paused
See [Views and filters](/inbox/views-and-filters).
## FAQ
Yes. Manual assignment is a direct run. The agent does not need to match its trigger filters
again for that ticket.
No. Activate the agent or set it to Manual only first. See [Activate an AI Agent](/ai-agents/activate).
# Skills and actions
Source: https://docs.armin.cx/ai-agents/skills-and-actions
Give AI Agents the knowledge, systems, and permissions they need.
Skills and actions turn an AI Agent from a reply assistant into a support operator that can complete work across your business systems.
## Core concepts
Define the support job, boundaries, tone, and escalation rules.
Give the agent reusable policies and procedures, such as return eligibility.
Let the agent retrieve data, reply, update a system, wait, report, or escalate.
Connect your shop, ERP, fulfillment, helpdesk, and other business systems.
Extend agents to more than 1,200 available connectors for the systems your support operation
uses.
Keep a person in control of sensitive replies and changes.
## Connect business systems
Integrations and MCP connections are two ways to give an agent access to live business data and approved operations. Connect the system first, then enable only the actions that the support job requires.
Connect supported commerce and support systems.
Find and connect additional business tools.
Common customer-support actions include:
* looking up an order, shipment, return, invoice, or customer
* updating a shipping address or ticket
* creating a refund or discount
* sending a reply, email, or CSAT link
* waiting before a follow-up
* routing to a team or person
* resolving a completed ticket
## Build a focused agent
State what the agent owns, how it should speak, when it must stop, and which cases are out of
scope.
Add skills for policies or procedures that apply across cases, such as return windows or
escalation criteria.
Use an integration or MCP connection for the live data and operations the job needs.
Keep the action list narrow. Read-only lookups and sensitive changes should be visibly distinct.
Require approval for high-impact writes, then test success, failure, and escalation cases.
## Actions have prerequisites
Instructions alone cannot look up an order or hand a ticket to a person. Every capability the agent should use must be enabled as an action, with the right integration selected.
Example: look up the Shopify order, reply with the delivery status, hand off when unsure.
For that job, enable **Get order** on the Shopify integration, **Send reply**, and a hand-off
action such as **Escalate to**.
If several Shopify stores are connected, choose the account the agent should use.
Keep customer replies and sensitive writes on approval until you trust them. See
[Human in the loop](/ai-agents/human-in-the-loop).
If the instructions say “hand over to the team” but no hand-off action is enabled, the agent
cannot actually transfer the ticket. The same applies to order lookups without **Get order**.
For FAQ agents, enable **Search knowledge** instead of inventing an integration. Search the knowledge source first, answer only from hits, and hand off when the answer is missing.
## Hand-off actions
Hand-off actions move the conversation to a human owner.
* **Consult a specialist:** This is not a handoff. The current agent stays responsible, asks a focused specialist for evidence or an action, and sends the customer reply itself. Read [Subagents](/ai-agents/subagents).
* **A human:** When no specialist fits or judgment is needed, the agent can hand the ticket to a configured person, team, or human queue. This ends the current agent's responsibility.
An agent only uses the hand-off options you configure and describe in its instructions. It will not pass a ticket around endlessly. Repeated or circular hand-offs stop. Cases that still need attention go to humans. Cases with no needed reply or action can end quietly.
A hand-off to a human does not block every AI Agent forever. A later customer message can be matched again. To keep the ticket human-only, narrow or disable every matching AI Agent trigger.
Some cases need no hand-off. A duplicate, an already solved request, or a simple thank-you may end without a reply or human alert when no action is needed.
Read [Routing and ownership](/ai-agents/routing-and-ownership) for the full follow-up and hand-off behavior.
## Approval
Start with approval for:
* refunds
* cancellations
* address updates
* discounts or replacement shipments
* other writes to business systems
* sensitive customer replies
Do not give an agent broad write access. A returns agent should not receive unrelated account,
marketing, or catalog actions.
## Best practices
* Keep one agent focused on one support outcome.
* Use current integration data instead of asking customers for information you already have.
* Add approval before activation and loosen it only after reviewing runs.
* Explain failures and route the ticket instead of leaving the customer at a dead end.
Action availability does not decide which agent owns the conversation. Configure selection separately in [Triggers and filters](/ai-agents/triggers-and-filters) and [Routing and ownership](/ai-agents/routing-and-ownership).
# Subagents
Source: https://docs.armin.cx/ai-agents/subagents
Let one agent consult focused specialists.
Subagents let a First Level router consult focused AI specialists while it keeps responsibility for the customer conversation.
## What happens
The router first identifies the customer's job. It can then ask one or more specialists to investigate or take a focused action. Each specialist receives the ticket context and its task, completes only its own workflow, and reports the result to the router.
Specialists cannot reply to the customer or escalate to a person. They send notes and files back. The router uses those notes and files to write one customer reply, or to hand the ticket to a human when that is what the case needs.
Files the specialist works with (customer photos, invoices, labels) are also available to the First Level agent, so the reply can still include the same attachments.
The router waits for those reports, combines the evidence, and sends one final customer reply.
For example:
1. A customer asks why an order is late and whether the delivery address can still change.
2. The router consults the delivery specialist and address-change specialist.
3. The specialists return the shipment status and whether an address update is still possible.
4. The router replies once with both answers in your brand voice.
## Consultation versus handoff
These are different outcomes:
* **Consult a specialist:** The router stays responsible. The specialist reports back and does not reply to the customer or escalate.
* **Hand off to a human:** Responsibility moves to a person, team, or human queue. The router stops.
Do not hand the conversation to another AI Agent. Consulting a specialist is not an escalation. Escalation is only for a person, team, or human queue.
The recommended router-and-specialist setup uses consultation for AI specialists. This avoids customers seeing separate replies from several agents and keeps shared policy in one place.
## Design focused specialists
A specialist should contain only what it needs for one support job:
* exact scope and exclusions
* topic-specific policy
* the data and actions it must use
* the facts or action result it must report
* the blocker that requires human judgment
Do not copy generic tone, greetings, reply formatting, or fleet-wide escalation policy into every specialist. The router owns the customer-facing response.
When a ticket is marked solved, credit goes to the agent that actually solved the customer's request. Each specialist says whether they solved it or only gathered facts. Solved credit follows that call. If they only helped, credit stays with the First Level agent that wrote the reply.
## Set it up
Click **Enable Subagents** on [AI Agents](https://armin.cx/app/_/ai/agents-v2). Ask Torben
audits the agents you already have. If you already have a First Level router, it reuses it
and only turns on specialist consultation. If you do not, it proposes that setup first.
Ask Torben checks your agents and wires consultation. You do not need to create a First
Level router first.
Continue with [Router and specialists](/ai-agents/router-and-specialists) or [Routing and ownership](/ai-agents/routing-and-ownership).
# Testing and run history
Source: https://docs.armin.cx/ai-agents/testing-and-runs
Test AI Agents before launch and inspect what happened after each run.
Tests show how an AI Agent will handle realistic support cases. Run history shows what it did after a test or live trigger.
[Open run history](https://armin.cx/app/_/ai/agents-v2/runs) to inspect executions across all agents.
## What to test
Test the agent with messages that represent real customer situations:
* the happy path the agent should handle
* messages that should escalate
* ambiguous customer requests
* missing order or customer data
* sensitive actions that require approval
* messages that should not trigger the agent
## Test unsaved changes
You do not need to save the agent before you create or run tests.
[Open AI Agents](https://armin.cx/app/_/ai/agents-v2), open the agent, then select **Tests**. **Create tests** and **Run tests** use the draft in the editor: instructions, actions, and triggers. Live tickets still use the last saved agent.
When the draft has unsaved changes, the Tests tab, the run dialog, and the test run show a notice so you know which version is under test.
Save the agent only when you want live tickets to use the new version.
## Test ownership and hand-offs
Use a short ticket conversation for each case:
| Test case | Example | Expected behavior |
| - | - | - |
| Customer follow-up | The order-tracking agent answers. The customer asks for the tracking link within 30 days. | The same agent continues with the order context when no human replied in between. |
| Late follow-up | The customer writes again more than 30 days after the agent finished. | The previous agent does not restart. The message is checked for another eligible automation. |
| Human reply after finished work | The agent answers and finishes its current work. A teammate replies next. | That agent does not continue its follow-up chain. The next customer message can be checked for a fresh match. |
| Human reply during a pause | The agent asks for a photo and waits. A teammate replies before the customer sends it. | The old agent cannot resume. While the pause remains open, it also blocks a fresh AI Agent. The human team owns the conversation. |
| Specialist consultation | A returns agent learns that the item arrived damaged. | It consults a damaged-product specialist, keeps the conversation, and replies to the customer. |
| Human hand-off | A customer asks for an exception that no specialist can decide. | The agent hands the ticket to the configured person, team, or human queue. |
| No action needed | The customer says, "Thanks, that solved it." | The case can end without a reply or human alert when nothing else is needed. |
| Messages during work | The customer sends two updates while the agent is still checking an order. | After current work, the agent receives the latest update. No duplicate agent starts. |
Also test a later customer message after a human hand-off. It may be matched to an eligible AI Agent again. If the ticket must stay human-only, test after narrowing or disabling every matching AI Agent trigger.
## Create useful test cases
Use real customer wording when possible. Short synthetic prompts often miss the details that
make support cases hard.
Define what the agent should do: answer, ask a follow-up, use an action, request approval, or
escalate.
Add examples where the agent should not act.
Check that the agent uses only the actions needed for the case.
Rerun the relevant cases after changing instructions, triggers, skills, actions, or approvals.
## Use run history
Use it to check:
* why this agent received the ticket
* which instructions and skills influenced the run
* which actions the agent used
* whether approval was requested
* what customer-facing reply was produced
* why the agent escalated or stopped
The public [run history link](https://armin.cx/app/_/ai/agents-v2/runs) covers all agents. Agent-specific URLs contain private IDs and should not be published. Open an agent from the [AI Agents overview](https://armin.cx/app/_/ai/agents-v2), then select **Runs** or **Tests**.
## Debug unexpected behavior
If a run did not behave as expected, check:
* whether another automation already owned the conversation
* whether an exact or meaning-based trigger selected a different agent
* whether the agent instructions were too broad
* whether a skill contained conflicting guidance
* whether the needed action was enabled
* whether approval blocked the final step
* whether the ticket lacked required customer or order context
[Ask Torben to diagnose the run](https://armin.cx/app/_/ai/agents-v2?askTorben=Help%20me%20diagnose%20why%20an%20AI%20Agent%20did%20not%20handle%20a%20ticket%20as%20expected.%20Ask%20me%20for%20the%20ticket%20number%2C%20agent%20name%2C%20or%20run%2C%20then%20suggest%20specific%20improvements.). Include the ticket number, agent name, or run so Ask Torben can find the relevant execution.
For selection problems, read [Routing and ownership](/ai-agents/routing-and-ownership).
## Best practices
* Test before activation and after every major instruction or action change. You can retest the unsaved draft first, then save when the result looks right.
* Keep approval on while you review early production runs.
* Add a negative test whenever the agent overreaches.
* Use run history to improve instructions, not just to debug failures.
# Triggers and filters
Source: https://docs.armin.cx/ai-agents/triggers-and-filters
Start AI Agents on new tickets or after a delay, then match the right support work with an AI trigger by default.
Triggers decide when Chatarmin CX checks an AI Agent. Filters decide whether the ticket is a match.
## Trigger types
Check the agent when a customer creates a ticket. Filters then decide whether the agent should
own it.
Check the agent after a ticket has stayed resolved for the configured time. The ticket must
still be resolved when the delay ends.
Delay-based triggers currently support **Resolved for X**. Use them for CSAT, follow-ups, and reports that should run after a resolved support window. Delay-based triggers do not use an AI trigger, because there is no new inbound message to classify.
## Before new matching starts
For an incoming customer message, Chatarmin CX first checks whether an AI Agent already owns the conversation. If so, that agent continues before new triggers and filters are considered.
The owner is not simply the latest assignment shown in the Inbox. Assigning a person without replying does not stop the current AI Agent.
After a normal reply, the same agent can continue customer follow-ups for up to 30 days even after the live assignment is cleared. A human reply stops that agent's follow-up, and the next customer message can be matched again. If the agent is still waiting for customer information, a delay, or approval, a human reply prevents the old work from resuming. That open pause also blocks a fresh AI Agent, so the human team owns the conversation while it remains open.
Read [Routing and ownership](/ai-agents/routing-and-ownership) for examples.
## Choose the filter: AI trigger first
Matching on what the customer **means** uses an **AI trigger**. Matching on a structured value the system already knows uses an exact filter.
Default for intent-shaped work: returns, delivery questions, complaints, address changes. Match
meaning across different phrasings.
For structured values: channel, language, integration, status, team, or a reliable tag. Narrow
where the agent may run.
They compose. Exact filters narrow **where**. The AI trigger decides **whether the intent fits**. Most specialists use both.
### First Level router exception
Use one [First Level router](/ai-agents/router-and-specialists) with broad exact channel filters and no AI trigger. Exact matches are checked before meaning-based matches, so the router becomes the stable customer entry point for those channels.
Specialists behind the router use detailed AI triggers. The router consults them after it has read the complete request instead of asking several top-level agents to compete for the same ticket.
### Why a tag is not an intent filter
A tag filter is exact and cheap, but it depends on auto-tagging first. Every tagging miss is an agent that never runs. Prefer an AI trigger when the customer can phrase the same request many ways. Keep a tag as an extra boundary only when that tag is already reliable.
### Write a strong AI trigger
Describe the support request in plain language:
1. **Intent scope** — what the customer wants to accomplish, with real example phrasings.
2. **Exclusions** — which adjacent topics belong to another agent.
3. **Edge cases** — short follow-ups, negated mentions, or background mentions.
**Thin (avoid):** “Handles returns. Keywords: return, refund, send back.”
**Routable (prefer):** “Customer wants to return, exchange, or get help with an already delivered order, including return labels, refunds after delivery, or reporting damage. Typical phrasings include ‘I want to send this back’ and ‘the package arrived damaged’. Does not handle shipment tracking for undelivered orders or cancellations before delivery.”
Business rules such as refund windows stay in instructions. The AI trigger only decides which agent runs.
## Customer-support examples
* **New ticket + AI trigger:** Match customers asking where an order is, whether it shipped, or why delivery is late.
* **New ticket + exact filters:** Consider the agent only for German email tickets.
* **New ticket + both:** Handle address-change requests only for open Shopify tickets, with an AI trigger for the address-change intent.
* **Delay based:** Send a CSAT follow-up after the ticket has remained resolved for the configured time.
## Set up a trigger
Use **New ticket** for incoming support or **Delay based** for work after a ticket has stayed
resolved.
Describe the customer request the specialist should own. For the one First Level router, skip
this and use its broad exact channel scope.
Add exact filters for channel, status, integration, language, team, or other fixed ticket data.
Test messages that should start the agent, messages for another agent, and ambiguous requests
that should go to a person or fallback.
## Which agent runs
Only one AI Agent owns the customer conversation at a time. Existing responsible work goes first. Among eligible AI Agents, the order is exact match, confident meaning-based match, then catch-all. This is why one broadly scoped First Level router can own the entry path and consult specialists.
Read the full behavior and examples in [Routing and ownership](/ai-agents/routing-and-ownership).
For ready-to-use trigger patterns, see [AI Agent examples](/ai-agents/examples).
# Overview
Source: https://docs.armin.cx/api/overview
Ticket read and create API for integrations and AI agent tools.
The Chatarmin CX Public API v1 lets you read tickets, saved inbox views, and conversation threads from your workspace programmatically — and create tickets via `POST /public/v1/tickets`. Use it to build custom dashboards, sync data to your data warehouse, open tickets from external systems, or power AI agents that need live support context.
## What v1 includes
Tickets, messages, attachments, tags, saved views, teams, agents, reports, and analytics exports. See [Endpoints](/api/endpoints) for the full list grouped by resource, or the [OpenAPI reference](https://api.armin.cx/docs/v1) for schemas and a live request builder.
Base URL: `https://api.armin.cx/public/v1`
## What v1 does not include
v1 does **not** include replying to customers or exporting CSV/Excel. Those remain on the legacy `/public/*` surface. For analytics, use [Reports and metrics](/api/reports) with an agent-assigned API key and `analytics:read`. To create tickets, use [Create a ticket](/api/create-ticket) (`tickets:write`, 30 req/min).
You cannot filter tickets with ad-hoc query parameters (status, channel, date range, full-text search). Encode those filters in a [saved inbox view](/inbox/views-and-filters) and pass `view_id` instead.
## Documentation map
Create an API key and make your first request.
Every endpoint grouped by resource, with links to the OpenAPI reference.
All endpoints, schemas, and Try it — including create ticket.
Setup guide for opening tickets from your own systems.
Map common agent tasks to API calls.
API keys, scopes, and least-privilege setup.
## Read consistency
Public v1 reads from the database read replica. Responses may lag the inbox UI by a few seconds under heavy write load. For agent tools that poll after a customer message, prefer short backoff rather than tight loops.
# Ask Torben
Source: https://docs.armin.cx/ask-torben
Create and improve AI Agents, diagnose support, and get product help.
Ask Torben is the AI copilot for your Chatarmin CX workspace.
Use Ask Torben to:
* create an AI Agent from a support goal
* improve an existing agent's instructions, triggers, and actions
* diagnose why an agent did or did not handle a ticket
* inspect runs and suggest a safer or more reliable setup
* understand and customize your dashboard
* get help with the Inbox, channels, integrations, and other product features
* escalate a confirmed bug or feature request to the Chatarmin product team
[Open Ask Torben](https://armin.cx/app/_/ai/agents-v2?askTorben=open) from any browser, or use the assistant bar in the app. A prefilled prompt stays editable until you send it.
## Create an AI Agent
Choose a template to open Ask Torben with the complete setup request:
Answer recurring questions from your knowledge base.
Use live fulfillment data for WISMO tickets.
Process returns and escalate policy exceptions.
Send a survey after the conversation settles.
Change delivery details before dispatch.
Win back an at-risk customer with a personal offer.
## Improve or diagnose support
Start with one concrete goal and include the agent name, ticket number, or run when relevant.
Review the current setup and propose focused changes.
Find why an agent matched, stopped, escalated, or fell through.
Get help choosing useful support signals and views.
Ask about the Inbox, channels, integrations, or AI Agents.
Conversations are saved per user. If Ask Torben escalates an issue, product-team updates appear in the same thread.
# Changelog
Source: https://docs.armin.cx/changelog
Latest product updates and new features
## Schedule Send, Send & Snooze, and Keyboard Shortcuts
### Schedule Send
Schedule messages to be sent at a later time. Pick from quick presets or enter a custom date and time — the message is held and delivered automatically at the scheduled moment.
* **Quick Presets**: Choose common options like "Later Today", "Tomorrow Morning", or "Next Monday"
* **Custom Date & Time**: Pick any future date and time for precise scheduling
* **Cancel Anytime**: Scheduled messages show a clear indicator with a cancel button so you can revoke them before they're sent
### Send & Snooze
Send a message and immediately put the ticket on hold — in a single action. Combine your reply with a snooze so the ticket reappears at the right time without extra clicks.
* **Quick Snooze Presets**: Snooze for 1 hour, 4 hours, tomorrow, next week, and more
* **Natural Language Input**: Type dates in plain language (e.g. "next Friday at 2pm") with support for English, German, French, Dutch, Spanish, Italian, Portuguese, and Russian
* **One-Click Flow**: Reply and snooze together from the send button dropdown
### Keyboard Shortcuts
Power through your inbox with keyboard shortcuts so you can perform common send actions without extra clicks:
* **⌘/Ctrl + Enter** — Send message
* **⌘/Ctrl + Shift + Enter** — Send & resolve the ticket
* **⌘/Ctrl + Alt + Enter** — Send & hold for customer reply
* **⌘/Ctrl + Alt + S** — Open the schedule send dialog
* **⌘/Ctrl + Alt + H** — Open the send & snooze dialog
## Performance Improvements & Bug Fixes
### Product Field Type for Tickets
Configure product fields to pull products from your connected shop integrations. Select which integrations to use (Shopify, WooCommerce, Billbee, PlentyOne, and more) and preview available products directly in the field configuration.
* **Integration Selection**: Choose specific shop integrations to source products from
* **Real-Time Preview**: See available products while configuring the field
* **Smart Filtering**: Non-public Shopify products are automatically excluded
### Flow Tester: Import Real Ticket Data
Enhanced the workflow Flow Tester to support importing actual ticket message history and attachments for more realistic testing.
#### Key Features
* **Import Ticket Messages**: Fetch real conversation history from any ticket by entering its ticket number
* **Attachment Support**: View imported images as thumbnails and files with appropriate icons
* **Preserved Formatting**: HTML formatting, links, and text styling are retained from original messages
* **Smart Avatars**: Customer initials, agent avatars with colors, and AI agent indicators display correctly
* **Clear Test Separation**: A "Test Started" divider separates imported history from new test messages
Toggle "Use Real Data" in the ticket data popover, enter a ticket number, and click Fetch to import its conversation history into your flow test.
### CSAT Export Fields
Added CSAT-related columns to the advanced ticket export feature, allowing you to include customer satisfaction data in your CSV and Excel exports.
#### New Export Columns
* **csat\_score**: The customer satisfaction rating (1-5)
* **csat\_comment**: Customer feedback text from the survey
* **csat\_survey\_sent**: Whether a CSAT survey was sent for the ticket
* **csat\_submitted\_at**: Timestamp when the customer submitted their response
Select these columns in the export mode when exporting tickets as CSV or Excel to include CSAT data in your reports.
## CSAT Survey Support for WhatsApp & Web Widget
Customer satisfaction surveys now work across more channels! Collect feedback directly through WhatsApp and your Web Widget in addition to email.
### New Channel Support
#### WhatsApp
* **CTA Button**: Surveys are sent with a native "Rate Us" button
* **Browser-Based Survey**: Opens the full survey form in the customer's browser
* **Seamless Experience**: No app switching required for customers
#### Web Widget (v1 & v2)
* **Interactive Emoji Buttons**: Customers see clickable emoji rating buttons directly in chat (😡 😟 😐 😊 😍)
* **One-Click Ratings**: Rate satisfaction without leaving the conversation
* **Instant Feedback**: Responses are captured immediately
### How It Works
1. Add a **CSAT Survey** node to your workflow
2. Configure the message template for each channel
3. When triggered:
* **WhatsApp**: Sends message with "Rate Us" CTA button → Opens survey in browser
* **Web Widget**: Displays emoji rating buttons inline → Captures rating instantly
* **Email**: Sends clickable emoji scale (existing behavior)
### Channel-Specific Variables
| Variable | Email | WhatsApp | Web Widget |
| - | - | - | - |
| `{{survey_link}}` | ✅ | ✅ | ✅ |
| `{{likert_scale}}` | ✅ | ❌ | ✅ |
For WhatsApp, use `{{survey_link}}` in your message. The CTA button is automatically added to open the survey.
Social channels (Instagram, Facebook, TikTok, YouTube) are coming soon!
## Custom Ticket Fields with AI Auto-Population
Create and manage custom fields for tickets with AI-powered automatic population, advanced analytics, and intelligent validation.
### Key Features
* **🎯 5 Field Types**: Text, Number, Dropdown, Boolean, and Product fields with full customization
* **🤖 AI-Powered Population**: Automatically fill fields by analyzing conversation context, order history, and similar tickets
* **📊 Advanced Analytics**: Track field usage, trends over time, and drill down into specific values
* **🛍️ Smart Product Selection**: Search from customer orders and full product catalog with variant support
* **✅ Intelligent Validation**: Context-aware required field validation with automatic review workflows
* **🔍 Powerful Filtering**: Filter inbox by any field value with grouped search interface
### Field Types
#### Text Field
* Single-line or multi-line input
* Auto-save on blur or Enter key
* AI can extract information from conversations
#### Number Field
* Integer or decimal values
* Auto-save on blur or Enter key
* Perfect for quantities, amounts, or ratings
#### Dropdown Field
* Single-select with custom options
* Supports nested hierarchies (e.g., Category > Subcategory)
* AI selects most appropriate option based on context
#### Boolean Field
* Yes/No toggle
* Instant save on change
* Simple binary choices
#### Product Field
* Search from customer's recent orders (prioritized)
* Access full product catalog from all shop integrations
* Variant support with nested selection
* Shows order context (e.g., "iPhone 15 - 256GB Black (Order #12345)")
* Redis-cached for fast loading
* Works with Shopify, WooCommerce, and more
### AI Analysis Features
#### Automatic Population
* **On Creation**: Analyzes first customer message to populate all AI-enabled fields
* **On Resolution**: Retries missing required fields with full conversation context
* **Confidence Scoring**: Only saves values with high confidence (>0.7)
* **Similar Tickets**: Learns from patterns in previously resolved tickets
* **Product Context**: Extracts products from customer's order history
#### Smart Review Workflow
When AI fails to fill required fields after 3 attempts:
* Automatically sets ticket to `On Hold` status
* Applies `Needs Review` sub-status
* Appears in dedicated "Needs Review" system view
* Agents can manually fill missing fields and resolve
### Analytics Dashboard
Track field performance and usage patterns:
#### Top Used Values
* Horizontal bar chart showing most popular field values
* Click any value to drill down into tickets
* Filter by date range and data scope
#### Trends Over Time
* Multi-line chart tracking value usage trends
* Smooth curves for pattern identification
* Automatic detection of highest-usage values
#### All Values Table
* Paginated table of all field values
* Sortable columns with search
* Click-to-filter integration with inbox
### Filtering & Search
* **Field-Based Filtering**: Filter inbox by any field value
* **Grouped Interface**: Fields grouped with searchable options
* **Multi-Field Support**: Apply multiple field filters simultaneously
* **Label Preservation**: Maintains filter context during navigation
* **Backend Optimization**: Efficient query preprocessing for complex filters
### Validation System
#### Context-Aware Validation
* **General Context**: Only validates non-AI required fields
* **Resolution Context**: Validates all required fields (AI + non-AI)
* **Bulk Operations**: Prevents bulk resolution if tickets have missing required non-AI fields
* **Preview Modal**: Shows affected tickets before blocking action
#### Field Key Validation
* Auto-generated from display name
* Real-time uniqueness checking
* Validates on blur, not on every keystroke
* Clear error messages with inline feedback
### Performance Optimizations
* **Redis Caching**: Product catalogs cached for 10 minutes (500 product limit)
* **Conditional Prefetching**: Only prefetch product data if required product field exists
* **Queue Optimization**: Early exit if organization has no AI-enabled fields
* **Incremental View Counts**: Real-time count updates without full recomputation
### Use Cases
* **Product Support**: Automatically link tickets to purchased products
* **Case Classification**: Auto-categorize tickets by type, department, or priority
* **SLA Tracking**: Custom fields for response time requirements
* **Workflow Routing**: Route tickets based on field values
* **Reporting**: Analyze trends by custom dimensions
* **Compliance**: Track required information for regulatory needs
### Channel Configuration
* **Channel-Specific Fields**: Show different fields based on communication channel (Email, WhatsApp, etc.)
* **Required Field Control**: Set fields as required or optional per channel
* **Smart Defaults**: AI learns from channel-specific patterns
### Settings & Management
* **Field Configuration**: Easy setup with preview panel
* **Active/Archived Views**: Manage field lifecycle
* **Drag-to-Reorder**: Custom field display order
* **Bulk Actions**: Archive/activate multiple fields
All field data syncs in real-time via Supabase Realtime - no manual refresh needed!
AI analysis requires active shop integrations (Shopify, WooCommerce, etc.) for product field features.
## CSAT Survey Workflow Triggers
Automatically trigger workflows based on customer satisfaction survey responses to deliver exceptional follow-up experiences.
### Key Features
* **📊 Score-Based Triggers**: Automatically execute workflows when customers submit specific CSAT scores
* **🎯 Smart Filtering**: Configure workflows to trigger on score ranges (e.g., low scores ≤ 3, high scores ≥ 4)
* **⚡ Instant Response**: Workflows activate immediately after survey submission
* **🔄 Multi-Channel Support**: Works across Email.. other channels coming soon.
### Use Cases
* **Low Score Recovery**: Automatically escalate to senior support when score ≤ 2
* **Thank You Messages**: Send appreciation notes for high ratings (score ≥ 4)
* **Feedback Collection**: Request detailed feedback for neutral scores
* **Internal Alerts**: Notify team leads about negative experiences
### How It Works
1. Customer submits CSAT survey after ticket resolution
2. System evaluates configured workflow triggers
3. Matching workflows execute automatically based on score
4. Follow-up actions happen instantly (emails, notifications, escalations)
Configure CSAT triggers in Workflows → Create Flow → Select "CSAT Survey Submitted" trigger
### Safety Features
* Duplicate prevention: Won't trigger multiple times for same ticket
* Execution limits: Built-in rate limiting to prevent spam
* Channel-specific configs: Different expiration times per channel
Works with existing CSAT surveys - no migration needed!
## On-Hold Tickets with Smart Scheduling
Put tickets on hold with specific reasons and automatic reopen scheduling. Perfect for managing dependencies and follow-ups.
### Key Features
* **⏰ Scheduled Auto-Reopen**: Set exact date/time when ticket should automatically reopen
* **📝 Hold Reasons**: Distinguish between "Waiting for Customer" vs "Waiting Internal"
* **🎨 Visual Indicators**: Color-coded badges show hold status at a glance (Green = Customer, Purple = Internal)
* **⚙️ Organization Defaults**: Configure default hold durations for internal (3 days) and external (7 days) holds
### How It Works
1. Change ticket status to "On Hold"
2. Select reason: Waiting for Customer or Waiting Internal
3. Choose duration or set custom date/time
4. Ticket automatically reopens when scheduled time arrives
### Use Cases
* **Customer Response**: Waiting for customer to provide requested information
* **Internal Dependencies**: Waiting for another team or system
* **Scheduled Follow-ups**: Follow up after specific time period
* **Product Availability**: Reopen when product back in stock
### Visual Experience
* **Badge Display**: Shows "Reopens on: \[Date]" with reason indicator dot
* **Overdue Alerts**: Clearly marks overdue on-hold tickets
* **Quick Actions**: Edit hold time or cancel hold with one click
* **Tooltip Details**: Hover for full hold reason and timestamp
Tickets automatically return to "Open" status at scheduled time - no manual intervention needed!
## Performance Improvements & Bug Fixes
Improved ticket loading performance and resolved several key issues.
### What's Fixed
* Fixed ticket loading delays in high-volume organizations
* Improved Sync engine reliability
* Resolved caching issues causing stale data
* Enhanced offline mode stability
### Performance Gains
* 50% faster initial ticket list load
* Reduced memory usage in long sessions
* Better handling of large attachments
# Contact forms
Source: https://docs.armin.cx/channels/contact-form/intro
Embed forms on your website and turn submissions into tickets.
Contact forms let website visitors create tickets in Chatarmin CX without sending an email manually.
## Requirements
Contact forms require an email channel. Set up [Email](/channels/email/intro) first, then create the form.
## Create a contact form
Go to **Channels** -> **Contact forms**.
Choose a form name, select the email channel that should receive submissions, and configure the fields.
Set the header text, colors, button style, border radius, field labels, and required fields.
Copy the script tag and paste it before the closing `