# Welcome to Ai sync
> The all-in-one communication platform that transforms how businesses connect, convert, and scale. From AI-powered voice agents to intelligent automation workflows, discover how Ai sync eliminates communication silos and accelerates your growth.
Source: https://docs.aisync.link/
AI Sync
The Future of Intelligent Business Communication
# 🚀 The Future of Business Communication
Welcome to **Ai sync** — the communication backbone that modern businesses trust to streamline operations, accelerate growth, and deliver exceptional customer experiences. Whether you're a startup scaling rapidly or an enterprise managing thousands of interactions daily, Ai sync is designed to be your single source of truth for all communication needs.
**Why Choose Ai sync?** We've eliminated the chaos of juggling multiple tools. One platform, infinite possibilities.
## 🎯 What Ai sync Delivers
Ai sync transforms your business communication through six core pillars:
Branded caller ID with spam-free delivery and local presence technology
Human-like AI agents that handle calls, qualify leads, and book appointments
Code-based logic for intelligent call routing and customer experience
SMS, email, and follow-up sequences that run on autopilot
Performance tracking and insights that drive data-driven decisions
Native CRM or seamless integration with your existing tools
## 🔄 Complete Workflow Architecture
Here's how Ai sync creates a seamless communication ecosystem for your business:
```mermaid
graph TB
A[🏢 Your Business] --> B[📞 Ai sync Platform]
B --> C[🎯 Power Dialer]
B --> D[🤖 AI Voice Agents]
B --> E[📋 Smart IVR]
B --> F[📱 SMS/Email Automation]
B --> G[📊 CRM Integration]
C --> H[📈 Real-time Analytics]
D --> H
E --> H
F --> H
G --> H
H --> I[💰 Increased Sales]
H --> J[⚡ Better Efficiency]
H --> K[📈 Business Growth]
```
---
# Demo
> Schedule a personalized demo session with our team to see how AI Sync can transform your business.
Source: https://docs.aisync.link/demo
---
# MCP
Source: https://docs.aisync.link/connect-mcp
**MCP** connects your AI assistant (**Claude**, **Codex**, or **Grok**) directly to **AI Sync**.
After a one-time setup, you can work with your AI Sync project by giving normal instructions to your agent — create agents, manage numbers, check calls, and more — **without opening or login to your project**.
**There are two AI Sync connections.** This page sets up the one that reads and
changes **your account**, which needs your login.
There is also a read-only connection to **these documentation pages** that needs
no account at all — useful for new reps and contractors. See
[Connect your agent to these docs](/agents/docs-mcp). Most teams run both.
## 🎯 Why use MCP?
Without MCP, you open the AI Sync Dashboard and click through screens to do work.
With MCP, you stay in your AI client and type what you need. Your agent talks to AI Sync for you.
| Without MCP | With MCP |
|-------------|----------|
| Open the Dashboard | Stay in Claude, Codex, or Grok |
| Click through menus and forms | Give a plain-language command |
| Switch between tools | Keep working in one place |
**Examples of what you can ask after connecting:**
- “List my AI agents”
- “Create a new outbound agent for lead follow-up”
- “Show recent call history”
- “Which phone numbers are available?”
You describe the task. Your agent uses AI Sync through MCP.
## 🧭 One-time setup
Do this once per client. After that, you only give commands.
1. Open **MCP** (Connect to AI Sync MCP).
2. Pick your client: **Claude**, **Codex**, or **Grok**.
3. Click **Copy** and run the command in your terminal.
4. Approve access in your browser when asked.
Setup is only for connecting the client. Day-to-day use is just talking to your agent.
## 🟣 Claude
1. Select the **Claude** tab.
2. Run these commands:
```bash
claude mcp add --transport http ai-sync https://mcp.aisync.link/mcp-oauth
claude mcp login ai-sync
```
3. The second command opens your browser — log in and approve the connection.
## 🟦 Codex
1. Select the **Codex** tab.
2. Run this command:
```bash
codex mcp add ai-sync --url https://mcp.aisync.link/mcp-oauth
```
3. Codex opens your browser so you can sign in and approve. If it doesn't, run
`codex mcp login ai-sync`.
Codex runs on **your own ChatGPT plan**, so building agents, prompts and
workflows this way costs nothing extra. Keep Codex up to date
(`npm install -g @openai/codex@latest`). See
[Use your ChatGPT plan with AI Sync](/agents/use-your-chatgpt-plan).
## 🟨 Grok
1. Select the **Grok** tab.
2. Run this command:
```bash
grok mcp add --transport http ai-sync https://mcp.aisync.link/mcp-oauth
```
3. Grok opens your browser the first time it needs to authorize.
## ✅ How to use it every day
After setup:
1. Open Claude, Codex, or Grok as usual.
2. Ask for what you need in plain language.
3. Your agent uses AI Sync MCP in the background.
4. You do **not** need to open the Dashboard for those tasks.
You only return to **MCP** if you need to reconnect, switch clients, or set up a new machine.
## 🛠️ If something goes wrong
| Problem | What to try |
|---------|-------------|
| Command not found | Install the Claude, Codex, or Grok CLI first |
| Browser does not open | Re-run the connect/login command for your client |
| Agent cannot reach AI Sync | Open **MCP**, copy the command again, and reconnect |
| Wrong client | Use the matching tab before copying the command |
## ➡️ Now that you are connected
A read-only link to these pages. No login, safe for anyone.
Questions that work, and how to tell a trustworthy answer from a confident one.
Make real changes safely, and what to confirm before you do.
---
# Use Your ChatGPT Plan with AI Sync
> Connect Codex, signed in with your own ChatGPT plan, to your AI Sync account and build agents, prompts and workflows by asking.
Source: https://docs.aisync.link/agents/use-your-chatgpt-plan
If you pay for ChatGPT (Plus, Pro or Business), you can use that plan to build
inside AI Sync. No API key, no extra AI bill.
You connect **Codex**, OpenAI's assistant that runs on your ChatGPT plan, to
your AI Sync account once. After that you type what you want, and it does the
work in your account.
```mermaid
graph LR
A[🧑 You ask Codex] --> B[🧠 Codex thinks
on your ChatGPT plan]
B --> C[🔐 AI Sync tools
signed in as you]
C --> D[✅ Agent, prompt or workflow
created in your account]
```
Codex only sees **your** account, and only after you sign in and approve it.
It can do what your AI Sync login can do, nothing more.
## 🧭 Set it up (about 5 minutes, once)
Open the **Terminal** app and run:
```bash
npm install -g @openai/codex@latest && codex login
```
Choose **Sign in with ChatGPT** when asked. If you already have Codex, still
run this: an older Codex can refuse your plan's newest model.
```bash
codex mcp add ai-sync --url https://mcp.aisync.link/mcp-oauth
```
Your browser opens an AI Sync sign-in page. Sign in with your normal AI Sync
login and approve.
```bash
codex mcp login ai-sync
```
Then sign in and approve in the browser.
```bash
codex mcp list
```
`ai-sync` should show **OAuth** in the Auth column.
You can also copy these commands in AI Sync: click your profile (top right) → **Settings** → **Integration** → **MCP** → **Connect** → **Codex** tab.
## 💬 Three things to ask first
Open Codex (type `codex` in Terminal) and try:
"Create a new inbound agent called *Front Desk* and write and save a prompt for
a friendly medspa receptionist who answers Botox pricing questions and offers
to book a consultation."
"Create a draft workflow: when a contact gets the tag *no-show*, wait one day,
then send them a text asking to rebook. Leave it off so I can review it."
"How many calls did my reps make this week, and what was each rep's connect
rate?"
Ask for workflows as **drafts** and turn them on yourself after a look. Codex
will do exactly what you ask, including turning things on.
## ❓ Good to know
- **It uses your ChatGPT plan's limits.** Heavy use can hit your plan's usage
cap; it resets on ChatGPT's schedule.
- **Prefer an API key?** You can still paste an OpenAI key under
**Settings → Integration → OpenAI** for workflow AI steps.
- **Disconnect any time:** `codex mcp logout ai-sync`.
See also [Connect your AI assistant (MCP)](/connect-mcp) and
[Asking about your data](/agents/asking-about-your-data).
---
# Connect Your Agent to These Docs
> Point any AI assistant at the AI Sync documentation so it answers from the real docs instead of guessing.
Source: https://docs.aisync.link/agents/docs-mcp
There are **two** AI Sync connections, and they do different jobs. Most teams
want both.
**`docs.aisync.link/mcp` is not a web page.** It is a machine endpoint — open it
in a browser and you get a raw JSON error, because it only speaks to AI clients
over the MCP protocol.
**This page is the documentation for it.** You are in the right place.
`https://docs.aisync.link/mcp`
Answers *how does this work* from these pages. Read-only, no login, nothing to
approve. Works for anyone.
`https://mcp.aisync.link/mcp-oauth`
Answers *what are my numbers* and makes changes. Needs your login. See
[Connect MCP](/connect-mcp).
## 🗺️ How the two connections fit together
```mermaid
graph TB
A[🧑 You, in Claude or Codex] --> B{What are you asking?}
B -->|How does this work?| C[📚 Docs MCP
docs.aisync.link/mcp]
B -->|What are MY numbers?| D[🔧 Product MCP
mcp.aisync.link]
C --> E[📖 These documentation pages]
D --> F[(🗄️ Your AI Sync account)]
E --> G[💬 An answer from the manual]
F --> H[💬 An answer from your data]
G --> I[🎯 Diagnosis:
the number AND what it means]
H --> I
style C fill:#2a4d7a,color:#fff
style D fill:#1f7a4d,color:#fff
style I fill:#6b3fa0,color:#fff
```
Neither connection alone gives you the last box. The docs know what a falling
connect rate usually means; only your account knows that yours fell.
The docs connection is the quicker win. It needs no account, so you can give it
to a new rep, a contractor, or anyone helping you set up.
## 🔌 Connect in one command
```bash
claude mcp add --transport http aisync-docs https://docs.aisync.link/mcp
```
No login step. It works immediately.
```bash
codex mcp add aisync-docs --url https://docs.aisync.link/mcp
```
Add to your MCP settings:
```json
{
"mcpServers": {
"aisync-docs": {
"url": "https://docs.aisync.link/mcp"
}
}
}
```
## 🧰 What your agent gets
| Tool | What it does |
|---|---|
| **search_docs_ai_sync** | Searches every page and returns the relevant passage with a link. |
| **query_docs_filesystem** | Browses the docs like a filesystem, for when a question spans several pages. |
| **submit_feedback** | Reports a documentation problem straight to the docs team. |
That last one is worth using. If your agent gives you a wrong or confusing
answer from the docs, tell it to submit feedback. The page gets fixed for
everyone.
## 🔄 What happens when you ask
```mermaid
sequenceDiagram
participant Y as 🧑 You
participant A as 🤖 Your agent
participant M as 📚 Docs MCP
participant P as 📄 The pages
Y->>A: "Why would a connect rate drop
without dials dropping?"
A->>M: search_docs("connect rate drop")
M->>P: find the relevant passages
P-->>M: matching sections + links
M-->>A: text and page links
A-->>Y: An answer grounded in the docs,
with links you can open
```
Your agent cites the page it used. If an answer looks wrong, open the link and
check it — and if the page itself is wrong, tell your agent to submit feedback.
## 💬 Questions it answers well
- "In AI Sync, what's the difference between answered and connected?"
- "Why would a connect rate drop without dials dropping?"
- "What does 'answered, no rep' mean and why does it matter?"
These pull from [How calls actually work](/dialer/how-calls-work) rather than
from whatever the model assumes a dialer does.
- "How do I map dispositions to pipeline stages?"
- "How many phone numbers do I need for five reps on three lines?"
- "How do I turn on predictive pacing?"
- "My dashboard shows zeros but we're dialling. What's wrong?"
- "A rep shows a dash instead of a connect rate. Is that a bug?"
- "The screening message isn't playing on my phone."
- "Explain what each banner colour means in the dialer."
- "What should a rep do when a call gets screened?"
Point a new rep's own assistant at the docs and let them ask instead of
interrupting you.
## 🤝 Using both together
With both connections live, your agent can answer a question that neither could
alone:
> *"My connect rate dropped this week. Pull my actual numbers, then tell me what
> the docs say usually causes that."*
The product MCP fetches your outcome breakdown. The docs MCP explains that
rising Declined and Screened counts point at caller ID rather than at your reps.
You get the diagnosis, not just the number.
Only the product connection can change anything. The docs connection is
read-only, so there is no risk in giving it to anyone.
## 📄 Other ways agents read these docs
Some tools prefer a plain text feed over MCP. Both are always current:
- `https://docs.aisync.link/llms.txt` — an index of every page
- `https://docs.aisync.link/llms-full.txt` — the full text of the whole site
Paste either URL into any assistant that accepts a link.
## ➡️ Where to go next
Let your agent read your account and act on it.
Questions that work, and how to trust an answer.
Make changes safely.
The definitions your agent will quote back to you.
---
# Ask Your Agent About Your Numbers
> Questions that work, questions that do not, and how to tell whether the answer you got can be trusted.
Source: https://docs.aisync.link/agents/asking-about-your-data
Once [MCP is connected](/connect-mcp), your AI assistant can read your AI Sync
data and answer questions directly. No dashboard, no clicking.
This page is about **asking well**. A vague question gets a vague answer; a
precise one gets a number you can act on.
Set this up first: [Connect MCP](/connect-mcp). Everything below assumes your
agent can already reach your account.
## 🎯 The shape of a good question
```mermaid
graph LR
A[🕐 A time window] --> D[✅ An answerable question]
B[📊 A specific metric] --> D
C[👤 A scope: team, rep, or list] --> D
style D fill:#1f7a4d,color:#fff
```
*"What was our connect rate last week, and how did it compare to the week
before?"*
A window, a metric, and an implied comparison.
*"How are we doing?"*
Doing at what, over what period, compared to what?
## 💬 Questions worth asking
- "How many dials and connects did we do today?"
- "Is anyone online and dialling right now?"
- "What's our connect rate today versus yesterday?"
- "Our connect rate dropped this week. What changed?"
- "How many calls were answered but never reached a rep?"
- "What share of our dials hit voicemail or got screened?"
- "Are any of our numbers getting flagged as spam?"
That first question is the most useful one on this page. It makes the agent
check the outcome breakdown rather than guess, and the answer usually points at
screening, bad numbers, or pacing — not at your reps.
- "Rank my reps by connects for the last 7 days."
- "Which rep has the best connect rate with at least 100 dials?"
- "How much talk time did each rep log this week?"
Always include a minimum dial count when asking about rates. Without one, a rep
with four dials and one connect can top the list at 25%.
- "Which power list has the best connect rate?"
- "Which lists have we barely touched?"
- "How many bad numbers are in our lists?"
- "How many appointments were set this week?"
- "What's our disposition breakdown for the last 30 days?"
- "How many contacts are sitting in follow-up?"
## 🧠 Give your agent the vocabulary
Your agent answers better when it knows what your numbers mean. Paste this once
at the start of a session:
```text
Before answering questions about my dialer numbers, use these definitions:
- A CONNECT is a real conversation: a person answered AND reached a rep.
Voicemail, answering machines and screened calls are never connects.
- ANSWERED includes voicemail. It is not the same as connected.
- "Answered, no rep" means a person picked up and got nobody. That is an
abandoned call and the regulatory limit is 3% of live human answers.
- SCREENED means a handset (iPhone, carrier) answered on the lead's behalf.
It is not voicemail and not a person.
- Any rate based on fewer than 10 dials is noise. Say "not enough data"
rather than reporting a percentage.
- All day boundaries follow my profile time zone, not UTC.
If a number looks wrong, check the outcome breakdown before blaming the reps.
```
Most of that is enforced in the product too, so the agent and the dashboard give
you the same answer. The paste-in just stops your agent inventing its own
definitions in conversation.
## 🔍 Checking an answer you doubt
*"What date range and which reps did that cover?"* Most wrong answers are right
numbers over the wrong window.
*"Do those outcome numbers add up to the total dials?"* They always should. If
they do not, something is off.
Open [Dialer Performance](/dashboard/dialer-performance) and compare a single
number over the same range.
A rate of exactly 0% on a small sample usually means *not measured*. Ask how
many dials it was based on.
If your agent gives a confident percentage for a rep or list with only a handful
of dials, push back. That is the single most common way a good list or a good
rep gets cut on bad evidence.
## ➡️ Where to go next
Go beyond questions and make changes.
The definitions behind every answer.
Set up the account connection.
Let your agent read the manual too. No login needed.
The same numbers, on screen.
---
# Run Your Dialer by Chat
> Make real changes through your AI assistant: lists, numbers, campaigns, dispositions. What to confirm before you let it act.
Source: https://docs.aisync.link/agents/running-your-dialer
Questions are the safe half. This page covers the other half: letting your agent
**change** things in AI Sync.
Your agent acts as **you**. It has your permissions and its changes are real. A
request to "clean up the old lists" can delete lists. Be specific, and ask it to
confirm before anything destructive.
## 🚦 What to let an agent do
```mermaid
graph TB
A[Your instruction] --> B{Reversible?}
B -->|Yes| C[✅ Let it run
create, tag, update, draft]
B -->|No| D[⚠️ Confirm first
delete, bulk edit, go live]
style C fill:#1f7a4d,color:#fff
style D fill:#b4531f,color:#fff
```
Creating lists, tagging contacts, drafting SMS templates, building agents,
searching numbers, pulling reports.
Deleting anything, bulk contact edits, buying numbers, starting a live campaign,
changing dispositions your pipeline depends on.
## 🛠️ Things worth asking for
- "Create a power list called *Q4 Solar Follow-up*."
- "Tag every contact dispositioned *Interested* in the last 30 days as `hot`."
- "How many contacts in this list have no phone number?"
Ask for a count before a bulk change: *"How many contacts would that affect?"*
A number you did not expect is your signal to stop.
- "Search for numbers in the 312 area code."
- "Which of my numbers are flagged for spam?"
- "List every number and what it is used for."
See [Caller ID and numbers](/dialer/caller-id-and-numbers) for how many you
need.
- "List my dispositions and the pipeline stage each maps to."
- "Which dispositions have no pipeline stage?"
Dispositions drive your pipeline and your reporting. Have your agent show you
the current mapping before changing any of it. See
[Dispositions and pipeline](/go-live/dispositions-and-pipeline).
- "Create a voice campaign for the *Q4 Solar Follow-up* list."
- "What's the status of my running campaigns?"
- "Pause the campaign called *Aged Leads*."
Creating a campaign never starts calls. Going live is always separate — see
[Predictive pacing](/dialer/predictive-pacing).
- "Check my texting setup and tell me which reps have no texting line."
- "Show my unread conversations with a suggested reply for each."
- "What number will a text to Jordan Lee go out from?"
See [Texting & Inbox with your AI assistant](/agents/texting-and-inbox).
- "Export last week's call report as CSV."
- "Summarise yesterday's calls by disposition."
## ✍️ How to phrase a change
"The power list called *Q4 Solar Follow-up*" beats "the solar list". Names are
unambiguous; descriptions are not.
"Contacts dispositioned *Not Interested* in the last 90 days" beats "the dead
ones".
*"Tell me what that would change before you do it."*
*"Yes, go ahead."* Now it acts, and you know what you approved.
The dry-run step costs one message and prevents the expensive mistakes. Use it
for anything touching more than a handful of records.
## 🧯 If something goes wrong
Ask immediately: *"What exactly did you just change? List every record."* Then
check [Activity logs](/activity-logs/activity-logs), which record what happened
regardless of what the agent reports.
Usually a naming mismatch. Ask it to list what it *can* see: *"List all my power
lists"*, then use the exact name it returns.
Ask it to look the ID up in your account rather than guess. If it is not
recognised, it is not in your account.
Check the window and scope first, then see
[Asking about your data](/agents/asking-about-your-data).
## ➡️ Where to go next
The read-only half, and how to trust an answer.
Set up or reconnect the account link.
Read-only access to these pages, safe for anyone.
What actually changed, independent of the agent.
When the product itself is misbehaving.
---
# Texting & Inbox with Your AI Assistant
> Have Claude, ChatGPT or Codex check your texting setup, give every rep a line, and work through replies, safely.
Source: https://docs.aisync.link/agents/texting-and-inbox
Once your AI assistant is connected to AI Sync (see [Connect MCP](/connect-mcp)
or [Use your ChatGPT plan](/agents/use-your-chatgpt-plan)), it can do
everything on this page by asking. It works as **you**, with your permissions.
**Texts are real.** When your assistant sends a text, a real person gets it
from your number. Have it show you the message and the number it will send
from, then say "send".
## 🩺 1. Check your texting setup
Paste this into your assistant:
```text
Check my AI Sync texting setup and give me a short report:
1. List my phone numbers. For each: A2P linked or not, routed to which rep,
and whether an AI agent uses it.
2. Which reps have their own texting line, and which will use the team line?
3. Is there at least one team line (A2P linked, not routed to anyone, not
used by an AI agent)?
4. Anything that would stop a rep from texting.
Don't change anything.
```
What a good answer looks like:
| Check | Healthy |
|---|---|
| Numbers that can text | Every number meant for texting shows **A2P linked** |
| Rep lines | Each rep who texts has a number routed to them, **or** a team line exists |
| AI agent numbers | Kept separate; they're never used as texting lines |
Background: [Texting lines](/dialer/texting-lines).
## 👤 2. Give a rep their own line
```text
Make +1 555 010 2233 Maria Gomez's texting line.
Tell me what will change first, then wait for my OK.
```
The number must be A2P linked first. If it isn't, AI Sync refuses and your
assistant tells you so. Link it to your 10DLC campaign on the Phone Numbers
page.
This only changes who **texts** from the number and gets its replies. To
also send the number's **calls** to Maria, ask: *"Route that number's calls
to Maria too."*
## 🔍 3. Check which number a lead will get
```text
What number will a text to Jordan Lee go out from, and why?
```
Your assistant looks it up with the same rule the dialer uses: the number the
lead was last texted from, else your line, else the team line. Ask this
whenever a rep says "it texted from the wrong number".
## 📥 4. Work through the Inbox
```text
Show my unread conversations. For each: who, what they said, and a
suggested reply. Don't send anything yet.
```
Then:
```text
Send the reply to Jordan Lee. Leave the others.
```
More things to ask:
- *"How many conversations are waiting on a reply?"*
- *"Show only conversations routed to me."*
- *"Show the full conversation with Sam Patel, including emails."*
- *"Mark Sam Patel's conversation as read."*
Don't pass a "from" number unless you mean to change it. Left out, every text
uses the lead's texting line, so replies keep coming back to the right rep.
AI Sync refuses to text anyone marked **Do Not Text**, whoever is sending. If
your assistant reports that, don't try to get around it.
## ⚙️ 5. Automate the follow-up
```text
Add the voicemail follow-up text to my Voicemail disposition and turn it on.
```
Automation texts use the same texting lines. See
[Dialer Automations](/dialer/automations).
## 🧰 For people building their own agents
If you're writing standing instructions for an agent that works your inbox,
start from these:
```text
- Before sending any text, show the message and the "from" number, and wait
for approval.
- Never set a "from" number unless the user names one.
- Never text anyone who replied STOP or is marked Do Not Text.
- Ask before "mark all read"; it clears every rep's unread list.
- Send one message per lead per decision. Never loop.
```
| What you ask | Tool |
|---|---|
| List numbers, A2P status and who they're routed to | `settings_phone_numbers_list` |
| Who a number can be routed to | `settings_phone_numbers_assignable` |
| Every number that can text, and who texts from it | `texting_lines_list` |
| Set who texts from a number | `texting_lines_assign` |
| Route a number's calls to a rep | `settings_phone_numbers_assign` |
| Which number a lead will be texted from | `texting_line_get` |
| Conversations (filters: unread, mine, with emails) | `messages_threads_list` |
| One whole conversation | `messages_thread_get` |
| Send a text | `messages_send` |
| Mark one read / all read | `messages_mark_read` / `messages_mark_all_read` |
| Unread count | `messages_unread_count` |
| Disposition follow-ups | `dialer_automations_list`, `dialer_automations_add` |
Your assistant picks these itself. You never need to name them.
## 🧯 If something is off
There's no A2P-linked number your assistant can text from. Ask it:
*"Which of my numbers are A2P linked?"* Then link one on the Phone Numbers
page.
Working as intended. The contact opted out. Don't text them.
Check the number is A2P linked and your 10DLC campaign is **approved**. See
[Texting lines](/dialer/texting-lines#-if-something-is-off).
Reconnect AI Sync in your assistant so it loads the latest tools. See
[Connect MCP](/connect-mcp).
---
# Go Live Overview
> Everything needed to take a client from signup to a working call centre, in the order it should be done.
Source: https://docs.aisync.link/go-live/overview
Feature documentation tells you what a screen does. This section tells you **what to do, in what order, and how to know it worked**.
Written for our team taking a client live. Pages are ordered — work through them top to bottom rather than dipping in.
---
## 🧭 Start here
The main runbook. Eight steps from connecting GoHighLevel to a proving call, with a check at every step.
The naming rule that decides whether leads move automatically. The most common silent failure in setup.
Where callbacks land, how an AI agent answers, and getting texting registered and routed.
One page to hand the client's reps before their first shift.
Organised by what the customer says, because that is what arrives on a ticket.
---
## ⏱️ How long it takes
| Phase | Time | Can it run in parallel? |
| --- | --- | --- |
| Number registration (A2P 10DLC) | Carrier-dependent, unpredictable | **Start this first** — everything else can happen while you wait. Check the status rather than assuming a date |
| GoHighLevel connection | 10 minutes | Yes |
| Dispositions and pipeline | 20 minutes | Yes |
| Lists and rep accounts | 15 minutes | Yes |
| Inbound and texting setup | 20 minutes | Yes |
| The proving call | 15 minutes | No — do it last |
**Number registration is the only thing that can delay a go-live date.** Start it the day the client signs, not the day before they want to dial.
---
## ✅ Before you hand over
Do not consider a client live until every one of these is true.
You dialed a number you control from the client's list and it connected. An inbound call to their main number reached the intended destination.
Booked from the call screen, showed **Confirmed by GoHighLevel**, and you verified it in GoHighLevel on the right calendar at the right time.
They are in the Appointment Set stage and are no longer eligible for redial.
Sent from the dialer, arrived on a real phone, and your reply appeared against the right contact.
Own account each, correct role, headset tested.
And they understand the two things that matter: only **Confirmed** means an appointment exists, and leads in **Callbacks** are real people who picked up.
---
## 🤝 What to tell the client on handover
Three sentences that prevent most support tickets:
`Cmd/Ctrl + Shift + R`. Updates ship often and this puts them on the current version.
Anything else needs a human to check. Never rebook on a guess.
A lead who answered while a rep was busy is waiting there. They must be called back.
## 📊 Once you are live
The Dialer Performance dashboard, and which figures to act on.
Connected, answered and screened are three different things.
Predictive pacing, and the limits it will not cross.
Get answers without opening the dashboard.
---
# Take a Client Live
> The complete path from a new company to reps making calls, in order, with the check that proves each step worked.
Source: https://docs.aisync.link/go-live/client-onboarding
This is the runbook our team follows to take a client from signup to reps dialing. Work top to bottom. **Every step has a check** — do not move on until the check passes, because a skipped step surfaces later as a rep saying "it isn't working" with no obvious cause.
**Time required:** about 45 minutes for a straightforward client, plus waiting on carrier approval if they need new numbers registered for A2P 10DLC. That wait is outside our control and has ranged from minutes to weeks — start it first and plan around it.
## Before you start
Collect these from the client. Chasing them mid-setup is what turns a 45-minute job into a two-day one.
Which **sub-account (location)** their appointments live in, and an admin who can approve the connection.
Which time zones they call into, and their business hours.
A CSV. Confirm it has a phone column and that the numbers are real.
One account per rep. Shared logins break reporting and call attribution.
---
## 🔌 Step 1 — Connect GoHighLevel
GoHighLevel is the booking authority. AI Sync displays the confirmed booking and its sync status; it never creates a competing calendar.
Start the GoHighLevel connection and sign in as the client's admin.
Pick the **location** where their contacts and calendar already live. Connecting the agency account instead of the client's sub-account is the single most common setup error, and every later step will look fine while writing to the wrong place.
Accept the requested scopes. If the client's admin declines any, booking or contact sync will fail later with an authorization error.
**Check:** open any contact in AI Sync that also exists in GoHighLevel. The GoHighLevel contact ID should be populated. If it is blank, the connection is pointing at the wrong location.
---
## ☎️ Step 2 — Numbers
Buy numbers in the client's calling area codes, or import their existing Twilio numbers. See [Phone Numbers](/phone-numbers/phone-numbers).
Required before numbers can carry traffic reliably. Start this **first**. Approval is done by the carriers, not by us, and the wait is unpredictable — some clear in minutes, some sit for weeks. It is the usual reason a go-live slips, so submit it the day the client signs and check back rather than assuming a date. See [10DLC](/setup/10dlc/brand).
An unassigned number will not appear in the rep's **From Number** list.
Matches caller ID to the lead's area code. Only useful if they own numbers in those area codes.
Numbers on retired carriers will not dial. If a rep reports "a number will not select", the number is on a deprecated carrier or is not verified — move them to a Twilio-backed number.
**Check:** open the dialer as a rep and confirm the number appears in the **From Number** dropdown.
---
## 🏷️ Step 3 — Dispositions
Dispositions are what a rep picks at the end of a call. They drive reporting, automation and pipeline movement, so define them before anyone dials.
Mirror how they already talk about calls. Keep the list short — a rep who has to scan twenty options picks the wrong one under time pressure.
Exactly one disposition must be wired to the **Didn't Answer** button. This one also feeds voicemail detection learning.
"App Set", "Appointment Set", or their wording. This is what moves a booked lead in the pipeline.
**Check:** [Dispositions](/manage/disposition) shows exactly one entry marked as the Didn't Answer default, and one appointment outcome.
---
## 🗂️ Step 4 — Pipeline
Every pipeline gets one automatically. Confirm it is there and positioned where the client expects it.
The link between a disposition and a stage is built when the account is created — it is **not** based on the names, so renaming either is safe. But a disposition **added** after signup has no link behind it and will never move a lead.
Dial one test contact, save an outcome disposition, and confirm it moved in the pipeline. Two minutes, and it is the only way to know. See [Dispositions and pipeline mapping](/go-live/dispositions-and-pipeline).
AI Sync pipelines and GoHighLevel pipelines are **separate**. Adding a stage in GoHighLevel does not create it in AI Sync, and the automatic move reads the AI Sync pipeline.
**Check:** save a test contact with the appointment disposition and confirm it lands in the Appointment Set stage.
---
## 📅 Step 5 — Calendars
Reps book onto the client's existing GoHighLevel calendars.
A calendar with no team member assigned returns **no available times**, and the rep sees an empty slot list with no explanation. This is the most common booking complaint and it is always a configuration issue, never a bug.
Business hours, slot duration and buffers all come from GoHighLevel.
**Check:** on a live or test call, open the booking picker, choose each calendar the client intends to use, and confirm times appear.
---
## 📋 Step 6 — Power List
Map the phone column carefully. See [Power Lists](/manage/powerlists).
**3 is the right starting point.** Higher numbers reach more leads per hour but increase the chance a second lead answers while the rep is already talking. Those leads go to Callbacks and must be called back.
Only assigned reps see the list.
**Check:** the list shows the number of contacts you expect. A large drop means rows were rejected for invalid phone numbers.
---
## 👤 Step 7 — Rep accounts
Never share logins. Reporting, recordings and call attribution are all per user.
Roles control what each person can do in the platform. See [Roles](/user-management/roles).
**Be straight with the client about visibility:** anyone with dialer access can currently see company-wide statistics, not only their own. If they need reps walled off from each other's numbers, raise it before handover rather than after a rep notices.
Audio Settings, select the correct microphone, place one test call to their own phone.
**Check:** each rep can log in, shows **Ready**, and their name appears in the team view.
---
## ✅ Step 8 — The proving call
Do not hand the client over until you have done this yourself, on a real number you control.
Confirm it rings, connects, and the contact card appears with the right name.
Pick a calendar and a time. Watch for **"Booking with GoHighLevel…"** then **"Confirmed by GoHighLevel"** with the correct date.
Open the contact there. The appointment must be on the right calendar at the right time.
They should be in the Appointment Set stage and no longer eligible for redial.
In **History**, play the call back and use **Download** to confirm the file saves. If the client also has GoHighLevel delivery enabled, check the recording there too.
If the booking status shows **Needs review** instead of Confirmed, stop. It means GoHighLevel's answer was unclear and the appointment may or may not exist. Do not rebook — check GoHighLevel directly first, or you will double-book the customer.
---
## Handing over
Send the client:
One page their reps read before the first shift.
Plus the reminder to hard refresh on the first load after any update.
Tell them two things in plain language:
1. **Only "Confirmed by GoHighLevel" means the appointment exists.** Anything else needs a human to check.
2. **A lead who answers but does not reach the rep goes to Callbacks.** The banner says which of four reasons applied. All are real pickups and someone must call them back.
3. **An incoming call may ring and then stop.** If the rep is already on a call, a second caller is passed to an AI agent or voicemail rather than interrupting. That is deliberate. Check Callbacks and voicemail.
---
## If something is wrong
The rep is Offline. Set to Ready. If it will not stay Ready, the browser tab lost its connection — hard refresh.
The number is not assigned to the dialer, or it is not verified, or it is on a retired carrier. Revisit Step 2.
That calendar has no user assigned in GoHighLevel. Revisit Step 5. This is configuration, not a fault.
Usually the disposition was added after the account was created, so nothing links it to a stage. Renaming will not fix it. Run the test in [Dispositions and pipeline mapping](/go-live/dispositions-and-pipeline); if a starter disposition moves a lead and this one does not, raise it with support.
Recording delivery is enabled per client. If this client has not been enabled, contact the platform team.
Anything not listed here goes to [Troubleshooting](/go-live/troubleshooting).
---
# Dispositions & Pipeline Mapping
> How call outcomes move leads through stages, why new dispositions do not move anything, and what to do about it.
Source: https://docs.aisync.link/go-live/dispositions-and-pipeline
This is the part of setup that quietly fails. Everything looks configured, reps
dial happily, and a week later the client asks why nothing is moving in their
pipeline.
**Read this before you add a disposition.** The link between a disposition and a
pipeline stage is built **once, when the company account is created**. Adding a
disposition afterwards does **not** create a link, no matter what you call it.
The rep can pick it, the call saves, and the lead never moves.
This is a current product limitation, not a setup mistake you can fix by
renaming things.
---
## 🧩 How the pieces actually connect
What the **rep picks** at the end of a call. "Not Interested", "App Set",
"Call Back".
Where the **lead sits** in the sales process. "New Lead", "Contacted",
"Appointment Set".
A **saved rule** created at signup that ties one specific disposition to one
specific stage. Not the name.
```mermaid
graph TB
A[🏢 Company account created] --> B[📋 Six dispositions created]
A --> C[🗂️ Six matching stages created]
B --> D[🔗 Rules built, pairing each one to a stage]
C --> D
D --> E[✅ Rep picks a disposition → lead moves]
F[➕ A disposition added later] -.->|no rule is built| G[⬜ Rep picks it → nothing moves]
style E fill:#1f7a4d,color:#fff
style G fill:#a33,color:#fff
style D fill:#2a4d7a,color:#fff
```
Because the starter dispositions and stages are created together with the same
names, it **looks** as though names are what connect them. They are not. The
names match by coincidence of setup, and renaming either one does not break
anything.
---
## ✅ What this means in practice
The link survives a rename. If a client wants "App Set" to read "Appointment
Booked", change it. Leads keep moving exactly as before.
This is the opposite of what you might expect, and the opposite of what earlier
versions of this guide said.
It will appear for reps, save correctly, and show in reports. It just will not
move the lead to a stage, because no rule exists for it.
**What to do:** use it for reporting and move those leads by hand, or raise it
with support so the mapping can be built for that client.
Same reason. Existing rules point at the stages that already existed.
The rule refers to a disposition that no longer exists, so nothing happens when
its replacement is chosen. Prefer renaming over deleting.
---
## 🧪 How to check a client is actually wired up
Do not trust the screen. Test it.
Any contact you can safely move. Note which stage it is in now.
Use one of the outcome dispositions, not Didn't Answer.
It should be in the matching stage within a few seconds.
The disposition has no rule behind it. That is the limitation above, not
something you can fix by renaming. Raise it with support.
Do this once per client during onboarding, with one disposition. It takes two
minutes and it is the only way to know the wiring is real.
---
## ✍️ Setting up dispositions
Build the disposition list first. The pipeline is shaped to match it.
If they say "DQ" rather than "Not Qualified", call it DQ. Reps pick the right
option faster when it sounds like how they talk. Renaming the starter
dispositions is safe and is the recommended way to customise.
Six to ten is healthy. A rep scanning twenty options mid-call picks whatever is
nearest, and your reporting becomes fiction.
One disposition is wired to the **Didn't Answer** button. Set it with the
**Didn't Answer** action on the Dispositions screen — not the separate default
option setting, which controls something else.
"App Set", "Appointment Set", whatever they call it. This is the one that
matters most for reporting.
Full screen reference: [Dispositions](/manage/disposition).
---
## 🗂️ Setting up the pipeline
Renaming is safe and keeps the links intact.
Left to right should read like the real sales process.
Every pipeline has one. Check it exists and sits where the client expects it.
Full screen reference: [Pipelines](/pipeline/pipeline).
**"Didn't Answer" deliberately does not move a lead.** Someone who did not pick
up has not progressed, and moving them would make the pipeline meaningless.
They stay where they are and remain in the calling rotation.
---
## 🩺 When leads are not moving
Run the test above. If a starter disposition moves a lead and a newer one does
not, you have hit the limitation — the newer one has no rule behind it.
Check whether a disposition or stage was **deleted** and recreated. A recreated
one is a new record with no rule attached, even with an identical name.
Expected if dispositions were added after signup. The originals work; the added
ones do not.
Check which pipeline it landed in. A client with several pipelines has rules
pointing at one of them.
---
## ➡️ Where to go next
The full runbook this page belongs to.
Organised by what the customer tells you.
Every field on the screen.
Stages and how to order them.
---
# Inbound Calls & Texting
> Route incoming calls to a rep, an AI agent, or both, and set up SMS so replies reach the right person.
Source: https://docs.aisync.link/go-live/inbound-and-texting
Outbound dialing is only half the job. When a lead calls back or replies to a text, it has to reach someone. This page covers both and links to the screen-by-screen detail.
Set this up **before** the client's first dialing shift. Leads return calls within minutes of a voicemail, and an inbound call with nowhere to go is a lost deal.
---
## 📞 Inbound calls
### Choose where calls land
Each user sets their own inbound preference in **Profile → Personal Settings**.
Rings inside the app. Best when reps are at their desks with the dialer open.
Forwards to their mobile. Best for owners and closers who are not always at a desk.
An AI agent answers and handles the conversation. Best for after-hours and overflow.
Rings the rep first, falls back to the AI if nobody picks up. The usual choice for a staffed floor.
Full detail, including the AI fallback behaviour: [Incoming Call Routing](/dialer/incoming-call-routing).
### Who the call is matched to
Before the routing preference applies, AI Sync decides **whose** call it is, in this order:
If a rep called that number recently, it goes back to them. This is what makes callbacks feel personal.
If the number dialed is assigned to a specific user, that user gets it.
If the caller is on a list that a rep owns, it goes to that rep.
Otherwise it falls to the company's fallback user.
**Set the company default deliberately.** It is the safety net for every unknown caller. Leaving it unset or pointing it at someone who has left is how inbound calls vanish.
### When the rep is already busy
If a rep is on a call, or one is already ringing for them, a second incoming call is **not** put through to them. It continues down the routing chain instead — an AI agent if one is configured, then voicemail. The caller is never simply dropped.
**Tell reps this during handover.** They will see a call ring and then stop, and without the explanation it looks broken. It is the system protecting the conversation they are already having. Previously a second caller could take over a live call, leaving the rep talking to a different person mid-conversation.
This makes AI fallback and voicemail matter more, not less — they are what catches the overflow.
### Setting up an AI agent to answer
Voice, language, greeting and what it is allowed to do. See [AI Agents](/ai/agents/listing).
Assign an inbound number to the agent. See [AI Phone Numbers](/ai/phone-numbers).
Book straight into a calendar, or transfer to a human. See [Call Handling](/ai/manage-agent/call-handling).
So it knows who is calling and can write back what happened. See [Integration](/ai/manage-agent/integration).
**Test with a real inbound call before the client relies on it.** Call the number from a phone that is not in the system and listen to the whole conversation, including what happens at the end. An AI agent that answers well but never books, transfers or records anything is worse than no agent, because everyone assumes it is working.
**Check:** call the client's main number from an unknown phone. It reaches the intended destination, and the call appears in history afterwards.
---
## 💬 Texting
### Before any text can send
Carriers filter or block unregistered business texting. Start this at the same time as buying numbers — approval takes days, not minutes.
[Brand](/setup/10dlc/brand) → [Campaign](/setup/10dlc/campaign) → [Profile](/setup/10dlc/profile)
Not every number can text. Check before promising the client it can.
Sending business texts on unregistered numbers gets messages silently dropped by carriers. The client sees "sent" and the customer receives nothing. Do not skip registration.
### Give reps a texting line
Calls rotate caller IDs; texts don't. Each lead is texted from one number, and
the reply goes to the rep who owns the conversation, live in the dialer's
[Inbox](/dialer/inbox).
- **Per rep:** route one A2P-linked number to each rep (Phone Numbers → **Route to a User**).
- **Shared:** leave one A2P-linked number unrouted as the team line.
Then run the two-minute reply test. Full detail:
[Texting lines & reply routing](/dialer/texting-lines).
### Templates
Templates are what reps actually send, so write them with the client rather than for them.
Reusable messages reps pick during or after a call.
Two sentences. Long templates read as marketing and get ignored or reported.
Missed call, appointment confirmation, follow-up after a good conversation.
"Reply STOP to opt out." It is a compliance requirement, not a nicety.
Check it arrives, reads correctly on a phone, and that your reply shows up in the dialer's Inbox for the right rep.
**Check:** text a phone you own from the dialer. It arrives, your reply appears in the dialer's **Inbox** against the right contact, and a second text goes from the same number.
---
## 🔁 Putting both together
A working setup for a typical client:
| Situation | Where it goes |
| --- | --- |
| Lead calls back during business hours | Dialer + AI — rep first, AI catches the overflow |
| Lead calls back after hours | AI agent, books into the calendar |
| Lead replies to a rep's text | That rep's Inbox, live |
| Unknown number calls the main line | Company default user, then AI fallback |
Walk the client through this table in their own words during handover. "If someone calls you back at 9pm, here is exactly what happens" is the moment they understand what they bought.
---
## If inbound is not working
Check the company default user is set and that the person is still active. This is the safety net for every unmatched caller.
Matching is by recent outbound call first. If a different rep called that lead more recently, they get it. Working as designed — assign the number directly to override.
That rep was already on a call or had one ringing. The caller was passed on to an AI agent or voicemail rather than interrupting the live conversation.
Nothing to fix — this is intended. Make sure AI fallback and voicemail are actually configured, because that is where those callers land.
The agent has no integration configured, so it is having conversations that go nowhere. See [Integration](/ai/manage-agent/integration).
Almost always A2P 10DLC registration. Confirm brand and campaign are approved, not merely submitted.
The number, or the Twilio Messaging Service it belongs to, sends replies somewhere else. See [Make sure replies actually reach AI Sync](/dialer/texting-lines#make-sure-replies-actually-reach-ai-sync).
---
# Rep Guide
> One page for the people on the phones. Read it before your first shift.
Source: https://docs.aisync.link/go-live/rep-guide
This is everything you need to dial, book, and know what the screen is telling you. It takes five minutes to read and will save you an hour of confusion.
## 🔄 Before your first call of the day
**Mac:** `Cmd + Shift + R` · **Windows:** `Ctrl + Shift + R`
Updates ship often. Without a hard refresh you are on yesterday's version, and the problem you hit may already be fixed.
Green dot, top right. If it says Offline, click it.
Left side of the screen. These play automatically when needed.
---
## ▶️ Dialing
Choose your list, confirm the dial-at-a-time number, press **Start**.
The dialer calls several leads at once and connects you to whoever answers first. Between batches there is a short pause while it lines up the next set. That is normal.
Switching tabs briefly is fine. Leaving for a long time can drop your connection.
Press **Stop**, then set yourself Offline. Otherwise the system thinks you are still available.
---
## 📅 Booking an appointment
You book from the same screen you are talking on. No switching tabs.
Pick from the dropdown on the call screen.
**Every slot shows the date as well as the time.** Read it. "3:00pm" alone is how people book Thursday when they meant Tuesday.
Do not move to the next lead yet. The screen will tell you what happened.
**If you press "Didn't Answer / VM" and see "Waiting for this call's details before saving that outcome. Try again in a moment."** — wait a second and press it again. Nothing is wrong with the lead. The system is making sure it saves the outcome against the right call.
### What the booking status means
| What you see | What it means | What you do |
| --- | --- | --- |
| **Booking with GoHighLevel…** | Sent, waiting for an answer | Wait a few seconds |
| **Confirmed by GoHighLevel** | It is on the calendar | Move on. You are done |
| **Needs review** | The answer was unclear. It may or may not exist | **Do not rebook.** Tell your manager |
| **Back on the list** | It was refused. Nothing was booked | Rebook, or pick another time |
**Only "Confirmed" means the appointment exists.** If you see anything else and book again "just in case", you risk double-booking the customer and it looks bad on the call.
Once a lead is booked they come off your dial list. Even if you call them back from the keypad to confirm, they stay off it.
---
## 🔔 What the banners mean
Someone answered but did not reach you. The banner tells you **which** of these happened:
| What the banner says | What happened |
| --- | --- |
| They picked up — you were already on a call | You were genuinely on another call |
| They answered at the same time as another lead | Two leads picked up together |
| They answered but no one was on the line | They picked up into an empty call |
| They answered but the call did not reach you | The cause is not known |
**Read the wording before you assume it was a person.** The banner tells you how sure the system is:
| If the banner says | What it means | What to do |
| --- | --- | --- |
| "**They** picked up / answered" | A real person answered. | Call them back from **Callbacks**. They answered once and often will again. |
| "we could not tell if anyone picked up" | A line rang out and the system could not confirm a human. | Worth a call back, but treat it as a normal lead, not a warm one. |
| "a voicemail answered, not a person" | A machine picked up. | Nothing to call back. This one is **not** added to Callbacks. |
If the banner says **"was not added to Callbacks"**, it is not there. Do not go
looking for it.
### 📋 What the Callbacks tab really holds
**Callbacks is a "try again later" list, not a list of people who asked you to
call.** Most entries are there because a timer was set, not because anyone
spoke to you.
A contact lands in Callbacks when any of these happen:
- someone answered and did not reach a rep — **these are the warm ones**
- a voicemail picked up
- the contact was skipped because it was outside calling hours where they live
- the contact was simply dialled and a retry was scheduled
On a typical list, only a small share are people who actually picked up.
**How to spot the warm ones.** Open the contact and look at its last outcome. A
contact showing **Answered** is worth calling straight back — they picked up
once and often will again. A contact that has never been dialled, or whose last
outcome was voicemail, is a normal lead and should be worked like any other.
A call ended before it connected.
If it says **"Restarting the list…"**, do nothing. It continues on its own.
If it says **"Press Start to continue"**, press Start. You carry on where you left off — nothing is lost and you do not start the list over.
Seeing this repeatedly is worth reporting.
---
## 📲 When someone calls you back
**A call may ring and then stop before you can answer it. That is correct, not a fault.**
If you are already on a call, or another call is already ringing for you, a second incoming call is not put through — it is passed on to whoever or whatever can actually pick up, such as an AI agent or voicemail. The caller is not dropped.
You would otherwise be interrupted mid-conversation, or find yourself suddenly talking to a different person.
**What to do:** finish the call you are on, then check **Callbacks** and your voicemail. The person who rang will be in one of them.
The name on your screen belongs to the person actually on the line. If a call comes from a number the system does not recognise, you will see the number rather than a name — that is honest, not broken.
---
## 📊 Your numbers
Along the top: calls made, connect rate, appointments, and the team total.
In the list panel: **Remaining**, **Dialed**, **Connect %**, **Your Talk**, **Team Talk**.
**Your Talk** is yours alone. **Team Talk** is everyone on that list. If a number looks wrong, check which of the two you are reading.
Dashboard statistics are still being refined and some counts read higher than they should. Use them to spot trends, not as a final record of performance. The call history is the reliable source for what actually happened on a given call.
Remaining does not always drop by one per call. A lead you did not reach can come back around for another attempt later.
---
## 🔍 Finding an old call
The **History** tab takes a name or a phone number, typed any way you like — dashes, spaces, `+1`, it all works.
If nothing matches, it automatically looks back 90 days and tells you it did.
---
## 🎙️ Recordings and transcripts
Open **History** to find a call, then:
- **Play** listens to it in the browser.
- **Download** saves the file so you can send it on. It is named for the call, like `call-20260914-1815-Alida-Reyes-5312.wav`.
- **"-" instead of a Play button** means that call was never recorded. A call that did not connect has nothing to play.
The live transcript panel shows the conversation as it happens. When it cannot tell who is speaking it says "Speaker" rather than guessing. It is a helper, not a court record — do not rely on it for exact wording.
---
## When something is wrong
Hard refresh. `Cmd/Ctrl + Shift + R`. It fixes a surprising amount.
Say **what you saw**, **which lead**, and **roughly what time**. That is usually enough to find it.
A screenshot is worth more than a description. If you can grab one, do.
## 🛡️ When a call gets screened
Some phones answer on the lead's behalf and ask who is calling. That is call
screening, not voicemail, and the lead is often standing right there deciding
whether to pick up.
You do not need to do anything differently — the system detects it and does not
connect you to a recording. What the lead hears is your **iPhone Script**, which must be a **recording** —
a typed script cannot play down a phone line and will block you from dialing
with screening on. Keep it short and human. See
[iPhone and carrier screening](/dialer/iphone-screening).
---
# Troubleshooting
> What a customer reports, what is actually happening, and what to do about it.
Source: https://docs.aisync.link/go-live/troubleshooting
Organised by **what the person tells you**, because that is what you get on a ticket. Each entry gives the likely cause, the fix, and when to escalate.
**Ask for three things every time:** what they saw (a screenshot is best), which lead it happened on, and roughly what time. With those three, almost anything here can be traced.
---
## 📊 Reports and numbers
**Cause:** almost always the time zone on the profile, or a stale page.
**Fix:** hard refresh first (**Cmd+Shift+R** / **Ctrl+F5**). Then open the profile in the top right and confirm the time zone matches where the reps sit. If it is wrong, today's calls are filed under a different day — the data is there, under the wrong date.
**Cause:** usually the numbers, not the reps.
**Fix:** open [Dialer Performance](/dashboard/dialer-performance) and look at the outcome bar. Rising **Declined** or **Screened** means your caller IDs are getting flagged. Rising **Bad number** means the list needs cleaning. See [Caller ID and number health](/dialer/caller-id-and-numbers).
**Cause:** working as designed. Under 10 dials there is not enough to rate.
**Fix:** nothing. A rate off four dials is noise, and showing it as a percentage is how a good rep gets judged on nothing. It appears as soon as they have the dials.
**Cause:** they are not. Voicemail, answering machines and screened calls can never be connects.
**Fix:** check which number they are reading. **Answered** includes voicemail; **Connects** does not. See [How calls actually work](/dialer/how-calls-work).
**Cause:** usually inbound versus outbound. **All calls** includes inbound; the outcome breakdown and the daily chart are outbound dials only.
**Fix:** the tile subtitle states how many were dialled out — that is the figure the panels below reconcile to. If the outcome segments genuinely do not add up to the dial count, that is a real bug. Report it.
**Cause:** nearly always a different window or scope.
**Fix:** ask the agent *"what date range and which reps did that cover?"* and compare like for like. See [Asking your agent about your data](/agents/asking-about-your-data).
---
## 🛡️ Screening
**Cause:** iPhone Screening off for that call, or no script selected.
**Fix:** confirm the **iPhone Screening** toggle is on and a **recorded** iPhone Script is selected — a typed script cannot play and the dialer blocks Start until an audio one is chosen, then test by dialling your own screened phone. See [iPhone and carrier screening](/dialer/iphone-screening).
**Cause:** a screening prompt sounds like a recorded greeting, so systems judging audio rhythm alone mistake it for voicemail.
**Fix:** AI Sync reads the words rather than the cadence, so report specific calls with the time and the lead's number and they can be traced.
---
## 📞 Calling
**Cause:** the rep is Offline.
**Fix:** set to Ready. If it flips straight back, their browser lost its connection — hard refresh, then check their internet.
**Cause:** the number is unassigned, unverified, or on a retired carrier.
**Fix:** confirm it is assigned to the dialer and is Twilio-backed. Numbers on the old carriers will not dial at all.
**Cause:** a call ended before connecting. Between batches the dialer pauses briefly to line up the next set, which is normal and does not trigger this.
**Fix:** if the message says "Restarting the list…", it continues on its own. If it says "Press Start to continue", they press Start and carry on from where they were.
**Escalate if:** it happens repeatedly to the same rep in one shift, or to several reps at once. Get the times.
**Cause:** the banner now states it. One of: the rep was genuinely on another call; two leads answered at the same moment; the lead picked up into an empty call; or the cause could not be determined.
**Fix:** read the wording. "They picked up" means a real person. "We could not tell if anyone picked up" means the system could not confirm one — still worth a call, but not a warm lead. "A voicemail answered" means a machine, and that one is not added to Callbacks at all.
**Escalate if:** the banner repeatedly says the rep was on a call when they were demonstrably idle. Get the rep's name and the time.
**Cause:** expected behaviour. If the rep is already on a call, or one is already ringing for them, a second incoming call is not put through — it is passed to an AI agent or voicemail instead of interrupting the live conversation.
**Fix:** none needed. Tell the rep to check **Callbacks** and voicemail. Previously that second call could take over the live one, so the rep ended up talking to a different person mid-conversation.
**Cause:** either the message "Waiting for this call's details before saving that outcome" appeared, or the page is stale.
**Fix:** if they saw that message, wait a moment and press again — the system is matching the outcome to the right call. If there was no message at all, hard refresh (`Cmd/Ctrl + Shift + R`), confirm the page reloaded, and try again.
**Cause:** the system is holding a line open because it cannot prove an earlier call finished. It pauses new calls rather than risk overlapping calls.
**Fix:** **escalate.** This needs someone to check the call records and clear it. Do not tell the rep to restart repeatedly — it will not help and the lines stay held.
Give the platform team the **rep's name** and **the time it started**.
**Cause:** microphone permission or a stale device selection, usually after changing headsets.
**Fix:** Audio Settings, re-select the microphone, allow the browser permission prompt, hard refresh.
---
## 📅 Booking
**Cause:** that calendar has no user assigned in GoHighLevel. A calendar with nobody on it has no availability to offer.
**Fix:** assign a team member to the calendar in GoHighLevel. Configuration, not a fault.
**Cause:** GoHighLevel's answer was unclear. The appointment may or may not exist.
**Fix:** check GoHighLevel directly. If it is there, nothing to do. If it is not, book it again.
Tell the rep **not** to rebook on their own when they see this. Booking "just in case" is how customers get double-booked.
**Cause:** the booking did not complete. A booked lead comes off the dial list automatically; a lead still being called was never confirmed.
**Fix:** check what the booking status actually said. If it said Confirmed and they were still called, escalate with the lead's name and time.
**Cause:** the rep read the time without the date. Every slot shows both.
**Fix:** move the appointment in GoHighLevel and point the rep at the date in the slot label.
**Cause:** the disposition was added after the account was created, so no rule links it to a stage. Names are not the mechanism, or the lead is in a pipeline with no appointment stage.
**Fix:** renaming will not help. Test a starter disposition first — if that moves a lead and the new one does not, this is the known limitation. See [Dispositions and pipeline mapping](/go-live/dispositions-and-pipeline). Remember AI Sync pipelines and GoHighLevel pipelines are separate — adding a stage in GoHighLevel does not create it here.
---
## 📊 Reporting
**Cause:** usually reading team totals as personal ones — but some dashboard counts genuinely read higher than they should, connect rate in particular.
**Fix:** **Your Talk** is that rep alone; **Team Talk** is everyone on the list. The top strip is today across all lists; the list panel is the selected list only.
Treat dashboard figures as trend indicators, not as a record. Call history is the reliable source for what happened on a specific call. Statistics accuracy is actively being worked on — do not promise a client the numbers are exact.
**Cause:** not a fault. A lead that was not reached can return for another attempt, so the count does not fall by one per call.
**Fix:** explain it. Escalate only if it is completely frozen while calls are clearly being made.
**Cause:** usually a date range.
**Fix:** History accepts a phone number typed any way. If nothing matches it widens to 90 days and says so. If it is still missing, escalate with the number and the approximate time.
---
## 🎙️ Recordings and transcripts
**Cause:** delivery into GoHighLevel is enabled per client and is separate from playback inside AI Sync.
**Fix:** confirm with the platform team whether this client is enabled. The rep can still play and download the call from **History** either way.
**Cause:** that call was never recorded — usually because it never connected. The column shows "-".
**Fix:** none. Previously a Play button appeared and then failed, which looked like a broken recording. Showing "-" is the honest answer.
**Fix:** **Download** beside Play in History saves the file, named for the call. Anyone who can play a recording can download it.
**Cause:** expected. Automatic transcription on phone audio is imperfect, especially with background noise, accents and crosstalk.
**Fix:** the transcript is an aid, not a record. The recording is the source of truth. Do not promise a specific accuracy level.
---
## 🔐 Access
**Cause:** a stale browser session.
**Fix:** it returns them to the sign-in page with a message. They sign in again. If it repeats, clear cookies for the site.
**Cause:** role assignment.
**Fix:** reps see their own; managers see the team. See [Roles](/user-management/roles).
---
## When to escalate
Send it to the platform team when:
"We cannot confirm that a previous call has ended" — always escalate.
One rep is usually local. Several at the same time is not.
Confirmed should mean it exists and the lead stops being called.
A refresh clears most browser-side problems. If it survives one, it is real.
**Include:** the rep's name, the lead, the time, and a screenshot. Without the time it is significantly harder to find.
---
# What's New
> Changes reps and clients will notice, newest first.
Source: https://docs.aisync.link/go-live/changelog
Only changes that alter what someone sees or does. Internal work is not listed.
---
## 5 October 2026 — Faster connects, AI calling hours, Reset daily switch
**Send results back to Meta.** Connect your Meta Pixel in 3 steps. Every new lead and booked appointment then goes to Meta automatically, and a workflow can send sales. Meta learns who books and buys, not just who fills out a form. [Set it up](/marketing/meta-conversions).
**Ring your cell during your hours.** A number can ring outside phones, such as your cell, only on the days and times you pick. Whoever answers hears who is calling, then the call connects. [How it works](/dialer/incoming-call-routing#ring-your-cell-only-during-your-hours).
**Transfers connect right away.** When a rep accepts a live transfer, the caller is connected at once, and backup phones ring their full time.
**Workflows.** New steps: **Add to dialer list** (the contact is called, even if they were dialed on another list before) and **Meta Conversion API**. **Pipeline stage changed** workflows fire again. [Workflows](/workflow/all-workflows).
**Fixes.** Inbox search finds people by full name. You can add a contact by hand without picking a calling list. Phone number signup during setup takes one pass.
**AI Texting.** An AI text agent replies to leads in seconds, answers from your own knowledge, books on your real calendar, follows up inside their legal hours and hands off to your team. Start in Suggest, then switch to Autopilot. [Set it up](/dialer/ai-texting).
**AI Memory.** One profile of each person from every text, email and call, shared by your text and voice agents and shown in the Inbox. Off until you turn it on; export any time. [Learn more](/dialer/ai-memory).
**Inbox.** One Inbox in the dialer and the dashboard, with:
- templates;
- a "waiting 12 min" timer on unread leads;
- starred conversations;
- Send later, which stays inside the lead's legal hours;
- team notes in the conversation;
- select several conversations at once;
- emoji;
- assign an owner;
- tags, pipeline, disposition, appointments and workflows in the contact panel.
**Pick who rings in each wave.** A new ring option, **You pick each wave**, lets you
put each person in wave 1 to 5. Your best closers ring first; if nobody presses 1,
the next wave rings. [How to set it up](/dialer/transfer-lines#pick-who-rings-in-each-wave).
**Faster connects.** A quick "hello" now connects the rep in about 2 seconds.
Before, a short hello could wait up to 10 seconds. Voicemail detection is just as careful.
**AI calls follow do-not-call and calling hours.** Calls outside hours wait for
the lead's next allowed time. A lead who asks for a call can get one right away.
See [AI Calls: Calling Hours & Call Requests](/dialer/ai-calling-hours).
**Do not contact by channel and STOP.** STOP turns texts off, and START turns them
back on. See [Do Not Contact & STOP](/dialer/do-not-contact).
**Reset daily is a switch.** It's in the dialer's left panel under Text if missed,
and it's off unless you turn it on.
**Connect % can't go over 100%.** It compares the leads you dialed with the ones you talked to.
**Buying several numbers at once** now saves every number. Saving your Twilio
settings again no longer removes your numbers.
---
## 4 October 2026 — Transfer Lines, Do not contact, call sentiment
**Transfer Lines.** A team line for live transfers from AI agents and reps. It
rings your reps in waves, plays a short whisper, connects the first to press 1,
and runs a fallback so the caller is never hung up on. See
[Transfer Lines](/dialer/transfer-lines).
**Do not contact per channel.** All, Calls, Texts and Email switches on every
conversation. A STOP reply turns texts off automatically.
**Call sentiment.** History shows Positive, Neutral or Negative for each
answered, recorded call, with a filter and a CSV column.
**Inbound calls.** An unanswered forward to a rep's cell now reaches your AI
agent or voicemail instead of ending the call.
---
## 28 September 2026 — Inbox in the dialer, texting lines
**An Inbox inside the dialer.** One row per contact, the whole conversation
(texts and emails) on click, unread dots and a count on the tab, replies live.
Reps answer without leaving the dialer. See [Inbox](/dialer/inbox).
**Texts no longer follow the rotating caller ID.** Each lead is texted from one
number, and replies go to the rep who owns the conversation. Route a number to
a rep to give them their own line. See
[Texting lines](/dialer/texting-lines).
**Do Not Text is enforced everywhere.** A contact marked Do Not Text can't be
texted from the dialer, the Inbox, Messages or an AI assistant. Automations
already respected it.
**Emails go out as your rep, from your own domain.** Verify your domain once
under **Settings → Email Setting**, and lead emails come from
*maria@yourcompany.com* with replies straight to her. Until then, replies to
lead emails go to the rep instead of a platform mailbox. See
[Send from your own domain](/settings/email-domain).
**Texting lines, all on one page.** **Settings → Texting lines** lists every
number that can text, Beam and Twilio, with who texts from each, and says why
the rest can't. See [Texting lines](/dialer/texting-lines).
**Calls in the Inbox.** Each conversation now shows the calls too, with how
they ended, **Play** for the recording and **Show transcript**. See
[Inbox](/dialer/inbox).
**Connect Beam in three clicks.** Beam numbers become texting lines
automatically, and you choose who texts from each one. See
[Connect Beam](/dialer/beam).
**AI assistants can check your texting setup and work the Inbox.** See
[Texting & Inbox with your AI assistant](/agents/texting-and-inbox).
---
## 28 September 2026 — missed-answer message, transcripts, ChatGPT plan
**People who answer with no rep free hear your message, not your voicemail.**
They used to sit in silence and then hear your campaign's sales voicemail. Now
they hear your own short message, can press 9 to stop future calls, and go to
the top of your callbacks. Write yours under **Dialer → Missed-Answer Message**.
See [Missed-Answer Message](/dialer/missed-answer-message).
**Every answered call keeps its transcript and a summary.** Read them, play the
recording and copy the transcript from **Reports → Calls**, or download your
whole history with transcripts included. Calls from 25 September onward.
See [Call Reports](/reports/calls).
**Recordings appear in GoHighLevel** on the call in each contact's
conversation, for every client with GoHighLevel connected.
**Automations: decide what happens after each disposition.** In the dialer's
new **Automations** tab, pick a ready-made follow-up for each disposition (a
text after a voicemail, a nurture after no answer, a confirmation after an
appointment) and edit the words. The contact screen now shows dispositions
first. See [Automations](/dialer/automations).
**Build with your own ChatGPT plan.** Connect Codex once and ask it to write
agent prompts, build workflows or pull your numbers, at no extra AI cost.
See [Use your ChatGPT plan with AI Sync](/agents/use-your-chatgpt-plan).
---
## 22 September 2026 — dialer reporting rebuilt
**The Dialer dashboard now shows what happened to every single dial.**
"No Answer" used to be one bucket holding several very different outcomes. It is now split into outcomes that never overlap and always add up to your dial count exactly: connected, answered with no rep, voicemail, screened, no answer, declined, rep hung up first, bad number, busy and carrier problems.
Three of those are money you can act on the day you see them. **Declined** means people are actively rejecting the call, usually a caller ID problem rather than a rep problem. **Rep hung up first** is pacing. **Bad number** is spend on numbers that do not exist. See [Dialer Performance](/dashboard/dialer-performance).
**Three numbers were corrected.**
Average talk time now counts every conversation rather than only calls over 30 seconds, so it reflects the real floor instead of a flattering subset. Connect rate now counts voicemail-answered dials in the denominator, because a dial that reached a machine is still a dial. The daily chart now counts outbound calls only, bucketed in your own time zone rather than the server's — an evening call no longer lands on the next day's bar.
Your connect rate may read slightly lower than before. It was previously overstated; nothing about your calling changed.
**Screened calls are their own outcome.**
iPhone and carrier screening is no longer folded in with voicemail. A screened call means a handset answered on the lead's behalf and that person may still call you back, which is a different situation from an answering machine. Neither is ever counted as a conversation. See [iPhone and carrier screening](/dialer/iphone-screening).
**The leaderboard moved into the Dialer section.**
Ranking reps is a dialer question and it was sitting one tab away from the numbers it ranks on. Sort by connects, dials, connect rate or talk time, and export the whole thing as CSV. A rep under 10 dials shows a dash rather than a percentage and cannot top a rate-based sort.
**Predictive pacing for live reps is available.**
The engine paces a shared list across your floor instead of each rep choosing their own lines. It needs at least two reps online, holds itself well under the 3% abandonment limit, and takes two deliberate steps to switch on so nothing goes live by accident. See [Predictive pacing](/dialer/predictive-pacing).
---
## 15 September 2026 — call handling and recordings
**A second incoming call can no longer interrupt a live one.**
While you are on a call, or one is already ringing for you, another incoming call is passed to an AI agent or voicemail instead of ringing through.
You may see **a call ring and then stop**. That is the system protecting the conversation you are already having. Check **Callbacks** and voicemail — the caller is not lost. Previously a second caller could take over a live call, leaving a rep talking to a different person mid-conversation.
**The Callbacks banner now says what actually happened.**
Instead of always claiming you were on another call, it states the real reason:
- They picked up — you were already on a call
- They answered at the same time as another lead
- They answered but no one was on the line
- They answered but the call did not reach you
All four mean the same action: call them back from Callbacks.
**The name on screen matches the person on the line.**
A previous caller's name could linger over a new incoming call. The name now appears only when the number matches; otherwise you see the number. Audio was always correct — the screen was not.
**"Didn't Answer / VM" no longer refuses a lead you can see.**
It sometimes answered "This lead has no authenticated call log yet." It now saves. If the call's details have genuinely not arrived, you see **"Waiting for this call's details before saving that outcome. Try again in a moment."** — wait a second and press again.
**Recordings: download, and no more dead Play buttons.**
A **Download** button sits beside Play in History, saving a file named for the call so you can send it on. Anyone who can play a recording can download it.
Calls that were never recorded now show **"-"** instead of a Play button that fails. Short real recordings still play.
**Not yet proven in the field.** This release is deployed and healthy, but no live rep call has exercised the new inbound protection, the recording download or the Didn't Answer fix at time of writing. Report anything that behaves differently from the above.
---
## 14 September 2026 — booking, recordings and pipeline
**Book from the live call screen.** Choose a GoHighLevel calendar and a time without leaving the call. Every slot shows the date as well as the time.
**A booking status you can trust.** The screen reports pending, confirmed, needs review, or back on the list. **Only "Confirmed by GoHighLevel" means the appointment exists.**
**Booked leads leave the dial list** and move to an **Appointment Set** stage in their pipeline. Calling them from the keypad to confirm does not put them back.
**Every pipeline has an Appointment Set stage.**
**Call recordings can be delivered into GoHighLevel**, where they appear on the contact's conversation. Enabled per client.
**Talk time past 24 hours** no longer resets to zero.
**History search** accepts a phone number typed any way — dashes, spaces, `+1`. If nothing matches it widens to 90 days and says so.
---
## Known limitations
Worth knowing before you rely on something.
Some counts read higher than they should — connect rate in particular. Use the dashboard for trends and the call history for what actually happened on a given call. This is being worked on.
Reps are not currently walled off from each other's numbers. Being addressed separately.
The live transcript helps you follow a conversation. It is not exact, and its accuracy has not been measured on real call audio. The recording is the source of truth.
Under investigation. Do not rely on it for a client workflow yet.
---
# Demo
> DEMO testing
Source: https://docs.aisync.link/go-live/demo
## Overview
Write your content here.
---
# Dialer Performance
> Your calling numbers in one screen: what each tile means, which panels drive decisions, and how to filter, sort, and export.
Source: https://docs.aisync.link/dashboard/dialer-performance
The Dialer Performance dashboard answers one question: **is the floor working,
and if not, why.** Everything on it comes from a single query, so no two numbers
on this screen can disagree with each other.
Open it from **Dashboard → Dialer**.
Every term used here is defined once in
[How Calls Actually Work](/dialer/how-calls-work). If "connected" and "answered"
sound like the same word to you, read that page first — the difference is the
whole point of this dashboard.
## 🧭 What is on the page
```mermaid
graph TB
A[🔍 Filters
range · dates · rep] --> B[📊 Six metric tiles]
B --> C[🧱 What happened to every dial]
C --> D[👥 Who actually picked up]
D --> E[📅 Calls by day]
E --> F[📋 Connect rate by list]
F --> G[🏆 Leaderboard]
G --> H[🏷️ Where contacts stand]
style A fill:#2a4d7a,color:#fff
style B fill:#1f7a4d,color:#fff
style G fill:#6b3fa0,color:#fff
```
The order is deliberate. Headline numbers first, then *why* they are what they
are, then *who* and *which list* produced them.
## 📊 The six tiles
| Tile | What it tells you | Act on it when |
|---|---|---|
| **All calls** | Every call in the window, inbound and outbound. | You want raw volume. The subtitle shows how many were dialled out. |
| **Connects** | Real conversations between a rep and a person. | This is the number that pays. |
| **Connect rate** | Connects ÷ dials. | It drops without your dial count dropping — check Screened and Bad number. |
| **Avg talk time** | Averaged over every conversation. | It falls sharply: reps are being handed calls that are not ready. |
| **Reps online** | Who is actually able to take a call. | It is lower than you expect mid-shift. |
| **Appointments** | Outcomes booked. | The whole point. |
A tile showing **—** means *not measured*, not zero. We never print 0% for
something we could not measure, because a false zero gets a good list or a good
rep cut.
## 🧱 What happened to every dial
One stacked bar covering every dial in the window, split into outcomes that
never overlap. **The segments always add up to your dial count exactly.**
Three segments are worth money the moment you look at them:
They saw the call and said no. High numbers point at your caller ID reputation
or a tired list — not at your reps.
You cancelled before they could answer. This is pacing. Lower lines per rep or
add reps.
Numbers that do not exist. Clean these out and stop paying to dial them.
Hover any segment for its exact count and share. Hover a key entry for a
plain-English explanation of what that outcome means.
## 👥 Who actually picked up
Three things look like an answer and only one is sellable. This panel separates
them:
| Card | Meaning |
|---|---|
| **Talked to a person** | A rep and a lead on the same call. |
| **Picked up, no rep** | They answered and got nobody. Your abandonment number. |
| **Answering machine** | Detected as a machine, never counted as a conversation. |
| **Handset screened it** | iPhone or carrier screening answered instead of the person. |
| **Avg conversation** | Across every call, with the long-call average shown beside it. |
Machines and screening fail **differently**. A machine means leave a message. A
screened call means a real human may still call you back. Merging them hides
both, which is why they are counted apart.
## 📅 Calls by day
Dials and connects as paired bars on one shared scale — never two scales,
because connects are a subset of dials and a second axis would let a bad day
draw like a good one.
Bars are bucketed in **your** time zone. Hover a day for dials, connects and the
rate for that day.
## 📋 Connect rate by list
Which lists are worth calling. Bars are sized by **rate**, not volume, because
"which list did we call most" is not the question.
A list with fewer than 10 dials shows its dial count and **no bar at all**. A
rate from four dials is noise, and shown as a percentage it gets a good list
deleted.
## 🏆 Leaderboard
Your reps, ranked. Sort by connects, dials, connect rate, or talk time by
clicking the buttons in the panel header.
Default sort is **connects**, because it rewards conversations rather than
whoever burned through the list fastest.
A rep under 10 dials shows a dash instead of a rate, and can never win a
rate-based sort. Ranking a rep with four dials as your best closer is how a good
rep gets moved off a good list.
## 🔍 Filters and export
Use the pills for common ranges, or the Range dropdown for the full list
including custom dates.
The **Rep** filter shows the reps you are allowed to see. Managers see their
team, owners see everyone. Choosing a rep narrows every panel at once.
Choose **Custom dates** in Range, then set From and To. Dates are read in your
own time zone.
**Export** downloads the leaderboard as a CSV with the filters you applied. An
unmeasured rate exports blank, never as 0.
## 🩺 When a number looks wrong
Hard-refresh the page first (**Cmd+Shift+R** or **Ctrl+F5**). If it persists,
your session may have expired — the page will say so. See
[Troubleshooting](/go-live/troubleshooting).
Check your time zone in your profile. If it is wrong, today's calls may be filed
under yesterday. See [How Calls Actually Work](/dialer/how-calls-work).
Look at Screened and Voicemail in the outcome bar. A rise in either lowers your
rate without anybody doing anything wrong. Then check Bad number.
They always should. If they do not, report it — that is a real bug, not a
rounding quirk.
## 🆕 What changed recently
**This whole dashboard was rebuilt.** It now shows what happened to every single
dial in eleven categories that always add up to your dial count, so nothing is
hidden in an "other" pile.
**Three numbers were corrected.** Average talk time now counts every
conversation rather than only the long ones, so it reflects your real floor.
Connect rate now counts voicemail-answered dials in the total, because a dial
that reached a machine is still a dial. The daily chart now counts outbound
calls only, in your own time zone.
Your connect rate may read slightly lower than before. It was previously
overstated — nothing about your calling changed.
**The leaderboard moved here** from its own tab, with sorting and CSV export.
See [What's New](/go-live/changelog) for the full history.
## ➡️ Where to go next
The definitions behind every number here.
Why the engine dials the number of lines it does.
Get these answers in plain language without opening the dashboard.
Per-call detail behind the totals.
---
# Analytics
> Comprehensive analytics dashboard for AI calls, dialer performance, and SMS metrics
Source: https://docs.aisync.link/dashboard/analytics
### 🌐 Global Search
Effortlessly discover any data point throughout your contact center environment with Unified Global Search. This intuitive search tool enables you to instantly access call transcripts, agent logs, SMS, contacts, exchanges, dialer records, delivery reports, and performance dashboards—all from a single location.
**Highlights:**
- **Unified Search Access:** Simultaneously query calls, AI agent logs, SMS histories, dialer runs, and campaign analytics.
- **Smart Filters:** Narrow your results by fields such as date, agent, number, message content, or event classification to zero in on precise data.
- **Seamless Navigation:** Jump directly from search hits to corresponding analytics views, call records, or SMS threads for thorough follow-up.
- **Proactive Issue Detection:** Surface anomalies, errors, or compliance flags using keyword or error code searches.

# 📊 Dashboard Analytics
> **Transform your call center insights with powerful analytics that drive performance optimization**
The Dashboard Analytics provides comprehensive insights into your call center performance across AI, Dialer, and SMS operations. Access real-time metrics, historical data, and performance trends to optimize your communication strategies.

---
## 🎯 Overview
The analytics dashboard is organized into three powerful sections designed to give you complete visibility into your operations:
**🤖 AI Analytics**
**AI agent performance and call intelligence**
**📞 Dialer Analytics**
**Traditional dialer call metrics and ratios**
**💬 SMS Analytics**
**Message delivery and engagement statistics**
---
**🧭 Navigation**
Access analytics through the main navigation sidebar:
1. **Navigate** to **Dashboard** → **Analytics**
2. **Select** your desired analytics view: AI, Dialer, or SMS
> 💡 **Pro Tip**: Use the quick filter options at the top of each section to drill down into specific data sets.
---
# 🤖 AI Analytics
The AI Analytics section provides comprehensive insights into AI agent performance and call intelligence.

### 📞 Number Status Overview
> **Monitor and manage your phone number health with comprehensive spam detection and status tracking**
The Number Status Overview displays the current status of all phone numbers you have purchased for your AI agent. It helps you monitor which numbers are clean, which are flagged as spam, and ensures you can manage your AI agent’s phone number inventory effectively.

**📈 Visual Overview**
The chart displays all phone numbers you have purchased.
- **Clean Numbers**: These are numbers that are ready to use and have no issues—shown as a teal segment in the donut chart.
- **Flagged Numbers**: These numbers have issues or are not ready to use—displayed in red to highlight attention needed.
- **Total Numbers**: Shows the total count of all purchased numbers.
The donut chart and breakdown help you quickly see which numbers are available for use, which need review, and your overall record.
**📋 Detailed Management**
Numbers that are flagged as spam or identified as problematic are displayed in a detailed table below.
**AI Spam Numbers Details Table**
| Column | Description | Functionality |
|------------------|-----------------------------------|-------------------------------------|
| **#** | Row number | Sequential numbering |
| **Phone Number** | Full phone number | Click to sort ascending/descending |
| **Nickname** | Custom number identifier | Sortable by name |
| **Spam Status** | Current spam detection status | Sort by clean/flagged status |
| **Area Code** | Geographic location code | Sort by region |
| **Inbound** | Incoming call volume | Sort by call activity |
| **Outbound** | Outgoing call volume | Sort by call activity |
---
### 🎛️ Filters
The Transfers by Agent chart respects your dashboard filters:
- **Agent Filter**: View all agents or select a specific agent
- **Date Range**: Choose from Today, Yesterday, This Week, Last 7/30 Days, This Month, Last Month, or Custom dates
- **Custom Date Range**: Select your own start and end dates, then click **Filter**
---
**🔍 Filtering Options**
Refine your analytics view with powerful filtering capabilities:
- **Select Agent**: Filter by specific AI agent or view all
- **Date Range**: Choose from predefined periods (Today, Yesterday, This Week, etc.)
- **Start Date**: Custom start date selection
- **End Date**: Custom end date selection
### 📈 Key Metrics
Monitor essential AI performance indicators with real-time updates:
| Metric | Description | Impact |
|--------|-------------|---------|
| **Total Agents** | Number of active/inactive AI agents | Scale your operations |
| **Total Numbers** | Available phone numbers | Resource availability |
||
| **Total Calls** | Total call volume | Activity level |
| **Avg Duration** | Average call length | Efficiency indicator |
| |
| **Appointments** | Total appointments generated within selected date range | Click to view detailed modal |
| **Select Agent** | Filter data by specific AI agent for appointment tracking | Select "All" to view appointments from all agents, or choose a specific agent to see only their appointments |
||
| **Appointment Details Modal** | Interactive table showing all appointments with call details, agent info, contact numbers, duration, scheduling status, sentiment analysis, and recordings. Includes filtering, search, and pagination for easy navigation. | Comprehensive appointment tracking |
||
| **Call Counts** | Daily call volume trends | Activity monitoring |
||
| **Call Direction** | Distribution of inbound, outbound, and web calls | Channel performance analysis |
||
| **Disconnection Reason** | Analysis of call termination causes | Quality insights |
||
| **Transfer & Voicemail** | Analysis of call transfers and voicemail drops | Call handling insights |
| **Average Call Duration** | Mean duration of all calls within selected timeframe | Call efficiency and engagement tracking |
| **Appointments** | Total appointments scheduled within selected timeframe | Conversion and booking success tracking |
||
| **Call Rate** | Success rate of calls over time | Performance tracking |
| **Transfer by Agent** | Percentage of calls transferred by agents | Agent transfer efficiency tracking |

### 🔄 Call Transfers By Agent
> **Track and analyze when your AI agents transfer calls to human representatives**
A call transfer occurs when your AI agent hands off a call to a human representative or another phone number. This happens when callers request human assistance, complex issues arise, or your transfer criteria are met.
---
The **Transfers by Agent** chart shows which agents are transferring the most calls using a doughnut chart visualization.

**Reading the Transfers by Agent chart:**
| Element | Description |
|-------------------|-----------------------------------------------------|
| **Colored Segments** | Each color represents a different AI agent |
| **Segment Size** | Larger segments = more transfers by that agent |
| **Center Space** | Empty center for clean visualization |
**How to interpret:**
- If "Agent Sarah" has the largest segment, she transferred the most calls.
- Smaller segments indicate agents with fewer transfers.
- Hover over any segment to see exact numbers.
**How to view transfer details:**
1. Click directly on a colored segment of the doughnut chart,
2. Select an agent’s name from the legend below the chart,
3. Or, if there are many agents, click the **"+X more"** link and pick an agent from the expanded list.
---
#### 🔍 Transfer Details
When you click on an agent, the **Transfer Details** modal opens showing all transfer records for that agent.

**Table columns:**
| Column | Description |
|--------|-------------|
| **Call Date** | Date and time of the call |
| **Agent** | AI agent who handled the call |
| **From** | Caller's phone number |
| **To** | Destination phone number |
| **Duration** | Call length |
| **Status** | Shows "Call Transfer" |
| **Direction** | Inbound or Outbound |
| **Sentiment** | Positive, Neutral, or Negative |
| **Recording** | Audio player to listen to the call |
| **Actions** | View complete call details |
**Table features:**
- **Search**: Find specific calls using the search box
- **Sort**: Click column headers to sort
- **Pagination**: Navigate through pages
- **Entries**: Choose 10, 25, 50, or 100 rows per page
The Call Details modal, as shown below, provides an in-depth view of a transferred call record:

**What you’ll see in the Call Details modal:**
- **Call info panel:** Displays agent name, call date and time, duration, direction (inbound/outbound), source and destination numbers, and appointment info (if available).
- **Call Analysis:** Highlights whether the call was successful, sentiment classification (Positive, Neutral, or Negative), and the reason for call hangup (e.g., "Call Transfer").
- **Recording player:** Listen to a real call audio file right in the modal—press play to review the interaction.
- **Summary:** A concise text explanation of what happened during the call, such as who the user was transferred to and what actions the agent took.
- **Transcription:** Read a detailed, line-by-line transcript of the call so you can quickly scan how the conversation unfolded.
This detailed call modal helps supervisors and analysts review agent performance, audit the quality of transfers, and understand both outcome and customer experience—offering transparency and actionable insights for every recorded transfer call.
---
## 📞 Dialer Analytics
> **Transform your call center insights with powerful analytics that drive performance optimization**
The Dialer Dashboard is your central hub for monitoring and analyzing call performance across your team. It provides real-time insights, historical trends, and detailed analytics to help you make data-driven decisions.

**How to Access:**
1. Navigate to **Dashboard** from the sidebar
2. Click on **"Dialer"** tab at the top
3. Start exploring your call analytics!
---
### 🔍 Filters & Controls
Located at the top of the dashboard, these powerful filters control what data you see across **ALL tabs**. Master these controls to unlock deep insights into your team's performance.

### 📅 Date Range Filter
Choose from quick shortcuts or create custom date ranges:
| Option | Description |
|--------|-------------|
| **Today** | Shows today's activity only |
| **Yesterday** | Previous day's complete data |
| **This Week** | Current week (Sunday/Monday to today) |
| **Last Week** | Complete previous week |
| **Last 7/14/30 Days** | Rolling date windows |
| **This Month** | Current month's data |
| **Last Month** | Previous month's data |
| **Custom dates** | Choose any date range |
**How to Use Custom Dates:**
1. Select **"Custom dates"** from dropdown
2. Choose your **Start Date** from the calendar
3. Choose your **End Date** from the calendar
4. Click **"Filter"** button to apply changes
> 💡 **Pro Tip:** Use custom dates for specific campaign periods, quarterly reviews, or comparing performance across different timeframes.
### 👥 Agents Filter
Select which team member's data you want to view:
- **All** → Combined data for entire team (team overview)
- **Individual Agent** → Specific person's performance (individual coaching)
**Special Cases:**
- **Solo users:** The dropdown hides itself (you'll always see your own data)
- **No team yet?** The dropdown will show "Team Not Setup"
**🔘 Filter Button**
After making any changes to filters, click **"Filter"** to update all dashboard data instantly.
While your data loads, you'll see a friendly **"Please wait. Action in process..."** message—then you're ready to explore!
---
### 📈 Top Statistics Cards
Six key metrics displayed at the top provide an instant performance overview at a glance. These cards update automatically based on your selected filters.

### 📊 Metric Breakdown
| # | Metric | What It Shows | Why It Matters |
|---|--------|---------------|----------------|
| **1** | **Total Calls** | Total number of calls in selected date range | Activity level indicator |
| **2** | **Active Dialers** | Number of active team members | Team engagement status |
| **3** | **Avg Talk Time** | Average call duration (MM:SS format) | Efficiency measurement |
| **4** | **Connection Rate** | Percentage of calls that were answered | Success rate indicator |
| **5** | **Appointments Set** | Number of appointments booked | Conversion tracking |
| **6** | **Live Transfers** | Number of calls transferred | Support escalation rate |
**📞 1. Total Calls**
- **Label:** Changes dynamically based on filter (e.g., "Today", "This Week", "Last Month")
- **Use Case:** Track daily, weekly, or monthly call volume trends
**👥 2. Active Dialers**
- **Details:** Shows idle and break counts
- **Definition:** Active = Made a call in last hour
- **Use Case:** Monitor team availability and engagement
**⏱️ 3. Avg Talk Time**
- **Format:** MM:SS (minutes:seconds)
- **Use Case:** Measure conversation quality and efficiency
**📈 4. Connection Rate**
- **Details:** Shows total number of connects
- **Formula:** Connected Calls ÷ Total Calls × 100%
- **Higher = Better performance**
- **Use Case:** Track call success rate and campaign effectiveness
**Connection Rate currently reads higher than it should.** Calls that were answered but never reached a rep are being counted as connects, and "No Answer" is acting as a catch-all for several different outcomes. Use this figure for trends, not as a record of performance, and check the call history for what happened on a specific call. This is being corrected.
**📅 5. Appointments Set**
- **Details:** Shows conversion rate percentage
- **Based on:** Disposition marked as "Appointment"
- **Use Case:** Measure booking success and conversion rates
🔄 6. Live Transfers**
- **Details:** Shows transfer rate percentage
- **Use Case:** Monitor support escalation and team collaboration
---
## ⭐ Call Quality Tab
The Call Quality tab provides a detailed breakdown of your call performance with visual charts and comprehensive metrics. This is your go-to view for understanding call distribution and success rates.

### 🥧 Call Ratio at a Glance
A colorful circle chart instantly shows your team's ratio of incoming vs. outgoing calls—complete with percentages and total call counts.
**What You'll See:**
- **Incoming Calls:** All calls received (answered, missed, voicemail)
- **Outgoing Calls:** All calls made (connected/unanswered)
- **Visual Balance:** Instantly see if you're making more calls or receiving more
**📤 Outbound Calls Section**
Displays comprehensive statistics for calls you made:
**Three Key Metrics:**
| Metric | Description |
|--------|-------------|
| **No Answer** | Calls that weren't picked up by recipients |
| **Connected** | Successfully answered calls |
| **Pickup Rate** | Percentage of answered calls (Connected ÷ Total × 100%) |
**Visual Chart:** Interactive breakdown of outbound call distribution with clear visual indicators.
**📥 Inbound Calls Section**
Shows incoming call performance and response rates:
**Three Key Metrics:**
| Metric | Description |
|--------|-------------|
| **Missed** | Calls you didn't answer |
| **Voicemails** | Messages left by callers |
| **Answered** | Successfully handled calls |
**Visual Chart:** Clear breakdown of inbound call types with percentage distribution.
**📊 Daily Call Volume Chart**
Track call activity patterns over time:
- **What it shows:** Number of calls per day
- **Timeline:** Intelligently adapts to your date range
- **Short ranges:** Daily breakdown (day by day)
- **Long ranges:** Monthly breakdown (month by month)
- **Smart Labels:** Automatically shows years when viewing multiple years
- **Use Case:** Identify peak calling days and activity patterns
**📈 Connection Rate Trend Chart**
Monitor success rates over time to identify trends:
- **What it shows:** Success rate over time
- **Metric:** Percentage of answered calls
- **Trend Analysis:** Helps identify performance patterns
- **Use Case:** Track improvement or decline in connection rates
---
## 🚀 Performance Tab
The Performance tab shows intelligent charts that adapt based on your selected date range. These adaptive visualizations help you understand trends and patterns across different time periods.

**🧠 Smart Adaptive Chart**
This intelligent chart automatically adapts its display based on your selected date range:
**Chart Behavior by Time Range:**
| Time Range | Display Format |
|------------|----------------|
| **Today** | Hourly breakdown (8 AM, 9 AM, 10 AM...) |
| **This Week** | Daily breakdown (Mon, Tue, Wed...) |
| **This Month** | Weekly breakdown (Week 1, 2, 3, 4) |
| **Yearly/Long Range** | Monthly breakdown (Jan, Feb, Mar...) |
### 📊 Three Performance Lines
The chart displays three key metrics simultaneously:
1. **🟣 Purple Line (Call Minutes)**
- Total talk time in minutes
- Measures conversation duration
2. **🟢 Green Line (Appointments)**
- Number of appointments set
- Tracks booking success
3. **🟠 Orange Dashed Line (Connection Rate)**
- Success percentage
- Shows call answer rate
**📐 Dual Y-Axes System**
**Left Axis:** Minutes & Appointments (0-100 scale)
**Right Axis:** Connection Rate (0%-100% scale)
This dual-axis design allows you to compare different metrics on the same chart without losing detail.
**🎯 How to Read the Chart**
- **Hover** over any point to see exact values
- **Compare** trends across different metrics
- **Identify** peak performance periods
- **Spot** correlations between metrics
> 💡 **Pro Tip:** Look for patterns where high call minutes correlate with high appointments—this indicates effective conversations leading to bookings.
---
## 📋 Power Lists Tab
Easily track performance and progress across all your power lists with clear analytics and completion tracking. This section helps you monitor which lists are performing, spot bottlenecks, and manage campaign completion—right from a single dashboard.

---
**🔹 Power List Performance**
- Search and filter through all Power Lists with the search bar at the top right and filter button for quick access.
- Each Power List row or card displays:
- **List Name** (e.g., "dev1")
- **Progress Bar** — shows how many contacts have been reached, both numerically (“X / Y”) and as a percentage, with a solid progress indicator.
- **Status Badge** — visually shows if the list is active or completed.
- **Key Metrics** for each list:
- **Total Calls** — How many calls have been made on this list.
- **Connection Rate** — Shows the success percentage (e.g., “56.3%”).
- **Avg Call Time** — Average call length for the list (e.g., “0:31”).
- **Connected** — Number of successful/connected calls.
- Quickly review progress, completions, and campaign health at a glance.
---
**📊 Power List Analytics**
Get a summary of performance for all power lists in your dashboard with dedicated analytics cards.
- Each metric is shown in its own card for quick visual reference:
| Metric | Value Example | Description |
|----------------------|---------------|--------------------------------------------------------|
| **Total Calls** | 16 | Total calls placed to all power lists combined |
| **Connection Rate** | 56.3% | Percent of calls that reached and connected |
| **Appointments** | 0 | Total appointments booked from these calls |
| **Avg Call Duration**| 0h 8m | Average call duration in hours/minutes |
| **Conversion Rate** | 56.3% | Percentage of converted leads/calls |
| **Live Transfers** | 0 | Number of calls transferred to a human |
| **Total Talk Time** | 0h 8m | Combined talk time across all calls (formatted xh ym) |
| **Contacts Remaining** | 47 | Number of un-contacted leads left in all lists |
- All values update according to your selected date range and filter options at the top of the page.
- Cards provide a clear overall campaign health metric so you can act quickly if engagement is dropping.
---
**How to Use:**
- Use the search and filter bar to quickly narrow down large numbers of power lists.
- Progress bars and status indicators help you prioritize which campaigns need attention.
- Use analytics totals to spot trends and address low-connection or low-conversion lists.
---
## 📊 Dispositions Tab
Visual representation and detailed breakdown of call outcomes to understand what happened after calls ended. This tab helps you analyze call results and identify patterns in customer responses.

**🥧 Disposition Breakdown Chart (Pie Chart)**
Beautiful visual representation of call outcomes with color-coded segments.
**What it shows:**
- ✅ Percentage distribution of each disposition
- ✅ Color-coded segments for easy identification
- ✅ Total count for each outcome
- ✅ Interactive hover details
**Common Dispositions:**
- 📅 **Appointment Set** → Successfully booked appointments
- 🔄 **Live Transfer** → Calls transferred to specialists
- 📞 **Call Back** → Scheduled follow-up calls
- ❌ **No Answer** → Unanswered calls
- 👎 **Not Interested** → Declined offers
- 📧 **Voicemail** → Messages left
### 🧮 How Are These Numbers Calculated?
Understanding the calculations behind your metrics helps you interpret the data accurately and make informed decisions.
**📊 Calculation Formulas**
| Metric | Calculation Method |
|--------|-------------------|
| **Incoming Calls** | All calls flagged as "Inbound" (including completed, missed, and voicemails) |
| **Outgoing Calls** | Every call set as "Outbound" (both successful and missed) |
| **No Answer** | Outbound calls not marked as "Completed" |
| **Connected** | Outbound calls marked as "Completed" |
| **PickUp Rate** | Connected ÷ Outgoing × 100% |
| **Missed Calls** | Inbound calls not completed |
| **Voicemails** | Calls where voicemail was left |
| **Answered** | Inbound calls completed by your team |
| **Talk Time** | Combined duration of all completed calls (shown as hh:mm:ss) |
| **Disposition Data** | How many times each call outcome was selected in the time frame |
> 💡 **Note:** All calculations are based on your selected date range and agent filter settings.
---
### 🔄 Real-Time Automatic Updates
Experience seamless, instant data updates without manual refresh.
**How It Works:**
- ✅ **Automatic Updates:** Get fresh data the moment you switch any filter
- ✅ **Instant Refresh:** Select another agent or date range for immediate updates
- ✅ **Progress Indicator:** See a helpful "Please wait. Action in process..." message
- ✅ **No Reload Needed:** Everything updates instantly in the background
> 💡 **Pro Tip:** The dashboard updates in real-time, so you always see the most current data without clicking refresh.
---
# 🏅 Leaderboard
Gain live insight into your team's achievements by reviewing rankings, comparing activity, and celebrating standouts. Use this tab to cultivate a culture of recognition and healthy competition, while identifying strengths and coaching opportunities across your workforce.

---
### 🎚️ Versatile Filtering & Display Controls
**Filter Criteria**
- **By Disposition:** Identify agents most effective at setting appointments or progressing leads.
- **By Dialer Activity:** Highlight those consistently engaging in call outreach.
- **By Subscription:** Drill down to monitor performance by subscription tier or plan segment.
**Presentation Modes**
- **Board (Card) View:** Intuitive, engaging agent cards with profile photos and quick stats—great for shoutouts and visual leaderboards.
- **List (Table) View:** Condensed tabular format for advanced comparison, easy scanning, and quick sorting.
---
### 👤 What’s on Each Agent Card (Board View)?
Agent cards in the Board View surface key information for rapid assessment and motivation:
- **Agent’s Name & Photo:** Foster personal recognition and team spirit.
- **Status Lights:** Instantly see if someone is Online 🟢, Busy (On Call) 📞, or Offline ⚫.
- **Total Calls Initiated:** Activity count for the chosen date range.
- **Primary Metric:** Displays the value most closely linked to your selected leaderboard filter (e.g., appointments, calls, minutes).
- **Current Rank:** See their live position on the leaderboard.
- **Achievements & Badges:** Quickly acknowledge top daily/weekly/monthly performers (if available).
---
### 📦 Data Export & Sharing Made Simple
Need to work with the data outside the dashboard? Just click **"Export"** to instantly download all leaderboard stats as a ready-to-use Excel spreadsheet.
**You can use exported data to:**
- Generate detailed performance reviews and custom reports
- Distribute insights to managers, stakeholders, or team members
- Maintain historical archives for tracking progress
- Dive deep with your own spreadsheets and analysis tools
> **Tip:** Use Excel’s pivot tables or Google Sheets to create custom charts, analyze trends, or merge with other KPIs for broader business intelligence!
---
# 💬 SMS Analytics
See how your SMS is performing: how many you sent, how many were delivered, failed, or replied to, and how that changes over time.

---
**🎯 What You See Here**
- **Top:** Filters (date, agent, provider, phone number, powerlist) so you can narrow the data.
- **Middle:** Four numbers — **Sent**, **Delivered**, **Failed**, **Replies** — that update when you change filters.
- **Bottom:** Charts (pie, donut, line) showing volume, delivery rate, and outbound vs inbound.
Open **Dashboard** → **Analytics** → **SMS** tab. It loads with **Today** by default.
---
### 🎛️ Filters (Top of Page)**

- **📅 Date Range** — Today, Yesterday, This Week, Last 7/14/30 Days, This Month, Last Month, or **Custom dates** (then use Start/End date).
- **👥 Agents** — All, Company, or a specific agent (options depend on account type).
- **📱 Provider** — All, Ai Sync, Twilio, or Ai Sync V2. Changing this updates the Phone Number list.
- **📞 Phone Number** — All numbers or one number; list depends on the provider you chose.
- **📋 Powerlist** — All lists or one list; then click **Filter** to apply.
Changing any filter refreshes the dashboard automatically.
---
**📊 The Four Numbers (Statistics Cards)**

- **📤 Sent SMS** — Total messages sent in the selected period.
- **✅ Delivered** — How many reached the recipient.
- **❌ Failed** — How many did not deliver.
- **💬 Replies** — How many incoming messages you got.
These four cards always show data for your current filter choices.
---
### 📈 Charts (Performance Overview)

- **🥧 Pie chart** — Split of Sent, Delivered, Failed, Replies (with counts).
- **📤 Outbound** — Donut: messages you sent, by delivered vs failed.
- **📥 Inbound** — Donut: messages you received, by status.
- **📉 Daily volume** — Line graph: how many SMS per day (hover for exact count).
- **📈 Delivery rate trend** — Line graph: % delivered per day; **Average Rate** shown on the right.
Hover on chart points to see exact values.
---
**📖 Quick Definitions**
- **Sent** = Left your system; **Delivered** = Reached the recipient’s phone. A message can be Sent but not yet Delivered.
- **Outbound** = You sent it; **Inbound** = You received it (replies).
- **Statuses:** Delivered (reached), Failed/Undelivered (didn’t reach), Pending (in transit), Sent (submitted).
---
**📋 In Short**
Use the SMS tab to see sent vs delivered vs failed vs replies, and how that changes by date, agent, provider, or number. All numbers and charts update when you change filters.
---
## 🔧 Troubleshooting
**❌ Common Issues**
- **No Data Displayed**: Ensure date range is set correctly and agents are active
- **Missing Metrics**: Verify agent permissions and data collection settings
- **Filter Not Working**: Check that selected agents are active and date range is valid
**🔄 Data Refresh**
- Analytics data updates in real-time
- Historical data may take up to 24 hours to appear
- Contact support if data appears inconsistent
---
---
# How Calls Actually Work
> The full path a call takes, what each outcome means, and which numbers you can trust. Read this before you read any report.
Source: https://docs.aisync.link/dialer/how-calls-work
Every number on every dashboard comes from one path through the system. If you
know the path, you know what each figure is counting — and, just as important,
what it is *not* counting.
This page is the shared vocabulary for the whole product. The
[Dialer Performance dashboard](/dashboard/dialer-performance), the
[reports](/reports/call-reports), and your
[AI agent](/connect-mcp) all use the definitions below. When a
number looks wrong, start here.
## 🗺️ The path of one dial
```mermaid
graph TB
A[📋 Lead from a Power List] --> B[📞 AI Sync places the call]
B --> C{Did anything pick up?}
C -->|Nothing| D[📵 No answer / Busy / Bad number]
C -->|Something answered| E{Who or what answered?}
E -->|🤖 Answering machine| F[📼 Voicemail]
E -->|📱 Handset screened it| G[🛡️ Screened]
E -->|🧑 A real person| H{Was a rep free?}
H -->|Yes| I[✅ Connected — a real conversation]
H -->|No| J[⚠️ Answered, no rep]
style I fill:#1f7a4d,color:#fff
style J fill:#a33,color:#fff
style F fill:#b4531f,color:#fff
style G fill:#6b3fa0,color:#fff
```
Only the green box is a conversation. Everything else answered in some sense,
which is exactly why "answered" and "connected" are different words here.
**Answered, no rep** is the one to watch. A real person picked up and reached
nobody. Regulators call this an abandoned call, and the limit is 3% of live
human answers. Our engine stops itself well before that — see
[Predictive pacing](/dialer/predictive-pacing).
## 📖 What each outcome means
A person answered and reached one of your reps. This is the only outcome that
can become a sale.
**Counted when:** a human answered, the call bridged to a rep, and there was
real audio. A machine verdict, a voicemail verdict, or a screening verdict can
never be counted here, no matter how long the call lasted.
Somebody picked up the phone and never got a human. Usually every rep was
already talking when the call landed.
**What to do:** lower your lines per rep, or put more reps on the floor. This is
the number the pacing engine exists to hold down.
An answering machine picked up. The system detects this by listening to the
greeting, then stops the call from reaching a rep.
**Why it matters:** a voicemail is a dial that cost you money and reached
nobody. It is counted in your dials, never in your connects.
The lead's phone answered on their behalf — iPhone Call Screening, Google Call
Screen, or a carrier screening service. A recorded voice asks who is calling.
**Why it is its own category:** a screened call is not a machine and not a
person. The lead may well call you back. Merging it into "voicemail" hides that,
and counting it as a connect inflates your rate with conversations that never
happened. See [iPhone screening](/dialer/iphone-screening).
It rang out. Nobody home.
They saw the call and actively rejected it. This is a signal about your list or
your caller ID, not a missed opportunity.
Your side cancelled before the lead could answer. Almost always pacing: too many
lines for the reps available.
The number does not exist. You are paying to dial it every time it comes round
in the list. Worth cleaning.
The call failed on the network. Watch the trend, not the individual call.
## 🧮 The formulas, in plain words
| Metric | How it is worked out | Common misreading |
|---|---|---|
| **Dials** | Every outbound call placed, including ones that hit voicemail. | People expect voicemails to be excluded. They are dials — they cost money. |
| **Connects** | Dials where a person answered **and** reached a rep. | Not "answered". A voicemail is answered and is not a connect. |
| **Connect rate** | Connects ÷ dials. | If this seems low, check your Screened and Voicemail counts before blaming reps. |
| **Avg talk time** | Averaged over **every** conversation, short ones included. | A 30-second floor makes this look far higher than reality. We do not use one. |
| **Answered, no rep** | A human answered, no rep took it. | This is your abandonment number. Watch it. |
**One reconciliation rule.** On the dashboard, the outcome breakdown always adds
up to your dial count exactly. If the bars sum to a different number than the
tile above them, something is wrong — tell your agent, or see
[Troubleshooting](/go-live/troubleshooting).
## 🌍 Time zones change your numbers
Every figure is bucketed by **your** day, not the server's. "Today" means today
where you are.
Open your profile in the top right, choose your time zone, and save. See
[Profile settings](/profile-settings/profile).
The Dialer Performance header shows the time zone the numbers are using. If it
does not match where your reps sit, the day boundaries will be wrong.
If your time zone is wrong, an evening call can land on the next day's report.
The numbers are still correct — they are just filed under a day you did not
expect.
## 🆕 What changed recently
**These definitions are now enforced everywhere.** The dashboard, the reports
and any AI agent connected to your account all use the same rules, so two
screens can no longer disagree about what a connection is.
**Phone screening became its own outcome**, separate from voicemail and from a
real conversation.
See [What's New](/go-live/changelog) for the full history.
## ➡️ Where to go next
Read your numbers and know which ones to act on.
How the engine decides how many lines to dial.
What screening is and how we detect it.
Get these answers without opening the dashboard.
---
# Predictive Dialer
> Create and manage outbound voice campaigns for AI agents and for live human reps.
Source: https://docs.aisync.link/dialer/predictive-dialer
**Predictive dialing for live human reps is available now.** The engine paces a
shared list across your floor instead of each rep picking their own lines. It
takes two deliberate steps to switch on and has hard safety limits — see
[Predictive pacing](/dialer/predictive-pacing).
New to the numbers? Start with
[How calls actually work](/dialer/how-calls-work).
## 📞 Voice Campaigns
Open the Voice Campaigns page to create, monitor, and manage outbound calling campaigns:
https://app.aisync.link/manage/voice_campaign

**Top actions**
- **Search campaigns…** — find campaigns by name.
- **+ New Campaign** — open the Voice Campaign Builder.
**Table columns**
| Column | Description |
|--------|-------------|
| **Campaign** | Campaign name (AI campaigns show a robot icon). |
| **Type** | Campaign engine — for example **AI**. |
| **Status** | Current state — Pending, In Progress, Paused, or Completed. |
| **Calls / HR** | Target calls per hour for the campaign. |
| **Created** | Date and time the campaign was created. |
| **Actions** | Start, edit, view report, or delete (availability depends on status). |
## 🚀 Launch a Voice Campaign
Select **+ New Campaign** to open the Voice Campaign Builder.

### 📝 Step 1 — Campaign Type
Choose the campaign engine:
- **AI Campaign** — automated calling powered by your selected AI voice agent. Available for new campaigns.
- **Dialer** — predictive dialer workflow for live human agents. Shown as **Coming Soon**.
### 🧠 Step 2 — AI Campaign Details
Fill in the following fields:
**Campaign Title**
Enter a clear name for your campaign (e.g., "June patient follow-up").
**AI Agent**
Select the AI voice agent that will place or handle the calls.
**Calls Per Hour**
Set how many calls the campaign should attempt each hour (e.g., `120`).
**Local Presence**
Choose whether to use local presence dialing (`Yes` or `No`).
**Pipeline**
Select the pipeline this campaign should use.
**Pipeline Stages**
After choosing a pipeline, select which stages the campaign should dial.
**Powerlist**
Select one or more contact lists. Use search to find lists, then check the ones to include. A badge shows how many powerlists are selected.
The **Campaign Summary** panel on the right updates as you configure the campaign (type, AI agent, local presence, pipeline, stages, powerlists, and calls per hour).
Click **Create Campaign** when ready. Campaigns are saved as **Pending** until you start them from the campaign list.
## 🎯 Predictive Dialer + AI Agent Handling
### 🔄 Dialing Behavior
When the Dialer engine is available, the system dials multiple numbers at a time using predictive dialing.
When multiple contacts pick up:
Example: 3 people answer, but only 1 human agent is available:
- ✅ 1 call → routed to available human agent
- 🤖 2 remaining calls → routed to AI agents
### 🤖⚙️ AI Agent Assignment (Per PowerList)
Each PowerList can have a dedicated AI agent assigned.

This allows dynamic customization of:
- 🤝 Tone & behavior
- 📜 Script logic
- 🎯 Lead type handling
AI agents act as backups for overflow or after-hours handling.
### 🔁 Callback Handling Logic
If a contact picks up but drops (due to no human agent available) or misses the call:
That lead is automatically flagged for callback.
The PowerList-assigned AI agent will:
- Re-engage the lead via automated callback
- Attempt to qualify, reschedule, or book appointment directly
## 🆕 What changed recently
**Predictive dialing for live human reps is available.** Previously campaigns
were for AI agents only. An admin can now pace a shared list across a floor of
reps, and reps never pick their own line count.
Turning it on takes two deliberate steps and it will not run below two reps
online. See [Predictive pacing](/dialer/predictive-pacing).
See [What's New](/go-live/changelog) for the full history.
---
# Power Dialer
> Dial a power list with your own lines, reset a list daily, and find any call in Call history: transcripts, sentiment, search and CSV export.
Source: https://docs.aisync.link/dialer/power-dialer
Power Dialer gives each rep their own lines. If several reps share one list,
[Predictive pacing](/dialer/predictive-pacing) hands that decision to the engine.
For what "connected" and "answered" actually count, see
[How calls actually work](/dialer/how-calls-work).
The Power Dialer is your comprehensive outbound calling solution designed to maximize efficiency and productivity. This powerful tool automates your calling campaigns, manages contact lists intelligently, and provides real-time insights to help you connect with more prospects in less time.
The Power Dialer automatically dials through your contact lists, eliminating manual dialing delays and helping your team focus on conversations rather than number entry.
## 🚀 Getting Started
**🧭 Accessing the Power Dialer → Navigate to Dialer**
### 🖥️ Interface Overview
Your Power Dialer workspace includes:
**Left sidebar (campaign setup)**
- **🎧 Audio / Keypad** — switch between audio settings and the dialpad
- **🏷️ From Number** — choose the outbound caller ID line
- **🌎 Local Presence** — turn area-code matching on or off
- **📋 Select PowerList** — choose which contact list to dial
- **🗂️ Pipeline & Stage** — optionally limit dialing to contacts in a pipeline stage
- **📈 PowerList stats** — uploaded, removed, dial-at-a-time, and attempt limits
- **🟢 Status** — dialer and call readiness
**Top bar (live session)**
- **▶️ Start Dialing** — begin calling from the selected list
- **📊 Remaining / Dialed / Connected** — live campaign counts
- **⏱️ Talk Time** — total talk duration, with a filter icon to refine how it is calculated
Also available from the dialer’s navigation: call history, voicemail/recordings, notes/documents, and audio controls.
These statistics update in real-time as your campaign progresses, helping you track performance and adjust strategy as needed.
#### 🏷️ From Number & Local Presence
**From Number** sets the caller ID recipients see when you call.
- Choose a specific number, or an option such as **Calling From AI Local Presence**.
- Your available numbers are the ones purchased and configured on your account.
**Local Presence** (`Yes` / `No`) controls whether the dialer tries to match caller ID to the contact’s area code.
- **Yes** — use local-style caller ID where available (often with a Local Presence “From Number” option).
- **No** — use the selected From Number without area-code matching for this session.
For full Local Presence behavior and batching rules, see [Outbound Call Routing](/dialer/outbound-call-routing).
#### 📋 PowerList Selection
The **Select PowerList** dropdown is your primary tool for choosing which contact list to dial. Agents can switch between campaigns and segments from the left panel.
**✔️ How to select a PowerList**
1. Open **Select PowerList** in the left panel.
2. Confirm the selected list name.
3. Optionally set **Pipeline** and **Stage** (see below).
4. Click **Start Dialing**.
**📈 PowerList status overview**
| Metric | Description |
|--------|-------------|
| **UPLOADED** | Total contacts in the selected powerlist |
| **REMOVED** | Contacts removed or filtered from the list |
| **Dial At Time** | How many contacts dial at once / dial pacing for the list |
| **Max Attempts Daily** | Maximum calls per contact per day |
| **Max Attempts Total** | Lifetime maximum attempts per contact |
#### 🗂️ Pipeline & Stage
Use **Select Pipeline** and **Select Stage** to narrow who gets dialed from the PowerList.
- Leave stage empty to dial contacts from the list without stage filtering.
- If a **pipeline stage** is selected, dialing **only includes contacts assigned to that stage**.
If you select a stage and few contacts are assigned to it, Remaining/Connected counts may look lower than the full PowerList size.
### ⏱️ Talk Time Filters
**Talk Time** on the top bar shows how much time agents have spent connected (talking) for the current filter scope.
Next to the **TALK TIME** label, click the **gear / filter** icon to open **Talk Time Filters**.
**Fetch Talk Time By**
| Option | What it includes |
|--------|------------------|
| **Powerlist** | Talk time for the **selected PowerList only** |
| **Overall** | Talk time for **all calls across the company** |
**Date Range**
Choose the period used when calculating Talk Time (for example **All Time**, or another range from the dropdown).
**Apply / Cancel**
1. Select **Powerlist** or **Overall**.
2. Pick a **Date Range**.
3. Click **Apply** to update the Talk Time display, or **Cancel** to close without changing filters.
Use **Powerlist** when comparing performance on one campaign list. Use **Overall** when you want company-wide talk time.
### 🛠️ PowerList Management Features
- **Real-time Updates**: Statistics update automatically as you dial
- **Quick Switching**: Change powerlists without interrupting your workflow
- **Campaign Segmentation**: Use different lists (and pipeline stages) for different audiences
- **Test Campaigns**: Use smaller lists for testing before full deployment
- **Progress Tracking**: Monitor how many contacts remain in your current list
**💡 Best Practices for PowerList Selection**
Create separate powerlists for different customer segments, time zones, or campaign types
Use smaller test lists to verify your approach before dialing larger contact lists
Keep track of remaining contacts and adjust your strategy based on performance
Ensure your powerlists comply with calling regulations and include opt-out mechanisms
#### ⚙️ Campaign Configuration
| Setting | Purpose |
|---------|---------|
| **Uploaded** | Total contacts uploaded to the current PowerList |
| **Removed** | Contacts removed or filtered out from the list |
| **Dial At Time** | Dial pacing / how many contacts dial together for the list |
| **Max Attempts Daily** | Maximum number of attempts per contact per day |
| **Max Attempts Total** | Lifetime maximum attempts per contact across campaigns |
### ☎️ Manual Dialing Interface
**📝 When to Use Manual Dialing**
While the Power Dialer automates most calling, manual dialing is useful for:
- **Priority callbacks**: Immediately calling high-value prospects
- **Custom numbers**: Dialing numbers not in your PowerList
- **Testing**: Verifying audio setup before campaigns
- **Emergency contacts**: Quick access to important numbers
**⌨️ Dialpad Features**
- **Number Input Field**: Enter complete phone numbers (format: +1800XXXXXXX)
- **Standard Keypad**: Traditional phone layout with alphabetic shortcuts (ABC, DEF, etc.)
- **Call Button**: Purple call initiation button to start the call
- **Number Formatting**: Automatic formatting for international and domestic numbers
Type or click the phone number in the input field
Ensure the number includes country code (+1 for US)
Click the purple call button to start dialing
### 📋 Call History Management
Open **History** in the dialer to see every call. Each row shows who you called, the numbers, the outcome, how long you talked, the lead's **sentiment** and when it happened.
#### Read the transcript
Click **Transcript** under a name to open the call. You'll see the sentiment, a short summary and the full transcript. Click **Hide transcript** to close it. Calls without a recording show **Details** instead.
#### Sentiment
AI Sync scores how the lead sounded once a call has a transcript:
| Pill | Meaning |
| --- | --- |
| **Positive** | The lead sounded interested or happy |
| **Neutral** | Neither positive nor negative |
| **Negative** | The lead sounded unhappy or not interested |
| **–** (Not scored) | No transcript, or too short to judge |
Use the **Sentiment** filter (All, Positive, Neutral, Negative, Not scored) and click **Filter** to show only those calls.
#### Search by name or number
Type a name or phone number in **Search Log** and press Enter. If you haven't picked a date range, search looks back over the last 90 days, so you can find older calls without changing the dates.
#### Download CSV
Click **Download CSV** to save the calls you're looking at as a spreadsheet, with transcripts. It uses the same date range, filters and search as the table.
#### Other filters
- **Date Range**: Today, other presets, or Custom start and end dates
- **Status** and **Direction** (inbound or outbound)
- **Call Duration**: for example only calls with talk time, or 1+ minute
- **Play** and download recordings, and **Call Again** from any row
**🎧 Audio Device Management**
Complete audio configuration includes:
**🎤 Microphone Settings**
- **Device Selection**: External Microphone (Realtek Audio)
- **Voice Input Configuration**: Optimized for call quality
**🔊 Ringtone Configuration**
- **Speaker Selection**: Default - Headphones (Realtek Audio)
- **Test Functionality**: Audio testing capability
- **Incoming Call Audio**: Dedicated ringtone device
**📢 Output Speaker Settings**
- **Remote Audio**: DTMF sound configuration
- **Speaker Device**: Default - Headphones (Realtek Audio)
- **Audio Testing**: Built-in test controls
**🔄 Device Management**
- **Reload Audio Devices**: Refresh available devices
- **Refresh Devices**: Update device list
- **USB Headset Tip**: Noise reduction recommendation
**🎵 Audio Tone Settings**
- **Hangup Tone**: Enable/disable call end tones
- **Ringtone Controls**: Test, Mute, Enable options
- **Outbound Ringback Tone**: Test, Mute, Enable controls
### 📊 System Status Dashboard
The status dashboard provides real-time visibility into your dialer's operational state and readiness.
#### 🟢 Status Indicators Explained
**Dialer Status**
- **"Not ready..."**: System is initializing or loading PowerList
- **"Ready"**: Dialer is prepared and waiting for instructions
- **"Dialing"**: Currently attempting to connect a call
- **"Connected"**: Active call in progress
**Call Status**
- **"Idle"**: No active calls, ready to dial next number
- **"Ringing"**: Outbound call is ringing
- **"Connected"**: Call successfully connected
- **"Disconnected"**: Call ended, preparing for next dial
**User Availability**
- **Online**: Available to receive and make calls
- **Offline**: Unavailable, dialer will not initiate new calls
- **Busy**: Currently on a call or handling post-call tasks
- **Away**: Temporarily unavailable
#### 🩺 System Health Monitoring
**Connection Status**
- **Network Connectivity**: Internet connection quality
- **Server Communication**: Connection to dialing servers
- **Audio Device Status**: Microphone and speaker readiness
- **PowerList Sync**: Contact list synchronization status
## 🔁 Reset daily
**Reset daily** starts a list over every night. Every lead goes back to New, and leads you've already called can be called again, up to the list's daily limit.
- It's a switch in the dialer's left panel under **Text if missed**, labelled **Reset daily · this list**.
- It's **off** unless you turn it on. With it off, the dialer keeps working down the list, so leads you've never called get reached.
- Turning it on shows a short explanation first. Every change is logged with who made it and when.
With Reset daily on, leads you've never called can sit behind leads you already called. For a fresh list, leave it off until everyone has been called once.
## 🆕 What changed recently
**Your reporting now separates a conversation from a pickup.** A call that
reached voicemail, or that a phone screened on the lead's behalf, is no longer
counted as a connection. Your connect rate may read a little lower than before —
it was previously counting calls where nobody spoke to you.
**Picking your line count also puts you online.** You no longer have to set your
lines and then find a second control to start.
See [What's New](/go-live/changelog) for everything, and
[How calls actually work](/dialer/how-calls-work) for what each outcome means.
---
# Predictive Pacing
> How the engine decides how many lines to dial, the safety limits it will not cross, and how to turn it on without risking your numbers.
Source: https://docs.aisync.link/dialer/predictive-pacing
Power Dialer gives each rep a fixed number of lines. **Predictive pacing** takes
that decision away from the rep and gives it to the engine, which watches how
often people are actually answering and adjusts.
The goal is simple: **a rep should never sit idle, and never be handed a call
they cannot take.**
## ⚖️ The two modes
The rep picks their lines. Predictable, fully in their control, and the right
choice for a small floor or a high-touch list.
The engine owns the pace. Reps never choose lines. Best when several reps work
one shared list together.
Which mode runs is a **campaign** setting chosen by an admin — never a rep's
browser setting. Pacing carries compliance consequences, so it is not a personal
preference.
## 🔒 Turning it on takes two deliberate steps
```mermaid
graph LR
A[⚙️ Engine OFF
Power Dialer] -->|Admin turns engine on| B[👀 Observing
shadow mode]
B -->|Admin leaves shadow| C[🚀 Routing live]
C -->|Halt at any time| A
style A fill:#555,color:#fff
style B fill:#b4531f,color:#fff
style C fill:#1f7a4d,color:#fff
```
It always lands in **observing** mode first. The engine records what it *would*
have done against live traffic without moving a single call.
Check the pacing explanation on the campaign. Every decision states the
constraint that bound it in plain language.
A second, separate action. Only now does the engine route real calls.
There is no single switch that goes straight to routing live. That is
deliberate: nobody should be able to tick one box and start spraying calls.
## 🧱 The limits it will not cross
Predictive routing needs **2 reps minimum**, and **3** before the fastest
setting is allowed.
With one rep and multiple lines, most simultaneous answers have nowhere to go.
Below the floor the campaign quietly falls back to Power Dialer — reps keep
working at full speed, they just stop being paced predictively.
Regulators cap abandoned calls at **3%** of live human answers, measured per
campaign over a rolling 30 days. The engine stops launching new calls well
before that.
No setting, no target and no "be more aggressive" instruction can push it past
the ceiling. A human can make the dialer slower. Nothing can make it riskier.
The engine never dials more than **2 leads per free rep**, whatever the maths
suggests.
Published guidance is consistent that true predictive pacing needs a much larger
floor before the statistics behave. On a small team a higher ceiling buys
nothing real and costs abandoned calls.
After any adjustment the engine waits before adjusting again.
There is a delay of 20 to 30 seconds between launching a call and learning
whether it connected. Without a pause, the engine reacts to the effect of its
own last move and oscillates — a burst of calls, everyone buried, a stop, then
everyone idle. Reps feel that as feast or famine.
Speeding up requires sustained evidence. Slowing down happens immediately on the
first sign of risk.
Over-dialing costs a regulated abandoned call. Under-dialing costs a few idle
seconds. The penalties are wildly different, so the response is too.
## 🎯 What it actually steers
The engine targets the **wait between conversations** — the gap where a rep is
free and nothing has landed.
It cannot target the time between connections. That includes talk time, which
belongs to your rep and your prospect. If a rep talks for three minutes, no
dialer on earth can hand them another conversation 20 seconds later.
A voicemail greeting is never treated as an answer. If machines counted, the
engine would read them as people picking up and dial **faster** into a list that
is not answering.
## 📞 When two people answer at once
```mermaid
graph TB
A[Rep dials 3 lines] --> B[Two people answer together]
B --> C{Is another rep free?}
C -->|Yes| D[✅ Second call routes to them]
C -->|No| E{AI overflow enabled?}
E -->|Yes| F[🤖 AI agent takes it]
E -->|No| G[⏸️ Brief hold, then a courteous close]
style D fill:#1f7a4d,color:#fff
style F fill:#2a4d7a,color:#fff
style G fill:#b4531f,color:#fff
```
A person who picked up the phone is **never** hung up on in silence. The worst
outcome available is a short hold with a message, and every one of those is
recorded as an abandoned call so the engine slows down rather than repeating it.
## 🆕 What changed recently
**Predictive pacing is available for live human reps.** It needs at least two
reps online, holds itself well under the 3% abandonment limit, and takes two
deliberate steps to switch on so nothing goes live by accident.
See [What's New](/go-live/changelog) for the full history.
## ➡️ Where to go next
What each outcome means before you tune anything.
Watch the effect of your pacing in the numbers.
Why dialing harder needs more numbers.
The manual mode and when to prefer it.
---
# iPhone & Carrier Screening
> What call screening is, why it is not voicemail, how AI Sync detects it, and what to record so screened leads still convert.
Source: https://docs.aisync.link/dialer/iphone-screening
A growing share of the phones you dial answer **on the lead's behalf**. iPhone
Call Screening, Google Call Screen and carrier screening services all pick up,
play a recorded prompt, and ask who is calling.
To a dialer this looks like an answer. It is not a person.
## 🤔 Why it is its own outcome
A machine took a message. The lead may never hear it.
The handset is asking who you are. **The lead is often standing right there**,
deciding whether to pick up.
A human answered and can talk.
Screening sits between the other two, which is exactly why it gets its own
category. Counting it as voicemail hides a lead who is about to answer.
Counting it as a connect inflates your rate with conversations that never
happened.
## 🔬 How detection works
```mermaid
graph TB
A[📞 Call answered] --> B[🎧 Audio streamed live]
B --> C[📝 Transcribed as it arrives]
C --> D{What was said?}
D -->|Screening phrases| E[🛡️ Screened]
D -->|Greeting patterns| F[📼 Voicemail]
D -->|Natural conversation| G[🧑 Person → rep]
style E fill:#6b3fa0,color:#fff
style F fill:#b4531f,color:#fff
style G fill:#1f7a4d,color:#fff
```
AI Sync listens to the **words**, not just the rhythm of the audio. That
distinction matters: a screening prompt sounds acoustically like a recorded
greeting, so systems that judge cadence alone routinely call it an answering
machine.
If screening is misread as a machine, the call is dropped and you lose a lead
who was about to answer. If it is misread as a person, a rep is connected to a
recording. Both are expensive, which is why this is detected on words.
## 🎙️ Set up your screening script
When a handset screens your call, it asks who is calling. Whatever you record
here is what the lead sees or hears before deciding.
Find **iPhone Script** in the dialer's left-hand panel.
It must be a **recording**. A typed script cannot play down a phone line, and
the dialer will stop you from starting with screening on until an audio one is
selected.
Keep it short, human, and specific. A name and a reason beats a pitch.
The toggle sits beside Local Presence and Detect Voicemail.
Dial yourself from a screened iPhone and listen to what plays. This is the only
way to hear what your leads hear.
A good script sounds like a person leaving a doorstep message: *"Hi, this is a
real person calling. Please say your name and reason for your call and I will
connect you right now."* A script that sounds like an advert gets declined.
## 📊 Where screened calls appear
Screened calls show up in two places on the
[Dialer Performance dashboard](/dashboard/dialer-performance):
- As **Screened** in the outcome bar, so you can see what share of your list is
screening you.
- As **Handset screened it** in *Who actually picked up*, beside machines and
real people.
They are never counted as connects, and never counted toward your connect rate
as successes.
A rising screened share is a signal about your caller ID, not your reps. See
[Caller ID and numbers](/dialer/caller-id-and-numbers).
## 🆕 What changed recently
**Screening detection was rebuilt.** AI Sync listens to the words rather than
the rhythm of the audio, because a screening prompt sounds acoustically like a
recorded greeting and systems judging cadence alone mistake it for an answering
machine.
A screened call is never counted as a conversation and never as voicemail.
See [What's New](/go-live/changelog) for the full history.
## ➡️ Where to go next
Every outcome in one place.
Why screening rises when your numbers get tired.
---
# Missed-Answer Message
> What a person hears when they pick up and every rep is busy, how to write your own, and what the law requires.
Source: https://docs.aisync.link/dialer/missed-answer-message
When you dial several lines at once, two people sometimes answer at the same
moment, or someone answers after a rep has stepped away. Only one of them can
talk to a rep.
The other person hears your **missed-answer message** instead of silence.
## 🔁 What happens on a missed answer
```mermaid
graph TB
A[📞 Someone answers] --> B{Is a rep free?}
B -->|Yes| C[🧑 Connected to the rep]
B -->|No| D[🔊 Your missed-answer message plays]
D --> E{Did they press 9?}
E -->|Yes| F[🚫 Added to your do-not-call list]
E -->|No| G[📋 Marked Answered – Not Connected]
G --> H[⭐ Listed first in Callbacks
once the list's redial wait is up]
```
A person who answered is the most valuable lead on your list, so they are put
at the **top of your callbacks**, not back at the end of the list.
## ✍️ Write your own
Go to **Dialer → Missed-Answer Message**. Only the account owner or an admin can
change it.
1. Pick one of the three examples, or write your own (400 characters max).
2. Click **Save and create audio**.
3. Press play under **What callers hear now** to hear the exact recording.
The examples are filled in with your business name and phone number from your
business profile. If a number is missing, add one to your business profile so
callers can reach you.
Every message ends with **"To be added to our do-not-call list, press 9 now."**
This is added automatically and cannot be removed: federal rules require every
missed-answer message to let the caller opt out on the spot. Pressing 9 adds
the number to your do-not-call list, and the dialer will not call it again.
If you never write one, AI Sync uses the first example for you, so nobody who
answers ever hears silence or a sales pitch.
## ⚖️ What the message is allowed to say
Federal rules (FTC Telemarketing Sales Rule and FCC 47 CFR 64.1200) limit this
recording to three things:
That the call was for telemarketing.
Your business name.
A number they can call back.
Anything more (an offer, a price, "we'll call you right back", a reason to
book) can turn this into an unlawful recorded sales call. Your wording is your
responsibility; have your compliance advisor review it.
## 📏 Keep missed answers rare
The rules also cap missed answers at **3% of calls a person answers**, per
campaign, over each 30 days. The message is required, but it is not a licence
to miss answers. If your rate climbs, dial fewer lines per rep or add reps.
See [Predictive pacing](/dialer/predictive-pacing).
## 🆕 What changed recently
**Missed answers now hear your message instead of your voicemail.**
Before this, a person who answered with no rep free waited in silence and then
heard your campaign's voicemail recording. They now hear your own short
message, can press 9 to stop future calls, and go to the top of your callbacks.
See [What's New](/go-live/changelog) for the full history.
---
# Automations
> Decide what happens after each disposition: a text after a voicemail, a nurture sequence after no answer, a confirmation after an appointment.
Source: https://docs.aisync.link/dialer/automations
When a rep saves a disposition, AI Sync can follow up for them automatically.
You decide what happens after each one, once, in **Dialer → Automations**.
```mermaid
graph LR
A[📞 Call ends] --> B[🏷️ Rep saves a disposition]
B --> C{Automation for it?}
C -->|Yes| D[💬 Texts, emails, waits, tags
run by themselves]
C -->|No| E[Nothing else happens]
```
## ⚡ Set one up (about a minute)
1. In the dialer, open the **Automations** tab at the top.
2. Find the disposition, for example *Voicemail*, and click **Add**.
3. Pick a template. AI Sync suggests one based on the disposition's name.
4. Edit the words if you like, keep **Turn on now** ticked, and click **Save automation**.
Only the account owner or an admin can change automations. Reps can see them.
## 📚 Templates
| Template | What it does |
|---|---|
| Voicemail follow-up text | Texts right after a voicemail so they know who called |
| No answer: 3-touch nurture | Text now, email tomorrow, a final text two days later |
| Appointment set: confirmation | Confirms by text and email and tags the contact |
| Interested: send info | Emails your information and texts a heads-up |
| Call back later: reminder text | Confirms you'll call back so they pick up next time |
| Not interested: tag and stop | Tags the contact; sends nothing |
| Custom text | One text you write yourself |
Texts go out from the lead's **texting line**, not the number that called
them, so a lead always hears from one number and replies reach the right rep.
See [Texting lines](/dialer/texting-lines). `{{first_name}}` (or any contact
field) is filled in for each person. Waits count business days only. Contacts
marked Do Not Text are skipped.
Want to text someone **during** the call? Use the **Text** tab under the contact
while you're on the call. Automations are for what happens **after** the
disposition is saved.
## 🔧 Good to know
- **Each automation is a normal workflow.** It also appears in **Workflows**,
where you can add more steps.
- **Workflows you built yourself** that run on a disposition show on its row as
one line, marked *edit in Workflows*. They can't be switched off here,
because one workflow often serves several dispositions.
- **Ask your AI assistant.** With AI Sync connected (see
[Use your ChatGPT plan](/agents/use-your-chatgpt-plan)), try: *"Add the
voicemail follow-up text to my Voicemail disposition and turn it on."*
## 🆕 What changed recently
**New: Dialer → Automations.** Map each disposition to a follow-up from
ready-made templates, with no support ticket needed. The contact screen also
now shows dispositions first and the contact's activity below.
See [What's New](/go-live/changelog) for the full history.
---
# Inbox
> Texts, emails and calls with recordings and transcripts, one row per contact, without leaving the dialer.
Source: https://docs.aisync.link/dialer/inbox
The **Inbox** tab in the dialer is where reps read and answer replies. There's
one row per contact, never one row per message, so the list stays short no
matter how much you text.
```text
┌ Inbox ─────────────┬ Conversation ─────────────────┬ Contact ─────────┐
│ 🔍 Search │ Jordan Lee [Call] │ Phone │
│ All Unread Mine │ Today │ Email │
│ ● Maria Gomez 5:46 │ Hi, you're booked! ▶ │ Tags │
│ Sam Patel Sun │ ◀ Yes Thursday at 3 works │ Open full │
│ +1 928… Sat │ [Text | Email] From: line │ contact ↗ │
└────────────────────┴───────────────────────────────┴──────────────────┘
```
## 🧭 Find the conversation you need
- **Search** by name, phone number or email.
- **All** shows every conversation, newest first.
- **Unread** shows conversations where the lead's reply is the latest message
and nobody has opened it yet (last 30 days).
- **Mine** shows conversations you've texted or that were routed to you.
- A **blue dot** marks an unread conversation. The number on the **Inbox** tab
counts them.
- Opening a conversation marks it read. **Mark all read** (the double tick)
clears the whole list for everyone, so use it with care.
New replies appear live, with no refresh needed.
## 💬 Reply without leaving the dialer
Click a contact to open the **whole conversation**: texts, emails and calls
together, grouped by day.
- **Text** sends from the lead's texting line. The line is shown next to the
box ("From your line …" or "From team line …"). See
[Texting lines](/dialer/texting-lines) for how it's chosen.
- **Email** sends from your company email. It's greyed out when the contact has
no email address.
- **Enter** sends. **Shift + Enter** adds a new line.
- **Call** rings the lead from the dialer.
- **Open full contact** opens their complete record in a new tab.
**Email replies don't come into the Inbox yet.** When a lead answers an email,
the reply goes to **the email address of the rep who sent it**. For
automations, that's the rep who saved the disposition, else the account
owner. Companies with their own email sender keep their own reply address.
Emails you send are shown in the conversation.
## ⚡ Work faster
- **Waiting timer.** An unread lead shows *waiting 12 min*. It turns red after 5 minutes, so the hottest leads get answered first.
- **Templates.** Pick a team template in the text box. The lead's name fills in for you.
- **Send later.** Click the clock next to Send, then pick *In 1 hour*, *Tomorrow 9:00 AM* or any time. Texts only go out between 8am and 9pm in the lead's time zone; if you pick a time outside that, AI Sync offers their next allowed time. Scheduled texts show above the box with a cancel button.
- **Pictures** (rolling out). Click the picture button to attach up to 5 photos. Picture texts (MMS) cost more than regular texts and show in your usage costs. Pictures leads send you show in the conversation too.
- **Emoji.** Click the smiley to insert one where your cursor is.
- **Team notes.** Choose **Note** next to Text and Email to leave a note in the conversation. Only your team sees it.
- **Star.** Click the star to keep a conversation on your **Starred** list. Stars are yours; teammates have their own.
- **Mark as unread.** Puts a conversation back on **Unread** for the team.
- **Select several.** Tick conversations in the list to mark them read or unread, star them or assign them in one go.
- **Owner.** Assign the contact to a teammate from the contact panel.
- **Suggest a reply.** With an [AI text agent](/dialer/ai-texting) set to Suggest or Autopilot, the ✨ button drafts the next text from the whole history.
## 📞 Calls, recordings and transcripts
Every call with the lead sits in the conversation at the time it happened:
- **How it ended:** *Call completed*, *No answer*, *Voicemail*, *Busy*, or *AI agent call*, with the length and the rep.
- **Play** the recording right there.
- **Show transcript** to read what was said. AI agent calls also show their summary.
You hear and read your own calls. The account owner, and anyone allowed to
see all contacts, hears every call. Everyone else still sees that a call
happened and how it ended.
The transcript appears a few seconds after the call ends, and the recording
shortly after. Click the refresh arrow at the top of the list if a call you
just finished isn't there yet.
## 📱 On a phone or small screen
The list shows first. Tap a contact to open the conversation, and use the back
arrow to return. The contact card is hidden on narrower screens; **Open full
contact** is always a click away.
## 🙋 Who sees what
Each reply is routed to one rep. It shows under their **Mine** filter, and they
get the notification. Everyone with Inbox access can see **All**. See
[Where replies go](/dialer/texting-lines#-where-replies-go).
## 🧯 If something is off
The number they replied to isn't sending replies to AI Sync. Run the
[two-minute test](/dialer/texting-lines#-two-minute-test-do-this-for-every-new-client).
There's no A2P-linked number to text from. See
[What counts as a texting line](/dialer/texting-lines#-what-counts-as-a-texting-line).
The count covers the last 30 days, and a conversation stops being unread when
anyone opens it or you reply. Refresh with the circular arrow at the top of the
list.
Working through replies with Claude, ChatGPT or Codex? See
[Texting & Inbox with your AI assistant](/agents/texting-and-inbox).
---
# Texting Lines & Reply Routing
> Which number every text goes out from, and which rep gets the reply. Set it up once, test it in two minutes.
Source: https://docs.aisync.link/dialer/texting-lines
Calls and texts follow different rules on purpose.
- **Calls rotate.** Your caller ID changes from dial to dial to protect your
answer rate. See [Caller ID and numbers](/dialer/caller-id-and-numbers).
- **Texts never rotate.** Each lead is texted from **one number**, and the reply
goes to **the rep who owns that conversation**.
If texts followed the calling number, a lead would get every message from a
different number and their replies would scatter. A texting line prevents that.
```mermaid
graph LR
A[💬 Rep, automation or AI assistant
sends a text] --> B[📱 The lead's texting line]
B --> C[Lead replies to that same number]
C --> D[👤 The rep who owns the conversation
gets it live in their Inbox]
```
---
## 🧩 What counts as a texting line
A texting line is either:
- **A Beam number.** Every active number in your connected Beam workspace. See
[Connect Beam](/dialer/beam).
- **A Twilio number** connected to AI Sync that shows **A2P linked** on the
Phone Numbers page and isn't assigned to an AI agent. Carriers block texts
from unregistered numbers. See [10DLC](/setup/10dlc/brand).
There are two kinds:
| Kind | Who texts from it |
|---|---|
| **A rep's own line** | That rep, and replies to it always go to them |
| **Team line** | Any rep who has no line of their own |
## 🗂️ Manage them all in one place
**Settings → Texting lines** (also a **Texting lines** button on the Phone
Numbers page) lists every number that can text, Beam and Twilio together.
Pick who texts from each one and click **Save**.
- It only decides who **texts** from a number and gets its replies. Where
the number's **calls** ring stays on the Phone Numbers page.
- A Twilio number whose calls you routed to a rep starts as that rep's
texting line. You can change it here.
- **Can't text yet** explains every other number: not registered for texting
(A2P), assigned to an AI agent, or calling-only.
- **Registered numbers missing?** If you attached numbers to your campaign
in Twilio's own console, click **↻ Refresh from Twilio** at the top. AI Sync
reads which numbers are really registered and updates the list. It also
tells you about registered numbers you haven't imported into AI Sync yet.
- Reps can open the page too. They see which line is theirs but can't change
anything.
**The simplest good setup:** one A2P-linked number per rep, each routed to that
rep. Leads save a real person's number, and every reply lands with the right
rep.
**The cheapest setup:** a single A2P-linked number left unrouted. Everyone texts
from that team line, and replies still reach the right rep (see
[Where replies go](#-where-replies-go)).
If a rep has several lines, Beam comes first, then the first Twilio number
you added. Among team lines: Beam's default number, then other Beam numbers,
then Twilio numbers in the order you added them.
---
## 📤 Which number a text goes out from
Every way of texting uses the same rule: the dialer's Text tab, **Text them**,
the Inbox, the Messages page, automations, workflows and AI assistants.
If you choose a number in the **From** menu, that number is used. Reps can pick
their own line or a team line, never a colleague's line.
Once a lead has been texted, they keep that number. This is what stops a lead
getting messages from a new number every time.
For a lead nobody has texted yet, it's the line routed to you. For an
automation, "you" is the rep who saved the disposition.
If you have no line of your own.
If none of these exist, the text isn't sent and you see **"No texting line set
up."** AI Sync never picks a random number.
**When a lead changes hands, their number doesn't move with them.** Texts keep
going from the first rep's line, and replies keep going to that rep. To take a
lead over, pick **your** line in the From menu once. From then on your line is
that lead's number, and replies come to you.
### Workflows and automations
In a workflow's **Send SMS** step:
| From setting | What it does |
|---|---|
| **Same as dial** | The lead's texting line, using the rule above (the default). It no longer means "the number that last called them". |
| **Assigned User Numbers** | The same rule |
| **A specific number** | That number. If it isn't A2P linked, a linked number with the lead's area code is used, then any linked number. |
[Dialer Automations](/dialer/automations) use the texting line automatically.
---
## 📥 Where replies go
When a lead replies, AI Sync picks one rep, in this order:
If they replied to a rep's own line, it goes to that rep.
Covers team lines. The rep who was talking to this lead gets the reply.
If nobody has contacted them from AI Sync yet.
The safety net, so a reply is never dropped.
That rep sees the reply **live in the dialer's [Inbox](/dialer/inbox)** with an
unread dot and a count on the Inbox tab, plus a notification. The whole
company's replies are also in the **Messages** page.
---
## ✅ Make sure replies actually reach AI Sync
A text can go out perfectly while the reply goes somewhere else. The number's
own reply setting decides where replies land.
Set automatically. When you import a Twilio number there, AI Sync points its
calls and replies at itself.
A Messaging Service's own setting **overrides** the number's. If it sends
replies to a webhook of its own, AI Sync never sees them.
In Twilio: **Messaging → Services → your service → Integration → Incoming
Messages**, choose **Defer to sender's webhook**, and save.
If GoHighLevel also uses that Messaging Service, changing this setting changes
where GoHighLevel gets its replies. Talk to support before you change it, and
we'll set it up so both keep working.
Don't assume these were pointed at AI Sync. Run the two-minute test below. If
the reply doesn't show up, ask support to check the number's reply routing.
---
## 🧪 Two-minute test (do this for every new client)
In the dialer, open a contact with **your** mobile number and send a text from
the Text tab. Check the **From** line shows the number you expect.
Reply with anything.
Within seconds, the reply appears in the dialer's **Inbox** against that
contact, with an unread dot, for the rep you expect.
Send a second text. It must go from the **same** number as the first.
**Passed?** Texting is set up correctly for that number. **No reply after a
minute?** See the Messaging Service accordion above, then contact support.
---
## 🔧 Customize it
| You want | Do this |
|---|---|
| Each rep texts from their own number | **Settings → Texting lines**: pick a rep for each number |
| Everyone texts from one company number | Leave one A2P-linked number unrouted |
| A rep takes over a lead | They pick their own line in **From** once |
| An automation always uses one number | Set that number in the workflow's Send SMS step |
| A number stays for an AI agent only | Assign it to the agent; it's never used as a texting line |
| Check what a lead will be texted from | Open the contact's Text tab and read **From**, or ask your AI assistant |
Setting this up with Claude, ChatGPT or Codex instead? See
[Texting & Inbox with your AI assistant](/agents/texting-and-inbox).
---
## 🧯 If something is off
There's no Beam number and no A2P-linked Twilio number that isn't used by an
AI agent. [Connect Beam](/dialer/beam), or link a number to your 10DLC
campaign on the Phone Numbers page.
That lead was texted from it before, and leads keep their number. Pick the
number you want in **From** once.
Replies to a rep's own line always go to that rep. Check which number the lead
replied to, and who that number is routed to on the Phone Numbers page.
Almost always 10DLC. Confirm the brand and campaign are **approved**, not just
submitted, and the number shows **A2P linked**.
The number or its Messaging Service sends replies somewhere else. See
[Make sure replies actually reach AI Sync](#-make-sure-replies-actually-reach-ai-sync).
---
# GoHighLevel Two-Way Sync
> Texts and calls stay in step between AI Sync and GoHighLevel, whichever side you work from. Connect once, test it in five minutes.
Source: https://docs.aisync.link/dialer/gohighlevel-sync
Once GoHighLevel is connected, you can work from either side. A text or call
in AI Sync shows up on the contact in GoHighLevel. A message in GoHighLevel
shows up in the AI Sync Inbox. Nothing is sent twice.
```mermaid
graph LR
A[💬 AI Sync
Inbox, dialer, AI assistant, automations] <--> B[🔄 Two-way sync]
B <--> C[📇 GoHighLevel
Conversations]
B --> D[📱 Your texting line
any carrier]
```
---
## 🔌 Connect GoHighLevel
Start the GoHighLevel connection and sign in as an admin of the sub-account.
Choose the location where the contacts already live, not the agency account.
If any permission is declined, part of the sync stops working later.
**Check:** open a contact in AI Sync that also exists in GoHighLevel. Its
GoHighLevel contact ID should be filled in. A blank ID means the wrong location
is connected.
---
## 🔄 What syncs, and when
| What | AI Sync → GoHighLevel | GoHighLevel → AI Sync |
| --- | --- | --- |
| Texts you send | Within about a minute, on the contact's conversation | Within about 5 minutes, in the Inbox |
| Replies from the lead | Within about a minute | Within about 5 minutes |
| Calls | With the call result and the recording | Shown in the contact's history |
| Emails and chats | n/a | Shown in the Inbox |
A text is copied over **as a record only**: the lead is never texted a second
time.
---
## 📤 Text from GoHighLevel through AI Sync
You can type a text in GoHighLevel and have AI Sync send it. It goes out from
the contact's texting line in AI Sync, on whatever carrier that line uses. The
lead sees the same number as when you text from AI Sync, and the reply comes
back to both places.
Use the normal Conversations screen.
In the message box, open the channel picker and choose **AI Sync**.
AI Sync sends it within a few seconds. GoHighLevel marks it **Delivered**. If
it can't go out, it is marked **Failed** with the reason, for example *This
contact is marked Do Not Text.*
All the AI Sync texting rules still apply:
- Do Not Text contacts are never texted.
- The number comes from [Texting Lines](/dialer/texting-lines): the same number
the lead already knows, or else the rep's line, or else the team line.
- If no texting line is set up, the text is marked Failed with *No texting
line is set up yet*.
- A contact that is new to AI Sync is added automatically from GoHighLevel.
---
## ✅ Five-minute test
Use your own cell phone as the lead.
Send a text from the AI Sync Inbox. Within a minute it appears on the contact
in GoHighLevel.
The reply appears in the AI Sync Inbox straight away, and in GoHighLevel within about a minute.
Your phone receives it from the same number. GoHighLevel shows **Delivered**,
and the AI Sync Inbox shows the text.
After the call, GoHighLevel shows it on the contact with the recording.
---
## 🛠️ Troubleshooting
The contact must be linked to GoHighLevel (it has a GoHighLevel contact ID).
New contacts are linked within a couple of minutes, and the text is copied
once they are. If it never links, check that the right location is connected.
The AI Sync app must be installed on that sub-account. Reconnect GoHighLevel
from Settings → Integrations, then reload GoHighLevel.
Hover over it to read the reason. It is usually a Do Not Text contact, a
missing texting line, or a number that isn't registered for texting (10DLC).
---
# Connect Beam
> Text leads from your Beam numbers in the dialer, the Inbox and automations. Connect in three clicks, then test in two minutes.
Source: https://docs.aisync.link/dialer/beam
Beam gives you dedicated texting numbers. Once it's connected, AI Sync uses
those numbers as **texting lines**:
- Reps text from Beam in the dialer's **Text** tab and the **[Inbox](/dialer/inbox)**.
- **Automations** text from Beam.
- Each lead keeps **one number**, and their replies come back to the right rep.
```mermaid
graph LR
A[🔌 Connect Beam
once, by the owner] --> B[👤 Choose who texts
from each number]
B --> C[💬 Reps text from Beam
in the dialer]
C --> D[📥 Replies land in
that rep's Inbox]
```
## ✅ Before you start
- You're the **account owner** in AI Sync. Only the owner can connect Beam.
- You can sign in to your **Beam workspace** as its owner.
- The workspace has at least **one active number** assigned to it.
---
## 🔌 Connect (about 2 minutes)
In AI Sync, go to **Settings → Integrations**, find the **Beam** card, and
click **Connect Beam**. Then click the blue **Connect Beam** button.
Beam opens. Click **Sign in**, then choose your workspace and the number to
send from. Click approve. Nothing connects until you approve.
The link from AI Sync is only valid for **10 minutes**. If it expires, click
**Connect Beam** again.
You land back on the Beam page with a green **Connected** badge and your
workspace name. Click **Check connection** any time to confirm it's working.
It asks Beam live and refreshes your numbers.
In **Who texts from each number**, for each Beam number pick:
- **A rep.** It becomes their own line. Leads save a real person's number,
and replies always go to that rep.
- **Team line.** Any rep without a line of their own texts from it.
Click **Save**.
---
## 🧪 Test it (2 minutes, every new client)
Open the dialer, pick a contact with **your own mobile number**, and open the
**Text** tab. **From** should say *Your Beam line* or *Beam Team line*. Send a
text.
Reply from your phone.
Within seconds the reply shows in the dialer's **Inbox**, with an unread dot,
for the right rep.
**Passed?** Beam is live for this client. **The reply didn't show up?** Click
**Check connection** on the Beam page, then see the fixes below.
---
## ⚙️ How it works
| Situation | Number used |
|---|---|
| Lead was texted before | The **same number** as last time, always |
| New lead, rep has their own line | The rep's line (Beam or Twilio) |
| New lead, rep has no line | Beam's **default number**, then other Beam team lines, then Twilio team lines |
| Automation after a disposition | Same rules, for the rep who saved the disposition |
| Rep picks a number in **From** | That number, and it becomes the lead's number from then on |
Replies go to the rep who owns the number, else the last rep who texted or
called the lead. Full rules: [Texting lines](/dialer/texting-lines).
**Leads already texted from a Twilio number stay on it.** That's on purpose:
their number never changes under them. To move a lead to Beam, pick the Beam
line in **From** once.
**Disconnecting** stops Beam texts at once. Reps fall back to your other
texting lines, and nobody is left unable to text if you have one.
Contacts marked **Do Not Text** are never texted, from Beam or anywhere else.
---
## 📋 SOP: onboarding a client onto Beam
Copy this into your onboarding checklist.
1. ☐ Client has a Beam workspace with at least one **active, assigned** number.
2. ☐ Client's **account owner** is signed in to AI Sync.
3. ☐ **Settings → Integrations → Beam → Connect Beam**, then sign in and approve.
4. ☐ Beam page shows **Connected**. Click **Check connection** and see a green result.
5. ☐ **Who texts from each number** is set and saved.
6. ☐ Two-minute test passed: the text arrived, the reply showed in the Inbox for the right rep.
7. ☐ A second text went from the **same** number.
8. ☐ Tell the reps: "Your texts now go from your Beam line. Replies land in your Inbox."
---
## 🧯 If something is off
AI Sync couldn't confirm the connection. Check that:
- your Beam workspace has an **active number assigned** to it;
- you approved **Read, Send, Automation and Webhooks**.
Then click **Connect Beam** again. Your previous settings are unchanged.
Beam didn't answer, or refused the connection. Wait a minute and click
**Check connection** again. If it keeps failing, click **Reconnect Beam**.
Your connection is never switched off because of a temporary problem.
Assign a number to the workspace in Beam, then click **Check connection**.
That lead was texted from it before, so they keep it. Pick the Beam line in
**From** once. For new leads, check the rep doesn't have a Twilio number of
their own; theirs comes first.
More than 10 minutes passed between clicking Connect and approving in Beam.
Start again.
Only the account owner can connect Beam. Everyone else sees "Your account
owner manages this connection".
---
## 🤖 With your AI assistant
Ask *"What number will a text to Jordan Lee go out from?"* It shows the Beam
line and why. See
[Texting & Inbox with your AI assistant](/agents/texting-and-inbox).
---
# Caller ID & Number Health
> How the number you dial from is chosen, why it decides your answer rate, and how many numbers a floor actually needs.
Source: https://docs.aisync.link/dialer/caller-id-and-numbers
The number you call **from** decides how many people pick up. Everything else —
list quality, scripts, pacing — sits downstream of whether the phone gets
answered at all.
## 📉 How a number gets burned
```mermaid
graph LR
A[📞 One number dials heavily] --> B[📵 Carriers see the pattern]
B --> C[⚠️ Marked as spam likely]
C --> D[📉 Fewer people answer]
D --> E[🔁 Dial harder to compensate]
E --> A
style C fill:#a33,color:#fff
style E fill:#b4531f,color:#fff
```
This loop is self-feeding. Once a number is flagged, dialing harder from it
makes the flag worse, and the answer rate keeps falling.
Dialing more lines per rep without adding numbers accelerates this. Pace and
number count have to move together.
## 🔢 How many numbers do you need
Number count scales with **simultaneous lines**, not with rep count. Five reps
on three lines each is fifteen calls in flight, and fifteen calls out of a small
pool burns that pool quickly.
| Floor size | Lines each | Calls in flight | Numbers to plan for |
|---|---|---|---|
| 2 reps | 3 | 6 | 10–15 |
| 5 reps | 3 | 15 | 25–40 |
| 5 reps | 5 | 25 | 40–60 |
These are planning figures, not hard limits. Watch your **Declined** and
**Screened** counts on the
[Dialer Performance dashboard](/dashboard/dialer-performance) — both rise when
numbers are getting flagged.
## 📍 Local presence
Local presence dials from a number matching the lead's area code. People answer
local numbers far more often than unfamiliar ones.
Local presence can only use numbers you actually own. See
[Phone numbers](/phone-numbers/phone-numbers).
The toggle sits in the dialer's left-hand panel.
If most of your list is in area codes you do not own, buy numbers there or turn
it off.
## 🩺 Signs your numbers need attention
People are seeing the call and rejecting it. Often a spam label on your caller
ID rather than anything about your list.
More handsets are screening you. Unknown or flagged numbers get screened far
more often than recognised ones.
The classic burn signature. Same effort, fewer conversations.
Probably the list, not the numbers. Check
[connect rate by list](/dashboard/dialer-performance).
## 🆕 What changed recently
**The dashboard now shows you number health directly.** Rising **Declined** and
**Screened** counts in the outcome breakdown are your early warning that caller
IDs are being flagged — before your connect rate drops.
See [What's New](/go-live/changelog) for the full history.
## ➡️ Where to go next
Monitor and protect your numbers.
Add capacity before you raise your pace.
Pace and number count move together.
Watch Declined and Screened for early warning.
---
# Incoming Call Routing
> Who answers when a lead calls one of your numbers, where callbacks ring, and how to send calls to an AI agent.
Source: https://docs.aisync.link/dialer/incoming-call-routing
When a lead calls one of your numbers, AI Sync decides **who** answers (a rep or your AI agent) and **where** it rings (in the dialer or on the rep's phone). Both are set in the dialer's settings panel, under **Inbound calls** and **Calls back to you**.

## Who answers: Team or AI
Each of your numbers is set to **Team** or **AI**. Open **Inbound calls** in the dialer to see every number and change it.

One rep rings first (see below). If they don't pick up within 25 seconds, or no rep is free, the number's AI agent answers. With no AI agent attached, the call goes to voicemail.
The AI agent answers every call to this number. No rep rings.
A number can also be set to **reps only** (no AI backup), where an unanswered call goes to voicemail. The dialer shows it as Team with "Reps only, no AI fallback".
**AI** is greyed out on a number until an AI agent is attached to it. Attach one in the web app under **AI → Numbers**, then come back and choose AI or Team.
### Send inbound calls to an AI agent
1. In the web app, open **AI → Numbers** and attach your inbound AI agent to the number.
2. In the dialer, open **Inbound calls** and find the number.
3. Choose **AI** to have the agent answer every call, or **Team** to ring your reps first with the agent as the backup.
Most teams choose **Team**: a person gets the first chance at a hot callback, and the AI agent makes sure nobody reaches a dead end.
## Choose who answers each number
In the dialer, open **Numbers**. Click the **Incoming** cell on a number's row (or its **⋯** menu → **Incoming calls…**). Under **When someone calls this number**, pick one:
| Choice | What happens |
|--------|--------------|
| **AI agent answers** | Straight to an AI voice agent. Nothing rings. |
| **Ring a team** | Everyone on the team rings. New teammates ring automatically. |
| **Ring one rep** | One person rings first. |
| **Ring several** | Pick reps **and outside numbers**, like your own cell or an office line. Ring them all at once or one after another. |
Then choose **If nobody answers**: an AI agent, **Forward to a cell phone**, or **Voicemail**.
### Ring your cell, only during your hours
With **Ring several**, add any US or Canada number under **Outside numbers**. Each one is **Always available** until you tick **Only ring during a schedule**. Then pick the days, the **From** and **To** times, and the **Timezone**. Outside those hours that number does not ring, and the call goes to the next phone or to your **If nobody answers** choice.
### What you hear when you pick up
When an outside number or a forwarding cell answers, it first hears who is calling, then connects straight away. Nobody presses 1:
> *"Incoming call to Main line from Maria Lopez. Connecting now."*
If the caller's name isn't known, it reads their number instead.
Because the call connects as soon as the phone answers, a phone that sends calls to its own voicemail will take the caller there. Use numbers someone will actually pick up, or keep a schedule so after-hours calls go to your AI agent or voicemail instead.
## Which rep it rings
A lead who calls back rings **one rep**:
1. **The rep who last had a real conversation with them**: a call of 30 seconds or more, or one a person answered, in the last 7 days. A rep who dialed the lead and got no answer doesn't take over the callback.
2. If that rep isn't free, the **free rep who has waited longest** among the reps on that number or the lead's list.
3. If none of them is free, the free rep who has waited longest on the rest of the team.
**Free** means: Online in the dialer, not already on a call, and inside their working hours. This applies on **On my phone** too: a rep who is Offline in the dialer is never rung.
If the rep doesn't pick up within **25 seconds**, the call does not move on to another rep. It goes to the number's backup: the AI agent, or voicemail when no agent is attached.
**Direct lines:** a number assigned to one rep as their own line rings only that rep. If they can't answer, it goes to that number's backup (voicemail, the AI agent, or the team), as set on the number.
## What you'll see when a lead calls
In the dialer, the call fills the screen and rings. If you talked to the lead recently, it says **They called you back** with their name. Otherwise it says **Incoming Call** with their number.

- **Accept** (green): you're connected to the lead.
- **Decline** (red): the call goes to the number's backup, the AI agent or voicemail. It doesn't move on to another rep.
- Do nothing for **25 seconds**: same as Decline.
The guided setup in the dialer (the compass button at the top) shows this card too, so new reps see it before a real call arrives.
## Where it rings: in the dialer or on your phone
Each rep chooses under **Calls back to you**:

- **In the dialer:** the call pops up in the dialer with the lead's name and *They called you back*. Keep the dialer open in one browser tab.
- **On my phone:** the call forwards to your cell. Enter your personal cell the first time you choose it. Your company's own numbers can't be used, because they would ring themselves. Your phone shows a caller ID, not the lead's name, so check the dialer or the lead's record to see who called.
You can also change this in the web app under **Profile → Personal Settings → Incoming Call**: [app.rizzdial.com/profile](https://app.rizzdial.com/profile). Choosing **AI** there takes you out of ringing: your callbacks go to the next free rep or the number's backup. **Dialer + AI** rings the same as **Dialer**.
Whether the AI agent answers is decided by the **number** (Team or AI), not by a rep's own setting.

## Quick answers
Only when you're free: Online, not on a call, and inside your working hours. If you're on a call, the lead rings the next free rep. If nobody is free, it goes to the number's backup.
Yes. Choose **On my phone** under **Calls back to you** and enter your cell. Stay Online in the dialer, or the call won't ring you.
Yes. Attach an AI agent to the number in **AI → Numbers**, then set the number to **AI** under **Inbound calls**.
---
# Transfer Lines (live transfer to your team)
> Send a live caller to your team. AI Sync rings your reps in waves, tells them who is calling, and connects the first one to press 1.
Source: https://docs.aisync.link/dialer/transfer-lines
A **transfer line** is a team phone line for live transfers. When an AI agent or a rep transfers a caller to it, AI Sync:
1. Rings a group of your reps at once, on their cell phone or in the dialer.
2. Plays each rep a short whisper first: *"Transfer from Solar consults. Maria from Phoenix. Wants a quote this week. Press 1 to accept."*
3. Connects the **first rep to press 1**. Everyone else stops ringing.
4. Rings the next group if nobody takes it.
5. Runs your fallback if nobody takes it in time. The caller is **never hung up on**.
Press 1 is required on every cell phone. A rep's voicemail can never grab a live caller.
## Turn it on
Transfer Lines is switched on per account. An account owner turns it on from **Dialer → More → Transfer Lines** with the switch at the top. Ask your AI Sync contact if you don't see the menu item.
Use **Most phones ringing at once** (up to 10) to set the largest group any line can ring together.
## Create a line
Open **Dialer → More → Transfer Lines** and click **New transfer line**. Setup takes six short steps.
Give the line a name, for example *Solar closers*. Then give it an **offer**, for example *Solar consults*. Reps hear the offer first, so they know what kind of caller is coming.
Pick who the line rings. Use **Add a whole team** to add everyone on a team at once. The count shows unique people, so someone on two teams is counted once.
Each person is rung in the dialer when they're online there, and on their cell when they aren't.

Choose how the line rings:
| Option | What happens |
| --- | --- |
| **Ring a group at once** (recommended) | Several people ring together. Whoever has waited longest rings first. |
| **Best closers first** | Several people ring together, highest close rate first. A sale counts fully, an appointment counts half. |
| **One at a time, in order** | One person rings at a time, in the order you set. |
| **Take turns** | One person rings at a time, starting with someone new each time, so calls spread evenly. |
| **You pick each wave** | You choose who rings in wave 1, wave 2 and so on, up to 5 waves. See [Pick who rings in each wave](#pick-who-rings-in-each-wave). |
**Phones per wave** sets how many ring together. **Each wave rings** sets how long before the next group starts.
**Give up after** defaults to enough time to ring the whole team once, up to 120 seconds. If the limit is too short to reach everyone, a warning tells you how many people it reaches.

Pick what happens when nobody presses 1:
- **Back to the AI agent** (recommended): the AI keeps talking with the caller and books a callback.
- **Voicemail**: the caller leaves a message.
- **Text them back**: they get a text from the line's number so they can call back.
- **Try another line**: rings a second line once.

Edit what reps hear before pressing 1, then press play to hear a sample. You can use `{offer}`, `{first_name}`, `{city}` and `{reason}`. The reason comes from the AI agent's notes about the caller.

Pick the **line number**, which is the number callers and AI agents transfer to.
To have an AI agent send qualified callers to this line, turn on **Use for an AI agent** and pick the agent.
Check the summary, then click **Create line**.

## Pick who rings in each wave
Use this when you want your best closers to get the first shot at every transfer.
Open the line, go to **How it rings**, and pick **You pick each wave**.

Under **Who rings in each wave**, click **1** to **5** next to each person. Everyone starts in wave 1.

**Each wave rings** sets how long a wave rings before the next one starts, for example 12 seconds. **Give up after** sets itself to cover all your waves.
The plan shows who rings in each wave and when each wave starts. Continue through the steps and click **Save changes**.

**How a call rings:**
1. Everyone in wave 1 rings at once.
2. If nobody presses 1 in time, wave 1 stops and wave 2 rings.
3. This repeats through your last wave, then the line's **If nobody answers** choice runs.
**Good to know:**
- Reps don't need the dialer open. Anyone who isn't in the dialer is rung on their cell and presses 1 to take the caller. They need a cell number on their profile.
- Someone who is **Away**, outside working hours, or already on a call is skipped. If a whole wave is skipped, the next wave rings right away.
- A wave can hold more people than your account rings at once. If it does, that wave rings in groups before the next wave starts.
## Big teams
A line can hold your whole sales floor. With 30 people and 5 phones per wave, AI Sync rings 5, then the next 5 every 12 seconds, until someone presses 1.
People are skipped automatically when they're:
- set to **Away**,
- outside their working hours, or
- already on a call.
Calls are paced to what each phone carrier accepts, so a big wave is never refused. This works on every carrier connected to AI Sync.
## For reps
- **Available / Away:** use the **Transfers** switch in the dialer header. When it's set to Away, no transfers ring you.
- **On your cell:** you hear the whisper. Press **1** to take the caller, or do nothing to let it pass.
- **In the dialer:** a card shows the caller, their city, the offer and the reason, with **Accept** and **Decline**. The first to accept gets the caller.

- **Sending a caller to a line:** in **Transfer Call**, choose **To Line** and pick the line.
Save each line's number in your phone as a contact, for example "AI Sync Transfers". Some phones silence unknown callers.
## Report
Click **Report** on the Transfer Lines page. It shows:
- transfers, accept rate and average time to accept;
- each rep's rings, takes, misses and close rate;
- every transfer with who got it, who missed it, and the outcome.
Mark an outcome (Sale, Appointment) to feed **Best closers first**. Missed transfers have a **Call back** button.

## Set it up with your AI assistant
If your AI assistant (for example Claude) is connected to AI Sync, you can ask it to do this for you:
- *"Create a transfer line called Solar closers for the Closers team, ring 5 at a time, and send it back to the AI if nobody answers."*
- *"Add Maya and Jordan to Solar closers."*
- *"Attach Solar closers to my Sky Assistant agent."*
- *"Show me last week's transfer report."*
- *"Set Solar closers to pick each wave, and put Maya and Jordan in wave 1."*
## Try it in 5 minutes
1. Create a line with yourself and one teammate. Use a spare number.
2. Save the line's number in both phones.
3. From a different phone, call the line's number.
4. Both phones ring. Each person hears the whisper. The first to press 1 is connected.
5. Call again and let nobody answer. The fallback runs, and the caller is not hung up on.
6. Open **Report** to see both calls.
## Troubleshooting
| What you see | What to do |
| --- | --- |
| No **Transfer Lines** menu item | The feature isn't on for your account yet. Ask your AI Sync contact. |
| A rep never rings | Check they're on the line, set to **Available**, inside working hours, and have a cell number on their profile. |
| The phone rang but pressing 1 did nothing | Press 1 while the whisper is playing or just after. You have 15 seconds. |
| "Reaches 25 of 34" warning | Raise **Phones per wave** or **Give up after**. |
---
# AI Texting (AI text agents)
> An AI that texts your leads back in seconds, answers questions from your own knowledge, books them on your real calendar and hands off to your team when a person is needed.
Source: https://docs.aisync.link/dialer/ai-texting
An **AI text agent** answers the texts your leads send, in your business's voice. It:
- replies within seconds, any time of day;
- answers questions using **only** what you taught it (your website, services, prices, FAQs);
- offers **real open times** from your calendar and books them;
- saves what it learns (name, email) and tags the contact;
- follows up when a lead goes quiet, only between 8am and 9pm their time;
- **hands off to your team** the moment a person is needed, and steps back as soon as a teammate replies.
Find it in the dialer under **AI Texting**, or in the main menu under **AI Texting**.

## Three modes
| Mode | What happens |
| --- | --- |
| **Off** | The AI does nothing. |
| **Suggest** (start here) | The AI drafts replies. In the Inbox, press the ✨ **Suggest a reply** button and the draft appears in the text box for you to edit and send. |
| **Autopilot** | The AI replies on its own and hands off to your team when needed. |
Start in **Suggest** for a few days. When you like what it writes, switch to **Autopilot**.
## Set it up
Click **New AI agent**. Setup takes six short steps, and nothing goes live until you choose a mode and save.
Name the agent (only your team sees this), the name the AI texts as (for example *Sarah*), and your business name.

Click **Learn from my website** and paste your website address. AI Sync reads the page and fills in **About the business**, **Knowledge** and **FAQs** for you to review. Edit anything that is wrong, then continue.
Put everything the AI may say in **Knowledge**: services, prices, hours, location, policies. **The AI never makes up facts or prices.** If something is not here, it says it will check with the team and hands off.

Pick the goal:
- **Book appointments**: the AI qualifies lightly, then offers real times.
- **Qualify leads**: the AI asks your questions, then hands off with a summary.
- **Answer questions**: the AI helps and hands off what it cannot answer.
To book, pick the **AI agent whose calendar to use**. The AI books on exactly the calendar that agent already uses (GoHighLevel, AI Sync calendar, Calendly or Google), so your text and voice agents share one calendar. Add the questions you want answered; the AI asks them naturally and skips anything the lead already told you.

- **Tone** and **length**.
- **Reply delay**: how long it waits before replying, like a person typing.
- **Max AI texts per person per day**.
- **Follow-ups**: when to nudge someone who went quiet (for example after 24 hours and 3 days). Follow-ups only go out between 8am and 9pm their time.
- **Hand-off words**: words that always bring in a person, for example *refund, lawyer, complaint*.
- **Extra instructions**: anything else, in plain English.

Tick the numbers this agent answers. Each number belongs to one agent. A number must be registered for texting (10DLC) before the AI can use it.

Chat with your agent as if you were a lead. Under each reply, **Why** shows its reason and what it did, for example *Checked the calendar: 6 open times*. **Test chats never text anyone or book anything.**

Then choose **Suggest** or **Autopilot** and click **Save**. Autopilot asks you to confirm and lists exactly what the agent will do.

## Guardrails (always on)
- Never answers a **STOP** text, and never texts anyone who opted out of texts.
- **Steps back the moment a teammate texts the lead by hand**, and shows *AI paused* in the Inbox. Click **Let AI continue** to hand it back.
- Only offers times your calendar actually has open, and books only after the lead agrees to one.
- Never invents prices, discounts, policies or promises.
- Tells the truth if asked whether it is an AI.
- Never asks for card numbers, passwords or social security numbers.
- Follow-ups only between 8am and 9pm in the lead's time zone, and never more than your daily limit.
- Each incoming text gets at most one reply; a burst of texts gets one reply to the latest.
## In the Inbox
- A purple bar shows **Sarah (AI) is handling this conversation**, with **Pause AI**.
- Texts the AI sent carry an **AI** tag. Hover it to see why it sent that text.
- When the AI hands off, the conversation goes back to **Unread** and a note explains what the lead needs.
- ✨ **Suggest a reply** drafts the next text for you from the whole history, including calls and emails.
## Get the best results
1. **Teach it well.** Most mistakes come from missing knowledge. Add your real prices, hours and policies, and the 10 questions leads ask most.
2. **Use the same calendar as your voice agent.** Leads can book by call or text and land on one calendar.
3. **Turn on [AI Memory](/dialer/ai-memory).** Every agent then knows what was said on calls, texts and emails, and nobody asks the same question twice.
4. **Test five real conversations** before Autopilot: a price question, a booking, an angry lead, "are you a bot?", and someone who says STOP.
5. **Watch the Why.** If a reply is off, read its Why and fix the knowledge or instructions.
## Costs
Each AI text the agent sends, and each **Suggest a reply** draft, is billed as **AI text reply** in your usage costs, at the **real AI cost plus 20%**: usually around half a cent, and never more than 1.5¢ per reply. Test chats are free.
If you also use GoHighLevel's own Conversation AI on the same number, turn it off there, or both will reply.
## With your AI assistant
If your AI assistant (for example Claude) is connected to AI Sync, you can ask it:
- *"Show my AI text agents and how they did this month."*
- *"Put the New lead texter on Autopilot."*
- *"Test my AI text agent: a lead asks how much Botox costs."*
- *"Is the AI handling Avery Stone's conversation? Pause it."*
- *"Draft a reply to Avery Stone."*
---
# AI Memory
> One profile of each person from every text, email and call. Your AI text agent, your AI voice agents and your team all read it, so every channel is on the same page.
Source: https://docs.aisync.link/dialer/ai-memory
**AI Memory** keeps one short profile of each person, built from every text, email, call and team note:
- who they are and where things stand;
- what they want;
- their concerns;
- the agreed next step;
- facts they told you (budget, timeline, preferences).
Your **AI text agent** reads it before every reply, your **AI voice agents** receive it when a call starts, and your team sees it in the **Inbox** under the contact. Nobody asks the same question twice.
It is **off** until an account owner or admin turns it on.

## Turn it on
In the dialer or the main menu, open **AI Texting** and find **AI Memory**.
Read what it does and the price, tick **I understand**, and click **Turn on**.

Profiles are built after conversations (at most once every couple of minutes per person), so they stay current without you doing anything.
## Get the most out of it
- Turn on **Memory** on your AI voice agents too, so calls start with the profile.
- Keep notes on contacts. The profile reads them.
- Use the same calendar for voice and text agents.
- Read the profile in the Inbox before calling someone back.
## Export
Click **Export profiles (CSV)** at any time to download every profile as a spreadsheet.
## Turn it off
Switch it off at any time. New profiles stop being built and agents stop reading them. Existing profiles are kept and can still be exported.
## Costs
Each profile update is billed as **AI memory update** in your usage costs, at the **real AI cost plus 20%**: usually about a tenth of a cent, and never more than 0.5¢.
---
# Do Not Contact, STOP and START replies
> Stop calls, texts or email to one lead. What happens when a lead texts STOP or START, and how to text them again.
Source: https://docs.aisync.link/dialer/do-not-contact
Every conversation has four **Do not contact** switches. Each one blocks a single way of reaching that lead, so you can stop texting someone without blocking calls.
| Switch | What it blocks |
| --- | --- |
| **All** | Calls, texts and email. While it's on, the other three show "Covered by All". |
| **Calls** | Dialer calls and AI agent calls |
| **Texts** | Texts from reps, automations and the AI text assistant |
| **Email** | Emails |
You'll find the switches in the **Inbox** side panel and on the dialer contact card. Reps, admins and owners can change them.
## When a lead texts STOP
1. Texts to that lead turn off automatically.
2. They get one confirmation that they've been unsubscribed.
3. Your AI text assistant doesn't reply.
4. The conversation shows a banner: **"Unsubscribed from texts · replied STOP on Oct 4"**, with a **Turn off** button.
Words that unsubscribe: STOP, STOPALL, UNSUBSCRIBE, CANCEL, END, QUIT.
## When a lead texts START
START, UNSTOP or YES turns texts back on, but only if the lead's own STOP turned them off. If someone on your team turned texts off by hand, a START reply doesn't undo it.
## Turning texts back on yourself
Click **Turn off** on the banner, or switch **Texts** off. You'll be asked to confirm:
> This person asked not to be texted. Texting them again is at your own risk. The carrier may still block texts until they reply START.
Tick **I understand** and confirm. AI Sync records who did it, when, and the exact warning they saw.
Carriers keep their own STOP list. Even after you turn texts back on, the carrier may block your texts until the lead replies START. Calls aren't affected.
## The DNC outcome
After a call, pick **DNC** under "How did it go?" and that lead won't be called again. If you don't see DNC, ask your admin to give your role the DNC outcome.
## Every change is logged
Each change records who made it, when, and the before and after, so you always have a record.
---
# AI Calling Hours and Call Requests
> AI calls follow do-not-call and the lead's calling hours. How to call a lead right away when they ask for a call.
Source: https://docs.aisync.link/dialer/ai-calling-hours
Your AI agents follow the same rules as the dialer:
- **Do not call always wins.** An AI agent never calls a lead on do-not-call, or a number on your Do Not Call list.
- **Calling hours follow the lead's time zone.** AI calls only go out during allowed hours where the lead lives.
- **Calls outside hours wait.** They aren't lost. They go out at the lead's next allowed time.
These rules apply to every AI call: workflows, AI campaigns, direct calls and calls your AI assistant starts.
## When a lead asks for a call
Some leads opt in late at night. If they reply that they want a call, the AI can call them right away, even outside calling hours. That's a **call request**.
1. **Ask first.** For example, text: *"We have 24/7 support. Is it okay if we call you now?"*
2. **Record their yes.** Use one of these:
- **In a workflow:** add the **Record call request** step after the text. It only records a clear yes. "No", "call me tomorrow" or "after 5" record nothing. You can branch on its result.
- **In the Inbox:** click **They asked for a call now** in the conversation. Their latest text is saved as proof.
3. **Start the AI call.** It goes out right away.
### What a call request allows
- **One call**, to that lead only.
- It lasts **2 hours** by default. An admin can set anything from 5 to 240 minutes.
- **Do not call still wins.** A lead on do-not-call is never called, even after a yes.
- The lead's exact words and the time are saved on their contact timeline.
Running opt-in campaigns after hours? Put **Record call request** right after your "okay to call?" text, then the AI call step. Leads who say yes get a call right away. Everyone else is called the next morning.
## How to tell why a call didn't go out
- **Workflow logs** show the reason, for example "Outside calling hours, next allowed 9:00 AM their time" or "On Do Not Call".
- **AI campaigns** show how many calls are waiting for calling hours and how many were blocked by do-not-call.
---
# Outbound Call Routing
> Configure Local Presence, voicemail templates, and iPhone screening templates for outbound dialing.
Source: https://docs.aisync.link/dialer/outbound-call-routing
This guide covers outbound dialer settings so you can choose the right **Local Presence**, **voicemail**, and **iPhone screening** options for your calls.
#### **📟 Dialer 1.0**

#### **📞 Dialer 2.0**
In Dialer 2.0, the left sidebar includes **From Number**, voice template pickers for **voicemail** and **iPhone screening**, **Local Presence**, and **PowerList** selection.

## 🎙️ Voice templates for outbound calls
Create and manage templates in **Manage → Voice Templates**, then select them here before you start dialing.
### 📧 Select Voice Template for Voicemail
Use this when you want an automated message left if the contact does not answer and the call hits voicemail.
- Choose a saved voice template from **Select A Voicemail**.
- When voicemail is detected, that template plays so a consistent message is left without the agent speaking live.
- Leave the field unselected if you do not want an automatic voicemail drop for this session.
**Tip:** Keep voicemail templates short and clear (who you are, why you called, and how to call back).
### 📱 Select Voice Template for iPhone Screening
Many iPhones use **Call Screening** (including Live Voicemail), which asks unknown callers to say their name or reason for calling before the phone rings or connects.
- Choose a saved voice template from **Select iPhone Screening**.
- When screening is detected, that template plays so the system can respond instead of staying silent or disconnecting.
- A short intro that states your name and company usually works best for screening prompts.
If you do not select an iPhone screening template, screening prompts may not get a clear spoken reply, which can lower the chance the call reaches the contact.
Voicemail and iPhone screening templates are separate. You can use different audio for each, or only configure the one you need.
## 📞 What is Local Presence?
**Local Presence** helps you display a caller ID that matches the contact's area code when you place outbound calls. Many teams use this because people are more likely to answer calls that appear to come from their own region.
## ⚙️ How Local Presence Works
### ✅ When Local Presence is Set to Yes
To enable area-code matching, you must also set **Calling From** / **From Number** to **Calling From AI Local Presence** (or **Any Provider - AI Local Presence** in Dialer 2.0).
When both settings are correct:
- Outbound calls will use a **caller ID matched to the contact's area code** (when that matching is available for your account and numbers).
- Dialing is performed **region by region for the batch** so the dialed caller ID can line up with the contacts in that region.
- If a region does not have enough ready contacts to fill a full batch, you may receive a **smaller batch**.
- The system **does not pad** that same round with contacts from other regions just to meet the batch size.
### 🚫 When Local Presence is Set to No
When you set Local Presence to **No**:
- You are not asking the dialer to match caller ID to each contact's area code for this dialing session.
- The dialer uses your normal **Calling From** / **From Number** choice (for example your main company number or another configured outbound line).
- Dialing order is still based on your power list in a sensible sequence.
- If the "busiest" region does not have enough ready contacts for a full round, the system **can add more contacts from other regions within the same batch**. This helps you stay closer to your configured **dial at a time** behavior instead of stopping short.
## 🆕 What changed recently
**When two people answer at once, the second one goes to another free rep**
instead of being dropped. If nobody is free and you have an AI agent enabled, it
takes the call. Failing both, the person hears a short message rather than
silence.
**Phone screening is detected as its own outcome.** A handset that answers on
the lead's behalf is no longer recorded as voicemail or as a conversation. See
[iPhone and carrier screening](/dialer/iphone-screening).
See [What's New](/go-live/changelog) for the full history.
---
# AI Dashboard
Source: https://docs.aisync.link/ai/dashboard
#### 📊 Overview
The **AI Dashboard** is a central overview of your AI assistants and the calls handled by them. Here you can see how many agents and phone numbers you have, how many calls occurred in a chosen period, how long calls lasted on average, how many were successful, how many appointments were booked, and why calls ended. Charts and tables below help you explore the details.
## 🧰 Filters (top row)
This row controls **which agent** and **which date range** the overview uses.
**👤 Select Agent**
- **All** — data for every AI agent combined.
- Choosing a named agent limits the overview to that agent’s calls and metrics.
- Changing the agent usually refreshes the overview automatically; if not, press **Filter**.
**📅 Date Range**
Pick a preset such as Today, Yesterday, Last 7 Days, This Month, Last Month, and others.
- If you choose **Custom dates**, the **Start Date** and **End Date** fields become active. Set your range, then press **Filter**.
- For other presets, start and end dates are set for you and those fields stay inactive; the overview may refresh on its own.
**🗓️ Start Date / End Date**
- Used only with **Custom dates**.
- Charts and summary cards follow the period you define here once you apply the filter.
**🔄 Filter**
- Use this after changing dates or when the screen does not refresh by itself. It updates all related numbers and charts for your current choices.
## 📈 Summary cards
Each card shows one key figure. Hovering (or focusing) on a card may show a short explanation.
**👩💻 Total Agents**
- The number of **all** AI agents in your account, whether active or inactive.
- This count does **not** depend on the date filter; it describes your overall setup.
**☎️ Total Numbers**
- The total count of **phone numbers** used with your AI setup.
- One agent can have more than one number.
**📞 Total Calls**
- All calls in the **selected date range** and **selected agent** scope, including inbound and outbound.
**⏱️ Avg Duration**
- The **average length** of calls in that period, shown in minutes and seconds.
**📅 Appointments**
- Calls where an **appointment date and time** was recorded.
- **Clicking this card** opens the **Appointment Details** panel .
**✅ Call Successful**
- Calls marked as **successful** (yes).
**🔀 Transfers**
- Calls that ended with a **transfer** to another destination.
## 🚦 Number Status Overview
This section focuses on **spam or risk status** of your numbers. It reflects the **current status** of numbers more than a single call date.
**📊 Number Status Chart**
- A chart comparing **Clean** and **Flagged** numbers.
- Counts shown beside the chart:
- **Clean Numbers**
- **Flagged Numbers**
- **Total Numbers** (overall count used in this view)
**⚠️ AI Spam Numbers Details**
Lists numbers whose status is **Flagged** or **In Progress**.
| Column | Meaning |
|--------|---------|
| **#** | Row number |
| **Phone Number** | The phone number |
| **Nickname** | The label you gave the number |
| **Spam Status** | Current status (for example flagged or in progress) |
| **Area Code** | Area code |
| **Inbound Agent** | Agent linked for inbound calls |
| **Outbound Agent** | Agent linked for outbound calls |
| **Updated At** | When the record was last updated |
## 📊 Call Analytics
Charts in this section use your **selected date range** and **agent**.
**📆 Call Counts**
- How many calls occurred on each day across the period.
**🟢 Call Success Rate**
- Share of calls marked successful, unsuccessful, or unknown (ring-style chart).
**🔄 Call Directions**
- How many calls were **inbound**, **outbound**, or **web**.
**🔚 Disconnection Reasons**
- **Why** each call ended — for example caller hung up, assistant hung up, transfer, voicemail reached, busy line, no answer, or other connection or system situations. Counts are shown per reason type.
**😊 User Sentiment Distribution**
- How calls are split across **Positive**, **Neutral**, **Negative**, and **Unknown** sentiment.
**☎️ Call Picked Up Rate**
- Over time, the percentage of calls where the end reason indicates a connected conversation (for example caller hangup, assistant hangup, or transfer) versus all calls.
**🎯 Call Successful Rate**
- Over time, the percentage of calls marked successful.
**🔀 Call Transfer Rate**
- Over time, the percentage of calls that ended in a transfer.
**👨💼 Transfers by Agent**
- Which **AI agent** transferred calls and how many times.
**Reading the chart:** Each color is a different AI agent; larger segments mean more transfers. Hover a segment for exact counts. You can click a segment, use the legend below, or use **+X more** to pick an agent when there are many.
**⏲️ Average Call Duration**
- Average call length by day over the period.
**📅 Appointments**
- Trend of appointment-related activity by day.
**📬 Voicemail Rate**
- Percentage of calls that reached voicemail.
## 📆 Appointment Details Panel
This panel appears when you **click on the Appointments** summary card.
- Displays the **company name** and the total number of **appointments** at the top.
- The table usually includes these columns:
- **Call Date** — date and time of the call
- **Agent** — AI agent managing the call
- **From / To** — caller and recipient numbers
- **Duration** — call length
- **Appointment** — scheduled appointment time
- **Status** — was the call successful
- **Sentiment** — detected sentiment
- **Recording** — audio player if there’s a recording
- **Actions** — **Details** option for more information
Use the **Close** button to exit the panel. If there is an issue loading data, an error message will be shown.
---
## 📞 Call Details Panel
This panel opens when you select **Details** on a call entry.
- Displays: date and time, **Agent**, **Duration**, and **Direction** (inbound, outbound, or web).
- **From** and **To** phone numbers.
- **Appointment** field—shows time if booked, or “not specified.”
- **Call Analysis** section: indicates success, user sentiment, and **Hangup reason**.
- **Recording** is available with playback controls if there’s an audio file.
- If a **Summary** or **Transcription** exists, these appear in their own sections; otherwise, they are hidden.
---
## 🔀 Transfer Details Panel
This panel offers an in-depth view of all **transferred** calls within the relevant workflow.
- Shows the **Agent**’s name and total number of **transfers** at the top.
- The table lists: **Call Date**, **Agent**, **From**, **To**, **Duration**, **Status**, **Direction**, **Sentiment**, **Recording**, and **Actions** (Details).
The table often provides features such as searching, sorting, pagination, and the ability to select how many rows are displayed per page.
---
# Listing
Source: https://docs.aisync.link/ai/agents/listing
#### 🤖 User Guide
The **AI Agents** page is where you view all of your company’s voice AI agents, organize them, and open the tools needed to manage each one. The left side shows **Folders**; the right side shows the **All Agents** list.
## 📁 Left panel: Folders
**📋 “All Agents”**
When it is selected, you see **every agent** (no folder filter).
**📂 Your own folders**
- Each folder has a **name** you chose.
- Using the **grip icon**, you can **drag a folder up or down** to change **order only** (which folder appears higher in the list).
- The **three dots** next to a folder open **Edit** or **Delete**.
- **+ Add** opens a small window: enter a **Folder Name** and choose **Save** to create a new folder.
**🆕 No folders yet**
If you have not created any folders, you will see a short message encouraging you to create folders so you can organize agents.
**💾 Remembering the selected folder**
The application remembers **which folder you last selected**. The next time you open this page, that same folder is selected again when it still exists. If that folder was removed, you are returned to **All Agents**.
**🗑️ Deleting a folder**
You are asked to **confirm** before a folder is removed. The page may refresh afterward.
## 🖥️ Right panel: “All Agents” — top buttons
**📥 Import Agent**
- Use this to bring an agent back into the system using a **file you previously exported** (or a compatible backup file).
- After you pick a file, you may see a short preview such as the **agent name** and **voice identifier** when available.
- Choosing **Import Agent** starts the import; on success, the list refreshes.
- If the file is invalid or incomplete, you will see an error message.
**➕ Add Agent**
This depends on **your plan**:
- If **both** agent types are available, a window asks roughly **how many calls per day** the agent will handle.
- **Under 100 calls per day** is described as higher voice quality and lower delay; **Get Started** takes you to the setup path that matches that choice.
- **100 or more calls per day** is described for higher volume; **Get Started** opens the other matching setup path.
- If your plan only allows **one** agent type, **Add Agent** goes **straight** to the correct “create agent” screen without that two-card window.
## 📊 The Agents table
**🔢 # (Number)**
The **row number** on the current page. Numbers change when you move to another page.
**🏷️ Name**
- The **agent’s name** (very long names may be shortened on screen).
- Clicking the name opens that agent’s **full editing** screen (the right screen depends on the agent type).
- The **Numbers** button opens the **phone numbers** window .
- **Agent ID** is the unique identifier the system uses for that agent everywhere.
**📅 Renewal At**
If the agent is **billable**, this may show the **next renewal date and time** in your timezone. Otherwise it may stay empty.
**🔛 Status**
- A switch for **on** or **off**.
- **On** means the agent is treated as **active**.
- **Off** means **inactive**.
- When you change it, you may briefly see a “please wait” style message, then success or failure.
**⏰ Updated At**
The **date and time** of the last recorded change to the agent, shown in **your timezone**.
**⚙️ Action**
Opens a **menu** with more choices .
## ⋮ Three-dot menu
The exact wording or destination can differ slightly by agent type, but in general:
| Option | What it does |
|--------|----------------|
| **Edit** | Opens the full settings screen for that agent. |
| **Public call link** | Generates and displays a **public-facing link** that anyone can use to initiate a call handled by this agent. This is useful for embedding in web pages or sharing directly with users to let them start a call with your AI agent from anywhere, without requiring authentication. |
| **Endpoints** | Shows the **address**, **method**, and **fields** used to start calls from outside systems, in a dedicated view. |
| **Test Call** | Opens a small window: enter a **phone number** to try a test call. |
| **AI Widget Configure** | Opens the screen for the **website call widget** tied to that agent. |
| **Add Folder / Change Folder** | Puts the agent in a folder or moves it; you can also choose **no folder**. |
| **Duplicate** | Creates a **new copy** based on that agent. Your company’s **agent limits** and **extra charges** may apply. |
| **Export** | Saves the agent’s setup and related details into a **file** for backup or for importing elsewhere. |
| **Delete** | **Permanently** removes the agent after you confirm. **Extra permission** may be required. |
## ☎️ Numbers window (Manage Numbers)
When you click **Numbers**, you’ll open the Manage Numbers panel for that agent:
- The **panel title** displays the agent’s name (example: “Dasha H Test”).
- Two columns are shown:
- **Available Numbers** (left): Lists all phone numbers that are not currently assigned to the agent but available for use.
- **Number:** The phone number available for assignment.
- **Status:** Each number shows its current status, such as **Clean** (green label) or another state if flagged.
- **Action:**
- If assignable, you’ll see blue **Inbound** and **Outbound** buttons depending on the features the number supports. Click one to instantly assign the number to the agent for that capability.
- The green **Chat** button will only enabled if the number is an A2P-linked number (i.e., linked for Application-to-Person messaging). Only these numbers can be assigned the chat functionality.
- Some numbers may allow both **Inbound** and **Outbound** assignment at once.
- **Assigned Numbers** (right): Lists all numbers currently tied to the agent.
- **Number:** The assigned phone number.
- **Type:** Each assigned number displays a label such as **Inbound** or **Outbound** depending on its assigned function.
- **Status:** Shows the current state, such as **Clean** (green label).
- **Action:** A red **Unassign** button lets you immediately remove the number from the agent.
If assignment or removal fails, you will see an error message. Some numbers may require extra setup before they can be assigned.
---
# General
Source: https://docs.aisync.link/ai/manage-agent/general
#### 🎛️ General Tab
This is where you set your AI agent’s **name**, **on or off state**, **folder**, **location**, **time zone**, **how the first message works**, and **full instructions (the prompt)**. **General** holds the core setup.
## 🗂️ Above the tabs
| Element | What it does |
|--------|----------------|
| **Back to Agents** | Returns you to the list of agents. |
| **Agent title (page heading)** | Shows the name currently used for this agent. |
| **Delete** | After confirmation, removes this agent. |
| **Talk With Agent** | Starts a test call so you can hear how the agent responds. **Hangup** ends the test call. |
## 1️⃣ Top Row Details
**🏷️ Display Name (Agent Name)**
You see the name and an **edit** control.
- **Edit** opens a field below; **Update** sends the new name.
- On success, the name at the top of the page and in General both update.
- The name is also updated on the calling side so calls use the same display name.
**🔛 Status**
A switch for **on** or **off**.
- **On** — the agent is treated as available for use.
- **Off** — the agent is not active for handling work.
**📁 Folder**
Help text explains that you can group agents into folders for organization.
Choosing a folder **saves immediately** when you change the selection.
**📍 GHL Location**
Help text explains that this is the **GoHighLevel location** where call data, contacts, and conversation records are tied.
Changing the location **saves** and can refresh related choices elsewhere (for example calendars or field lists). On first load or when you change location, **automatic field matching** may run if no mappings existed before.
**🕒 Timezone**
Help text explains that this is the time zone used for this agent for scheduling and time-related behavior.
Changing the time zone **saves immediately**.
## 2️⃣ Agent Test
The **Agent Test** panel gives you three ways to try out your AI agent before going live with real contacts:
1. **Chat:**
- Interact with the agent in a text chat interface.
- Great for quickly testing conversational flow, prompts, and responses.
2. **Voice:**
- Test the agent using voice in your browser.
- Speak naturally and hear how the agent responds in real time.
3. **Phone:**
- Make a real test call to your phone number and talk to the agent as an actual caller.
- Experience exactly what your customers will, including telephony flow and audio quality.
Choose any option to demo, refine, or debug your agent’s behavior based on your needs.
You can end the session at any time.
## 3️⃣ Welcome Message
Help text explains that you control **how the conversation starts** — whether the caller speaks first or the AI speaks first.
Three choices:
1. **User initiates**
The AI stays quiet until the caller speaks.
2. **AI initiates — dynamic opening**
The AI starts the call; the first line comes from the **system default** (you do not type a custom line).
3. **AI initiates — your own opening**
The AI starts and uses **exactly the text** you type in the box below.
The large text box **only appears** when the third option is selected.
These welcome settings are applied when you press **Save** on the prompt (see below), together with the rest of the General prompt.
## 4️⃣ General Prompt
This area controls how your AI agent’s core behavior is set and versioned. Here, you specify **exactly what the agent should do, how it should act, and any boundaries or rules it must follow.**
The prompt editor includes:
- **Prompt Name:**
You must enter a unique name before saving your prompt. When saving, the system adds the current date and time to the name to keep each version distinct.
- **Version List (dropdown):**
Lets you access past prompt versions for this agent. Selecting a version immediately reloads its contents into the editor for review or modification. The trash icon deletes a saved version after confirmation.
- **Prompt Mode:**
Two options are available—**Sectioned Prompt** (each topic in its own box) and **Single Prompt** (all content in one). Switching modes will automatically split or merge your content, with no data lost. A description below the radio buttons clarifies the current mode.
- **Action Buttons:**
- **Copy Prompt:** Copy for resuse.
- **Paste Prompt:** Inserts prompt content from your clipboard (preserving section format in Sectioned mode).
- **Clear Prompt:** Erases all content, after confirmation.
- **Launch Pad:** Additional tool options (such as importing/exporting prompts).
- **Default Prompt:**
Create a new prompt by choosing an industry and a starter template. Using this will pre-fill all related fields, which you’re free to further edit.
- **Placeholder Tags:**
Below the prompt, you’ll see a line showing available dynamic variables (e.g., `{first_name}`, `{meeting_pin}`) that the agent can use during conversations for accurate, tailored responses.
Every setting here is applied only when you save the prompt version. You can freely test changes and revert as needed with version controls.
## 5️⃣ Placeholder tags (dynamic variables)
Below the prompt area, a line shows **tags in curly braces**. These come from your contact fields, plus **current date and time** and **join meeting pin** where applicable.
During a live call, these tags are **filled with real values** for that contact or call so the agent can speak accurately.
## 6️⃣ Sectioned Prompt Boxes (Sectioned mode)
When you’re in **Sectioned Prompt** mode, the editor displays separate boxes for different areas of your agent’s instructions. Each one includes a help icon offering a quick tooltip about what to include.
Here’s what each section covers:
| Section | Description |
|----------------------------------------|-----------------------------------------------------------------|
| **Project instructions / Request** | The core objective—the main thing you want this agent to do. |
| **Greetings** | The initial message or opening line for every conversation. |
| **Call Flow** | The intended step-by-step flow and sequence of the call. |
| **Character** | Guidance on tone, personality, and overall style. |
| **Transfer Call** | How and when to transfer the call to a human operator. |
| **Critical Instructions / Guardrails** | Rules and hard limits—the “never do this” instructions. |
| **Custom Field References** | Details about special fields or variables your use-case needs. |
| **What Your Company Does** | A quick summary of your products, services, or mission. |
| **Script** | Bullet points or a linear script for the agent to follow. |
| **Objection Handling** | How to address common rejections or pushback. |
| **Booking flow** | The process to schedule calls or appointments (e.g., with GHL). |
| **FAQ / Knowledge Base** | Common questions, answers, and reference info. |
You’ll also see an **Expand** button for each section—click it to enlarge and make longer edits easily.
If you switch to **Single Prompt** mode, all content is merged into one box labeled **All Prompts**.
## 7️⃣ Apply this prompt to other agents (when shown)
This block appears when the system offers **other agents** you can target.
- You may select **more than one** agent (hold Ctrl on Windows or Command on Mac while clicking).
- When you press **Save**, the same prompt and welcome behavior can be applied to those agents so you do not repeat the work for each one.
Some agent types may be updated through a different path behind the scenes; the outcome for you is still one save that updates multiple agents when selected.
## 8️⃣ Save and New Version
**💾 Save**
- **Prompt name** is required.
- If **no older version** is selected in the list, the save is treated as a **new copy** under that name.
- If **an older version is selected**, you are asked whether to **replace that version** or **create another copy**.
- **Override** — that version is updated with your current text.
- **New version** — the old row stays; a new row is added.
When save succeeds:
- All sections are **combined into one full instruction** for the AI, with a **current date and time** line at the end.
- That full instruction is what the **live agent** uses.
- A **history row** is also stored with a timestamp in the name.
**🆕 New Version**
If nothing is selected in the version list, this path creates a new version directly.
If something is selected, you may be asked for a name, then a new version is stored.
---
# Voice & Language
Source: https://docs.aisync.link/ai/manage-agent/voice-languages
#### 🎙️ User Guide
The **Voice & Language** tab is where you choose **how your agent thinks (in text)**, **how it sounds**, **which language it uses**, and **optional background sound on calls**.
Small **information icons** next to labels give short hints when you point at them.
## 🗂️ Opening the tab
Select **Voice & Language** in the row of tabs at the top of the agent settings. The screen is laid out in two columns: model and voice on the first row; language and background sound on the second.
## 🤖 AI Model
**What it does**
This is the “brain” behind your agent’s replies. Different options can differ in quality, speed, and **cost per minute** (shown next to each name).
**How to use it**
Open the list, then pick one option. The top of the box updates to show your choice (including a small brand-style icon where shown). Your selection is saved when you pick it.
**Choices available (as shown in the product)**
Each line includes an approximate **per-minute price** in parentheses.
- **GPT 5** ($0.04/min)
- **GPT 5 mini** ($0.012/min)
- **GPT 5 nano** ($0.003/min)
- **GPT 5.1** ($0.05/min)
- **GPT 5.2** ($0.06/min)
- **GPT 4.1** ($0.045/min)
- **GPT 4.1 mini** ($0.016/min)
- **GPT 4.1 Nano** ($0.004/min)
- **Claude 4.5 Sonnet** ($0.06/min)
- **Claude 4.0 Sonnet** ($0.06/min)
- **Claude 4.5 Haiku** ($0.02/min in the dropdown list; the summary line at the top may show $0.011/min for the same model depending on how the page was loaded)
- **Gemini 2.5 Flash** ($0.035/min)
- **Gemini 2.5 Flash Lite** ($0.006/min)
**Tooltip (information icon)**
Explains that this controls the model powering responses, and that options differ in intelligence, speed, and cost.
## 🎤 Voice
**What it does**
Sets the **spoken voice** your agent uses on calls—tone and style depend on the voice you pick.
**What you see on the tab**
A field shows your **current voice** as a name and an **identifier** in parentheses. Next to it is a **settings (gear)** button (see [⚙️ Voice Settings window](#voice-settings-window)).
**How to pick or change a voice**
The main catalog opens in a large **Voice List** window (scrollable). There you can hear samples, filter, search, and confirm a voice with **Use This**.
**Tooltip**
Explains that different voices have different tones and speaking styles.
## 📋 Voice List window (voice catalog)
This window helps you browse all voices that are **available for your agent**.
**Filters (top row)**
- **Gender:** All, Male, or Female
- **Accent:** All, American, or British
- **Provider:** All, Eleven Labs, Deepgram, Open AI, or Custom Voice
- **Search:** Type to narrow the list by text you see in the table
**Table columns**
- **Play:** Hear a short sample (play / pause behavior).
- **Voice:** Picture and **display name**.
- **Trait:** Badges for **accent**, **age**, and **gender** when that information exists.
- **Voice ID:** The label used to identify that voice in the system.
- **Action:** **Use This** — selects that voice for your agent and applies it in line with the rest of the page.
**Footer**
- **Close** — exits without applying a new voice via **Use This**.
- **Save Changes** — appears in the footer; the main way to apply a voice is **Use This** on a row.
## ⚙️ Voice Settings window (gear button next to Voice) {#voice-settings-window}
**What it does**
Fine-tunes **how the agent’s voice behaves**, separate from *which* voice you chose.
**Fields in this window**
1. **Voice Speed**
Adjusts how quickly the agent speaks, using a slider that ranges (approximately) from **0.00** (slowest) to **2.00** (fastest).
As you move the slider, the displayed value updates. The new speed is saved automatically when you let go of the slider.
2. **Voice Temperature**
Controls how expressive or dynamic the agent’s voice sounds.
Higher values typically allow for more natural variation in speech.
Adjust using the same style of slider; value is saved when you release it.
3. **Voice Volume**
Sets how loud the agent’s voice is.
Use the slider to increase or decrease loudness; value is saved automatically upon release.
**Footer actions**
- **Close:** Closes the settings window.
- Changes for speed, temperature, and volume are saved the moment you finish adjusting each slider—there’s no separate "Save" button for these controls in the footer.
**Default values**
If no previous settings exist, all three fields (speed, temperature, and volume) start at approximately **1**.
## 🌐 Language
**What it does**
Sets the **main language** for the agent. This affects **understanding what callers say** and **how replies are formed**.
**How to use it**
Open the list and choose one language. When your choice changes, the system tries to save it right away.
**If nothing is selected**
If the list is left on **Select Language**, the product may warn you to choose a language first and will not treat that as a valid save.
**Choices in the list**
- Select Language (empty)
- English (United States)
- English (India)
- English (United Kingdom)
- German (Germany)
- Spanish (Spain)
- Spanish (Latin America)
- Hindi (India)
- Japanese (Japan)
- Portuguese (Portugal)
- Portuguese (Brazil)
- French (France)
- Chinese (China)
- Russian (Russia)
- Italian (Italy)
- Korean (South Korea)
- Dutch (Netherlands)
- Polish (Poland)
- Turkish (Turkey)
- Vietnamese (Vietnam)
- **Multiple Languages** — use when the agent should work across more than one language rather than a single fixed one
**Tooltip**
States that this affects both recognition of speech and generation of responses.
## 🎵 Background Sound
**What it does**
Adds a **soft ambient sound** behind the call so the call can feel more natural or help mask noise.
**Main list on the tab**
- **Select Sound** — means **no** background sound (same as turning it off).
- **Cafe Ambience**
- **Event Hall Background**
- **Open Air - Summer**
- **Open Air - Mountain**
- **Clean White Noise**
- **Office Chatter**
When you change this list (after the page has finished loading), your choice is saved automatically.
**Gear button (next to Background Sound)**
Opens **Background Sound Volume** (see [🔊 Background Sound Volume window](#background-sound-volume-window)).
**Tooltip**
Explains using ambient sound for a more professional feel or to mask background noise.
## 🔊 Background Sound Volume window (gear next to Background Sound) {#background-sound-volume-window}
**What it does**
Sets how **strong** the background sound is—not the agent’s voice volume (that is under **Voice Settings**).
**Control**
A **Volume** bar from **0** to **2**, with the current level shown in the middle as you move it.
**Save**
Press **Save** to store the volume. You must have a **real** background sound selected (not “Select Sound” / off); otherwise you may get a message asking you to pick a background sound first.
**Close**
Closes the window without using **Save** for that visit (your last saved volume remains whatever was saved successfully before).
---
# Call Handling
Source: https://docs.aisync.link/ai/manage-agent/call-handling
#### 📖 User Guide
The **Call Handling** tab controls what happens when calls do not connect as hoped, when a **voicemail** is detected, how long calls may run or stay quiet before ending, and whether the agent **remembers callers** across calls. It is grouped into four areas:
1. **🔄 Redial Settings** — automatic follow-up dialing behavior
2. **📧 Voicemail Detection** — what the agent does when it reaches voicemail
3. **⏱️ Call Duration & Silence Settings** — time limits and silence rules
4. **🧠 Caller Memory** — remember callers across calls (optional cost)
Small **information icons** next to section titles show extra hints when you point at them.
## 🗂️ Opening the tab
Select **Call Handling** in the row of tabs on the agent settings page.
**🔄 Redial Settings**
This block decides whether the system should **try the number again** after a failed attempt, **how long to wait** between tries, whether **voicemail counts** as a reason to redial, **which agent** should place the redial, and whether **local presence** is used.
**🔘 Enable Redial**
**What it does**
Turns automatic redial **on** or **off**.
- **On** — follow-up attempts may be made according to your other choices in this block.
- **Off** — no automatic redial from these settings.
**How it works**
When you change the switch, your choice is saved. Changing **Redial After** at the same time also saves together with this setting.
**⏳ Redial After**
**What it does**
Sets **how long to wait** before placing the next attempt when redial is enabled.
**Choices**
- Instantly
- 1, 2, 3, 4, 5, 10, 15, 20, 25, 30, 45, or 60 minutes
**How it works**
Each time you change this list, the new wait time is saved (together with the current **Enable Redial** on/off state).
**📥 Redial on Voicemail**
**What it does**
Sets whether a call that reaches **voicemail** should be treated in a way that allows **redial** behavior according to your rules.
**Choices**
- **Yes**
- **No**
**How it works**
When you change this, the new choice is saved on its own.
**👤 Redial Agent**
**What it does**
Lets you choose **another agent** (from your available agents) to handle the **redial** call, or leave redial agent unset.
**Choices**
- **No** — no specific redial agent selected.
- Any **named agent** you pick from the searchable list — that agent is used for the redial when this setting applies.
**How to use it**
Click the field, type to **search** by name if needed, then pick an agent. Clearing the selection returns to **No**. Changes save when your selection changes.
**🌎 Local Presence**
**What it does**
Turns **local presence** **on** or **off** for this agent’s calling behavior (for example, whether outbound calls use a local-style caller identity where your service supports it).
**Choices**
- **No**
- **Yes**
**How it works**
When you change this, the new choice is saved.
**ℹ️ Help text for Redial Settings (information icon)**
Explains that you are configuring **automatic redial** after failed calls, including **how many kinds of conditions** apply, **delays between attempts**, and **when** redialing is allowed.
## 📧 Voicemail Detection
This block sets whether **voicemail detection** is used at all, and if so, whether the agent should **hang up** or **leave a message**.
**🔀 Main switch — “Hang up or leave a voicemail if a voicemail is detected”**
**What it does**
Turns voicemail handling **on** or **off**.
- **On** — you can choose **hang up** or **leave a message** below.
- **Off** — the extra choices are hidden; voicemail handling for this agent is turned off.
**How it works**
When you turn it **on**, the system first enables detection, then applies a **hang up** style rule as the starting point; you can change to **leave a message** afterward.
When you turn it **off**, voicemail handling is cleared.
**📴 Hang up if reaching voicemail**
**What it does**
If voicemail is detected, the call **ends** without leaving a message.
**How it works**
Selecting this option saves that behavior. The message box for leaving voicemail is not used while this is selected.
**📝 Leave a message if reaching voicemail**
**What it does**
If voicemail is detected, the agent can **leave a message** instead of hanging up immediately.
**How it works**
When you select this, the **message area** and **message style** controls appear. You type what should be said (or guided), then save with the **save** button next to the style list.
**🎭 Message style (Static / Prompt)**
**What it does**
Chooses **how** the voicemail message is formed.
- **Static** — the agent follows the **exact wording** you provide in the box.
- **Prompt** — the agent follows the **instructions or wording** you provide in a more flexible, spoken style (as your platform interprets “prompt” for voicemail).
**How it works**
Pick **Static** or **Prompt**, enter text in the box, then press the **save** button (disk icon) to store the message. If you change the style and already have text, the product may try to save again when that makes sense.
**🗒️ Message text box**
**What it does**
Holds the **words or instructions** for the voicemail message.
**When it is active**
It is only editable when **Leave a message** is selected and voicemail handling is **on**. If you chose **Hang up**, the box is not used.
**ℹ️ Help text for Voicemail Detection (information icon)**
Explains that you can **hang up right away** or **leave a message** when voicemail is detected.
**⏲️ Note on detection timing**
The product may track **how long** to listen for voicemail in the background. Some timing values are prepared for display in older layouts; **only the controls you actually see on the page** need to be set by you. If you do not see a separate “timeout” control, rely on the main switch and the hang-up / message choices above.
## 🧠 Caller Memory
This block controls whether the agent **remembers callers across calls**, so later conversations can continue with prior context instead of starting from scratch every time.
**🔘 Memory ON / OFF**
**What it does**
Turns caller memory **on** or **off** for this agent.
- **On** — the agent remembers callers across calls.
- **Off** — each call is treated without shared caller memory from previous conversations.
**Cost note**
While memory is **ON**, AI call cost increases by approximately **$0.02 / minute**.
## ⏱️ Call Duration & Silence Settings
This block sets **how long the caller may stay silent** before the call ends, the **maximum length** of a call, and a **short pause** before the agent starts speaking.
**🤫 End Call on Silence**
**What it does**
Sets how much **continuous silence** is allowed before the call **ends automatically**.
**Range (on the control)**
From **10 seconds** up to **30 minutes** (shown as seconds or minutes while you move the control).
**How it works**
Move the control to choose the length. When you **release** the control after moving it, the new value is saved. A short confirmation message may appear when the save succeeds.
**⏲️ Max Call Duration**
**What it does**
Sets the **longest** a single call may last before it **ends automatically**.
**Range (on the control)**
From **1 minute** up to **2 hours** (the screen may show minutes or hours for longer times).
**Rules**
The product expects at least **one minute**. The control’s minimum is set so you normally cannot go below that.
**How it works**
Move the control; the label updates to show minutes or hours. The value is saved after you finish adjusting (including when you release the mouse after dragging).
**⏸️ Pause Before Speaking**
**What it does**
Sets how long the agent **waits** after the call connects before **starting to speak**.
**Range (on the control)**
From **0 seconds** up to **5 seconds**.
**How it works**
Move the control; the label shows seconds. The value saves after you finish adjusting (including when you release the mouse after dragging).
---
# Dialing Compliance
Source: https://docs.aisync.link/ai/manage-agent/compliance
> This tab protects you from breaking telemarketing laws. Everything here controls **when**, **where**, and **under what rules** your AI agent is allowed to make calls.
Define the specific times this agent is permitted to make calls.
Select the US states this agent is allowed to contact.
Choose which compliance safeguards should be enforced automatically.
## 🕐 Section 1 — Schedule
**Question it answers:** *When is this agent allowed to dial?*
### ⏰ Earliest & latest dial time
Set a **start time** and **end time** for the calling window.
- Any call scheduled outside this window is **automatically held** and queued until the next allowed time slot — it does not get skipped or lost, just delayed.
- Example: Set `09:00` to `17:00` and the agent will only call between 9 AM and 5 PM.
### 📅 Calling days
Seven day-chips appear: **Mon, Tue, Wed, Thu, Fri, Sat, Sun**
- Click a chip to **turn that day on** (highlighted = active).
- Click again to **turn it off**.
- The agent will only dial on days that are active.
| Common setup | Days to activate |
|---|---|
| Standard business week | Mon → Fri |
| Including Saturday outreach | Mon → Sat |
| 7-day campaign | All 7 days |
## 🗺️ Section 2 — Calling region
**Question it answers:** *Which US states is this agent allowed to call into?*
### 🌎 The interactive state map
A **hex-grid map of the United States** lets you visually select states one by one. Each state is a clickable hexagon.
- **Click a state** → it highlights (selected / allowed).
- **Click again** → it deactivates (blocked).
#### 🔗 Quick-action links above the map
| Link | What it does |
|---|---|
| **⊕ Select all 50** | Activates every state at once |
| **⊖ Clear all** | Removes all state selections |
| **📋 View legal hours by state** | Opens a reference table (see below) |
#### ✅ No states selected = all states allowed
If you leave the map completely empty (no states highlighted), the agent treats that as **no restriction** — it can call all 50 states. Select specific states only if you want to **restrict** calling to certain regions.
### 📋 Legal hours reference table
Click **"View legal hours by state"** to open a popup table showing every state's legal calling window, for example:
| State | Weekdays | Sunday | Notes |
|---|---|---|---|
| Texas | 9am – 9pm | 12pm – 9pm | Sundays restricted |
| California | 8am – 9pm | 8am – 9pm | Federal floor |
| Florida | 8am – 8pm | 8am – 8pm | Stricter than federal |
This is a **reference only**. To actually enforce these state-specific rules automatically, you need to turn on the **Honor State Legal Hours** toggle in Section 3 below.
## 🛡️ Section 3 — Compliance layer
**Question it answers:** *What extra automatic protections should be active?*
Three toggles, each controlling a different layer of protection.
### ⚖️ Toggle 1 — Honor state legal hours
| | OFF (default) | ON |
|---|---|---|
| **What happens** | Only your schedule (Section 1) is used | The system also checks the **contact's local time** in their state before dialing |
**Example of why this matters:**
Your schedule says 8 AM – 9 PM. A contact lives in Florida where calls must stop at 8 PM. Without this toggle, the agent might call that Florida contact at 8:30 PM your time. With this toggle ON, the system sees it is 8:30 PM in Florida and **holds the call** until the next allowed window.
**Turn this ON if:**
- You are calling contacts across multiple US states
- Your contact list spans different time zones
- You want automatic per-state legal protection without managing it manually
### 🚫 Toggle 2 — Honor DNC scrubbing
**DNC = Do Not Call registry** — a federal list of phone numbers that have opted out of receiving telemarketing calls.
| | OFF | ON |
|---|---|---|
| **What happens** | All numbers are dialed regardless | Numbers on the DNC registry are automatically skipped |
To use real-time DNC scrubbing, you need a DNC provider connected in your **account settings**. Once connected, every number is checked against the registry before the call is placed.
### ⚠️ Toggle 3 — Override the schedule
This is a **high-risk setting** — read carefully before enabling.
When this is turned **ON**:
- The agent ignores **all time restrictions** you set in Section 1
- The agent ignores **all state legal hours** from Section 2
- The agent can dial **24 hours a day, 7 days a week**
- A bright warning banner appears on screen confirming the override is active
**By enabling this toggle, you confirm:**
- You personally accept full legal responsibility for any compliance issues
- You have the legal authorization to call outside standard hours
- The platform is providing this as a tool, not endorsing the practice
**Only use this for:**
- Emergency or time-sensitive services with prior express consent
- Situations where you have confirmed written authorization from contacts
- Internal testing environments (never production calling lists)
**📢 The override warning banner**
When Override is active, a blue information banner appears below the compliance settings:
> **Override active.** The schedule and state legal hours are bypassed for this agent. Logged on the agent record.
This banner is a reminder — it does not go away until you turn the override off.
## 💾 Saving your settings
Click the **Save compliance settings** button at the bottom.
- A success message confirms the save: `✓ Saved`
- Changes take effect on the **next call** placed by the agent
---
# Intelligence
> User guide for Knowledge Base, conversation sliders, pronunciation dictionary, reminders, AutoRizz, Smooth Talk, and boosted keywords.
Source: https://docs.aisync.link/ai/manage-agent/intelligence
#### 💡 Intelligence Tab (User Guide)
The **Intelligence** tab controls how your agent listens, how quickly it speaks back, how it says specific words, whether it uses short natural acknowledgements during a call, and how it handles reminders and special word lists.
## 📐 Layout of the screen
- **Main (wider) column:** Knowledge Base, Conversation Settings, Pronunciation Dictionary, Reminder Settings
- **Side (narrow) column:** AutoRizz, Smooth Talk, Boosted Keywords
## 📚 Knowledge Base
**Purpose**
Connect your agent to reference material so it can answer using the right context—your business facts, FAQs, or uploaded knowledge you have already created in your account.
**How to use it**
- Read the short description under the title: it explains that a knowledge base gives the agent context.
- Use the dropdown list to **select one or more** knowledge bases (whatever your organization has already created).
- Click **Update** to apply your selection.
- Nothing is applied to the agent until you click **Update**.
**Note**
If the list is empty, your team needs to create knowledge bases elsewhere in the product first. Only existing items appear here.
## 💬 Conversation Settings
**Purpose**
Adjust the agent’s behavior in live conversation—specifically, how quickly it responds after the caller finishes speaking and how sensitive it is to being interrupted.
A small **?** icon beside the section heading provides additional tooltips when you hover.
**Responsiveness** sets how fast the agent replies following a pause from the caller. Use the slider to adjust; the adjacent number (rounded to two decimals) shows the current setting. The value saves as soon as you release the slider—no Save button is needed.
**Interruption Sensitivity** adjusts how easily the agent picks up on being interrupted by the caller. This uses a similar slider and live value readout. As with the previous control, releasing the slider updates the value right away.
**Note:** The tooltip may reference other features such as ambient noise handling, but only Responsiveness and Interruption Sensitivity are managed here. Other audio settings may be found in different tabs.
## 🗣️ Pronunciation Dictionary
**Purpose**
Ensure the agent pronounces names, brands, or technical terms correctly by specifying custom pronunciations.
**List Interface:**
Each entry in the list covers a single word or phrase. Use the **Edit** (pencil) button to change an entry, or **Delete** (trash) to remove it (with confirmation).
To add a new pronunciation, click **Add Pronunciation**. The form includes:
| Field | Description |
|-------------------|-------------------------------------------------------------|
| **Words** | The word or phrase the agent will say |
| **Pronunciation** | Select either **IPA** or **CMU**—speech sound notations |
| **Phoneme** | Enter the pronunciation in the selected sound system |
Click **Save** to add or update an entry, or **Cancel** to exit without changes. When editing, the form will populate with the selected entry’s current details.
## ⏰ Reminder Settings
**Purpose**
Configure how the agent issues reminders during a call, for example if silence from the caller exceeds a threshold.
**Fields:**
- **Seconds:** Sets the minimum time before a reminder is triggered (i.e., time gap between reminders).
- **Times:** Defines the maximum number of reminders the agent can send per call.
Click the **Save** button (disk icon) after entering both numbers. Both must be greater than zero—otherwise, a validation message will appear.
## ⚡ AutoRizz
**Purpose**
Allows the agent to naturally insert short acknowledgement phrases (like “yeah,” “uh-huh,” or “hmm”) during calls to sound more conversational.
**Main Toggle:**
Switching AutoRizz **On** reveals the Frequency slider and the Words List box; switching **Off** hides these and disables the feature.
**Frequency** adjusts how often the agent uses acknowledgements (slider, with a live value badge). The updated value is stored when the slider is released.
**Words List** consists of a text box, with each line representing a word or short phrase the agent can use. Make your changes, then click **Save**—unsaved changes do not apply. At least one line must contain content, otherwise an error is shown.
The list and frequency reload automatically to reflect the agent’s most recently stored settings.
## ✨ Smooth Talk
**Purpose**
When enabled, Smooth Talk makes the agent read out numbers, currencies, and dates in a more natural, conversational way.
There is just a simple On/Off switch; toggling it takes effect immediately. No extra configuration fields appear in this section.
## 🔤 Boosted Keywords
**Purpose**
Provide a custom list of high-priority words—such as important names or industry-specific terms—to improve the agent’s recognition and pronunciation.
Enter one keyword per line in the input area. Click the **Save** icon below to apply your list. At least one keyword is required, or you’ll see a validation error.
---
# Integration
> Set up GoHighLevel (GHL) integration to automatically sync call data, recordings, and outcomes with your CRM.
Source: https://docs.aisync.link/ai/manage-agent/integration
# 🔗 Integrating with GoHighLevel (GHL)
Seamlessly connect your AI agent to GoHighLevel to automate CRM updates with call recordings, transcriptions, analytics, and tags—no manual data entry required.

## 📤 Recording & Transcription Sync
Configure which call details are sent to GHL:
- **Recording Upload**
Automatically send call recordings to GHL, or toggle off if not needed.
- **Transcription Upload**
Choose whether AI-generated call transcripts should be added to GHL.
- **User Sentiment Sharing**
Send AI-scored sentiment (positive, neutral, negative) for each call.
- **Call Summary Sync**
Populate GHL custom fields with concise summaries of each call.
*First, create custom fields in GoHighLevel for details like "Recording URL," "AI Transcription," "Sentiment," and "Summary." In the integration dashboard, map each AI data point to your chosen GHL field. Once mapped, data flows automatically.*

## ⏱️ Call Analytics & Data Points
Send key analytics to GHL:
- **Call Duration**
Automatically log call duration for tracking or billing.
- **Call Direction (Inbound/Outbound)**
Record whether each call was incoming or outgoing.
*For every metric, add matching custom fields in GHL (e.g., "Call Duration"), then connect your agent’s analytics to these fields within the integration settings.*

## 🏷️ GHL Call Outcome Tags
Let your AI agent tag contacts/leads in GHL based on call results:
- **Answered**
- **No Answer**
- **Busy**
- **Inactivity**
- **Appointment Set**
- **Call Transfer**
- **Voicemail**
- **Call Direction (Inbound/Outbound)**
- **User Hung Up**
- **Failed Outbound Call**
For each outcome, the relevant tag is automatically applied—helping you filter, track, and automate next actions in GHL.
> **Tip:** Tags appear immediately in your GHL CRM for rapid sorting, follow-up automation, and reporting—no extra setup needed.

---
# Advanced
Source: https://docs.aisync.link/ai/manage-agent/advanced
#### ⚙️ Advanced tab (user guide)
The **Advanced** tab is where you give your agent **extra abilities** during calls: ending calls on purpose, transferring callers, booking appointments, collecting details after or during a call, joining meetings, using phone menus (press-a-number systems), optional clinic-related options, and connecting custom actions.
You will also find **phone number assignment** for this agent, **tools to test and connect** the agent, and **sender** settings for notifications.
## 📋 Agent Functions (main section)
Under the title **Agent Functions**, a short line explains that you can turn on things like calendar booking and ending calls—read it once; it sets context for everything below.
Below that, a **grid of cards** lets you **open setup** for each type of function. Each card has a title, one line of help text, and a **Configure** button (or a switch in one special case).
## 🔴 End Call
Let your agent know **when and how to end a call**—so it wraps up conversations at the right time.
1. Click **Configure** on the End Call card.
2. A panel appears with a single large **Description** box.
3. Enter simple step-by-step guidance in everyday language. Example: "After confirming the appointment is booked, thank the caller and end the call politely."
4. Click **Save** to apply, or **Cancel** to close without saving.
*Here's what the panel looks like:*
## 🔄 Call Transfer
**Empower your callers to reach the right person—instantly.** The **Call Transfer** feature allows your AI agent to intelligently hand off conversations to a real staff member or team whenever personalized human support is needed, a booking must be made, or a specialized department should step in.
1. Click the **Configure** button on the Call Transfer card.
2. Complete a few simple settings—tailored to *your* workflow.
3. Hit **Save** to activate. Use **Cancel** to exit without changes.
### 🔁 Warm Transfer
Decide how callers are routed:
- **Warm Transfer:** Your AI agent smoothly prepares the handoff and connects the caller to a single destination—no awkward transitions!
**📞 Caller ID Mode**
Control the number displayed to the receiving party:
| Option | What shows up for the recipient |
|-----------------------|--------------------------------------------|
| **Agent Phone Number**| The agent's assigned business number |
| **User Phone Number** | The caller’s own phone number |
---
**📝 Description**
Add clear, concise instructions for your AI about what to say during the transfer. *(Example: “Introduce the caller and explain they want to schedule an appointment. Then connect the call.”)*
**☎️ Phone Number**
Designate the **destination number** (in international format, e.g. `+14154155555`).
> ⚠️ If left blank and you save, Call Transfer will be disabled.
### 🗓️ Schedule Transfer
Route callers automatically to different numbers based on business hours, staffing, or special scenarios.
**🌟 Features:**
- **Description:** What should your AI say during the handoff? (Think: a quick summary and polite introduction.)
- **Default/Fallback Number:** Used as the primary transfer and as a safety net if all else fails.
- **Business Hours Routing:**
1. Set **Routing Mode** to **Use day/time rules**
2. Click **Add Rule** for blocks like "Weekdays Morning" or "After Hours".
- **Days:** Which weekdays the rule applies to
- **Start/End time:** When is this number active?
- **Transfer Number:** Destination for this time period
- **Label:** Easily recognize the rule (e.g. "Lunch Shift")
- **Remove:** Clear outdated rules in one click
- **Failover Behavior:**
If the transfer doesn’t connect:
- Enable **Continue conversation if transfer fails**
- Provide a **Failure Message** — what your AI should say instead
*(Example: “Sorry, I couldn't reach a human right now. Can I help you with something else?”)*
## 📅 Calendar Appointments
**Purpose:** Let your agent **check availability** and **book appointments** using your connected calendar system.
You can integrate your calendar from the **Settings > Integrations** tab. Connect either:
- **Go High Level (GHL)**
- **Calendly**
- **Rizz Dial** (Google Calendar)
> ℹ️ Make sure you've connected your calendar (or Calendly) from the **Integration** tab in your settings before configuration.
*Choosing the booking method and selecting GHL, Calendly, or Google Calendar/Rizz Dial:*
1. From the **Calendar Appointments** card, click **Configure**.
3. If you select **Direct Calendar Booking**:
- **Select Calendar Platform:** Pick GHL, Calendly, or Google Calendar/Rizz Dial—choose whichever you've already connected.
- **Choose Calendar:** Select the calendar your agent should use for bookings. If no options appear, confirm your integration is properly set up under **Settings > Integrations**.
4. **Appointment Title:** Set the event name shown on the calendar (e.g., “Sales Call”, “Consultation”).
5. **Booking Window:** Set how many **days into the future** your agent can offer appointments (e.g., show only the next 7 days).
6. **Collect Contact Information:** Choose the caller details your agent must collect before booking (options depend on calendar platform).
7. **Calendar Timezone:** Match the calendar’s timezone to your business/location needs.
8. Click **Save** to apply changes or **Cancel** to discard edits.
*Customizing appointment details, contact fields, and extra options:*
When your calendar integration is complete and saved, you’ll see a confirmation in **Active Functions**. Otherwise, a message will alert you that no calendar is selected.
## 📋 Post-Call Information
**Purpose:** After the call ends, have the agent **capture specific information** you care about (aligned with fields your system can store).
1. Choose **Configure** on the Post-Call Information card.
2. Use **Collect User Information** to select one or more items (the list depends on your connected setup).
3. **Save** applies. **Cancel** closes without saving.
*Opening post-call setup from the card:*
*Selecting which information to collect:*
Active Functions shows **how many** fields you selected.
## 📝 Live Call Updates
**Purpose:** While the call is still active, update **stored information** when the caller says something relevant.
*What the Live Call Updates function is for:*
1. Choose **Configure** on the Live Call Updates card.
2. Select the information the agent is allowed to update during the call.
*Choosing which fields can be updated during the call:*
3. **Save** applies.
*Additional options on the same flow (if your screen shows these steps):*
Active Functions shows **how many** fields are in use.
## 🎥 Join Meeting
**Purpose:** Connect **video meeting** behavior so the agent can work with your meeting flow.
1. Choose **Configure** on the Join Meeting card.
2. **Select Google Calendar:** Pick the calendar to use when this applies.
*Calendar selection for join-meeting behavior:*
3. **Description:** Explain when and how the agent should use the meeting action.
4. **Save** applies. **Cancel** closes without saving.
*Description and save—aligned with the fields above:*
## 🏥 Setup Cloud Clinic Integration (only if you see this card)
**Purpose:** Turn clinic-related features on for this agent when your organization uses that integration.
You may see a switch to enable or disable the feature. If your **profile** is missing required clinic connection details, the switch may stay off and a note tells you to add **Source System Id** and **Auth Token** in **Profile Settings** first.
## 🔗 API Configuration
**Purpose:** Set up **custom webhooks and API actions** for your agent, allowing it to interact with your own services in addition to built-in tools like calendar and transfer.
Click **Configure** to manage your API action list. When enabled, these actions appear in **Active Functions** under the **API Configuration** summary, which displays each action’s endpoint, HTTP method, and data format.
*Example view of multiple API actions:*
*Form for adding or editing an API action (fields adjust based on integration details):*
## ☎️ Press Digit (IVR Navigation)
**Purpose:** When the other side uses a **phone tree** (“Press 1 for sales…”), the agent can listen and press the right keys.
*Press Digit as an agent function you can configure:*
1. Choose **Configure** on the Press Digit card.
2. **Description:** Explain the situation (for example, navigate to support). Stay within the **character limit** shown under the box.
3. **Pause detection delay:** How long the agent waits before sending each digit—adjust if menus are slow or fast (allowed min/max are on screen).
4. **Save** applies. **Cancel** closes without saving.
*Description field, character limit, and pause delay:*
## 📞 Phone Number Configuration
**Purpose:** Choose which **incoming** and **outgoing** phone numbers this agent uses from numbers available to your account.
**Inbound Numbers** — Open the list and pick the number that should receive calls for this agent; use the **save** control next to the list to apply.
**Outbound Numbers** — Pick the number used or shown for outbound calls from this agent; use the **save** control next to the list to apply.
If a number is already used elsewhere, your organization’s rules may limit what appears in the list.
*Inbound and outbound pickers on one screen:*
## 🛠️ Tools & Testing
Shortcuts for **trying the agent** and **technical setup**.
*The row of tool buttons on the agent page:*
| Button | What it is for |
|--------|----------------|
| **Test Call** | Start a test call flow so you can hear how the agent behaves. |
| **AI Widget Configure** | Open setup for the chat or web widget tied to this agent. |
| **Endpoints** | View connection addresses and related information for integrations. |
| **Map Inbound Call GHL Fields** | Match incoming call data to fields in your connected business platform. |
| **Configure Webhook Endpoint** | Set or view where call events can be sent for other systems. |
Open each when you need that task—some panels are for administrators or technical staff.
***Map Inbound Call GHL Fields** opens field mapping similar to this:*
***Configure Webhook Endpoint** uses a URL and HTTP method like this:*
## ✉️ Sender Management
**Purpose:** Choose **who receives notifications** about this agent — by email or SMS — and keep those destinations in one list.
The table lists every sender destination configured for this agent:
| Column | What it shows |
|--------|---------------|
| **ID** | Unique ID for the sender row |
| **Send To** | Destination address — an email or phone number |
| **Send Type** | How the notification is sent: **Email** or **SMS** |
| **Action** | Manage or remove that sender |
Use **Search** to find a destination quickly, and **Show entries** / pagination when the list grows.
### ➕ Add a sender
1. Click **+ Add Sender**.
2. Enter **Send To** — the email address or phone number that should receive notifications.
3. Choose **Send Type**:
- **Email** — notifications go to that email address.
- **SMS** — notifications go as a text message to that phone number.
4. Save to add the row to the table.
If no senders are configured yet, the table shows **No data available in table** until you add the first one.
Use the row **Action** controls to update or remove an existing sender when your notification destinations change.
---
# Test Call
> Test AI agent performance with quick call functionality
Source: https://docs.aisync.link/ai/agents/test-call
## Test Call Interface
### Access Test Call
- **Agent Actions Menu** - Click the action button (⋮) next to any agent
- **Select Test Call** - Choose "Test Call" from the dropdown menu
- **Test Call Dialog** - Opens dedicated test call interface

## How to Test Call
### Step-by-Step Process
1. **Navigate to Agent List** - Go to the All Agents view
2. **Select Agent** - Find the agent you want to test
3. **Open Actions Menu** - Click the three dots (⋮) in the Action column
4. **Choose Test Call** - Select "Test Call" from the dropdown
5. **Enter Phone Number** - Input the destination phone number
6. **Start Test** - Click the "Call" button to initiate the test call

## Quick Actions
Open test call dialog and enter phone number to test
Choose which agent to test from the agent list
Monitor call quality and agent performance during test
Evaluate test results and make agent improvements
---
# Endpoint
> Use an agent’s unique call URL for outbound dials or inbound SIP connections from your website, form, or CRM.
Source: https://docs.aisync.link/ai/agents/endpoint
**Endpoints** is the API reference for an agent’s unique call URL. Send a **POST** with JSON to start a call from your website, form, or CRM.
| Mode | What happens |
|------|----------------|
| **Outbound** | AI Sync places the call. The person’s phone rings. |
| **Inbound** | AI Sync does **not** ring the phone. It returns a SIP address (`dialSip`) so your phone system can connect the caller to the agent. |
Open from **AI → AI Agents** → agent **Actions → Endpoints**.
## ✨ What you can do
- Copy the agent’s unique **POST** URL
- Send **outbound** or **inbound** calls with the same URL
- Pass contact fields (name, email, and more) with the call
- Copy request examples in PHP, JavaScript, cURL, or Python
## 📑 What you see on the page
The page has two tabs: **Outbound** and **Inbound**. Switching tabs updates the hint, sample body, and response. The URL stays the same.
| Area | What it shows |
|------|---------------|
| **POST URL** | Agent’s unique webhook URL — use **Copy URL** |
| **Body · application/json** | Fields you can send (required marked) |
| **Request example** | Ready-made snippets by language |
| **Response** | Sample replies for 201, 400, 403, 404, 422 |
This URL belongs only to this agent. Do not share it publicly. Always copy it from this page.
---
## 📋 Fields you can send
Same body shape on both tabs. Extra contact fields are passed through so the agent can use them on the call.
| Field | Required | Notes |
|-------|----------|--------|
| `phone_number` | Yes | E.164 format, starting with `+` (for example `+12137771235`) |
| `call_mode` | For inbound, yes | `outbound` (default if omitted) or `inbound` |
| `override_agent_id` | No | Use a different agent for this call only |
| `ghl_contact_id` | No | Attach a CRM contact to the call |
| `local_presence_number` | No | `Yes` or `No` — if Yes, place the outbound call from a local presence number |
| Other contact fields | No | Listed under **Optional contact fields** on the page |
---
## 📤 Outbound
Use **Outbound** when you want the agent to dial someone.
1. Open **Endpoints** and stay on the **Outbound** tab.
2. Copy the URL, or copy a request example in your language.
3. Send a **POST** with JSON.
**Example body**
```json
{
"phone_number": "+12137771235",
"first_name": "John",
"last_name": "Doe",
"call_mode": "outbound"
}
```
You can leave `call_mode` out. If it is missing, outbound is used.
**Success (201)**
```json
{
"status": "success",
"msg": "successfully make a call.",
"call_id": "..."
}
```
The person’s phone should ring. There is no `dialSip` on outbound.
---
## 📥 Inbound
Use **Inbound** when the person already called you (or will be connected by your phone system).
1. Open **Endpoints** and switch to the **Inbound** tab.
2. Copy the URL or the inbound example. The URL is the same — only the body changes.
**Example body**
```json
{
"phone_number": "+12137771235",
"first_name": "John",
"last_name": "Doe",
"call_mode": "inbound"
}
```
`call_mode` must be `inbound`.
**Success (201)**
```json
{
"status": "success",
"msg": "successfully make a call.",
"call_id": "...",
"dialSip": "sip:...@..."
}
```
This request does **not** ring a phone. That is expected.
- `call_id` — id of the registered call
- `dialSip` — address your phone system uses to connect the live caller to the agent
---
## 💻 Request examples
Language tabs on the page:
| Tab | What it is |
|-----|------------|
| **Php** | PHP snippet |
| **JavaScript** | Browser / Node `fetch` snippet |
| **cURL** | Command-line snippet |
| **Python** | Python snippet |
**Copy** copies the selected language. Replace the sample number and names before you run it. All examples send JSON with `Content-Type: application/json`.
## 📨 Response codes
| Code | Meaning |
|------|---------|
| **201** | Success. Outbound returns `call_id`. Inbound also returns `dialSip`. |
| **400** | The request format is invalid. |
| **403** | The agent is inactive, or the account cannot place the call (for example insufficient balance). |
| **404** | The agent was not found, or no phone number is assigned. |
| **422** | The call could not be created. |
---
## ✅ Before you send a request
- The agent must be **Active**
- A phone number must be assigned to the agent
- Your account must have call balance
- Use a real `phone_number` in `+` (E.164) format
If something fails, the response includes `status: error` and a short message. Match it to the **403** / **404** / **422** samples on the page.
---
# AI Widget Configure
> Configure and customize the AI call widget for seamless website integration with personalized branding and functionality
Source: https://docs.aisync.link/ai/agents/ai-widget-configure
## ⚙️ Widget Configuration Interface
### 🎯 Access Widget Configuration
- **Agent Actions Menu** - Click the action button (⋮) next to any agent
- **Select AI Widget Configure** - Choose from the dropdown menu
- **Configuration Panel** - Opens comprehensive widget customization interface

### 👁️ Widget Configuration Overview
The AI Widget Configure interface offers extensive customization capabilities for your website's AI call widget. This centralized control panel enables you to tailor the widget's visual design, operational features, and messaging to align with your brand identity and enhance user engagement.

## 🔄 Configuration Changes & Preview
The widget configuration interface provides real-time feedback on your customizations through an integrated preview system.

> 💡 **Live Preview**: Any changes you make to the configuration fields will be instantly reflected in the AI widget preview displayed in the bottom-right corner of the screen. This allows you to see exactly how your customizations will appear to website visitors before implementing them.
### 💻 Embed Code Section
- **JavaScript Integration** - Ready-to-use embed code for website integration
- **Copy Code** - Click the copy button to get the embed script
- **Agent-Specific** - Each agent has unique embed code with agent ID
- **Async Loading** - Non-blocking script for optimal website performance

### 🤖 Avatar Configuration
#### 📸 Avatar Upload
- **Upload Avatar Image** - Custom avatar image for the widget
- **Choose File** - Select image file from local computer
- **File Support** - Common image formats (PNG, JPG, GIF)
- **Avatar Display** - Shows in widget conversation interface

### 🎨 Appearance Customization
- **Background Color** - Widget background color
- **Text Color** - Main text color for widget content
- **Button Color** - Primary button background color
- **Button Text Color** - Button text color
- **Border Color** - Widget border and outline color
- **Focus Outline Color** - Highlight color for focused elements
- **Card Radius** - Border radius for widget container
- **Button Radius** - Border radius for buttons
- **Popup Position** - Widget placement on webpage

### ✏️ Text Contents Configuration
#### 📝 Button Text Customization
- **Start Call Button** - Text displayed on call initiation button (default: "Start a call")
- **End Call Button** - Text shown when call ends (default: "Call ended")
- **Call to Action** - Header text to engage users (default: "Need help?")
- **Speaking Status** - Text displayed during active calls (default: "Agent is speaking")

### ⚡ Quick Actions
Get JavaScript code for website integration
Configure colors, text, and visual elements
Add custom avatar image for widget interface
Apply changes and update widget settings
---
# Duplicate
> Duplicate existing AI agents to quickly create new agents with similar configurations, saving time and ensuring consistency across your agent setup
Source: https://docs.aisync.link/ai/agents/duplicate
## Duplicate Agent Functionality
### Access Duplicate Feature
- **Agent Actions Menu** - Click the action button (⋮) next to any agent
- **Select Duplicate** - Choose "Duplicate" from the dropdown menu
- **Clone Process** - System creates exact copy of selected agent
- **New Agent Creation** - Duplicated agent appears in agent list with new identifier

## Quick Actions
Duplicate existing agent configuration quickly
Modify duplicated agent settings as needed
Verify duplicated agent functionality
Organize duplicated agents in appropriate folders
---
# Phone Numbers
Source: https://docs.aisync.link/ai/phone-numbers
### 📖 Overview
Use **AI Phone Numbers** to manage phone numbers that work with your AI assistants. You can see all AI numbers for your organization, give them names, choose which assistant answers incoming calls and which one places outgoing calls, connect existing **Rizz** numbers to AI, buy new numbers on another page, and optionally enroll numbers in **spam protection** so carriers are less likely to treat them as unwanted calls.
## 🔘 Buttons at the top of the page
| What you see | What it does |
|--------------|--------------|
| **Rizz Numbers** | Opens a window to connect an existing **Rizz** phone number (from your account) to inbound and/or outbound AI assistants. |
| **Purchase No** | Takes you to another page where you can search for and buy a new number (from available providers) and attach AI assistants at purchase time. |
## 🗂️ The main table — columns
Each row is one AI phone number. Columns are:
| Column | Meaning |
|--------|---------|
| **#** | Row number (1, 2, 3, …). |
| **Name** | The **nickname** you gave this number so you can recognize it in lists. |
| **Phone Number** | The full phone number. |
| **Spam Status** | The current spam-reputation status tracked for this number (for example whether it is clean, in progress of checking, or flagged). |
| **Code** | The three-digit code associated with this number. |
| **Renewel At** | If this number is **billable** for your account, this shows when the next renewal date/time is, in **your** time zone. If the number is not billable in that way, this cell may be empty. |
| **Updated At** | When this record was last changed, in **your** time zone. |
| **Action** | Buttons for **Spam Protect** (when allowed), **Edit**, and **Delete**. A **Token** control exists in the page for advanced inbound contact mapping but is normally hidden. |
## ⚙️ Actions on a row
**🛡️ Spam Protected**
- Appears only when this AI number is **not** already in the spam protection program.
- After you confirm, the system checks your company’s messaging profile setup. If something is missing, you may be asked to contact support.
- If the number is already listed under spam protection, you will see a message instead of adding it twice.
- On success, the **Spam Protect** button is hidden for that row.
**🗑️ Delete**
Asks for confirmation, then removes the AI number. Use only when you are sure you no longer need it.
### 🏷️ Token
If available, this opens **Inbound User Information**, where you link your contact fields to fields in **GoHighLevel (GHL)** and pick a **GHL Location**. You must map **at least one** field before saving. This helps inbound call information line up with your CRM fields. Changing the location can load that location’s custom fields for mapping.
**Tokens** are field mappings (not login credentials): they tell the AI which GHL contact fields to use on **incoming** calls. Only mapped fields are available to the AI.
Example mappings you might see or configure include **GHL Location**, **Phone Number** (`phone_number` / `phone_number1`), **Email** / **Email Address**, **First Name**, **Last Name**, address fields (**address**, **city**, **zip_code**, **country**), and custom fields such as **AudienceLabelId** (`audiencelabelid`), aligned with your GHL setup.
### ⚙️ Phone Number Settings
This window is used in two situations:
1. **Adding a new AI number** (when opened without editing an existing row — for example from flows that open this modal with empty or default values).
2. **Editing** an existing number (via **Edit** on a row).
**Fields:**
| Field | Purpose |
|-------|---------|
| **Enter Code** | The three-digit code for the region where you want the new number, or the code tied to this number when editing. Help text: *Enter the 3-digit code for the location where you want to purchase a number.* |
| **Inbound Agent** | The AI assistant that answers **incoming** calls to this number. Help text: *Select the AI agent that will handle incoming calls to this number.* |
| **Outbound Agent** | The AI assistant used for **outgoing** calls from this number. Help text: *Select the AI agent that will handle outgoing calls from this number.* |
| **Nickname** | A short label so you can find this number easily. Help text: *Give this number a descriptive name for easy identification.* |
**💾 Save Changes:**
- **Code** and **nickname** are required before the system will proceed.
- If you are **creating** a new number, the system requests a new number for that code, applies your assistant choices and nickname, and records a **usage charge** for obtaining that phone number where your plan requires it.
- If you are **updating** an existing number, the system updates the phone connection and nickname, and adjusts assignments so that **another number in your account cannot use the same inbound assistant or the same outbound assistant** at the same time—those other numbers are cleared for that assistant type when needed.
On success, the page refreshes so you see the latest list.
## 🔗 Connect Rizz Number
This connects an existing **Rizz** number from your account (one that is already set up for voice routing and is not reserved only for the dialer) to AI assistants.
**Fields:**
| Field | Purpose |
|-------|---------|
| **Setup Number** | Choose which existing Rizz number to connect. Help text: *Select an existing Rizz number from your account to setup with AI agents.* |
| **Nickname (Optional)** | A label for this connection. Help text: *Give this Rizz number a descriptive name for easy identification.* |
| **Inbound Agent** | Which AI assistant answers calls to this Rizz number. Help text: *Select the AI agent that will handle incoming calls to this Rizz number.* |
| **Outbound Agent** | Which AI assistant places calls from this Rizz number. Help text: *Select the AI agent that will handle outgoing calls from this Rizz number.* |
You must pick a **Setup Number**. Saving applies the same kind of rule as above: only one number at a time can hold a given inbound assistant, and only one can hold a given outbound assistant; other numbers may be unassigned from that assistant automatically.
## 🛒 Purchase No
On the purchase page you typically:
- Choose a **nickname** (required).
- Choose **inbound** and **outbound** AI assistants.
- Search for and select an available phone number.
- Choose a **provider** (for example Twilio or Plivo).
When you complete a purchase successfully, the new number is bought and wired up with the same assistant and nickname behavior as in the main AI Numbers list.
---
# Purchase Number
Source: https://docs.aisync.link/ai/purchase-number
### 📱 Overview
**Purchase Number** is where you **find an available phone number**, **choose one**, and **buy it** so it can be used with your AI setup. After a successful purchase, you are taken back to **My Numbers**, where your numbers are listed.
## 📝 Top Row: Main Settings
**🏷️ Nickname (Required)**
- Give your new number a short, meaningful label (like a team, use case, or campaign name).
- **Note:** The field appears as "Optional," but you **must** enter a nickname to complete a purchase. If left empty, the system will ask you to supply one before you can proceed.
**🤖 Inbound Agent**
- Select the AI agent that should handle **incoming calls** to this number.
- You can pick from any agent available in your organization. The selection box supports typing to search.
- Clearing your selection is available if your configuration allows it.
**🚀 Outbound Agent**
- Choose the AI agent to be associated with **outgoing use** from this number.
- Works just like the Inbound Agent field—same options and searchable list.
**Quick Tip:** Inbound Agent determines who answers calls to this number; Outbound Agent sets the agent identity for outbound actions.
---
## 🔍 Search Row: Finding Available Numbers
This section lets you set filters to search for phone numbers before you purchase one. Use these controls, click **Search**, and then select from the list.
**🛰️ Provider**
- Choose which phone service to use:
- **Twilio**
- **AI Sync** (your product’s branded provider)
**🌐 Country**
- Restrict your search to either:
- **USA**
- **Canada**
**🔠 Search By**
- Decide how your search input should be interpreted:
- **AreaCode** (e.g. 415)
- **Region**
- **City** (name or label, as available)
**📝 Search Value**
- Enter the code, region, or city that matches what you wish to search for, based on your selection in “Search By.”
- This input, along with country and provider, determines what numbers are shown.
**🔎 Search Button**
- You **must** enter something in the Search Value box for Search to work.
- If empty: You’ll see a prompt asking you to provide a value.
- If filled: You’ll see a loading message while numbers are fetched.
- On success: The results table will show available numbers.
- On failure: A message will explain the error (nothing found, setup issues, etc.).
## 📋 The results table
After a successful search, you see a table with a header row and a scrollable area (the list does not grow endlessly in view—it scrolls inside a fixed height).
Columns:
| Column | Meaning |
|--------|---------|
| **#** | Row number (1, 2, 3, …). |
| **Friendly Name** | A readable label for the number provided by the service. |
| **Phone #** | The actual phone number format you are choosing. |
| **Locality** | Where the number is associated (city, region, postal details, country—whatever the service returns). |
| **Capabilities** | What the number can do (for example text-related features and voice), listed in short form. |
| **(last column, no title)** | A **choice control** so you pick **one** number. Only **one** row should be selected at a time. |
Until you run **Search**, the table body stays **empty**.
## 🛒 Finishing the purchase
**💳 Purchase Number (button)**
When you click **Purchase Number**, the system:
1. Reads your **nickname**, **Inbound Agent**, **Outbound Agent**, **Provider**, and the **one number** you selected in the table.
2. If **no number** is selected, you see a message asking you to **select a number**.
3. If a number **is** selected, a **please wait** style message appears while the system:
- **Acquires** the number through the provider you chose (**Twilio** or the **AI sync** path), and then
- **Links** that number to your **nickname** and **agents** in the way your product is designed (including voice routing setup behind the scenes).
If something goes wrong during acquisition or linking, an **error message** appears in the message area on the page.
If everything **succeeds**, you see a **success message**, and after a **short pause** you are **automatically taken** to **My Numbers** so you can see your number in the list.
**❌ Cancel (button)**
- Takes you **back to My Numbers** **without** buying a number.
- No purchase happens when you use **Cancel**.
---
# AI Call History
Source: https://docs.aisync.link/ai/call-history
#### 🧐 Overview
**AI Call History** is where you review past calls handled by your AI agents. You can:
- See when each call happened, which agent was used, phone numbers, how long the call lasted, and how the call ended.
- Narrow the list using filters (dates, agent, duration, direction, and more).
- Open a single call to read the summary, full conversation text, and listen to the recording when one is available.
- Download the same filtered results as a file for your own records or reporting.
Only calls tied to **your organization** appear here (not other customers’ data).
## 🔎 Filters
Filters work together: only calls that match **all** the conditions you set are shown. If you leave a filter on its default “everything” setting, it does not restrict results.
**👤 Select Agent**
- Choose **one** AI agent to see only that agent’s calls, or leave the placeholder (empty) to see calls from **all** agents in your list.
- You can type in the box to search agent names when the list is long.
- Changing the agent refreshes the list .
**📅 Date Range**
Pick how the time window is defined:
| Choice | Meaning |
|--------|---------|
| **Custom dates** | You set **Start Date** and **End Date** yourself. Those two fields become editable. |
| **Today** | From the start of today through now (in your account time zone). |
| **Yesterday** | The full previous calendar day. |
| **This Week (Sun - Today)** | From Sunday of this week through today. |
| **This Week (Mon - Today)** | From Monday of this week through today. |
| **Last 7 Days** | Rolling seven-day window ending today. |
| **Last Week (Sun - Sat)** | The previous full week, Sunday through Saturday. |
| **Last Week (Mon - Sun)** | The previous full week, Monday through Sunday. |
| **Last Business Week (Mon - Fri)** | Monday through Friday of the prior week. |
| **Last 14 Days** | Rolling fourteen-day window ending today. |
| **This Month** | From the first day of the current month through today. |
| **Last 30 Days** | Rolling thirty-day window ending today. |
| **Last Month** | The full previous calendar month. |
When **Custom dates** is **not** selected, **Start Date** and **End Date** are filled automatically for you and cannot be edited (they stay in sync with the range you picked).
When the page first opens, **Today** is usually selected.
**⏰ Start Date and End Date**
- Used to define the beginning and end of the period you care about.
- Only active when **Date Range** is set to **Custom dates**; otherwise they follow the preset range and are read-only.
**⏱️ Min Duration**
Shows only calls whose length is **at least** the time you pick (for example, at least 1 minute).
**0 Sec** means “no minimum” — calls of any length are allowed from this filter.
**⏲️ Max Duration**
Shows only calls whose length is **no longer than** the time you pick.
**No Limit** means “no maximum” — this filter does not cut off longer calls.
Min and Max can be used together to target a band (for example, between 30 seconds and 5 minutes).
**🔄 Call Direction**
| Option | Meaning |
|--------|---------|
| **All** | Incoming, outgoing, and web calls are all included. |
| **Inbound** | Calls that came in to your system. |
| **Outbound** | Calls placed outward from your system. |
| **Web** | Calls that ran through the web experience rather than a classic phone path. |
**😊 User Sentiment**
Roughly how the conversation mood was classified:
| Option | Meaning |
|--------|---------|
| **All** | Any sentiment. |
| **Positive** | Treated as positive tone. |
| **Neutral** | Treated as neutral tone. |
| **Negative** | Treated as negative tone. |
| **Unknown** | Could not be classified clearly. |
**✅ Call Successful**
| Option | Meaning |
|--------|---------|
| **All** | Both successful and unsuccessful calls. |
| **Yes** | Only calls marked as successful. |
| **No** | Only calls marked as not successful. |
**📞 From Number**
Enter the caller’s phone number to show only calls **from** that number.
The value should match **exactly** how the number is stored (same digits and formatting as in your records).
**☎️ To Number**
Enter the called phone number to show only calls **to** that number.
Again, match exactly as stored.
**🔚 Hangup Reason**
Limits the list to calls that ended for a specific reason. **All** means every reason is allowed.
The names on the screen are written in everyday language. Examples include:
- **User Hangup** — the person on the other end ended the call.
- **Agent Hangup** — the AI side ended the call.
- **Call Transfer** — the call was transferred elsewhere.
- **Voicemail Reached** — voicemail was detected or reached.
- **Inactivity** — the call ended because nothing happened for too long.
- **Machine Detected** — an answering machine or similar was detected.
- **Max Duration Reached** — the call hit a maximum allowed length.
- **Concurrency Limit Reached** — too many calls were active at once.
- **No Valid Payment** — payment-related validation failed.
- **Scam Detected** — flagged as scam-related.
- **Marked As Spam** — treated as spam.
- **User Declined** — the user refused or declined the call.
Pick **All** unless you are specifically investigating one type of ending.
**👁️ Show / Hide Columns**
This control lets you choose **which columns appear** in the main table (except the first two — see below).
You can turn visibility on or off for:
- Time
- Agent Name
- From Number
- To Number
- Call Duration
- Call Type
- Direction
- Hangup Reason
- User Sentiment
- Call Successful
- Recording
- Call Summary
- Call Transcript
**ID** and **Action** always stay visible so you can identify rows and open details.
Your choices can be **remembered** for about thirty days on the device and browser you use, so the next visit may show the same column layout.
## 🛠️ Action buttons
**🔍 Filter**
Applies your current filter choices and **reloads the list**. Use it after changing dates, agent, or other fields (some fields also refresh the list when changed).
**📄 CSV**
Downloads a simple text file that opens in Excel and most spreadsheet programs. The file name starts with **AI_Call_History_** and includes a date and time stamp.
**📊 Excel**
Downloads a spreadsheet file that opens in Microsoft Excel and similar apps. It includes a simple title and “generated on” line above the table.
**📝 PDF**
Downloads a **report file** built as a printable layout. The file name starts with **AI_Call_History_** and includes a date and time stamp. You can open the downloaded file with your usual apps for viewing or printing reports.
While a download is running, the button you clicked may show a short “exporting” state and is temporarily disabled so you do not start duplicate downloads.
## 📋 The main list (table)
The table shows one row per call. By default, newer activity tends to appear toward the top (ordered by the row identifier).
### 📑 Columns explained
| Column | What it shows |
|--------|----------------|
| **ID** | A row number for this page of results. |
| **Action** | Action buttons for each row (see below for details). |
| **Time** | When the call occurred, in **your account time zone**. |
| **Agent Name** | The friendly name of the AI agent, or “N/A” if missing. |
| **From Number** | The originating phone number (or equivalent). |
| **To Number** | The destination phone number (or equivalent). |
| **Call Duration** | How long the call lasted (hours, minutes, seconds). |
| **Call Type** | The kind of call (for example, phone vs web); underscores in stored names appear as spaces in plain words. |
| **Direction** | Inbound, outbound, or web-style, depending on the call. |
| **Hangup Reason** | Why the call ended, in readable words. One internal error type is shown as **Error Bot** in this list. |
| **User Sentiment** | The mood label stored for the call. |
| **Call Successfull** | Whether the call was marked successful (note the spelling on screen). |
| **Recording** | A small audio player if a recording link exists; otherwise blank. |
| **Call Summary** | A short preview of the summary (long text is cut off with “…” in the list). |
| **Call Transcript** | A short preview of the conversation text (long text is cut off with “…” in the list). |
**🔎 Search Log**
Above the table, the box labeled **Search Log…** lets you **search within the loaded columns** of the current result set (helpful for finding a number or word without changing the main filters).
## 🗂️ Action column: what the buttons do
**👁️ View (green, eye icon)**
Opens the **call detail** view for that row. Only people in your organization who are allowed to use this area can see these calls.
**🚀 Go High Level (optional, logo button)**
If the call is linked to a contact in **Go High Level** and your agent is set up with the right location, a **second button** appears. It opens that contact’s page in Go High Level in a **new browser tab** so you can continue work there.
If there is no link, only the eye button appears.
## 📝 Call detail screen (after you click View)
The main list hides and a **detail** layout appears. Use **Back** to return to the list without losing your filters.
**🔝 Top section**
- **Title line** — shows the date and time of the call (in your time zone).
- **Agent** — name of the AI agent.
- **Duration** — length of the call.
- **Recording** — audio player when a recording is available. If there is no recording URL, the player may still appear but have nothing to play.
**📊 Conversation Analysis**
- **Call Successful** — Yes/No (or stored value) as recorded for that call.
- **Call Type** — type of call.
- **Disconnection Reason** — raw reason the system stored for how the call ended (may match **Hangup Reason** in the list).
- **Voicemail Detected** — shows **true** when the disconnection reason indicates voicemail was reached; otherwise **false**.
**📝 Summary**
A written overview of the conversation when one exists. If there is none, you may see a message that no extra summary is available.
**🗒️ Transcription**
The full conversation text when available. Long text is formatted for reading: line breaks, and labels like “Agent:” and “User:” (or similar) are emphasized so speakers are easier to follow. Letters and symbols from other languages are shown correctly when available.
A default message about opting out may appear if no transcript is available or recordings were opted out of.
## 📤 Exporting Your Call Data
When you export call history, the export file reflects exactly what you see in your filtered table—using all the same filters (like date, agent, call duration, direction, sentiment, success, phone numbers, and hangup reason).
Each exported row will include:
- A unique **ID** (per row, in order)
- **Time** (displayed in your time zone)
- **Agent Name**
- **From Number** and **To Number**
- **Call Duration**
- **Call Type**
- **Direction** (inbound/outbound)
- **Hangup Reason**
- **User Sentiment**
- **Call Successful** (yes/no)
- **Call Summary** (the complete summary, not just a snippet)
- **Call Transcript** (the full conversation, not just a preview)
> **Note:** Audio recordings are *not* included in exported files. To listen to call recordings, use the main list or the detail screen.
---
# Conversations
Source: https://docs.aisync.link/conversation/conversations
**Conversations** is one place to see **message and call history** with a contact, **send texts**, and **update their record** (details, tags, notes, meetings, and quiet-hours settings). Think of it as your **inbox and workspace** for one person at a time: you pick them on the left, read and reply in the middle, and manage their profile on the right.
## 🖼️ Layout
The layout is split so you do not need to jump between different pages for the same person.
| Part | What you do there |
|------|-------------------|
| **Left** | Choose **who** you are working with (three tabs: Contacts, Chat, Calls). |
| **Middle** | Read the **conversation** and **send SMS**. |
| **Right** | Open sections to **edit contact info**, **disposition**, **tags**, **notes**, **appointments**, **workflows**, **SMS numbers**, **pipeline**, and **do not disturb**. |
## 📋 Left side: the three tabs
Use the **icons** at the top of the left side to switch lists. Each list answers a different question.
*“Who have we talked to?”* — list of contacts with past activity, newest first. Search by name or number; click to open.
*“Which texts were recent?”* — list of SMS conversations. Search by name or number; click to open the thread.
*“Which calls were recent?”* — list of calls in and out. Search, then click to open that contact.
### 📇 Contacts tab
**Contacts** shows a list of your contacts, newest first. Each row shows the contact’s name and phone number, with the first letter of the name in a small circle.
- Use **Search contacts…** at the top to filter by first name, last name, or phone number. The list updates shortly after you stop typing.
- **Click a contact** to load their messages and details in the middle and right areas.
- **Scroll** to the bottom of the list to load more contacts when there are more than fit on screen.
- If you open Conversations with a **link to a specific contact**, that contact is usually shown and selected automatically.
### 💬 Chat tab
**Chat** is a list of recent text message (SMS) conversations.
- Each row shows the contact’s name, date and time of the last message, whether it was incoming or outgoing, and a short preview.
- Incoming and outgoing messages use different icons so you can see direction at a glance.
- Use **Search SMS…** to filter by contact name or phone number.
- **Click a row** to open that contact’s full message history and send new messages.
- **Scroll** down to load more conversations when you reach the end of the list.
### 📞 Calls tab
**Calls** is where you see recent phone calls (incoming and outgoing).
- Each row shows the contact’s name, date and time, direction (inbound or outbound), whether the call was completed, and call length when available.
- Icons and colors distinguish incoming vs outgoing and completed vs missed or failed.
- Use **Search calls…** to filter by name or number.
- **Click a row** to open that contact; the middle panel then shows their full timeline (calls and texts together).
- **Scroll** to load more call records at the bottom.
## 📨 Middle: reading and sending
When you select a contact (from **Contacts**, **Chat**, or **Calls**), the **middle area** shows that person’s messages and call activity. This is where you read the timeline and send replies.
### 🏷️ Top row
At the top you see the contact’s **avatar** (initial in a circle) and **name**. On smaller screens, the name can act as a link or toggle for opening the right-side details. Action buttons may let you **call**, open **contact details**, open a **menu** (for example Edit), or **close** the panel on small layouts.
### 🧵 Conversation thread
The main area shows everything in a single **timeline**:
- **Texts** (SMS) and other supported message types.
- **Call entries** in the same flow, so you see calls and texts together.
- Grouped by **date** so long histories stay readable.
- Your messages vs the contact’s on **opposite sides**, like many chat apps.
- For calls, you see **direction**, **status** (completed or not), **duration**, and an **audio player** when a recording exists.
- Message **direction** (incoming vs outgoing) is always clear and may use different icons.
- **Outgoing SMS** can show small **status** hints (such as sent or delivered) when the carrier reports them.
- Times follow your **account time zone**, so “9 AM” matches your local view.
When you open a contact, **new incoming SMS** in that thread are marked **read**, so unread counts are accurate.
### ✉️ Sending a message
Below the timeline you see controls for sending:
| Control | What it does |
|--------|--------------|
| **SMS / iMessage** | Choose how to send. **SMS** sends via your business numbers. **iMessage** appears when available for that contact. |
| **Assign** | Assigns the contact to **Company**, a specific **team member**, or **Unassign**. Saved for the contact. |
| **Emoji** | Opens an emoji picker to insert symbols into your message. |
| **Text box** | Where you type your message. |
| **Send** | Sends the message when all requirements are met. |
Some teams also support **personalization codes** (for example automatic first-name insertion). Only use them if your admin has shared the allowed codes.
## ✅ Before Send will work — checklist
For SMS to send correctly:
1. A **contact is selected** on the left (the row is highlighted).
2. The contact is **not blocked** by Do Not Disturb settings for texts or all channels.
3. Under **SMS Setting** on the right, a valid **From** number is chosen.
4. The **To** field (the contact’s number) is present and correct; change it under **Contact Info** if needed.
5. You have entered some **text** in the box.
6. While sending, **Send** may be briefly disabled to avoid double sends.
7. If sending fails, an **error message** appears. If it succeeds, the box **clears** and your new message shows in the timeline.
If **Do Not Disturb ** is set for text or for all channels, you will see a warning and sending may be blocked until an allowed user changes those settings.
## 📝 Right side: contact details and settings
The **right side** is where you manage details for the currently selected contact. Sections can usually be expanded or collapsed.
### 📋 Contact Info
Shows the core fields your company stores for this person (for example first name, last name, phone, email, and custom fields). Edit what you are allowed to change and click **Save Changes**. After a successful save:
- The name and phone in the **top bar** of the middle area can update.
- Any related screens in the product see the same new information.
### 🏅 Dispositions
**Dispositions** are outcome labels your company defines (for example “Not Interested”, “Callback Needed”, or “Sold”). Pick the one that matches the latest interaction.
- Selections often **save immediately** when changed.
- Your organization may use them to **trigger automation** or reports.
### 🔖 Tags
**Tags** act as flexible labels like “VIP” or “High Priority”.
- Add or remove tags with the multi-select control.
- Click **Save Tags** so changes are stored.
- Other parts of the system may rely on tags for filters or automation.
### 🗒️ Notes
Notes are **internal**—they are not sent to the contact.
- See existing notes with previews and last-updated times.
- Use **Add Note** (or similar) to create new notes.
- Use **Edit** to adjust an existing note.
- After saving, the list refreshes, usually with the newest notes first.
### 📅 Appointments
Shows appointments connected to this contact.
- Typical fields: **date**, **time**, **calendar**, **duration**, and **status**.
- You may see **View** actions for full details or links to join online meetings.
- Use **Add** to book new appointments when calendar integration is active.
### 🔄 Workflows
**Workflows** in the contact sidebar shows automations tied to this person.
| Section | Meaning |
|---------|---------|
| **Active workflows** | Published workflows that are **scheduled and running** (or waiting to start) for this contact |
| **Past workflows** | Workflows this contact has **already used** — finished or no longer active for them |
If none are enrolled, you see **No active workflows** or **No past workflows**.
#### ➕ Add automation
Click the **+** next to **Active workflows** to schedule a published workflow for this contact.
1. Open **Workflows** on the right for the selected contact
2. Click **+** under **Active workflows**
3. Search and select a **Workflow** (required — published workflows only)
4. Set **Event start date** and **Event start time**
5. Click **Add** (or **Cancel** to close)
The workflow starts for this contact at the selected date and time, then appears under **Active workflows**. When it finishes, it moves to **Past workflows**.
Only published workflows can be added here. Build and activate workflows under [Workflows](/workflow/all-workflows) first.
### 🏗️ Pipeline
The **Pipeline** section links this contact to a **pipeline** and **stage** (for example New → Qualified → Won).
- Choose a pipeline, pick the right stage, and save.
- Updates here help you see where this person is in your process.
- In many setups, changing the stage can also affect reports or automations.
### 📲 SMS Setting
SMS settings control which number you use when sending texts from Conversations.
- **From** — choose a **business number** that is registered and approved for outbound SMS. Only valid numbers appear.
- **To** — shows the contact’s phone number as read-only. If it is wrong, edit it under **Contact Info**, not here.
By default a text uses the lead's **texting line**: the number they were last texted from, else your own line, else the team line. See [Texting lines](/dialer/texting-lines).
### 🚫 DND (Do Not Disturb )
Do Not Disturb settings let you respect contact preferences and regulations.
- **DND all channels** — blocks all supported outbound channels for this contact.
- Or choose specific channels: **Emails**, **Text messages**, **Calls & voicemails**.
- **DND Inbound Calls and SMS** — an extra setting for how the system handles incoming calls and texts.
Checking individual channels can clear or adjust the “all channels” option so the logic stays consistent. Many DND options **save as soon as you click** them; some can also be saved alongside **Contact Info** when you press **Save Changes**.
---
# Messages
Source: https://docs.aisync.link/messages/messages
The **Messages** module is your main **SMS inbox**. Use it to see recent conversations, search for a contact, start a new chat, send replies, review a contact's wider activity, and update contact details — all from one screen.
## ✨ What this module is for
Use **Messages** when you want to:
- View all recent SMS conversations in a single inbox.
- Search conversations by contact name or phone number.
- Open a contact's message history.
- Send a new SMS reply to a selected contact.
- Start a conversation with an existing contact.
- Review the contact's full activity — messages, calls, emails, notes, tag changes, and workflow steps.
- Update contact info, tags, notes, appointments, pipeline stage, SMS settings, and DND preferences without leaving the inbox.
- Jump from the conversation straight to the contact's full record.
The Messages screen has three main areas.
### 📥 Inbox sidebar (left)
The left side is the **inbox list**. It shows recent message threads, with the newest conversations near the top.
The header shows **Inbox** and the current **thread count** — for example, *20 threads*.
Each conversation row can show:
| Item | What it means |
|------|----------------|
| **Contact name** | The person's name, or their phone number if no name is saved |
| **Latest message preview** | A short snippet of the most recent text |
| **Direction** | Whether the latest message came from the contact or from you |
| **Channel** | The message type, such as SMS |
| **Time** | When the latest message was sent or received |
| **Tags** | Contact tags, when available |
| **Unread indicator** | Shown when the latest message is inbound and not yet read |
At the top of the sidebar, you also have quick buttons for:
- Switching between **light** and **dark** mode.
- Going back to the **dashboard**.
- Opening the **contacts** area.
- **Composing** a new conversation with the **Compose** button.
**🔍 Searching conversations**
Use the **search box** in the inbox sidebar to find a conversation by contact name or phone number.
Search updates automatically as you type. The inbox also refreshes in the background, so new or updated conversations can appear without manually reloading the page.
**Keyboard shortcut**
| Platform | Shortcut |
|----------|----------|
| Windows | `Ctrl + K` |
| Mac | `Command + K` |
Press the shortcut to jump straight to the search box.
### 💬 Conversation Panel (middle)
Step into the **heart** of your Messages experience — the Conversation Panel! Here, your entire conversation comes alive: see, respond, and take action all in one seamless space.
**🌟 Dynamic Header**
- **Contact Name** (or phone number): Beautifully displayed up top so you always know who you're chatting with.
- **Primary Number:** Instantly visible for quick reference and zero confusion.
- **Contact Button:** Jump straight to the full contact record — no hunting required.
**🗂️ Effortless Tab Navigation**
To the right, swap between:
- **Messages:** Dive into the real-time chat thread, with clear color-coded bubbles to distinguish inbound and outbound messages at a glance. Each entry shines with a timestamp and clear sender/receiver labels.
- **All Activity:** Effortlessly scan every update, status change, note, or SMS related to this contact — all organized in a crisp, scrollable feed.
**💡 Intuitive Message Window**
Relish the clarity of a neatly arranged, chronological timeline — every message, link, or special format is displayed just like you’d expect. The design makes it easy to spot new replies and track the conversation flow.
**📨 Smart Reply Bar**
Ready to respond? The conversation panel’s sleek input box is always at your fingertips:
- **Type your message** and hit the bold, easy-to-spot **Send** button for instant delivery.
- Attach files, save drafts, and — in select versions — access templates for lightning-fast replies.
### 👤 Contact sidebar (right)
The right side is the **contact sidebar**. It shows details and settings for the currently selected contact. Each section can be expanded or collapsed.
At the top of the sidebar you see the contact's **avatar**, **name**, and **phone number**. Use the **external link** icon to open the contact's full record in a separate view.
**📋 Contact Info**
Shows the core fields your company stores for this person — for example first name, last name, phone, email, and custom fields. Edit what you are allowed to change and click **Save Changes**. After a successful save, the name and phone shown in the conversation header update to match.
**🏅 Dispositions**
**Dispositions** are outcome labels your company defines — for example *Not Interested*, *Callback Needed*, or *Sold*. Pick the one that matches the latest interaction. Selections often save immediately when changed.
**🔖 Tags**
**Tags** act as flexible labels like *VIP* or *High Priority*. Add or remove tags with the multi-select control and click **Save Tags** so changes are stored.
**🗒️ Notes**
Notes are **internal** — they are not sent to the contact. View existing notes, add new ones, or edit notes that are already saved. After saving, the list refreshes with the newest notes first.
**📅 Appointments**
Shows appointments connected to this contact — for example date, time, calendar, duration, and status. Use **Add** to book new appointments when calendar integration is active.
**🏗️ Pipelines**
The **Pipelines** section links this contact to a **pipeline** and **stage** — for example New → Qualified → Won. Choose a pipeline, pick the right stage, and save.
**📲 SMS Setting**
SMS settings control which number you use when sending texts from Messages.
- **From** — choose a **business number** that is registered and approved for outbound SMS.
- **To** — shows the contact's phone number as read-only. If it is wrong, edit it under **Contact Info**, not here.
**🚫 DND Numbers**
**DND Numbers** (Do Not Disturb) settings let you respect contact preferences and regulations.
- **DND all channels** — blocks all supported outbound channels for this contact.
- Or choose specific channels: **Emails**, **Text messages**, **Calls & voicemails**.
- **DND Inbound Calls and SMS** — an extra setting for how the system handles incoming calls and texts.
Many DND options save as soon as you click them. If sending is blocked by DND, you see a warning until an allowed user changes those settings.
**👤 Contact button**
The **Contact** button in the conversation header also opens the selected contact's full record and timeline.
Use it when you need deeper contact history or actions that are not available inside the Messages inbox.
The Messages module is for **quick conversation handling and inline contact updates**. The full contact record is for **complete contact management**.
**🌓 Theme toggle**
The theme button lets you switch the inbox between **dark mode** and **light mode**.
This affects the Messages screen display only. Use whichever view is easier for you to read.
If no conversation is selected, the screen asks you to pick a conversation or start a new one.
## ✏️ How to start a new conversation
You can begin a new conversation in one of two ways:
1. Click **Compose** at the top of the inbox list, **or**
2. Use the keyboard shortcut: press **`N`**.
This opens the **New conversation** popup. In the popup:
1. Enter a contact name or phone number into the search field.
2. Choose the correct contact from the search results.
3. The conversation view appears in the middle panel.
4. Type your message and send.
**💬 Messages tab**
The **Messages** tab shows the SMS conversation with the selected contact.
Messages appear as chat bubbles:
- Messages **from the contact** appear on the **left**.
- Messages **sent by you** appear on the **right**.
- Messages are **grouped by day** — for example, *Today* or *Yesterday*.
- Recent messages show the **time** they were sent or received.
If there are no messages yet, the module shows an empty state and prompts you to send the first message.
**✉️ Sending a message**
To send a message:
1. Select a conversation or start a new one.
2. Type your message in the message box at the bottom.
3. Click **Send**, or press **`Enter`**.
The message box also includes:
- An **attachment** icon for adding files, when supported.
- An **emoji** picker for inserting symbols into your message.
**Typing shortcuts**
| Action | Shortcut |
|--------|----------|
| Send the message | `Enter` |
| Add a new line | `Shift + Enter` |
Texts go from the lead's **texting line**: the number they were last texted from, else your own line, else the team line. If there is no A2P-linked number to use, the message is not sent until one is set up. Contacts marked Do Not Text are never texted. See [Texting lines](/dialer/texting-lines).
While a message is being sent, the module may briefly show it in the conversation right away. If the send fails, you see an error message and the failed message is marked.
## 📋 All activity tab
The **All activity** tab shows a wider timeline for the selected contact.
This can include:
- SMS messages
- Calls
- AI calls
- Voicemails
- Emails
- Notes
- Tag changes
- Workflow activity
Use this tab when you need more context before replying. For example, you can check whether the contact recently received an email, completed a workflow step, had a call, or had a tag changed.
## 📭 Empty states
You may see different empty states depending on the situation:
| Empty state | What it means | What to do next |
|-------------|---------------|-----------------|
| **No conversations yet** | No SMS conversations are in the inbox | Start a conversation or wait for inbound texts |
| **Pick a conversation** | No contact thread is selected yet | Click a row in the inbox sidebar |
| **No messages yet** | The selected contact has no SMS messages | Send the first message |
| **No activity yet** | No activity to show in the timeline | Activity will appear as events are logged |
| **No contact matches** | New conversation search found no match | Add or import the contact, then search again |
These messages guide you toward the next action.
---
# Phone Numbers
Source: https://docs.aisync.link/phone-numbers/phone-numbers
## 📞 What is this page?
The **Phone Numbers** page is where you manage every phone number your business owns inside the platform.
## 🤔 Why would you use this page?
You come here when you need to:
- See all the phone numbers your business owns in one place
- Decide **who or what** answers when someone calls or texts a number
- Enable a number for **AI-powered calling**
- Register a number for **SMS compliance** (10DLC / A2P) so your texts actually reach people
- Assign an **automated chatbot** to handle text conversations
## 📊 What can you see at the top?
At the very top, four summary cards give you an instant snapshot:
How many numbers your account owns
How many are fully registered and approved for SMS
How many have been given a specific user or agent
How many are sitting idle with no assignment
## 🔍 Finding a number
Use the **search bar** to quickly find any number. You can search by:
- The phone number itself
- A user's name or email
- An AI agent's name
## ⚙️ What can you do with each number?
Every number in the list has its own row. Here is everything you can do with it.
### 1️⃣ Activate the number for AI
> **What it does:** Turns on AI capabilities for this number so it can be used with AI voice agents.
When you buy a number it starts as a plain phone number — it can ring, but it has no AI behind it. Clicking **Activate For AI** connects the number to the AI calling system.
**When to use it:** You want an AI agent to pick up calls on this number, or you want to make automated outbound calls from it.
**After activation:** The button disappears. The Inbound and Outbound dropdowns will now show your AI agents as options.
### 2️⃣ Link a 10DLC campaign (A2P registration)
> **What it does:** Registers your number under an approved SMS campaign so your text messages reach recipients without being blocked.
US phone carriers require businesses to register their phone numbers before sending text messages at scale. This process is called **A2P 10DLC registration**. If you skip it, your SMS messages will likely be filtered or blocked.
Each number shows one of three statuses:
| Status | Meaning |
|---|---|
| ✅ **A2P linked** | Fully approved — SMS works normally |
| ⏳ **A2P Link In Progress** | Registration submitted, waiting for carrier approval |
| ⚠️ **Not A2P-linked** | Not registered — SMS may be blocked |
**When to use it:** Your number shows "Not A2P-linked" and you need to send SMS messages from it.
**How to do it:** Click the **10DLC** button on that number, pick a campaign from the list, and confirm. The status will update to "In Progress" and eventually "Linked" once approved.
### 3️⃣ Set inbound routing
> **What it does:** Decides where incoming calls and messages on this number go — to a specific human, or to an AI agent.
**Options:**
- **Route to a User** — pick any active team member. When someone calls this number, that person's line rings.
- **Route to an AI Agent** — pick an inbound AI agent. When someone calls, the AI picks up and handles the conversation automatically.
- **No routing** — remove the assignment. The number falls back to the shared pool behavior.
### 4️⃣ Set outbound AI agent
> **What it does:** Assigns an AI agent to make outbound automated calls from this number.
When your system needs to place an automated call — for a follow-up, a reminder, or a campaign — it uses the outbound agent assigned to that number.
**When to use it:** You want one specific number to always be used when a particular AI agent calls people.
**Requirements:** The number must first be activated for AI. If it hasn't been activated, this dropdown is locked.
### 5️⃣ Set chatbot agent
> **What it does:** Assigns an automated chatbot to handle incoming text messages on this number.
When someone texts this number, the chatbot agent takes over the conversation automatically — answering questions, collecting info, or routing the person to the right place.
**Requirements:** The number must be **A2P-linked** before a chatbot can be assigned. This ensures your automated texts are properly registered with carriers.
---
# Stripe Setup
Source: https://docs.aisync.link/business-management/stripe-setup
Before you can create and sell packages to your customers, you need to connect and verify your Stripe account. Follow these steps for a successful setup.
## 🚩 First-Time Setup
1. Click the **"Stripe Setup"** button on the dashboard.
2. Complete the Stripe onboarding process in the secure Stripe window.
3. Verify your contact and payout information as shown after onboarding.

---
## ⚡ Stripe Integration Process
### Setting Up Stripe
1. **Click "Stripe Setup":**
Access this button from your main AI Sync dashboard.
2. **Complete Onboarding:**
Fill out required details on Stripe's secure page, which typically includes:
- Business information (company name, address, tax ID)
- Bank account details (account, routing number)
- Identity verification (owner details, government ID)
3. **Verify Status:**
Once completed, the AI Sync system will display:
- Your contact information
- Your payout/bank information
- Account status (active/inactive)
---

## 📋 Stripe Information Display
Once you’ve connected your account, the integration panel will show up-to-date Stripe information:
- **Contact Information:**
Displays your registered name, email, website, and support contact.
- **Payout Information:**
Displays your bank account details (masked), routing number, and currency.
- **Account Status:**
Shows whether your Stripe account is Active, Inactive, Pending, or requires further action.
---
> **Need help?** If you have issues with onboarding or verification, please contact support or consult the Stripe documentation.
Ready to enable payments? Use the **"Stripe Setup"** button on your dashboard now!
---
# Reselling Setup
Source: https://docs.aisync.link/business-management/reselling-setup
The **Reselling Module** is a comprehensive package management system for creating, configuring, and managing reselling packages for your clients. This module offers flexible pricing (including slider-based multipliers and manual entry), seamless Stripe payment integration, and detailed profit calculations.
---
### Key Features
- ✅ **Dual Pricing Modes**: Use sliders for multiplier-based pricing or enter values manually for precise control.
- ✅ **Dynamic Profit Calculations**: Instantly see fixed and percentage-based Rizler charges and their impact on profits.
- ✅ **Stripe Integration**: Secure, built-in payment processing to enable customer transactions.
- ✅ **Module Management**: Select and assign specific features and services to each package.
- ✅ **Real-time Updates**: Live calculation and profit margin updates as you configure your packages.
## 📦 Package Management
**Accessing the Module**
1. Navigate to **Setup** → **Reselling** in the main menu.
2. You'll see the Reselling dashboard with your existing service packages displayed in a comprehensive overview table:

3. Click **"Add"** to create a new package, or **"Edit"** to modify an existing package.

Ready to launch a new offer that wows your clients? Just follow these simple steps and watch your service lineup shine:
1. **Click** the vibrant **"Add"** button on the Reselling dashboard to start something new.
2. **Give your package a standout name**—think catchy, clear, and appealing, such as _"Premium Advantage"_ or _"Pro Success Kit"_.
3. **Save your title** with a click on **"Save Title"**, making it official.
4. **Set enticing prices** for all services—choose slider mode for dynamic rates or manual input for custom deals.
5. **Pick powerful modules and features** to pack your offering with value.
6. **Seal the deal** by hitting **"Save"**. Your new package is ready to impress!

---
### ✏️ Editing
1. Find any package in your list and tap the **"Edit"** button—making changes is easy and quick.
2. Tweak the package name, fine-tune prices, swap modules, or update any setting with instant feedback.
3. **No more “Save” anxiety!** Every edit is auto-saved, so your upgrades are locked in as you go.
---
**🚀 Package List Superpowers**
- **🔄 Sort Anything:** Organize packages by any column with a click. See what matters most—your way!
- **🔍 Lightning Search:** Instantly find packages with the fast search box—no scrolling frustration.
- **📑 Sleek Pagination:** Zip through pages to manage a growing catalog with ease.
- **✏️ One-Tap Actions:** Edit or delete in a flash with clear, accessible icons.
- **🌟 Freshest on Top:** New packages you create always show up first—so you never lose sight of your latest ideas.
# 🎚️ Flexible Pricing
🌈 **Choose your perfect pricing style—maximum control, minimum hassle:**
**① 🎛️ Dynamic Slider Mode (Default)**
- 🟰 **Effortless Markup**: Slide between **1x**–**100x** to set your ideal profit multiplier instantly.
- 👁️🗨️ **Live Price Preview**: See the customer price adjust in real time as you move the slider—no guesswork!
- 💾 **Auto-Save**: Pause for 2 seconds—your changes are saved automatically, no extra clicks.
- ➕➖ **Fine-Tune**: Nudge the + or – buttons for incremental, precise control.
**② ✍️ Manual Entry**
- 🎯 **Exact Control**: Enter the precise price (to the penny) you want your customer to pay.
- 🛡️ **Margin Guard**: The platform won't accept prices below your real cost, so every sale is protected.
- ✅ **Quick Save**: Just tap the 💾 save icon—your edits lock in instantly.
- 📈 **Instant Profit**: See your projected profit and margin live as you dial in each value.
---
### 🔧 One Time Setup Fee


**Setup Fee Cost:**
- **Your Package Cost:** This is your company's direct setup fee (e.g., **$1.30**).
- **Reselling Base Cost:** The base cost for customers always starts at your setup fee, shown as **$1.30**.
**Slider Mode Example:**
- Slide to **2.0x** multiplier → Customer pays **$2.60**
> **Profit = $2.60 (customer charge) – $1.30 (your cost) = $1.30**
**Manual Mode Example:**
- Enter **$5.00** as the customer charge
> **Profit = $5.00 (customer charge) – $1.30 (your cost) = $3.70**
**Calculation Formula:**
> **Customer Charge – Your Package Cost = Profit**
### 📦 Package Price


**Package Price Cost:**
- **Your Package Cost:** Your company's package price (e.g., **$4.00**)
- **Reselling Base Cost:** Always starts at **$4.00/m** (per month)
**Slider Mode Example:**
- Set to **2.5x** multiplier → Customer pays **$10.00/m**
> **Profit = $10.00/m (customer charge) – $4.00/m (your cost) = $6.00/m**
**Manual Mode Example:**
- Enter **$8.00/m** for customer
> **Profit = $8.00/m (customer charge) – $4.00/m (your cost) = $4.00/m**
**Rizler Charge:**
- If applicable, Rizler charge can be added based on **Fixed** amount or **Percentage** (`e.g. 10% extra`).
**Calculation Formula:**
> **Customer Charge – Your Package Cost = Profit**
### 💺 Per Seat With Carrier Cost

**Your Package Cost:** Your company's per seat with carrier cost (e.g., **$17.00**)
**Reselling Base Cost:** Always starts at **$17.00/m** (per month, per seat)
**Slider Mode Example:**
- Set to **2.0x** multiplier → Customer pays **$34.00/m**
> **Profit = $34.00/m (customer charge) – $17.00/m (your cost) = $17.00/m**
**Rizler Charge:**
- Additional charge can be added based on **Fixed** amount or **Percentage** type.
**Calculation Formula:**
> **Customer Charge – Rizler Charge = Profit**
### 🚀 Per Seat Without Carrier Cost

**Your Package Cost:** Your company's per seat without carrier cost (e.g., **$18.00**)
**Reselling Base Cost:** Always starts at **$18.00/m** (per month, per seat)
**Slider Mode Example:**
- Set to **2.0x** multiplier → Customer pays **$36.00/m**
> **Profit = $36.00/m (customer charge) – $18.00/m (your cost) = $18.00/m**
**Rizler Charge:**
- Additional charge can be added based on **Fixed** amount or **Percentage** type.
**Calculation Formula:**
> **Customer Charge – Rizler Charge = Profit**
### 📞 Rizz Inbound Call Cost

**Your Package Cost:** Your company's inbound call cost (e.g., **$0.30**)
**Reselling Base Cost:** Shows **$0.30/min** as base cost
**Slider Mode Example:**
- Set to **2.0x** multiplier → Customer pays **$0.60/min**
> **Profit = $0.60/min (customer charge) – $0.30/min (your cost) = $0.30/min**
**Calculation Formula:**
> **Customer Charge – Your Package Cost = Profit**
### 📱 Rizz Outbound Call Cost

**Your Package Cost:** Your company's outbound call cost (e.g., **$0.35**)
**Reselling Base Cost:** Shows **$0.35/min** as base cost
**Slider Mode Example:**
- Set to **2.0x** multiplier → Customer pays **$0.70/min**
> **Profit = $0.70/min (customer charge) – $0.35/min (your cost) = $0.35/min**
**Calculation Formula:**
> **Customer Charge – Your Package Cost = Profit**
### 📨 SMS Inbound Cost

**Your Package Cost:** Your company's SMS inbound cost (e.g., **$0.05**)
**Reselling Base Cost:** Shows **$0.05/SMS** as base cost
**Slider Mode Example:**
- Set to **2.0x** multiplier → Customer pays **$0.10/SMS**
> **Profit = $0.10/SMS (customer charge) – $0.05/SMS (your cost) = $0.05/SMS**
**Calculation Formula:**
> **Customer Charge – Your Package Cost = Profit**
### 📤 SMS Outbound Cost

**Your Package Cost:** Your company's SMS outbound cost (e.g., **$0.08**)
**Reselling Base Cost:** Shows **$0.08/SMS** as base cost
**Slider Mode Example:**
- Set to **2.0x** multiplier → Customer pays **$0.16/SMS**
> **Profit = $0.16/SMS (customer charge) – $0.08/SMS (your cost) = $0.08/SMS**
**Calculation Formula:**
> **Customer Charge – Your Package Cost = Profit**
### 🔢 Phone Number Cost

**Your Package Cost:** Your company's phone number cost (e.g., **$2.00**)
**Reselling Base Cost:** Shows **$2.00/m** as base cost
**Slider Mode Example:**
- Set to **2.0x** multiplier → Customer pays **$4.00/m**
> **Profit = $4.00/m (customer charge) – $2.00/m (your cost) = $2.00/m**
**Calculation Formula:**
> **Customer Charge – Your Package Cost = Profit**
### 🤖 AI Phone Number Cost

**Your Package Cost:** Your company's AI phone number cost (e.g., **$3.00**)
**Reselling Base Cost:** Shows **$3.00/m** as base cost
**Slider Mode Example:**
- Set to **2.0x** multiplier → Customer pays **$6.00/m**
> **Profit = $6.00/m (customer charge) – $3.00/m (your cost) = $3.00/m**
### 🚀 AI Inbound Call Cost

**Your Package Cost:** Your company's AI inbound call cost (e.g., **$0.50**)
**Reselling Base Cost:** Shows **$0.50/min** as base cost
**Slider Mode Example:**
- Set to **2.0x** multiplier → Customer pays **$1.00/min**
> **Profit = $1.00/min (customer charge) – $0.50/min (your cost) = $0.50/min**
### ⚡ AI Outbound Call Cost

**Your Package Cost:** Your company's AI outbound call cost (e.g., **$0.55**)
**Reselling Base Cost:** Shows **$0.55/min** as base cost
**Slider Mode Example:**
- Set to **2.0x** multiplier → Customer pays **$1.10/min**
> **Profit = $1.10/min (customer charge) – $0.55/min (your cost) = $0.55/min**
### 🤖 AI Call GPT-4.1

**Your Package Cost:** Your company's GPT-4.1 call cost
**Reselling Base Cost:** Shows your base GPT-4.1 processing rate
**Pricing Model:** Multiplier-based (e.g., 2.0x) or manual rate override
### ⏱️ AI Call GPT-4.1 Mini Cost

**Your Package Cost:** Your company's GPT-4.1 Mini call cost
**Reselling Base Cost:** Shows your base GPT-4.1 Mini processing rate
**Pricing Model:** Multiplier-based or manual rate override
### 📊 AI Call GPT-4.1 Nano

**Your Package Cost:** Your company's GPT-4.1 Nano call cost
**Reselling Base Cost:** Shows your base GPT-4.1 Nano processing rate
**Pricing Model:** Multiplier-based or manual rate override
### 🎭 AI Call Claude 3.7 Sonnet

**Your Package Cost:** Your company's Claude 3.7 Sonnet call cost
**Reselling Base Cost:** Shows your base Claude 3.7 Sonnet processing rate
**Pricing Model:** Multiplier-based or manual rate override
### 🎭 AI Call Claude 3.5 Haiku

**Your Package Cost:** Your company's Claude 3.5 Haiku call cost
**Reselling Base Cost:** Shows your base Claude 3.5 Haiku processing rate
**Pricing Model:** Multiplier-based or manual rate override
### ⚡ AI Call Gemini 2.0 Flash

**Your Package Cost:** Your company's Gemini 2.0 Flash call cost
**Reselling Base Cost:** Shows your base Gemini 2.0 Flash processing rate
**Pricing Model:** Multiplier-based or manual rate override
### 💸 AI Call Gemini 2.0 Flash Lite Cost

**Your Package Cost:** Your company's Gemini 2.0 Flash Lite call cost
**Reselling Base Cost:** Shows your base Gemini 2.0 Flash Lite processing rate
**Pricing Model:** Multiplier-based or manual rate override
### 📞 Twilio Inbound Call Cost

**Your Package Cost:** Your company's Twilio inbound call cost
**Reselling Base Cost:** Shows your base Twilio inbound call rate
**Pricing Model:** Multiplier-based or manual rate override
### 📞 Twilio Outbound Call Cost

**Your Package Cost:** Your company's Twilio outbound call cost
**Reselling Base Cost:** Shows your base Twilio outbound call rate
**Pricing Model:** Multiplier-based or manual rate override
### 📱 Twilio Phone Number Cost

**Your Package Cost:** Your company's Twilio phone number cost
**Reselling Base Cost:** Shows your base Twilio phone number rate
**Pricing Model:** Multiplier-based or manual rate override
### 📥 Twilio SMS Inbound

**Your Package Cost:** Your company's Twilio SMS inbound cost
**Reselling Base Cost:** Shows your base Twilio SMS inbound rate
**Pricing Model:** Multiplier-based or manual rate override
### 📤 Twilio SMS Outbound

**Your Package Cost:** Your company's Twilio SMS outbound cost
**Reselling Base Cost:** Shows your base Twilio SMS outbound rate
**Pricing Model:** Multiplier-based or manual rate override
### 🤖 Additional KB Price

**Your Package Cost:** Your company's additional KB price
**Reselling Base Cost:** Shows your base additional KB service rate
**Pricing Model:** Multiplier-based or manual rate override
### 🔄 AI CC Charge

**Your Package Cost:** Your company's AI CC charge
**Reselling Base Cost:** Shows your base AI CC service rate
**Pricing Model:** Multiplier-based or manual rate override
### 🛡️ Spam Protected Price

**Your Package Cost:** Your company's spam protected price
**Reselling Base Cost:** Shows your base spam protected service rate
**Pricing Model:** Multiplier-based or manual rate override
## 🧩 Available Modules
The system features a range of 🧩 modules you can assign to your reselling packages. Which modules appear depends on your company’s subscribed features.

### 📝 Assigning Modules
1. **🟩 Select Modules**: Tick the checkboxes next to each module name to include them in your package.
2. **💾 Save Selection**: Hit **"Save Modules"** to lock in your choices for that package.
3. **🎯 Package-Specific**: Assign unique sets of modules to each package, tailoring your services for every customer type.
**Examples of Assignable Modules:**
- 💬 SMS services
- 📞 Voice calling
- 🤖 AI-powered automation
- 🛡️ Spam protection
- 📊 Analytics and reporting
*(Module options may depend on your company’s plan.)*
**How to Assign Modules:**
- 🧑💼 Choose modules that align with your service goals.
- 🔀 Mix and match modules for each package as needed.
- ⚠️ Review module dependencies if applicable.
- 💾 Save after updating module selections for any package.
## 🚀 Advanced Features
- **Fixed Charge**:
Set a simple, predictable dollar value (e.g., **"$2.00/mo"**) for each package.
> 🧮 **Your Profit** = Customer Charge − Fixed Charge
- **Percentage Charge**:
Use a flexible rate (e.g., **"15%"**) to automatically scale your fees as revenue grows.
> 🧮 **Your Profit** = Customer Charge − (Charge × Percentage)
🌟 **Handy Examples:**
- Sell for **$100** with a **$20** fixed charge → **You keep $80**
- Sell for **$100** with a **15%** charge → **You keep $85**
---
**🏷️ Smart Base Cost & Magic Defaults**
- **Always Accurate**: Uses your own latest package costs for real numbers, everywhere.
- **Automatic Sync**: Update a rate once, watch all prices update instantly. No tedious re-entry.
- **Never $0, Always Fair**: Entering `0` or leaving blank? System sets that to **$1.00**—“free” services never sneak in!
---
**⚡ Real-Time Calculation**
- **See Profits Instantly**: Change rates, adjust sliders, or swap input modes—your profit preview updates LIVE.
- **Switch It Up**: Effortlessly toggle between slider-based multipliers and manual entry to match your style.
- **Clear & Confident**: Every change shows you exactly what you (and your client) will pay and earn.
!*
---
# Companies
> Transform your business operations with our comprehensive Companies module - your all-in-one solution for managing client relationships and business partnerships. This powerful platform empowers administrators to effortlessly oversee company onboarding, profile management, real-time monitoring, and service provisioning. Experience seamless connectivity across all your essential services: AI Numbers, AI-powered agents, billing management, and user administration, e.t.c.
Source: https://docs.aisync.link/business-management/companies
## 🎯 What You Can Accomplish
Our Companies management platform puts you in complete control of your business ecosystem. Whether you're onboarding new clients, tracking account performance, or customizing service packages, everything you need is at your fingertips.
### 🚀 Key Features
- **🔄 Complete Account Lifecycle Management**: From registration to activation, including status monitoring and account modifications
- **🔗 Multi-Service Integration**: Seamless integration with dialer services, AI agents, and telephony features
- **🛡️ Advanced Access Control**: Role-based permissions with secure authentication and audit trail capabilities
- **⚡ Real-time Operations**: Live status updates, instant search functionality, and immediate configuration changes
- **📊 Business Intelligence**: Comprehensive reporting, data export capabilities, and usage analytics
## 🔍 Company Listing Interface

The main Companies dashboard provides a comprehensive view of all registered companies in your system. This interface serves as the primary hub for company management operations.
### 📊 Dashboard Features
**Navigation & Access**
- **📍 Breadcrumb Navigation**: Clear path showing `Users » Companies` for easy navigation
- **🔍 Search Functionality**: Real-time search bar for quickly finding specific companies
### 📋 Data Columns
| Column | Purpose | Description |
|------------------------|--------------------------------|----------------------------------------------------------------------------------------------|
| **#** | Row Number | Sequential ID of each company in the listing
| **Action** | Actions | Available actions: Login ,Manage subscription , Edit , Billing / Renewal , Balance / Add Money | |
| **Name** | Company Name | Official registered name of the company |
| **Email** | Company Email | Primary email for the company – used for login and communication |
| **Account Type** | Type | Specifies the category (e.g., Company, Agency) |
| **VOIP** | VOIP Code / Identifier | System-generated unique VOIP code assigned to each company for telephony integration |
| **Status** | Account Status | Shows if the account is Active, Inactive, or Pending |
| **Onboarding** | Onboarding Progress | Indicates whether the company has completed onboarding steps; may show percentage or status such as Yes, No. |
| **Added By** | Added By | User who added or registered the company |
| **Created At** | Registration Date | Date and time when the company was registered |
### 🎛️ Action Controls

**🛠️ Available Actions**
- **🔑 Login**: Access the company dashboard as that company (impersonation mode)
- **✏️ Edit**: Update company information and configuration settings
- **🗑️ Delete**: Remove a company account (action requires confirmation)
## ➕ Add Company Interface
The Add Company form is a comprehensive interface for registering new business entities on your platform. This form captures all essential information required for company onboarding and account setup.
### 📝 Form Sections

**📋 Name Field**
- **Purpose**: Official company name for identification
- **Usage**: Displayed across the platform for company identification
**📧 Email Field**
- **Purpose**: Primary communication and login credential
- **Usage**: Account access, notifications, and official communications
**📞 Phone Number Field**
- **Purpose**: Direct contact method for support and communication
- **Usage**: Support contacts, verification, and emergency communications
**⚙️ Account Configuration**
**📊 Status Dropdown**
- **Options**:
- `Pending` - Account awaiting approval
- `Active` - Fully operational account
- `Inactive` - Suspended or disabled account
- **Purpose**: Control account access and operational state
**📞 Dialer Configuration**
- **Options**: `Yes` / `No`
- **Purpose**: Enable/disable dialer functionality for the company
**🧩 Service Configuration**
**📦 Reselling Packages**
- **Purpose**: Assign service packages available to the company
- **Usage**: Determines available features and service limits
**💰 Free Account Status**
- **Options**: `Yes` / `No`
- **Purpose**: Designate whether the account has free tier access
- **Usage**: Controls billing, feature access, and service limitations
**✅ BYOC (Bring Your Own Carrier)**
- **Options**: `Yes` / `No`
- **Purpose**: Allow companies to use their own telecom carriers
- **Usage**: Enables integration with existing telecom infrastructure
### 🔧 Configuration Matrix
| Setting | Options | Impact | Use Case |
|---------|---------|---------|----------|
| **🟢 Status** | Pending/Active/Inactive | Account access | Account lifecycle management |
| **📞 Dialer** | Yes/No | Calling features | Telephony service control |
| **💰 Free Account** | Yes/No | Billing & features | Service tier management |
| **✅ BYOC** | Yes/No | Carrier integration | Infrastructure flexibility |
# ✏️ Edit Company Interface
The Edit Company interface lets admins change company info and settings as needed.
### 📝 Editable Sections

- **Name:** Update company name.
- **Email:** Change company email.
- **Phone Number:** Edit contact number.
**Status:** Set to Pending, Active, or Inactive.
**Dialer:** Enable or disable dialer (Yes/No).
**Reselling Packages:** Change assigned package.
**Free Account:** Toggle free tier access (Yes/No).
**BYOC:** Allow or remove carrier integration (Yes/No).
### 🛠️ Editable Settings
| Setting | Options | Effect |
|--------------------|------------------------|-------------------------------|
| **Status** | Pending/Active/Inactive| Access control |
| **Dialer** | Yes/No | Enable calling |
| **Free Account** | Yes/No | Free or paid account switch |
| **BYOC** | Yes/No | Carrier integration toggle |
## 🚀 Workflow & Usage
### 🏭 Company Registration Process
1. **📝 Information Gathering**
- Collect basic company information (name, email, phone)
- Set initial security credentials
- Configure account parameters
2. **⚙️ Service Configuration**
- Select appropriate reselling package
- Configure dialer access
- Set account type (free/paid)
- Configure BYOC if needed
3. **✅ Review & Approval**
- Account typically starts in "Pending" status
- Administrative review of company details
- Approval process activation
4. **🎯 Account Activation**
- Status change to "Active"
- Service provisioning
- Account access enablement
### 👩💼 Administrative Operations
**📆 Regular Management Tasks**
- **📊 Monitor**: Track company activities and usage
- **🔄 Update**: Modify company information as needed
- **🎛️ Configure**: Adjust service settings and packages
- **🔍 Audit**: Review account activities and changes
**📦 Bulk Operations**
- **📥 Import**: Bulk company creation from CSV/Excel
- **📤 Export**: Generate reports and data exports
- **🔄 Update**: Mass status changes and configuration updates
## 🔐 Security & Permissions
### 🛡️ Access Control
- **🔑 Role-based access**: Different permission levels for various administrative roles
- **📝 Audit logging**: Complete tracking of all company-related actions
- **🔒 Secure authentication**: Encrypted password storage and secure login processes
---
# Dashboard
> Monitor, analyze, and optimize your call center operations with real-time AI-powered dashboards and performance insights.
Source: https://docs.aisync.link/ai-call-monitoring/dashboard
# 📊 AI Call Monitoring Dashboard
The AI Call Monitoring Dashboard provides comprehensive real-time analytics and insights for your call center operations. This powerful dashboard helps you monitor performance, track key metrics, and optimize your call center efficiency.
## 🔍 Overview
The dashboard is designed with a dark theme and features multiple sections for different types of analytics:
- **Top Navigation & Filters** - Control and filter your data view
- **Key Performance Indicators (KPIs)** - Quick overview of essential metrics
- **Analytics Charts** - Detailed visualizations of call data and trends

*The AI Call Monitoring Dashboard provides a comprehensive view of your call center operations with real-time analytics and performance insights.*
## 🎛️ Top Navigation & Filters
### 🎮 Main Controls
- **Dialer Button** - Quick access to dialer functionality
- **Search Bar** - Search across all data
- **Filter Button** - Apply selected filters
### 🔧 Filter Options
#### 🏢 Company Selection
- Filter data by specific companies
#### 👤 Agent Selection
- Filter data by individual agents
#### 📅 Date Range Controls
- Set custom date ranges for data analysis
### ⚙️ Utility Icons
- Theme toggle, full-screen mode, settings, and user profile
## 📈 Key Performance Indicators (KPIs)
*The KPI cards provide a quick overview of essential call center metrics at a glance.*
### 1. 👥 Agents / Numbers
- Active agents and available phone numbers
### 2. 📞 Total Calls
- Total calls made within the selected time period
### 3. ⏱️ Average Duration
- Average length of calls
### 4. 📅 Appointments
- Appointments scheduled from calls
### 5. 🔄 Transfers
- Calls transferred to other agents or departments
### 6. ✅ Call Successful
- Successful calls meeting defined criteria
## 📊 Analytics Charts & Visualizations
The dashboard features multiple chart types to provide comprehensive insights:
### 📈 Call Volume Analytics
#### 📊 Call Counts (Bar Chart)
- Track daily call volume trends

*Bar chart showing daily call volume trends over time.*
#### 📞 Call Picked Up Rate (Line Chart)
- Monitor how often calls are answered

*Line chart tracking call pickup rates and performance trends over time.*
### 🏢 Company Performance Overview
The dashboard displays company-based analytics in a three-column layout for easy comparison:
#### 📅 Appointments by Company
- Compare the number of appointments scheduled by each company.
#### 🔄 Transfers by Company
- See how many call transfers occur per company.
#### 🍩 Calls by Company (Donut Chart)
- Visualize the distribution of calls by company.

*Dashboard section with three cards: Appointments by Company, Transfers by Company, and a donut chart labeled "Calls by Company" that visually displays call volume segmented by company (as shown in the screenshot above). The donut chart legend marks different company IDs with unique colors.*
### 🏢 Company Performance
#### 📅 Appointments by Company
- Track appointment scheduling by company
#### 🔄 Transfers by Company
- Monitor call transfers by company
#### 🍩 Calls by Company (Donut Chart)
- Visualize call distribution across companies

*Donut chart showing call distribution by company and direction.*
### 🎯 Call Quality Metrics
#### ✅ Call Success Rate (Donut Chart)
- Track overall call success rates
#### 🧭 Call Directions (Donut Chart)
- Analyze call source distribution
#### ❌ Disconnection Reasons (Donut Chart)
- Understand why calls end

*Donut chart analyzing the reasons for call disconnections.*
### 😊 User Experience Analytics
#### 😊 User Sentiment Distribution (Pie Chart)
- Monitor customer satisfaction and sentiment
### 📈 Performance Trends
#### ✅ Call Successful Rate (Line Chart)
- Track success rate trends over time
#### 🔄 Call Transfer Rate (Line Chart)
- Monitor transfer rate trends
#### 📧 Voicemail Rate (Line Chart)
- Track voicemail usage patterns

*Line charts showing transfer and voicemail rate trends over time.*
#### ⏱️ Average Call Duration (Line Chart)
- Monitor call length trends

*Detailed line chart tracking average call duration trends over time.*
### 📊 Additional Analytics
#### 📅 Appointments Panel
- Track appointment scheduling trends
## 🔍 Data Interpretation
### 📊 Current Sample Data
The dashboard shows data for a single call event, which explains why many charts show limited data points.
## 💡 Best Practices
### 🎯 Using the Dashboard Effectively
1. **Set Date Ranges**: Use date picker for relevant time periods
2. **Filter Data**: Use company/agent filters for specific areas
3. **Monitor Trends**: Watch line charts for performance trends
4. **Track KPIs**: Check KPI cards for quick overview
5. **Analyze Sentiment**: Use sentiment data to improve experience
### 📊 Interpreting Charts
- **Donut Charts**: Show distribution and proportions
- **Line Charts**: Display trends over time
- **Bar Charts**: Compare quantities across categories
## 🔧 Troubleshooting
### ⚠️ Common Issues
**Empty Charts**: Check date range settings, filters, and data availability
**Zero Values**: May indicate no activity, restrictive filters, or limited historical data
**Missing Data**: Verify date ranges and filter settings
---
# AI Call History
> View, filter, search, and analyze all your AI phone call records with detailed information, transcripts, and conversation analysis.
Source: https://docs.aisync.link/ai-call-monitoring/history
# 📞 AI Call History
View and analyze all your AI phone call records in one place. Filter calls, view detailed transcripts, listen to recordings, and export data for reporting.

*The AI Call History interface provides comprehensive filtering options and a detailed table view of all call records.*
## 🚀 Getting Started
The main page shows a table of all your call records. Each row represents one call with key information like time, agent name, phone numbers, duration, and more. Use the filters at the top to find specific calls, or click the 👁️ eye icon to view complete call details.
## 🔍 Filters
All filters work together to help you find exactly what you need. Most update automatically, but click the **Filter** button to apply all changes at once.
### 🏢 Select Company
Choose a company to see only calls associated with that company. Leave it unselected to see all companies.
### 🤖 Select Agent
Filter calls by the AI agent that handled them. Search by typing the agent name in the dropdown.
### 📅 Date Range
Choose from predefined ranges (Today, Yesterday, Last 7 Days, This Month, etc.) or select "Custom dates" to pick your own start and end dates. All times are shown in your account's time zone.
### ⏱️ Min/Max Duration
Set minimum and maximum call duration to find longer conversations or filter out very short calls. Options range from 5 seconds to 2 hours.
### 📲 Call Direction
Filter by call type:
- **All:** Shows all calls
- **Inbound:** 📥 Calls you received
- **Outbound:** 📤 Calls you made
- **Web:** 🌐 Calls initiated through the web interface
### 😊 User Sentiment
Find calls based on the caller's emotional tone:
- **Positive:** 😄 Happy, satisfied customers
- **Neutral:** 😐 Normal interactions
- **Negative:** 😞 Unhappy or frustrated customers
- **Unknown:** ❓ Sentiment couldn't be determined
💡 **Tip:** Use "Negative" to find calls where customers were unhappy so you can review and improve your service.
### ✅ Call Successful
Filter to see only successful calls (those that achieved their goal) or unsuccessful ones.
### 📱 From/To Number
Type a phone number to find all calls made from or to that specific number. Works best with complete phone numbers.
### 🔚 Hangup Reason
Filter by why the call ended. Common reasons include:
- **User Hangup:** Caller hung up
- **Voicemail Reached:** 📧 Call went to voicemail
- **Machine Detected:** 🤖 Reached answering machine
- **Call Transfer:** 🔄 Call was transferred
- Various error types (connection issues, payment failures, etc.)
## 💾 Exporting Data
Export your filtered call records in three formats:
1. **CSV** 📊 (green button): For importing into spreadsheets or other systems
2. **Excel** 📈 (blue button): For analysis and calculations in Excel
3. **PDF** 📄 (red button): For printing or sharing reports
**How to export:**
1. Set your filters to show the calls you want
2. Click the **Filter** button to apply filters
3. Click your preferred export format button
4. The file downloads automatically to your computer
**What's included:** All visible columns and all records matching your current filters. Files are named with timestamps (e.g., `AI_Call_History_2025-01-15_14-30-45.csv`).
⚠️ **Note:** If no records match your filters, you'll see an error message with suggestions.

### 👁️ Show/Hide Columns
Customize which columns appear in the table. Check or uncheck columns in the dropdown. Your preferences are saved for 30 days. ID and Action columns are always visible.
## 📊 Table Columns
- **ID:** 🔢 Unique call identifier
- **Action:**
- 👁️ **Eye Icon (Green):** View call details within the system
- 🟠 **GHL Logo (Yellow):** Open contact in GoHighLevel
Click the **GHL Logo** button to open the contact directly in GoHighLevel.
- **Time:** 🕐 When the call occurred (your time zone)
- **Company Name:** 🏢 Associated company
- **Agent Name:** 🤖 AI agent that handled the call
- **From/To Number:** 📱 Phone numbers involved
- **Call Duration:** ⏱️ How long the call lasted (HH:MM:SS format)
- **Call Type:** 🏷️ Category of call (e.g., Appointment Call, Sales Call)
- **Direction:** 📲 Inbound, Outbound, or Web
- **Hangup Reason:** 🔚 Why the call ended
- **User Sentiment:** 😊 Positive, Neutral, Negative, or Unknown
- **Call Successful:** ✅ Yes or No
- **Recording:** 🎵 Audio player (if recording available)
- **Call Summary:** 📝 Brief overview (first 30 characters shown, click to see full)
- **Call Transcript:** 📄 Full conversation text (first 30 characters shown, click to see full)
### Step 4: View Contact in GoHighLevel
A new browser tab will open with the contact's profile page in GoHighLevel, where you can:
- View complete contact information
- Check conversation history
- Add notes or tags
- Manage the contact

## 👁️ Viewing Call Details
Click the 👁️ eye icon in the Action column to see complete information about any call:
- **Header:** 📅 Date, time, agent, duration, and audio player
- **Analysis:** 📊 Call success status, call type, disconnection reason, voicemail detection
- **Summary:** 📝 Complete AI-generated overview of the call
- **Transcript:** 📄 Full conversation with "Agent:" and "User:" labels
Click "Back" to return to the table view. Your filters remain unchanged.
## 🔎 Searching and Sorting
### 🔍 Search
Use the "Search Log..." box above the table to quickly find calls. It searches all visible columns and works with partial matches (case-insensitive). Type phone numbers, agent names, or any text to filter results instantly.
### ↕️ Sorting
Click any column header to sort by that column. Click once for ascending (A-Z, earliest to latest), click again for descending (Z-A, latest to earliest). By default, calls are sorted by ID (newest first).
## 🌍 Time Zone
All dates and times are automatically converted to your account's time zone. You don't need to do anything - everything displays in your local time.
## 📄 Page Navigation
When you have many calls, they're split across multiple pages. Use the page numbers or Previous/Next buttons at the bottom to navigate. Change the number of records per page using the dropdown (typically 10, 25, 50, or 100).
## 💡 Quick Tips
- 🔍 **Find unhappy customers:** Filter by "Negative" sentiment
- ✅ **Review successful calls:** Filter by "Call Successful: Yes"
- 📧 **Check voicemails:** Filter by "Hangup Reason: Voicemail Reached"
- 💾 **Export regularly:** Use date ranges to export smaller batches for easier management
- 👁️ **Customize your view:** Hide columns you don't need to focus on what matters
- 🎵 **Listen to calls:** Click the eye icon, then use the audio player in the call details view
---
# Spam Protected Numbers
> User guide for monitoring number spam status, flag sensitivity, and protected number actions.
Source: https://docs.aisync.link/spam-protection/numbers
Spam Protected Numbers is where you see all phone numbers your organization is monitoring for spam-related issues across major carriers. It gives you one place to track status, renewal timing, and recent checks.
**🧭 Breadcrumb**
You may see a trail such as:
`Spam Protected -> Spam Protected Numbers`
### ⚡ Three actions
1. **Add Number** — open a form to enter a phone number manually and add it to monitoring.
2. **Flag Settings** — choose how strict “Flagged” should be (how many carriers must report issues).
3. **SOPs** — open in-product standard procedure guide for this module.
## 📋 The main list
Below the top actions, you see a table of protected numbers.
- Use **Search** to narrow rows.
- Change rows-per-page for long lists.
Each row is one monitored number.
| Column | What it means |
|--------|----------------|
| **#** | Row number for reference. |
| **Number** | Phone number being monitored. |
| **Type** | Source type: **Custom**, **Rizz**, or **Ai** (display-cased). |
| **Status** | Monitoring result: **In Progress**, **Clean**, or **Flagged**. |
| **Renewal** | Monitoring renewal date/time (if available). |
| **Latest Check** | Most recent check/update time. |
| **Added On** | Date/time this number was added to protection. |
| **Action** | Row actions like View, Edit (custom only), Delete. |
For flagged rows, specific carrier names (such as T-Mobile or Verizon) may appear under status when available.
## ➕ Adding a number yourself (Add Number)
1. Click **Add Number**.
2. Enter phone number.
3. Click **Save**.
The number is added as **Custom** and usually starts as **In Progress** while checks run.
If add fails, your organization profile/setup for this service may be incomplete and support/admin action may be required.
## 🚩 Flag settings
Use **Flag Settings** to control how sensitive the overall flagged result should be.
1. Open **Flag Settings**.
2. Choose threshold:
- **1+ carriers**
- **2+ carriers** (commonly default)
- **3+ carriers**
3. Save.
Lower threshold = faster/more sensitive flagging.
Higher threshold = less sensitive/fewer false positives.
## 📄 Standard procedures (SOPs)
Click **SOPs** to open the built-in operational guide. It covers:
- why monitoring exists,
- how numbers are added,
- status definitions,
- flag sensitivity logic,
- detail view usage,
- monitoring frequency and status changes,
- troubleshooting and best practices.
Use SOPs for onboarding and for formal process checks.
## 🔍 View (details for one number)
Click **View** on a row to open number details.
This page shows per-carrier status details in a visual layout. If no carrier details are available yet, the screen indicates that data is still unavailable.
This view is informational (read-only) for status interpretation.
## ✏️ Edit
**Edit** is available only for **Custom** numbers added manually in this module.
1. Click **Edit**.
2. Update phone number.
3. Save.
Numbers sourced from other modules (regular/AI lists) are managed in their original source modules, not edited here.
## 🗑️ Delete
1. Click **Delete** on a row.
2. Confirm prompt.
After confirmation, the number is removed from this list and active monitoring for that entry stops.
## ℹ️ Status meanings (short)
- **In Progress** — checks are running or refreshing; review again later.
- **Clean** — no qualifying spam flag under current threshold rules.
- **Flagged** — threshold is met by carrier reports; review usage practices and remediation process.
---
# Users
Source: https://docs.aisync.link/user-management/users
**Users** is where you see everyone who belongs to your company in this product, add new people, change their details, open the product as they see it, or remove someone. Only people tied to your company appear in the list.
## 📋 Main list
**Add** opens the screen to create a new person.
The table shows one row per user. You can:
- **Change how many rows appear** using the “show entries” control (often 10 at a time).
- **Find someone quickly** using the search box; it filters the table by what you type.
### 🧾 Columns
| Column | Meaning |
|---------------|--------|
| **#** | Row number in the list (1, 2, 3…). |
| **Picture** | The profile picture of the user, if one is uploaded. Usually shown as a small image or avatar. |
| **Name** | The person’s name as stored in the account. |
| **Email** | Their email address (also used to sign in). |
| **Phone #** | The main phone number on file for them. |
| **Phone EXT** | Extra or extension numbers linked to them (when assigned). |
| **Status** | Whether their account is pending, active, inactive, or suspended. |
| **Created At**| When this user record was created, shown in **your** time zone. |
### ⚙️ Actions on each row
- **Login** — Asks you to confirm, then opens the product **as that user**, so you see the same screens and options they do. Use this for support or checking their setup.
- **Edit** — Opens the form with that person’s details so you can change them.
- **Delete** — Removes that user. You must confirm. The message explains that many related items (agents, workflows, pipelines, phone setup, templates, lists, teams, and more) can be removed with the user and that **this cannot be undone**.
## ➕ Add or ✏️ Edit user (form)
Use **Add** for someone new, or **Edit** on a row to change an existing person. **Back** returns you to the list without using the other buttons.
Small **question-mark hints** next to some fields give extra guidance when you point at them.
**👤 Name**
Full name. This is how the person appears in the product.
**📧 Email**
Must be a real address. It is used for signing in and for messages such as the welcome message for new users. **The same email cannot be used twice** in the system.
**📞 Phone number**
Used for calling-related features. You can enter it with or without a country code (for example `+1234567890` or `1234567890`).
**🔒 Password**
- **New user:** You must set a password.
- **Existing user:** Leave this **empty** to keep their current password. Only fill it in if you want to set a new one.
**🚦 Status**
- **Pending** — Not fully ready yet.
- **Active** — Can sign in (subject to the rest of their setup).
- **Inactive** / **Suspended** — Generally cannot use the account as normal.
Use the hint on the field for the exact behavior.
**☎️ Dialer**
**No** — This person does not use the dialer.
**Yes** — They can use dialer features.
Note: Turning dialer on can affect **who pays** for that seat and how **company package seats** are counted (see **Pay for seat** and **Use package seats limits** below, and the examples at the bottom of the form).
**💰 Use balance**
**Company** — Spending comes from the company balance.
**User** — Spending comes from that person’s own balance.
**🏷️ Role**
Choose one **role** from the list your company uses (these are created elsewhere under **Roles**). Name, email, and role are all required before you can save.
**🔢 Assign phone numbers**
You can pick one or more **company phone numbers** (from your connected numbers) to attach to this user. A number that is already assigned to **another** user cannot be assigned again until it is freed.
**🌎 Local presence**
**No** — Local presence is off.
**Yes** — You can choose **area codes** so outbound calls can use numbers that match those areas. When you choose **Yes**, the **Area codes** list appears so you can select one or more codes.
**💺 Pay for seat**
- **No (Company pay for seat)** — The company pays for this seat in the usual company billing flow.
- **Rizzler (Direct to Rizzler)** — This person is billed **directly** to Rizzler (not through the company seat path in the same way).
When **Company pay** is selected, an extra choice appears: **Use package seats limits** (see next).
**📦 Use package seats limits**
(Shown when the company pays for the seat.)
- **Yes** — This user counts toward limits in your **company package** for seats (when dialer is on and this option applies). If the limit is reached, you may see a message that the package seat limit is exceeded.
- **No (Subscription with company card)** — Uses the other billing path described in the option (company card / subscription style setup).
The bullet list at the bottom of the form gives **example combinations** for:
- A typical **admin** setup (dialer off, company pays, using package limits).
- An **agent who pays Rizzler directly** (dialer on, pay to Rizzler).
- **Agents the company pays for** (dialer on, company pays, and how to set package limits vs card).
**✅ Submit**
Saves the user. If something is wrong (duplicate email, seat limit, phone numbers already taken, missing password for a new user, or missing required fields), a message explains what to fix. After a successful save, the page returns to the user list.
**📩 Welcome email**
When you **add** a new user successfully, the system sends a **welcome message** to their email so they know how to get started (including sign-in information your company uses).
**🗑️ Deleting a user**
Deleting removes that user and can remove a large amount of related work tied to them (the confirmation lists examples). Any **personal subscription** tied to that user may be stopped as part of removal. This action should be treated as **permanent**.
## 🔄 User Management
### 🔁 Complete Workflow Process
```mermaid
graph TD
A[👥 Access Users Page] --> B[🔍 Search/Filter Users]
B --> C{Select Action}
C -->|Login| D[🔐 Admin Login to User Account]
C -->|Edit| E[✏️ Modify User Information]
C -->|Delete| F[🗑️ Remove User Account]
C -->|Add New| G[➕ Create New User]
D --> H[📊 Monitor User Activity]
E --> I[💾 Save Changes]
F --> J[📋 Confirm Deletion]
G --> K[📝 Fill User Details]
K --> K1[⚙️ Configure Settings]
K1 --> K2[💰 Set Billing Options]
K2 --> K3[✅ Submit Form]
I --> L[✅ Update Complete]
J --> M[🗂️ Archive User Data]
K3 --> N[📧 Send Welcome Email]
L --> O[🔄 Return to Users List]
M --> O
N --> O
```
---
# Roles
> User guide for creating roles, assigning permissions, and connecting roles to users.
Source: https://docs.aisync.link/user-management/roles
**Roles** let you group **what people are allowed to do** in your workspace. Each role has a **name** you can recognize (for example, “Sales” or “Support”) and a set of **allowed actions** tied to different parts of the product (such as viewing reports or managing users).
## 📋 The Roles list
The main screen is a table of all roles that belong to **your organization**. You do not see roles from other organizations.
**🗂️ Columns**
| Column | What it shows |
|--------|----------------|
| **#** | Row number (1, 2, 3, …) for easy reference. |
| **Name** | The role’s display name—the same name you give when you create or rename the role. |
| **Updated At** | The last time this role was changed, shown in **your** time zone (the one set on your profile). |
| **Created At** | When the role was first added, also in **your** time zone. |
| **Action** | Shortcuts to **change** or **remove** the role (explained below). |
**🔍 Search and paging**
The list can be **searched** (there is a search box with the placeholder “Search…”) and is shown **10 rows per page** by default, so long lists stay easy to skim.
## ➕ Adding a new role
At the top of the list there is an **Add** control.
**What happens when you use Add**
1. The system **creates a new role right away** with a temporary automatic name (it looks like **Role_** followed by random characters). This avoids clashing with names you already use.
2. You are taken straight to the **Permissions** screen for that new role so you can **rename** the role and **choose what it may do**.
If the system cannot create the role after several tries (for example, because of a rare name clash), you may see a message asking you to try again, and you return to the Roles list.
**After adding**
On the Permissions screen you may see a short **success** message explaining that the role was created and that you should assign what it is allowed to do.
## ✏️ Editing a role (opening Permissions)
In the list, each row has an **Edit** control under **Action**.
**Edit** opens the **Permissions** page for that role. There you set the role’s **name** (if you want to change it) and **which actions** are allowed. Details for that page are in the section below.
## 🗑️ Deleting a role
In the list, next to **Edit**, there is a **delete** control (trash icon).
- The system asks you to confirm: **“Are you sure?”**
- If you confirm, the role is removed and you return to the **Roles** list with a message that the record was deleted.
On the Permissions screen you can also delete the role from there .
**🖊️ Extra screen on the Roles page (name and Submit)**
The Roles page also contains a second block that is normally **hidden**. It includes:
- A **Back** control
- A title line that would read **Add Role** or **Edit Role**
- A **Name** field with short on-screen hints (question-mark style help)
- A **Submit** control
In normal use, **Add** sends you to Permissions after creating a role, so this hidden block is not the usual path for creating roles today. If your workspace ever shows this block, **Name** is where you type the role’s title and **Submit** saves it; feedback text appears above the button (“please wait,” success in green, or errors in red). After a successful save, the page typically returns to the Roles list.
## 🛡️ The Permissions screen
**Title:** **Permissions**
**Trail:** **Users → Role → Permissions**
This is where you **name** the role (or change the name) and **choose exactly what** that role may do across the product.
**🏷️ Card title**
The card is titled **Assign Permission**.
**📝 Form overview**
Everything on this page works together as **one form** that ends with an **Assign** button. When you use **Assign**, your choices—including the role name, if you changed it—are saved for that role.
**🏷️ Role name**
**Label:** **Role Name**
- The **current name** appears as plain text.
- **Pencil** — Opens an area where you can type a **new name**. Use **Update** to save that name **immediately** without leaving the page. The list on the main Roles screen will show this name after you return there.
- **Trash** — Deletes this role. You are asked to confirm: **“Are you sure you want to delete this role?”**
Helper text under the name says you may **edit the role’s display name**.
If you use the inline **Update** for the name:
- The name **cannot be empty**; you’ll be told to enter a name if it’s blank.
- The name **must not duplicate** another role’s name in your organization. If it does, you’ll see an error message.
- On success, the text on screen updates and a brief success message may appear.
There is also a **hidden** copy of the name used when you press **Assign** at the bottom, so the final save keeps the name in sync with what you see after an inline update.
**🧩 Select all modules**
**Select All Modules** is a single switch at the top of the permissions area.
- **Turn it on:** Every **module** switch below turns on, and **every individual permission** under every module turns on.
- **Turn it off:** All of those switches turn off.
You can still change individual modules or single permissions afterward; the “select all” switch also updates automatically when your choices no longer match “everything on” or “everything off.”
**📦 Which modules and permissions appear**
The areas you can turn on or off depend on **your organization’s plan** and which product areas are included for you.
Modules are listed **once each** (no duplicates in the list). For each module name, the system shows the **permissions** that belong to that module. If a module has **no** permissions configured, you’ll see a short note: **No permissions for this module.**
Permission labels on the screen use **friendly wording** (words are spaced and capitalized for reading), even though they may be stored with dashes behind the scenes.
The screenshots below show how modules are grouped in the product (your exact list may differ by plan).
### 📑 Left menu and main panel
The screen is split into two parts:
**Left — “Roles & Permissions” menu**
- A vertical list of **module names**, each with an **icon** that matches the type of area (for example, dashboard, users, phone numbers, reports—icons vary by module name).
- **Clicking** a name **highlights** it and **scrolls** the right side so that module’s section is in view. This helps you jump around long lists without losing sight of the full page.
**Right — All modules in one scrollable area**
For **each** module:
1. **Module switch** — Labeled with the **module name**. Turning it **on** checks **all** permissions under that module. Turning it **off** clears all permissions under that module.
2. **Individual switches** — One for each **specific action** in that module. You can turn actions on or off one by one.
The **Select All** switch at the top stays in sync: if every permission in the list is on, **Select All** turns on; otherwise it turns off. Each **module** switch also turns on only when **all** permissions under that module are on.
### 💾 Saving your work — Assign
The **Assign** button sends your **role name** (including any change you made and synced via the hidden field) and **all checked permissions** to be saved.
- If everything succeeds, you are returned to the **Roles** list with a **success** message.
- If something goes wrong (for example, a duplicate role name when saving), you may see a **warning** and stay on or return to a safe state; in a general error case you might see a short **error** style message.
## 🔗 How Roles connect to people
When you **assign a person to a role** elsewhere (on the user profile or user list), that person receives whatever **allowed actions** you configured on this Permissions screen for that role. Changing a role’s permissions **changes behavior for everyone** currently using that role.
## 🔄 Complete Workflow Process
```mermaid
graph TD
A[🎭 Access Roles Page] --> B[🔍 Review Existing Roles]
B --> C{Select Action}
C -->|Add New| D[➕ Create New Role]
C -->|Assign Permissions| E[🔐 Configure Role Permissions]
C -->|Edit| F[✏️ Modify Role Details]
C -->|Delete| G[🗑️ Remove Role]
D --> H[📝 Enter Role Name]
H --> I[🔐 Assign Permissions]
I --> J[💾 Save Role]
E --> K[✅ Select Module Permissions]
K --> L[🔍 Review Permission Set]
L --> M[💾 Assign / Apply Changes]
F --> N[📝 Update Role Information]
N --> O[💾 Save Changes]
G --> P[⚠️ Confirm Deletion]
P --> Q[🗂️ Archive Role Data]
J --> R[✅ Role Created Successfully]
M --> S[✅ Permissions Updated]
O --> T[✅ Role Modified]
Q --> U[✅ Role Deleted]
R --> V[🔄 Return to Roles List]
S --> V
T --> V
U --> V
```
---
# Teams
Source: https://docs.aisync.link/user-management/teams
**Teams** lets you give your organization’s groups a name, keep that list up to date, and decide which people belong to each team. For each person on a team, you can also mark whether they act as a **manager** for that team.
## 📋 The main Teams list
You see a table of all teams that belong to your company.
| What you see | What it means |
|--------------|----------------|
| **#** | Row number (1, 2, 3, …). |
| **Name** | The name you gave the team. |
| **Updated At** | The last time that team’s record was changed, **shown in your own time zone** (as set on your profile). |
| **Action** | Things you can do for that row (see below). |
Above the table there is an **Add** button to create a new team.
The list can be searched and sorted using the controls built into the table (for example, a search box and paging), so you can find a team quickly when there are many.
## ➕ Adding a team
1. Click **Add**. The list hides and a form appears.
2. The form title reads **Add Team**.
3. Fill in **Name**. A short hint next to the label says to enter a clear, descriptive name for the team.
4. Click **Submit**. Another hint explains that this saves the team in the system.
**Before you save:** The name cannot be empty. If it is, you are asked to fill in the fields.
**Duplicate names:** You cannot have two teams with the **same name** for your company. If that name is already used, you see a message that it already exists and the team is not created.
**After a successful save:** You see a short success message, then the page returns to the main Teams list automatically.
Use **Back** if you want to return to the list without saving.
## ✏️ Editing a team
1. On the row for the team, click **Edit**. The list hides and the form appears with the title **Edit Team**.
2. The **Name** field is filled with the current team name. You can change it and click **Submit**.
The same rules apply as when adding: the name must be filled in, and it must not duplicate another team’s name in your company (except the team you are editing).
After a successful save, you see a success message and return to the main list.
**Back** returns to the list without requiring you to use the form.
## 🗑️ Deleting a team
1. Click the **delete** control on the row (trash icon).
2. A confirmation asks if you are sure.
3. If you confirm, that team is removed. You are returned to where you were, with a message that the record has been deleted.
## 🧩 Setting up who is on a team (“Setup Team”)
**Setup Team** opens a separate screen whose title is **Assign Users to** followed by the **team’s name**.
### 📝 What this screen does
- It lists **every person in your company** (not only people already on the team).
- For each person you can:
- **Include them on the team** — turn the option on next to their name, or leave it off to exclude them.
- **Manager** — choose **Yes** or **No**. This is separate from simply being on the team: you can be on the team without being marked as manager, or be marked as manager.
There is a **search** box at the top. As you type, the list **hides people whose names do not match** what you typed, so you can work faster on large lists. Matching is based on the **name** shown for each person.
At the bottom, **Setup** saves your choices.
### 🚫 If nobody appears
The list only shows rows when there is at least one person in the company to show. If your company has no users in the system, you will not see any rows here.
### 💾 What happens when you click **Setup**
The system **replaces** the team’s membership with exactly what you selected:
- Anyone **checked** is on the team; their **Manager** choice (**Yes** / **No**) is stored for that team.
- Anyone **not checked** is **not** on the team after you save.
So you are always defining the **full** current membership in one go, not “adding one person” in isolation.
After a successful save, you are taken back to the **Teams** list with a message that the update succeeded. If something goes wrong, you may see a warning instead.
**Note:** The system records **who was on the team before** and **who is on the team after** this change, for accountability (for example, member lists in before/after form).
### 🔄 Complete Workflow Process
```mermaid
graph TD
A[👥 Access Teams Page] --> B[🔍 Review Existing Teams]
B --> C{Select Action}
C -->|Add New| D[➕ Create New Team]
C -->|Setup Team| E[⚙️ Configure Team Members]
C -->|Edit| F[✏️ Modify Team Details]
C -->|Delete| G[🗑️ Remove Team]
D --> H[📝 Enter Team Name]
H --> I[💾 Save Team]
E --> J[🔍 Search Available Users]
J --> K[✅ Select Team Members]
K --> L[🎭 Assign Manager Roles]
L --> M[💾 Setup Team]
F --> N[📝 Update Team Information]
N --> O[💾 Save Changes]
G --> P[⚠️ Confirm Deletion]
P --> Q[🗂️ Archive Team Data]
I --> R[✅ Team Created Successfully]
M --> S[✅ Team Setup Complete]
O --> T[✅ Team Modified]
Q --> U[✅ Team Deleted]
R --> V[🔄 Return to Teams List]
S --> V
T --> V
U --> V
```
---
# Disposition
> User guide for creating, managing, and using call dispositions with defaults, statuses, colors, and role access.
Source: https://docs.aisync.link/manage/disposition
## 📋 Overview
**Disposition** is where you name and organize labels for how call results are recorded in your workspace. Each entry is one label (for example **Interested**, **Callback**, **Not Interested**).
You can decide:
- The **name** of the outcome label.
- Which **roles** can use that label.
- Which **GHL location** and **notes field** it ties to.
- How it **looks** (text and background colors).
- Whether it is the **Didn't Answer default**.
- Whether it is the **general default option**.
- Which **Call Status** it maps to.
Repeated for clarity: one disposition record = one outcome label + visibility + behavior + color + call-status link.
## 📑 Main list
The main table shows all dispositions for your organization.
| Column | Meaning |
|--------|---------|
| **#** | Row number. |
| **Disposition** | Label name. This name must be unique in your organization. |
| **Setup Didn't Answer Button** | Toggle for the auto-choice used when a call is treated as “didn't answer.” Only one disposition can be active at a time. |
| **Setup Default Option** | Toggle for your organization's general default disposition. Only one can be active at a time. |
| **Call Status** | Status mapping for this disposition (for example No, Ringing, Answered, Busy, Cancelled, In Progress, Failed, AMD, Completed). |
| **Color Preview** | Shows saved text and background color styles for quick recognition. |
| **Created At** | Creation date/time for that disposition. |
| **Action** | **Edit** opens the form. **Delete** removes the row after confirmation. |
You can also **search** and move between pages using the list controls.
## ➕ Add a disposition
1. Click **Add**.
2. The form opens with title **Add Disposition**.
3. Fill required fields.
4. Click **Submit**.
### 🏷️ Disposition Name
Provide a unique, descriptive name for your outcome label.
- The name must not duplicate any existing disposition in your organization.
- If a duplicate is found, the form will display an error message and prevent saving.
### 👥 Role Access
Select the user roles that should have access to this disposition.
- You can choose multiple roles.
- If role selection isn't visible for your account, your role will be assigned automatically in the background.
### 📍 GoHighLevel Location
Select which GoHighLevel location this disposition belongs to.
- Only locations available within your organization/workspace are shown.
- The available options for notes fields are based on your currently selected location.
**🗒️ Notes Field Selection**
Once a location is chosen, the form will load the corresponding custom fields for that location.
- Pick a field where notes related to this disposition will be stored.
- If you change the selected location, the custom fields list will update—choose a notes field again if necessary.
- If no custom fields are present, the form will let you know that none are available.
**🎨 Color Customization**
You can configure the visual styles for both unselected (default) and selected states:
- **Text color** and **Background color**: how the disposition normally appears.
- **Selected Text color** and **Selected Background color**: how it looks when active or highlighted.
By default, normal colors are typically white text on blue, and selected colors are white text on green, but you can set these to any colors you prefer.
**📝 Submit**
Click **Submit** to save.
- On success: short confirmation appears and you return to the list.
- On failure: message stays on the form so you can fix the issue.
## ✏️ Editing a Disposition
To make changes to an existing disposition:
1. Find the disposition you want to update and click **Edit**.
2. The **Edit Disposition** form will open, displaying the current settings (name, roles, location, notes field, and colors).
3. Adjust any fields as needed.
4. Click **Submit** to save your changes.
All editing is subject to the same rules as adding a disposition, including the requirement for a unique name.
Renaming a disposition can affect historical reports. If you need to keep reporting history unchanged, it may be better to create a new disposition rather than modifying the name of an existing one.
---
## 🕹️ Quick Toggles in the Disposition List
You can manage certain settings for each disposition directly from the list view, without needing to open the edit form:
### ❓ "Didn't Answer" Toggle
- Use this switch to designate a disposition as your organization's "Didn't Answer" label.
- Only one disposition can hold this status at any time. Turning it on for another disposition will automatically turn it off for the previous one.
### ⭐ Default Disposition Toggle
- Select the default disposition for your organization by enabling this toggle.
- Like the "Didn't Answer" setting, only one disposition can be set as the default; changing it will unset the previous default.
If an update fails to save, an alert will notify you, and the switch will return to its previous position.
---
## ☎️ Mapping Call Status
Each disposition row has a **Call Status** dropdown to align that disposition with the relevant call outcome.
- Pick the desired call status from the dropdown.
- Your change is saved instantly.
- Proper mapping ensures dispositions are grouped accurately for status reporting.
## 🗑️ Delete a disposition
Click **Delete** on a row and confirm when prompted.
- After confirmation, the record is removed.
- You return to the list with a success/failure message.
Deleted dispositions cannot be recovered. Confirm with your team before deleting labels used in reporting or workflows.
---
---
# SMS Templates
> User guide for creating, editing, searching, and managing reusable SMS templates.
Source: https://docs.aisync.link/manage/sms-template
**SMS Templates** lets you save reusable text messages that you can use later (for example in campaigns or other SMS flows).
Each template has:
- A **Title** (short name so people can find it quickly).
- A **Template** body (the message text itself).
Templates belong to the current workspace, so users who can access this screen usually see the same template list for that workspace.
## 📄 The template list
The table shows one row per template.
| Column | What it shows |
|--------|----------------|
| **#** | Row number (1, 2, 3, ...). |
| **Title** | The name you gave the template. |
| **Template** | The full message text. |
| **Updated At** | Last update time (shown in your timezone). |
| **Created At** | Creation time (shown in your timezone). |
| **Action** | Controls to edit or delete the row. |
At the top of the table:
- **Search** filters templates by title or message content.
- Results are shown in **pages** (commonly 10 per page).
- Use bottom paging controls to move through long lists.
## ➕ Add a new template
1. Click **Add**.
2. The list view hides and the form opens.
3. Fill in **Title** and **SMS Template**.
4. Click **Submit**.
What to expect while saving:
- If required fields are empty, the form prompts you to complete them.
- While saving, a short “please wait” style message may appear.
- On success, you get confirmation and return to the list shortly after.
## ✏️ Edit a template
1. In the list, click **Edit** on a row.
2. The form opens with **Edit SMS Template**.
3. Existing values load into **Title** and **SMS Template**.
4. Make your changes and click **Submit**.
Saving behavior is the same as Add: validation -> wait message -> success -> back to list.
## 🗑️ Delete a template
Click the **Delete** or trash action on a row and confirm when asked.
- If confirmed, the template is removed.
- You stay on the list and may see a success notice.
Deleted templates cannot be recovered. Confirm before deleting, especially if other users rely on that message.
## 📝 Form fields (Add and Edit)
The same fields are used for both adding and editing.
### 🏷️ Title
- **Purpose:** Clear label so users can find and pick the template quickly.
- **What to enter:** Short descriptive name (for example “Appointment Reminder” or “Welcome SMS”).
- **Required:** Yes.
- **Uniqueness:** You cannot save two templates with the exact same title in one workspace.
If a title already exists, the form shows an error and asks for a different title (or edit the existing one instead).
### 💬 SMS Template
- **Purpose:** The actual message text.
- **What to enter:** Message content, including placeholders when needed.
- **Placeholder examples:** `{name}`, `{phone}` (plus any others your setup supports).
**Practical notes:**
- Short messages (around 160 characters) are usually one SMS part.
- Longer messages may split into multiple parts depending on carrier behavior.
- Keep wording clear and action-oriented.
---
---
# Voice Templates
> User guide for creating, editing, and managing reusable voice templates using TTS, audio upload, or microphone recording.
Source: https://docs.aisync.link/manage/voice-template
## 📝 Overview
**Voice Templates** lets you save reusable voice messages for calling workflows.
You can create a template in three ways:
1. **Text To Speech** (type words, system reads them aloud).
2. **Audio File** (upload an existing MP3/WAV file).
3. **Record Voice** (record from your microphone in the browser).
After saving, templates can be selected anywhere your product uses company voice templates (for example campaigns or call-flow steps).
## 📄 Main list
When you open Voice Templates, you see a table with one row per template.
**➕ Add**
Click **Add** to start a new template. The form opens and the list is hidden until you return.
**🔍 Search**
A search field above the table filters rows as you type. Matching is based on table content.
### 🗂️ Columns
| What you see | What it means |
| --- | --- |
| **#** | Row number (1, 2, 3...). |
| **Title** | Template name used for identifying it later. |
| **Audio** | Mini player for uploaded/recorded audio templates. |
| **Text-To-Speech** | Script text for templates saved as TTS. |
| **Status** | Whether the template is active/inactive. |
| **Updated At** | Last modified time (your timezone). |
| **Action** | **Edit** updates the row; **Delete** (trash) removes it after confirmation. |
If a template is file-based, TTS text may be empty. If it is TTS-based, audio may be empty in the list until generated/available by your setup.
## ✏️ Create or edit a template
- Click **Add** for a new template.
- Click **Edit** on an existing row to update it.
The heading usually shows **Add Voice Template** or **Edit Voice Template** based on what you chose.
**🔙 Back**
Use **Back** at the top of the form to return to the list without browser navigation.
Important repeat: **Back** closes the form, it does not save changes.
## 📝 Form fields
**🏷️ Title**
Give the template a short, clear name (for example "Opening Greeting" or "Voicemail Follow-up").
- Helps your team identify the right template quickly.
- Should be filled for every template.
- Should be unique in your workspace (see rules section below).
## 🎚️ Type
Choose how this template is produced:
1. **Text To Speech**
2. **Audio File**
3. **Record Voice**
Changing **Type** shows only the matching input section, so the form stays focused on the selected method.
### 🗣️ Type: Text To Speech
**💬 Voice Template (script box)**
Type the full script that should be spoken.
You may see variable hints using double curly brackets. Where your setup supports it, these are replaced with real values at runtime (for example contact fields, date, or time). Use variable text exactly as shown, including brackets.
Examples of possible variable style:
- `{{customer_name}}`
- `{{appointment_date}}`
- `{{appointment_time}}`
- `{{current_date}}`
**✅ Submit**
Click **Submit** to save TTS templates.
- While saving: a short wait message may appear.
- On success: confirmation appears, then list reloads.
- On failure: error appears on the form.
### 🎵 Type: Audio File
**📤 Upload Audio File**
Choose one audio file from your device.
- Accepted formats: **MP3** and **WAV**.
- Unsupported types are rejected with an error message.
**✅ Submit**
Click **Submit** to save, with the same success/error behavior as TTS saving.
### 🎙️ Type: Record Voice
This mode uses recording controls instead of the standard text/file input flow.
1. Click **Start Recording**.
2. Allow microphone permission when the browser asks.
3. Click **Stop Recording** to end the take.
4. Review preview playback.
5. Choose one of:
- **Upload Recording** to save and return to the list.
- **Discard & Record Again** to clear and retake.
A timer usually shows recording duration while recording is active.
If microphone access fails, the page shows an error that explains the issue.
**📋 Rules that affect saving**
- **Title required:** Fill title before saving.
- **Title uniqueness:** Titles should be unique in your workspace. If duplicated, save fails and you must rename.
- **Edit replacement:** Uploading a new file while editing replaces the previous stored audio.
- **Delete cleanup:** Deleting a template removes the row and associated stored audio file.
---
# Voice Campaigns
Source: https://docs.aisync.link/manage/voice-campaign
The **Voice Campaigns** page helps you create and manage outbound calling campaigns from one place. Choose an audience, assign an AI voice agent, control call volume, start or pause campaigns, and review performance when calls are running or finished.
## ✨ What you can do
- Create new **AI voice campaigns**.
- View all existing campaigns in a searchable list.
- Edit campaigns that are not completed.
- Start **Pending** or **Paused** campaigns.
- Pause campaigns that are currently running.
- Open campaign reports to review performance.
- Delete campaigns when your account has permission.
## 📋 Campaign list
The main screen shows your campaigns in a table. Each row is one campaign.
**🏁 Top actions**
- **Search campaigns…** — find campaigns by name, type, or status.
- **+ New Campaign** — open the campaign builder to create a new campaign.
If you have many campaigns, the list is split into pages so it stays easy to browse.
### 🗃️ Columns in the table
| What you see | What it means |
|--------------|----------------|
| **#** | Row number in the table. |
| **Campaign** | Campaign name. AI campaigns show a robot icon next to the title. |
| **Type** | Campaign engine — for example **AI** or **Dialer**. |
| **Status** | Current state — Pending, In Progress, Paused, or Completed. |
| **Calls / HR** | Target calls per hour (mainly used for AI campaigns). |
| **Created** | Date and time the campaign was created, in your timezone. |
| **Actions** | Row controls such as view report, edit, start, pause, delete, or speed dial. |
## 🚦 Campaign statuses
| Status | Meaning |
|--------|---------|
| **Pending** | The campaign has been created but has not started yet. |
| **In Progress** | The campaign is currently running and placing calls. |
| **Paused** | Dialing has been stopped temporarily and can be started again. |
| **Completed** | The campaign has finished. Completed campaigns usually cannot be edited. |
## ➕ Creating an AI campaign
Select **+ New Campaign** from the campaign list to open the campaign builder.
### 1️⃣ Step 1 — Campaign type
Choose the campaign engine:
- **AI Campaign** — automated calling powered by your selected AI voice agent. This is the option available for new campaigns today.
- **Dialer** — predictive dialer workflow for live human agents. Shown as **Coming Soon** for new campaign creation.
### 2️⃣ Step 2 — AI campaign details
Fill in the required fields:
| Field | What to enter |
|-------|----------------|
| **Campaign Title** | A clear, unique name — for example, `June patient follow-up`. |
| **AI Agent** | The voice agent that will handle or place the calls. |
| **Calls Per Hour** | How many calls the campaign should attempt each hour — for example, `120`. |
| **Powerlist** | One or more contact lists that define who will be called. |
Select **Create Campaign** when you are ready. The campaign is saved as **Pending** and does not start automatically. Start it from the campaign list when you are ready to dial.
## ▶️ Starting a campaign
Campaigns with **Pending** or **Paused** status can be started from the campaign list.
1. Find the campaign in the list.
2. Select **Start**.
3. Confirm when prompted.
After confirmation, the status changes to **In Progress** and outbound dialing begins according to your settings.
## ⏸️ Pausing a campaign
Campaigns with **In Progress** status can be paused from the campaign list.
1. Find the running campaign.
2. Select **Pause**.
3. Confirm when prompted.
After confirmation, the status changes to **Paused**. You can start the campaign again later without recreating it.
## ✏️ Editing a campaign
Campaigns that are **not completed** can be edited if your account has permission.
You can update:
- Campaign title
- AI agent
- Calls per hour
- Selected powerlists
After saving, the campaign remains in the list with its current status. **Completed** campaigns cannot be edited.
## 📊 Viewing reports
Open a report with the **eye icon** on a campaign row.
The report page is specific to that campaign and helps you understand how calls are performing. Depending on your setup, reports may include:
**📈 Summary metrics**
- Total calls made
- Successful and unsuccessful calls
- Contacts reached
- Average call duration
- Campaign reach across the selected audience
- Success rate and positive sentiment rate
**📉 Breakdowns and activity**
- Call outcome
- Sentiment breakdown
- Top Disconnection Reasons
- Call over time (last 14 days)
- Call by hour of day
- Call log
### 🔎 Filters
Use filters at the top to narrow what appears in summary tiles and the call log:
| Filter | Purpose |
|--------|---------|
| **Date Range** | Presets such as today, yesterday, this week, last 7 days, this month, last month, or custom. |
| **Start Date / End Date** | Used when a custom date range is selected. |
| **Call Status** | All, Answered, Completed, Busy, No-answer, Failed, Missed Call, Cancel — labels may vary by setup. |
| **Min Duration** | Lower bound in seconds. |
| **Max Duration** | Upper bound, or No Limit. |
| **Call Direction** | All, Inbound, or Outbound. |
| **Agents** | All agents or a specific agent. |
| **Filter** | Applies all selected criteria. |
**📈 Summary cards**
After filters are applied, quick counters typically show:
- **Answered**
- **No Answer**
- **Busy**
- **Voicemail**
- **Dropped**
These update when you apply filters and the report reloads.
## 🗑️ Deleting a campaign
If your account has delete permission, you can remove a campaign from the list using the **trash icon**.
---
# Phone Numbers
Source: https://docs.aisync.link/manage/ai-sync-numbers
The **Phone Numbers** page is where you view and manage the phone numbers connected to your workspace.
## ✨ What you can do
- View all phone numbers available to your workspace.
- Purchase one or more new numbers.
- Import numbers from a connected Twilio account, when enabled.
- Import 10DLC campaigns from Twilio, when enabled.
- Filter numbers by use, provider, type, or status.
- Search, sort, paginate, and download the number list.
- Edit a number or enable it for AI.
- Configure endpoints, 10DLC, spam protection, or chatbot assignment when available.
- Select multiple numbers and apply bulk actions.
| Button | What it does |
|--------|--------------|
| **Purchase** | Opens the purchase flow for finding and buying new numbers |
| **Import Twilio Numbers** | Shows numbers from your connected Twilio account that can be imported |
| **Import 10DLC Campaigns** | Imports supported 10DLC campaign information from your connected Twilio account |
| **Local Preference API** | Opens local-presence API guidance and endpoint information |
#### 📥 Import Twilio numbers
The **Import Twilio Numbers** button will only appear if you have connected your Twilio account in the workspace settings. If your Twilio account is not attached, this option will not be shown.
Once your Twilio account is connected and the button appears, you can click **Import Twilio Numbers** to open a window displaying all phone numbers associated with your Twilio account.
In this window, you can:
- Use **Search numbers...** to find a specific number.
- Change how many entries appear on each page.
- Click **Import** next to the number you want to add.
- Close the window without importing anything.
After you import a number successfully, it will appear on the **Phone Numbers** page. Numbers already imported to your workspace will no longer show up in the import list.
#### 📋 Import 10DLC campaigns
The **Import 10DLC Campaigns** button will only appear if you already have at least one 10DLC campaign set up in your workspace settings. If there are no campaigns configured in your account, you will not see this option.
Once you have a campaign and the button becomes available, clicking **Import 10DLC Campaigns** will show you a list of all 10DLC campaigns currently attached to your connected account.
From this window, you can:
1. View all available 10DLC campaigns linked to your account.
2. Select the campaign(s) you wish to import.
3. Complete the import; the campaign will appear in the platform.
4. Use the available number actions to link or update 10DLC information as required.
## 🔍 Filters, search, and export
Filters can be combined. Changing a filter refreshes the table.
| Control | What it does |
|---------|--------------|
| **Filter By** | Shows All, AI, Dialer, or Both |
| **Provider** | Filters numbers by their carrier or provider |
| **Type** | Shows All, Local, Toll Free, or Mobile numbers |
| **Status** | Shows All, Unverified, or Verified numbers |
Other tools include:
- **Download** — exports the current list.
- **Search** — searches the visible number records.
- **Show entries** — changes how many rows appear on each page.
- **Sorting** — click supported column headings to change the order.
- **Pagination** — moves between pages when the list contains more rows.
## 📑 Table columns
| Column | What it shows |
|--------|---------------|
| **Checkbox** | Selects the row for bulk actions; the header checkbox selects all visible rows |
| **#** | Row number in the current view |
| **Action** | Opens the actions available for the number |
| **Title** | Optional internal label |
| **Phone No.** | Full phone number with country code |
| **AreaCode** | Area or region code |
| **Provider** | Carrier or provider for the number |
| **10DLC** | Messaging campaign or registration information |
| **Renewal At** | Renewal date or availability of renewal information |
| **Status** | Verified or Unverified |
| **Purchased At** | Date and time the number was added |
## ☝️ Single-number actions
Click the **Action** button on a row to open its menu. Available actions depend on the number's provider, status, and enabled workspace features.
| Action | What it does |
|--------|--------------|
| **Spam Protect** | Enables spam-protection monitoring when supported |
| **Edit** | Changes the title, status, 10DLC setting, or intended use |
| **Activate for AI** | Enables supported AI calling and routing features |
| **Delete** | Removes or releases the number after confirmation |
| **Endpoints** | Shows inbound API endpoint and integration details |
| **10DLC** | Assigns or updates a messaging campaign |
| **Assign Chatbot** | Connects an available chatbot to messages received by the number |
Once a chatbot is assigned, it can respond to supported incoming messages and continue conversations with contacts using that number.
## ⚡ Activate numbers for AI
**Activate one number**
1. Open **Users → Phone Numbers**.
2. Open the relevant number's **Action** menu.
3. Select **Activate for AI**.
4. Confirm the action.
5. Wait for the success message.
The option may disappear after the number has been activated.
**Activate multiple numbers**
1. Select the numbers you want using the checkboxes.
2. Open the **Bulk Action** bar.
3. Choose **Activate For AI**.
4. Confirm the action.
If required provider credentials or workspace settings are missing, the platform displays an error message.
## 🛒 Purchase phone numbers
Click the **Purchase** button to start the buying process.
To find a number:
1. Choose a **Provider**.
2. Select a **Country**.
3. Choose a number **Type** — Local, Toll Free, or Mobile.
4. Choose how to search — for example AreaCode, Region, or City.
5. Enter a search value.
6. Click **Search**.
Search results can include:
| Column | What it shows |
|--------|---------------|
| **Friendly Name** | Provider-supplied label |
| **Phone #** | Available phone number |
| **Locality** | Geographic information, when available |
| **Capabilities** | Whether the number supports Voice, SMS, or MMS |
| **Checkbox** | Selects the number for a multi-number purchase |
| **Action** | Purchases one number directly |
You can purchase one number from its action button or select multiple numbers and confirm a bulk purchase. Billing and provider setup may be required.
## ✏️ Edit a number
Open **Action → Edit** on a row.
| Field | What it controls |
|-------|------------------|
| **Title** | Internal label for the number |
| **Status** | Verified or Unverified |
| **10DLC Enable** | Whether 10DLC features are enabled |
| **Use For** | AI, Dialer, or Both |
Click **Submit** to save your changes.
## 📦 Bulk actions
Select one or more rows to show the bulk action controls.
Available actions can include:
- **Verified / Unverified** — changes the selected numbers' status.
- **Spam Protect** — enables spam protection where supported.
- **Activate For AI** — activates supported numbers for AI.
- **Delete** — removes selected numbers after confirmation.
Some rows may succeed while others fail because providers and number states can differ. Review the result message after the action finishes.
---
# Setup Contact Fields
Source: https://docs.aisync.link/manage/setup-contact-fields
**Setup Contact Fields** is the list of information a contact can have for your company — first name, phone, email, and any custom fields you add.
This page does **not** edit a person’s contact record. Changing a default here does not overwrite names, phones, or emails already saved on contacts.
Open from **Manage → Setup Contact Fields**. The page title is **Contact Fields**.
## ✨ What you can do
- See every field a contact can have
- Add extra fields (for example City, Lead Source, or a custom note)
- Copy the **Fields Key** for SMS, email, workflows, and similar messages
- Set a **Custom Default Value** used only when that field is empty on a contact
The header has **Add**. **Save** sits on the right of the **Custom Default Value** column header.
| Column | What it is |
|--------|------------|
| (trash icon) | Deletes a custom field. Core fields do not show a trash icon. |
| **Label** | Friendly name, such as First Name or Phone Number |
| **Fields Key** | Placeholder for messages, such as `{{contact.first_name}}` |
| **Custom Default Value** | Optional fallback text when that field is empty on the contact |
Click **Save** after you type or clear defaults. A success message confirms they were saved.
### 🔒 Core fields (cannot delete)
- Phone Number
- Email
- First Name
- Last Name
---
## 🔑 Fields Key
A Fields Key is a placeholder. When a message is sent, it is replaced with that contact’s value.
Example: `{{contact.first_name}}` → **Dev** if the contact’s first name is Dev.
Use the key **exactly** as it appears in the table. Do not change spelling or capitalization.
- Paste the key into an SMS, email, note, or template
- In the **workflow builder**, use **Insert field** to pick the same keys from a dropdown
---
## 📝 Custom Default Value
A Custom Default Value is company-wide fallback text for one field. It is **not** the contact’s saved value.
**When the default is used**
| Contact has a value? | Default saved? | What goes into the message |
|----------------------|----------------|----------------------------|
| Yes | Yes or no | The **contact’s** value. Default is ignored. |
| No (empty) | Yes | The **Custom Default Value** |
| No (empty) | No | Blank — no error |
**What a default does not do**
- Does not change Contacts, PowerLists, or import files
- Does not replace a field that already has data on that contact
- Does not fill the Contacts screen
**How to save a default**
1. Open **Setup Contact Fields**
2. Type the fallback in **Custom Default Value**
3. Click **Save** in that column header
4. Clear a box and click **Save** to remove that field’s default
Example: First Name default **Dev** is used only when first name is blank. A contact named **Sara** still gets **Sara**.
**Where defaults and keys are used**
After you save, they apply wherever a message uses a Fields Key and that field is empty:
- Conversations SMS
- Workflow SMS, email, RCS, and notes
- Google Calendar event title and description
- Chatbot SMS replies
- AI agent calendar booking text
If the contact already has a value, that value is always used.
---
## ➕ Add a contact field
Use **Add** when you need a new piece of information on contacts.
1. Click **Add**
2. Enter the field name using **lowercase letters, numbers, and underscores** only (spaces become underscores) — for example `lead_source`, `phone_number1`
3. Choose the field type:
- **Small String** — short text (you can set a length)
- **Text** — medium text
- **Long Text** — large blocks of text
4. Click **Submit**
The label under the name box shows how the name will look (underscores become spaces).
For multiple phone numbers, add `phone_number1`, `phone_number2`, `phone_number3`, and so on.
Reserved names (main phone, email, first/last name) cannot be created again. Choose a different name if you see that message.
---
## 🗑️ Delete a contact field
Only custom fields show a trash icon. You cannot delete Phone Number, Email, First Name, or Last Name.
1. Click the trash icon
2. Confirm
That column is removed from contacts, and any Custom Default Value for that field is removed too.
---
## 🔧 Insert field in the workflow builder
When a workflow step has a message (SMS, email, notes, calendar title, and similar):
1. Open the step in the builder
2. Use **Insert field** next to the text box
3. Choose a contact field
4. The matching Fields Key is inserted
The list includes your company’s fields from Setup Contact Fields, including custom fields you added.
---
---
# PowerLists
> User guide for creating, configuring, uploading, and managing PowerLists.
Source: https://docs.aisync.link/manage/powerlists
This guide explains **PowerLists** in simple language: purpose, main list, actions, setup form, and upload flow.
A **PowerList** is a flexible calling list that you can set up to manage outbound calls for your team.
Each PowerList lets you:
- Choose a distinct name for easy identification,
- Define dialing rules and preferences to suit your workflow,
- Assign specific team members and add relevant tags,
- Connect to CRM locations or use tagging for segmentation, if needed,
- Decide what happens after a call (disposition and outcome),
- Import contacts quickly by uploading data files.
---
## 🖥️ Main Screen Overview
### 🏷️ Title & Navigation
At the top, you'll see the **PowerLists** title and a breadcrumb trail, for example:
`PowerList -> List`
### 🏁 Top Actions
- **New PowerList**: Begin creating a new calling list.
- **SOPs**: Access built-in standard operating procedures.
### 🗂️ Filters (above the list)
- **Tags**: Filter PowerLists by their assigned tags.
- **PowerList Member**: Show lists by assigned team member(s) (when available).
- **Filter**: Apply your chosen filters.
### ⚙️ Table Controls
- Select how many rows to show per page.
- Use the search box to quickly find lists by keyword.
---
## 🗃️ Understanding the Main Table
| Column | Description |
|-------------------|----------------------------------------------------------------------------|
| **#ID** | Numbered row as shown in your current view. |
| **Active** | Menu icon (`...`) for available actions on this list. |
| **ID** | The internal system identifier (used for support and exports). |
| **PowerList** | The list's display name (might include tag indicators or "chips"). |
| **# Uploaded** | Total number of contacts uploaded to the list. |
| **# Dialed** | Aggregate number of contacts dialed in total. |
| **# Daily Dialed**| Number dialed today only. |
| **# Removed** | Contacts deleted/removed from the list. |
| **Created At** | Date and time the list was created (shows in your local timezone). |
## ⚡ Menu actions (under Active)
Action availability depends on role and list type. If visible, they usually mean:
- **Status**: turn list on/off for dialing.
- **Duplicate**: clones setup into a new list name; contacts are not copied.
- **Edit**: opens full configuration form.
- **View**: opens contacts view for that list.
- **Delete**: permanently removes list and related contacts after confirmation.
- **Download Statistics**: exports metrics and outcome summaries.
- **Export Contacts**: spreadsheet-friendly contacts export.
- **CSV Contacts**: CSV export format.
- **PDF Contacts**: report-style PDF export.
- **Reset**: resets dialing state of contacts to fresh/new without removing contacts.
---
## 📝 Create or edit a PowerList
Use **New PowerList** or **Edit** from row menu.
Use **Back** to leave without saving, and **Save** to apply changes.
Many labels include help icons with short guidance on hover/focus.
### 👤 People and naming
- **PowerList Member**: choose one or more members when field is shown.
- **PowerList Name**: unique, clear name for your company.
- **Max Contacts**: list capacity limit; system may enforce minimum.
### 📞 Calling behavior
- **Must Disposition Calls**: enforce outcome selection before moving on.
- **Seconds before Timeout**: ring wait before unanswered handling.
- **Dial at a Time**: concurrent outbound calls for list.
- **Max Attempts Daily**: daily try limit per contact.
- **Max Attempts Total**: total try limit per contact.
- **Next PowerList**: optional next list handoff target.
### 🏷️ Organization and follow-up
- **Tags**: labels for grouping/filtering lists later.
- **AI Agent For Callback**: optional callback assistant assignment.
- **Dialed Reset Daily**: resets daily counters at day boundary.
- **Cool Down Time**: wait period before retrying same contact.
### 🔗 CRM connection (GHL)
- **GHL Location**: destination location for posting actions.
- **GHL Tag On Disconnected**: optional tag applied for disconnected outcomes.
### 📝 Contact fields (Collect User Information)
Choose which data points are stored for contacts in this list (name/email/address/custom fields etc., based on your account).
### 🏁 Dispositions
For each outcome label, choose one action:
- **No Action**
- **Remove From List**
- **Post To GHL**
- **Post To GHL & Never Call**
Choose actions based on your team workflow and compliance logic.
---
## ⬆️ Uploading contacts
### 🔁 Duplicate handling mode
- **Ignore**: skip duplicate rows.
- **Overwrite**: replace existing matching data.
- **Merge**: combine incoming and existing data.
### 📂 File selection
- Upload supported spreadsheet/CSV file types shown in UI.
- Then open **Mapping Tool**.
### 🗺️ Mapping rules
- Map file columns to internal fields.
- At least one mapped **Phone Number** field is required.
- Unused columns can be mapped to **Ignore**.
### 💾 Save and progress
Click **Save** to store list settings and start import (if mapping is complete).
Progress area may show:
- job/reference id,
- current status,
- result summary.
Use **Check Status** to refresh progress, **Refresh Table** to update list counts, and **Close** when done.
---
# PowerList Notes
Source: https://docs.aisync.link/manage/powerlist-notes
This guide explains **PowerList Notes** what this screen is for, how the table works, how to add/edit templates, and how saving/deleting behaves.
**PowerList Notes** is where you create and manage reusable note templates tied to your PowerLists.
Each template includes:
- a **Title**,
- one or more linked **PowerLists**,
- and formatted **Notes** content.
You can also use placeholders in the note body (double curly-brace format) so contact values and current date/time can be inserted later when templates are used in other parts of the product.
Repeated for clarity: one row in this module is one reusable **note template**, not a one-time note entry.
## 📋 Main list view
When the page opens, you see your organization’s PowerList note templates in a table.
### ➕ Add PowerList Note
Click **Add PowerList Note** to open the create form. The list view hides while the form is open.
### 📑 Table columns
| What you see | What it means |
|--------------|---------------|
| **#** | Row number in current list page. |
| **Title** | Template name. |
| **PowerLists** | Linked list names (comma-separated when multiple). |
| **Created At** | First saved date/time in your account timezone. |
| **Action** | **Edit** opens form; trash deletes after confirmation. |
**🔎 Finding entries**
- Use **Search** above the table to filter rows.
- Change rows-per-page when needed.
- Use paging controls (**Previous**, **Next**, page numbers) for longer lists.
## ✏️ Add or edit a template
- **Add**: click **Add PowerList Note**.
- **Edit**: click **Edit** on a row.
Both actions open the same form. In edit mode, the heading is typically **Edit PowerList Note** and existing values are prefilled.
**🔙 Back**
Click **Back** to return to the list without saving.
Important repeat: **Back** discards unsaved form changes.
## 📝 Form fields
**🏷️ Title**
A short, clear template name (for example, "Follow-up call summary").
- Required before save.
- Should be unique within your organization.
**⚠️ Duplicate titles**
If a title already exists, save fails and an error message appears until you use a different title.
### 🗂️ PowerLists
Choose where this template should be available.
- You can select **one or many** PowerLists.
- List usually shows active PowerLists available for your organization.
- Help icons beside labels explain expected usage.
### 📝 Notes
This is the main body of your template.
- Rich-text editor supports standard formatting (headings, lists, bold, links, etc.).
- Content is saved exactly as entered when you submit.
**🪄 Placeholders**
Above the editor, you may see placeholders in `{{double_curly}}` format (including date/time placeholder such as `{{current_dateTime}}`).
- Use exact spelling shown on screen.
- When supported in downstream workflow, placeholders are replaced with actual contact values and current date/time.
Repeated for clarity: placeholder text must match exactly, including brackets.
**💾 Saving (Submit)**
Click **Submit** to save template changes.
- While saving, short wait message may appear.
- On success, confirmation appears and screen returns to list.
- On failure, error message explains what to fix.
- If required fields (like Title) are missing, validation prompts appear before save.
**🗑️ Deleting a template**
Click the row trash icon and confirm.
- After confirmation, template is removed.
- You stay in the same module and get a success/error notice.
Deleted templates cannot be recovered. Confirm before deleting shared templates used by your team.
---
# Contacts
Source: https://docs.aisync.link/manage/contacts
The **Contacts** page is the main place to view, search, filter, and manage contacts in RizzDial. It gives you a modern table view for daily contact management and quick access to each contact's activity history.
## ✨ What you can do
- View all visible contacts.
- Search contacts by name, phone number, or email.
- Filter contacts by tag.
- Filter contacts by powerlist.
- Sort contacts by newest, oldest, or name.
- Open a contact's activity page to review calls, messages, notes, and workflows.
- Select contacts and apply bulk actions.
- Import new contacts from a CSV file.
## 📋 Contact table
The main table shows the most important contact details:
| Column | What it shows |
|--------|---------------|
| **Name** | Contact name |
| **Phone** | Phone number |
| **Email** | Email address |
| **Tags** | Tags assigned to the contact |
| **Added** | Date the contact was added |
Each row is clickable, or use the external-link icon on a row to open that contact's **activity page**. See [Contact activity page](#-contact-activity-page) below for what you can do there.
**🔍 Search**
Use the search bar at the top to find contacts.
The search supports:
- First name
- Last name
- Email
- Phone number
Phone search works best when you enter at least four digits.
The search input is debounced, so the page waits briefly while you type before reloading results. This keeps the page responsive and avoids unnecessary API calls.
**🏷️ Tag filter**
Filter the list by a contact tag using the **Tags** dropdown.
The tag dropdown shows available tags for your company. When possible, it also shows the number of visible contacts using each tag.
You can also click a tag chip inside the contact table to immediately filter by that tag.
**📂 Powerlist filter**
Filter contacts by powerlist using the **Powerlist** dropdown.
The powerlist picker shows available powerlists and their contact counts. Selecting a powerlist limits the table to contacts inside that list.
This is helpful when you want to work on one campaign list or one imported segment at a time.
**↔️ Sorting**
Sort contacts using the dropdown next to the search bar:
| Sort option | What it does |
|-------------|--------------|
| **Newest first** | Shows recently added contacts at the top |
| **Oldest first** | Shows oldest contacts at the top |
| **Name A-Z** | Sorts contacts alphabetically by name |
Sorting makes it easier to review fresh imports, older records, or alphabetized contact lists.
**📄 Pagination**
The page loads contacts in pages instead of loading the whole database at once.
By default, it requests 50 contacts per page. This keeps the page fast, even for companies with large contact tables.
Use **Prev** and **Next** to move between pages.
**📥 Import CSV shortcut**
The **Import CSV** button sends you to the contact import page.
This is useful when the contact list is empty or when you need to add a new batch of leads.
**🔄 Refresh button**
The refresh button reloads the current list using the active search, filters, sort, and page.
Use it after imports or bulk actions to see the latest data.
## 📜 Contact activity page
Click a contact row or the external-link icon on a row to open the **Contact activity page**. This is the full history view for one contact — not the main Contacts table.
### 🔙 Header and navigation
At the top of the activity page you will see:
- **Back** — return to the Contacts list.
- **Contact ID and phone** — for example `Contact #18383` and the primary phone number.
- **Dashboard** and **Contacts** — quick links to other areas of the app.
- **Refresh** — reload the activity timeline and contact details.
### 🧾 Contact details
The **Contact details** section summarizes the contact record:
| Field | What it shows |
|-------|---------------|
| **Summary cards** | Counts for Messages, Calls, Emails, Notes, and Workflows |
| **Primary phone** | Main phone number for the contact |
| **Added** | Date and time the contact was created |
| **Powerlist** | Powerlist the contact belongs to |
| **Consent** | Consent status — for example **No consent on file** when consent has not been recorded |
If the contact has no name saved, the page may show **Unnamed contact**.
### 🗂️ Activity filters
Use the filter tabs to narrow the timeline:
| Tab | What it shows |
|-----|---------------|
| **All** | Every activity type |
| **Messages** | SMS and chat messages |
| **Calls** | Voice call logs |
| **Email** | Email activity |
| **Workflows** | Workflow runs tied to this contact |
Each tab shows a count so you can see how many items exist in each category.
### 📝 Internal team note
The **Internal team note** box lets your team leave a quick note that is only visible inside RizzDial — not sent to the contact.
- Type your note in the text area.
- Press **Cmd-Enter** (Mac) or use **Post note** to save.
Use this for handoffs, context, or reminders about the contact.
### 📅 Activity timeline
Below the details and note area, the **timeline** lists interactions in order, grouped by date (for example **THURSDAY 11 JUNE**).
Each entry shows what happened and when. For **calls**, a typical entry includes:
- Badges such as **CALL**, **Outbound**, and **Completed**
- Time of the call
- A transcript preview with speaker labels
- **From** and **To** phone numbers
- A **Recording** link to play the call audio when a recording is available
Messages, emails, and workflow events appear in the same timeline when you use the **All** filter or the matching tab.
## ⚡ Bulk actions
Select one or more contacts from the table. After contacts are selected, a bulk action bar appears.
Available actions:
**🏷️ Apply tag**
When you apply a tag, the selected tag is added to all selected contacts.
If workflow automations are connected to tag changes, applying a tag can trigger those workflows.
**➖ Remove tag**
When you remove a tag, that tag is removed from all selected contacts that currently have it.
If workflow automations are connected to tag removal, removing a tag can trigger those workflows.
**🗑️ Delete contacts**
The delete action asks for confirmation before running.
When possible, contacts are soft deleted by marking them as deleted. This hides them from the Contacts page while keeping their activity history available. If your contact table does not support soft delete, contacts are removed directly.
**👁️ Visibility & Permissions**
Only contacts marked as visible are displayed on the Contacts page.
Contacts flagged as deleted are automatically hidden.
If you are not a company-level user or lack permission to view all contacts, you will only see contacts included in your assigned powerlists.
---
# Import Contacts
Source: https://docs.aisync.link/manage/import-contacts
This guide walks through the import process step by step from a user point of view.
## ✨ What you can do
- Upload contacts from a CSV file.
- Match CSV columns to contact fields.
- Create new contact fields for extra CSV columns.
- Review how many contacts will be imported or skipped.
- Confirm consent before importing contacts.
- Apply existing or new tags to imported contacts.
- Choose how duplicate phone numbers should be handled.
- Add contacts directly to Contacts.
- Optionally create a new powerlist for AI dialing or manual dialing.
- Track import progress while the file is being processed.
## 🪜 Import Steps
The import process is organized into six main steps:
| Step | What it does |
|------|--------------|
| **1. Upload** | Choose and upload your CSV file. |
| **2. Map** | Match CSV columns to contact fields. |
| **3. Review** | Preview what will be imported or skipped. |
| **4. Consent** | Confirm contacts have permission to be contacted. |
| **5. Tags** | Apply tags and choose duplicate handling. |
| **6. Powerlist** | Decide where imported contacts should go. |
Each step helps you prepare the contact list before the final import.
## 1️⃣ Step 1 — Upload CSV
Start by dragging a CSV file into the upload area or clicking the upload box to choose a file from your computer.
**📄 File requirements**
- The file must include a **header row** — for example `Phone`, `First Name`, `Last Name`, `Email`, `City`, or other column names.
- The importer uses these headers to understand what each column means.
- If the file has no header row or no contact rows, the system shows an error and asks you to upload a valid file.
**🧭 Top navigation**
While importing, you can jump to **Dashboard**, **Contacts**, or **Powerlists** from the top-right buttons without losing your place in the wizard.
**What the system cleans automatically**
During import, the system helps clean your file by:
| Action | What happens |
|--------|--------------|
| **Phone formatting** | Formats phone numbers into a dialable format (for example `+1XXXXXXXXXX`). |
| **Missing phones** | Skips contacts with no phone number. |
| **Invalid phones** | Skips contacts with invalid or fake phone numbers. |
| **Consent rows** | Skips rows marked as not consenting when a consent column is selected. |
| **Extra columns** | Keeps useful extra data when you choose to create new contact fields. |
## 2️⃣ Step 2 — Map fields
After the file is uploaded, the system shows the columns found in your CSV. Match each column to a contact field, ignore it, or save it as a new field.
**📋 File summary**
At the top of the mapping step, you see the uploaded file name and a quick count — for example **17 columns • 4 rows detected**.
**🗂️ Standard contact fields**
You can match CSV columns to fields such as:
| Field | Example CSV header |
|-------|-------------------|
| **Phone** | `Phone`, `Mobile`, `Cell` |
| **First name** | `First Name`, `FirstName` |
| **Last name** | `Last Name`, `LastName` |
| **Email** | `Email`, `Email Address` |
| **Address** | `Address`, `Street` |
| **City** | `City` |
| **State** | `State` |
| **Zip** | `Zip`, `Postal Code` |
The system tries to **auto-detect** common fields, especially phone number, name, and email. Change the mapping if the system selected the wrong field.
**🔽 Mapping options per column**
For each CSV column, use the dropdown to:
- Map it to an existing contact field.
- Choose **— ignore —** to skip that column.
- Select **+ New field** to create a custom contact field and keep that data.
**Phone field requirement**
At least one CSV column must be mapped to **Phone**. Contacts cannot be imported for calling without a phone number.
If no phone column is mapped, a warning appears:
> Map at least one column to Phone. We can't dial without one.
The **Review** button stays disabled until a phone column is mapped.
The system also checks how many rows have valid phone numbers. If the selected phone column looks mostly empty or invalid, the importer warns you and may suggest a better column.
**Creating new contact fields**
If your CSV has extra columns that do not match existing contact fields, save them as new contact fields during the mapping step.
**Examples of useful custom fields:**
- Lead Source
- Insurance Type
- Appointment Date
- Customer Stage
Click **+ New field** next to any column to create and map a custom field in one step.
**Optional per-row consent Columns**
If your CSV includes a consent or opt-in column, select it in the **Per-row consent column (optional)** dropdown at the bottom of the mapping step.
| Value in CSV | Result |
|--------------|--------|
| **Yes**, **True**, **1**, **Y**, **Consent**, **Opted-in** | Row is allowed. |
| **No** or any non-consenting value | Row is skipped automatically. |
If your file does not have a consent column, leave this set to **— none, all rows assumed consenting —** and continue with the main consent confirmation in Step 4.
## 3️⃣ Step 3 — Review cleanup
The review step shows a preview of what will happen before the import begins.
**You will see:**
- How many contacts will be imported.
- How many rows will be cleaned out or skipped.
- The total number of rows in the file.
- A cleanup breakdown for missing phone numbers, invalid phone numbers, and non-consenting rows.
- A small sample of clean rows that are ready to import.
- Any new fields that will be created.
Use this step to make sure the import looks correct before continuing. Select **Back** to adjust mapping, or continue when the preview looks right.
## 4️⃣ Step 4 — Consent confirmation
Before importing, you must confirm that the contacts have given permission to receive communications from your business.
This confirmation is required because calls, SMS, and marketing communication may be subject to **TCPA** and carrier compliance rules.
You cannot continue until the consent checkbox is selected.
## 5️⃣ Step 5 — Tags and duplicates
The tags and duplicates step lets you organize contacts and decide how the system should handle existing phone numbers.
**Applying tags**
You can apply existing tags to all imported contacts. You can also create new tags during the import.
Tags help you:
- Find contacts later.
- Organize lists.
- Trigger automations or workflows.
**Duplicate handling**
Duplicates are matched by **phone number**. Choose one of three options:
| Option | What happens |
|--------|--------------|
| **Skip duplicates** | If the phone number already exists, the row is ignored. |
| **Update existing** | If the phone number already exists, the existing contact is refreshed with the new data. |
| **Always create new** | The system creates a new contact even if the same phone number already exists. |
For most imports, **Skip duplicates** or **Update existing** is recommended.
## 6️⃣ Step 6 — Powerlist
After contacts are prepared, choose where they should go.
| Option | What happens |
|--------|--------------|
| **Create a powerlist for dialing** | Contacts are imported and grouped into a new powerlist. |
| **Just add to Contacts** | Contacts are imported into your Contacts list without creating a powerlist. |
**Creating a powerlist**
If you choose to create a powerlist:
1. Enter a **powerlist name**. The system may pre-fill the name based on your file name, but you can edit it.
2. Choose how the powerlist should be used:
| Dial mode | Description |
|-----------|-------------|
| **AI Dial** | An AI voice agent calls the contacts automatically. |
| **Manual Dial** | Your team dials the contacts manually from the power dialer. |
If you select **AI Dial**, you must choose an active **AI voice agent**.
## ✅ Import complete
When the import finishes, the success screen shows a summary.
The summary may include:
- Number of contacts imported.
- Number of existing contacts updated.
- Number of rows cleaned out.
- Destination — for example Contacts, Manual powerlist, or AI Dial powerlist.
From there, you can view the powerlist, build automation, or import another file.
## 🚫 Rows that may be skipped
Some rows may not be imported. Common reasons include:
| Reason | When it happens |
|--------|-----------------|
| **No phone number** | The row has an empty phone field. |
| **Invalid or fake phone** | The number cannot be formatted or dialed. |
| **No consent** | The selected consent column says the contact did not opt in. |
| **Duplicate skipped** | The phone number already exists and duplicate handling is set to skip. |
The review and progress screens help you understand why rows were cleaned out.
---
# Bulk Actions
Source: https://docs.aisync.link/manage/bulk-actions
The **Bulk Actions** page allows you to manage contact imports and perform large-scale updates efficiently. From this page, you can monitor CSV import progress, review detailed results, and safely execute actions affecting many contacts at once.
The page is divided into two main sections:
1. **Import Jobs** — View and manage ongoing and completed contact imports.
2. **Bulk Contact Actions** — Filter and select groups of contacts, then execute bulk actions on them.
This enables you to update thousands of contacts simultaneously, rather than manually editing records one by one.
## 📥 Import Jobs
Within the **Import Jobs** tab, you’ll find a log of recent import activity accompanied by a clear job status:
| Status | Definition |
|----------------|------------------------------------------------|
| **Starting** | The import process is initializing. |
| **Running** | The import is actively processing rows. |
| **Finalizing** | Wrapping up and saving final results. |
| **Completed** | The import finished without issues. |
| **Failed** | An error occurred and the import stopped. |
### 📋 Viewing Import Details
Click the **Details** button for any import job to access a summary and breakdown.
Available details include:
- File name or import identifier
- Number of rows processed
- How many contacts were imported, updated, or skipped
- Cleanup summary
- Any error messages from failed imports
These details give you transparency and a clear audit trail for every import.
**🛑 Cancel an Ongoing Import**
If an import is still in progress, you have the option to cancel it.
Canceling an import halts the processing of any additional rows. Contacts already imported remain unchanged. If a new powerlist was created but no contacts were imported, the empty powerlist is automatically removed.
**🗑️ Remove Import Records**
You can delete completed or failed import records from the Bulk Actions page.
This action only removes the record from the job history—it does **not** affect contacts that have already been imported.
## ⚡ Bulk Contact Actions
The **Bulk Contact Actions** tab provides a way to filter contacts and then apply a batch operation.
### 1️⃣ Step One: Filter Contacts
Begin by narrowing down which contacts you want to include using one or more filter options:
| Filter | What it Does |
|-------------------|---------------------------------------------------------------------|
| **Import batch** | Selects contacts imported in a particular completed batch (from a powerlist). |
| **Powerlist** | Picks contacts assigned to a specific powerlist. |
| **Tag** | Finds contacts labeled with a specific tag. |
You can mix and match filters to fine-tune your selection. For example, you might choose contacts that were part of a certain import batch and have a particular tag.
As you add or adjust filters, you'll see a live count of the matching contacts. Double-check this number before moving on.
### 2️⃣ Step Two: Choose a Bulk Action
Once you've filtered your contacts, select an action to perform on the group:
| Action | What It Does |
|-----------------------|-------------------------------------------------------------------------------------|
| **Apply tag** | Attach one or more tags to every contact in your selection. |
| **Remove tag** | Detach one or more tags from all selected contacts. |
| **Move to powerlist** | Move all chosen contacts to a different powerlist. |
| **Delete contacts** | Mark contacts as deleted, so they’re no longer visible in the main Contacts view. |
Before anything happens, you'll get a confirmation prompt that shows exactly how many contacts will be affected by your chosen action.
---
# Contact Tags
> User guide for creating, editing, and deleting contact tags with role-based visibility.
Source: https://docs.aisync.link/manage/tags/contact-tags
**Contact Tag** lets you create and manage short labels used to group or describe contacts (for example, **VIP** or **Hot lead**). Tags belong to your organization and can be restricted by role, so only selected roles can view/use them.
## 📋 The tag list
When you open this screen, you see a table of contact tags.
| What you see | What it means |
|----------------|----------------|
| **#** | Row number in the current list view. |
| **Tag** | Tag name. |
| **Updated At** | Last changed date/time in your timezone. |
| **Created At** | First created date/time in your timezone. |
| **Action** | Controls to edit or delete the tag. |
### ⚙️ List controls
- **Add** opens the create form.
- **Search** filters table rows (placeholder usually `Search...`).
- Pagination keeps long lists manageable (commonly 10 rows per page by default).
## ➕ Adding a new tag
1. Click **Add**.
2. The list hides and **Add Contact Tag** form opens.
3. Fill required fields.
4. Click **Submit**.
5. On success, confirmation appears and list reloads with new tag.
Use **Back** to return without saving.
## ✏️ Editing a tag
1. Click **Edit** in the row’s Action column.
2. **Edit Contact Tag** form opens with existing values prefilled.
3. Update fields and click **Submit**.
Save flow is the same as Add: wait message -> success message -> list refresh.
## 🗑️ Deleting a tag
1. Click the row’s trash icon.
2. Confirm when prompted.
3. Tag is removed and a result message appears.
If that tag had role links only tied to that tag, those links are removed along with it.
Delete is permanent for that tag record. Confirm before deleting tags used by active workflows.
## 📝 Form fields (Add and Edit)
**🏷️ Tag (required)**
- **Purpose:** User-facing tag name.
- **Required:** Yes.
- **Placeholder:** Usually `Enter tags`.
- **Help text:** Suggests using clear names like VIP, Prospects, Hot Leads.
You cannot submit with an empty Tag field.
**👥 Assign role View**
- **Purpose:** Select which roles can view/use this tag.
- **Selection:** One or many roles.
- **Control type:** Searchable dropdown.
- **Placeholder:** Usually `Select role`.
Use this field when tag visibility should be limited by role.
**💾 Submit**
Saves tag and role assignments.
- On success: confirmation + return to list.
- On failure: error explains what to fix.
---
# PowerList Tags
Source: https://docs.aisync.link/manage/tags/powerlist-tags
**PowerList Tag** lets you create and manage labels for your PowerLists so teams can group lists consistently (for example by priority, campaign type, or follow-up state). Each tag can also be restricted by role, so only selected roles can view/use it.
Use this page to maintain organization-wide PowerList tags.
A tag record includes:
- **Tag** name
- optional **role access links** (Assign role View)
- created/updated timestamps
## 🗂️ Main list
When you open the screen, you see a table of PowerList tags (typically newest first).
| Column | Meaning |
|--------|--------|
| **#** | Row number in current list view. |
| **Tag** | Tag label name. |
| **Updated At** | Last modified date/time (your timezone). |
| **Created At** | First created date/time (your timezone). |
| **Action** | Edit/delete controls for that row. |
### ⚙️ List controls
- **Add** opens create form.
- **Search** filters rows (`Search...` placeholder).
- Pagination keeps long lists easy to scan (often 10 rows/page by default).
## ➕ Adding a new tag
1. Click **Add**.
2. List hides and **Add PowerList Tag** form opens.
3. Fill fields.
4. Click **Submit**.
While saving, a short message like **Please wait. Action in process...** may appear.
- On success: green confirmation + page refresh/list reload.
- On failure: red message with reason.
## ✏️ Editing a tag
1. Click **Edit** in the row.
2. **Edit PowerList Tag** form opens with existing values loaded.
3. Update **Tag** and/or **Assign role View**.
4. Click **Submit**.
Save behavior is same as Add (wait message, success/error, then list refresh on success).
## 📝 Form fields
**🏷️ Tag (required)**
- The visible label name used across PowerList screens.
- Required before submit.
- Max length is typically up to 100 characters.
- Help tooltip explains this field is for categorizing/organizing PowerLists.
**👥 Assign role View**
- Multi-select list of organization roles.
- Choose one or more roles allowed to view/use this tag.
- Searchable picker makes long role lists easier.
- Help text explains multi-role access behavior.
**🗑️ Deleting a tag**
1. Click row trash icon.
2. Confirm prompt (**Are you sure?**).
If successful:
- tag is removed,
- linked role assignments for that tag are removed,
- list reloads with success message.
If not found or another error occurs, an error message appears.
Delete is permanent for that tag record. Confirm before deleting tags used in active PowerList workflows.
---
# Pipeline
Source: https://docs.aisync.link/pipeline/pipeline
**Pipeline** is a kanban board for your sales or follow-up process. Each board is a pipeline. Each column is a stage. Each card is a contact.
This page does **not** create contacts. Contacts come from PowerLists, imports, conversations, and the rest of the workspace. Pipeline only **places** those contacts into stages.
## ✨ What you can do
- See where every lead sits in your process
- Drag a contact from one stage to the next
- Create, rename, reorder, or delete pipelines and stages
- Open a contact for details, notes, appointments, and messages
- Optional: sync the board with a connected **LeadConnector** (GHL) location
**🔗 How the pieces fit together**
**Pipeline → Stages → Contacts**
| Piece | What it is | Example |
|-------|------------|---------|
| **Pipeline** | The whole board | Sales Funnel |
| **Stage** | One column on that board | New Lead, Contacted, Closed |
| **Contact card** | A person currently in that stage | Sara, +1… |
If LeadConnector is connected:
**LeadConnector location → pipelines → stages → deals**
- Each location has its **own** pipelines
- Choosing a location on a pipeline creates that board on that location too
- A **deal** is that contact sitting on a LeadConnector stage
- Or keep a pipeline local with **Don’t sync to GHL**
---
## 📋 What you see on the page
| Control | What it does |
|---------|----------------|
| **Location** | Which pipelines to show: **All**, **Don’t sync**, or a LeadConnector location |
| **Pipeline** | Which board to display |
| **All Assigned Users** | Limit cards to one teammate (when available) |
| **All Powerlists** | Limit cards to one PowerList |
| **SOPs** | Built-in standard operating procedures |
| **Manage** | Add, edit, or delete boards |
Below the header: one column per stage, contact cards, count badge, and **Dial** on each column.
**🆕 First time: no pipelines yet**
If none exist, you see **No Pipeline Created** and **Create Pipeline**.
1. Click **Create Pipeline** (or **Manage**)
2. Click **Add Pipeline**
3. Follow [Create a pipeline](#-create-a-pipeline)
---
## 📍 Location filter
Appears when LeadConnector locations are connected. Filters **which pipelines** you see — it does not move contacts.
| Option | What you see |
|--------|----------------|
| **All** (default) | Every pipeline, synced or not |
| **Don’t sync** | Only pipelines **not** linked to LeadConnector |
| **A location name** | Only pipelines linked to that location |
Empty states may say **No pipelines synced**, **No unsynced pipelines**, or **No pipelines** — switch the filter or open **Manage**.
---
## 🗂️ The board
Pick a pipeline from the **Pipeline** dropdown. Columns appear left to right in stage order.
Each column shows:
- Stage name + pencil (rename)
- **Dial** — opens the Dialer for contacts in that stage
- Contact count
- Cards (scroll to load more)
Empty columns say **No contacts in this stage**.
### 🧑💼 Contact cards
Each card shows name, phone, email, **Call**, and **Message** (opens [Conversations](/conversation/conversations)).
- Click the **card** (not Message) to open **Contact Details**
- **Drag** a card to another column to change stage — **Contact moved** confirms it
Contacts appear only after they are **assigned to a stage**. Being in a PowerList is not enough by itself.
---
## 👤 Contact Details
Click a card. Tabs:
| Tab | What it is |
|-----|------------|
| **Contact Info** | Review and save contact fields |
| **Notes** | Notes on this contact — **Add Note** |
| **Appointments** | Calendar appointments |
| **Log** | Message and call history — send SMS from here |
Close when done. The board stays on the same pipeline.
---
## ⚙️ Pipeline Management
Click **Manage** in the header.
| Column | What it is |
|--------|------------|
| **#** | Row number |
| **Pipeline Name** | Board name |
| **Stages** | How many stages |
| **Created At** | When created |
| **Actions** | Edit (pencil) and Delete (trash) |
---
## ➕ Create a pipeline
1. Click **Manage** → **Add Pipeline**
2. Enter a **Pipeline Name** (required)
3. **GHL Location** (if LeadConnector is connected):
- **Don’t sync to GHL** — workspace only
- A location — board and stages are created there when you save
4. **Powerlists** (optional) — search and select one or more lists
5. **Pipeline Stages** — defaults: New Lead, Contacted, Proposal Sent, Closed
6. **Add Stage** for more columns; drag to reorder
7. Click **Save Pipeline**
You need at least one stage, and every stage needs a name.
---
## ✏️ Edit a pipeline
1. **Manage** → pencil on that row (**Edit Pipeline**)
2. Change name, PowerLists, or stages
3. **Save Pipeline**
**🔒 GHL Location when editing**
- Not linked yet → you can pick a location or leave **Don’t sync to GHL**
- Already linked → location is locked (*cannot be changed*)
Saving a linked pipeline also updates that board in LeadConnector.
**Stages in the form**
- **Add Stage** → then **Save Pipeline**
- Rename in the stage box
- Drag to reorder
- Trash a stage (you cannot remove the last one) → **Save Pipeline** or it is not removed
**✏️ Rename a stage from the board**
1. Click the pencil on the column header
2. Type the new name → Enter or click away (Escape cancels)
3. **Stage name updated** confirms it
On a linked pipeline, the name updates in LeadConnector too.
---
## 🗑️ Delete a pipeline
1. **Manage** → trash icon
2. Confirm **Are you sure you want to delete this pipeline?**
If the pipeline is linked to LeadConnector, that board is deleted there too — including deals on it. Unlinked pipelines (**Don’t sync to GHL**) are removed from this workspace only.
---
## 📌 Put a contact on a pipeline
**From Conversations**
1. Open the contact → **Pipelines** section
2. Choose **Pipeline** and **Pipeline Stage** → save
**From the board**
Drag a card between stages (move, not first placement).
**From a workflow**
Use **Pipeline stage changed** as a trigger, or set pipeline/stage as an action in the [workflow builder](/workflow/all-workflows).
---
## 🔄 LeadConnector (GHL) sync
Connect locations first; sync second.
**🔌 Connect a location**
1. **Settings → Integration → LeadConnector**
2. **Connect New** (or **Re-Connect** if expired)
3. Finish login and pick the location
Each location has its own pipelines. Actions include **Sync Pipeline**, **Re-Connect**, and **Disconnect**.
**🔄 Sync Pipeline (LeadConnector → this workspace)**
Use when boards already exist in LeadConnector.
1. **Settings → Integration → LeadConnector**
2. On that location’s row, click **Sync Pipeline**
3. Wait for sync to finish
| Result | Meaning |
|--------|---------|
| **New** | Board did not exist here — created with stages |
| **Linked** | Matching board was already here — connected, not duplicated |
| **Stages** | Stages created or matched |
Sync is **per location**. Syncing Location A does not import Location B.
**➡️ Create or edit here (this workspace → LeadConnector)**
No Sync click needed — **saving** is enough.
| You do this | What happens in LeadConnector |
|-------------|-------------------------------|
| Create pipeline + choose location | Board and stages created there |
| Edit linked pipeline | Linked board updated |
| Rename stage from board | Stage name updated |
| Delete linked pipeline | Board deleted there too |
| **Don’t sync to GHL** | Nothing created in LeadConnector |
**💼 Deals when a contact changes stage**
When you move a contact (board or Conversations):
- **Contact linked to LeadConnector** → deal created or moved to the matching stage
- **Contact not linked** → they still move on **your** board; no deal over there
Sync alone does **not** push everyone already on the board as deals. The contact must actually be linked (came from LeadConnector or contact sync).
---
## 📑 SOPs
**SOPs** opens formal procedures for purpose, definitions, prerequisites, and create / modify / delete / navigate. Sections are collapsible. Use SOPs for written procedures; use this guide for day-to-day steps.
## 💡 Typical uses
| Use | How |
|-----|-----|
| Sales board | New Lead → Contacted → Proposal Sent → Closed — drag as you go |
| Same board in LeadConnector | Create here, choose location, save — or **Sync Pipeline** if it already exists there |
| Local-only process | **Don’t sync to GHL** |
| Call a stage | **Dial** on the column |
| Text from the board | **Message** on the card → Conversations |
---
# Calendar
> Manage appointments and scheduling
Source: https://docs.aisync.link/calendar/calendar
Easily manage your calendars, appointments, and bookings from a single dashboard.

## 📊 Dashboard Overview
At the top of the Calendar Management page, you'll see four stat cards:
- **Total Calendars**
- **Active Bookings**
- **Pending Bookings**
- **Google Connected**
Each card displays a large number and a label.

---
## 🗂️ Tab Navigation
Below the stats, there are three main tabs:
- **Calendar**: View and manage your calendars and events
- **Appointments**: See all appointments and events in a table with filters
- **Settings**: Manage calendar settings and create new calendars
Switching tabs updates the content below.

---
### 📅 My Calendars Sidebar
On the **Calendar** tab, the left sidebar lists "My Calendars":
- Each calendar has a checkbox to select/deselect it for viewing
- A "Select All" button at the top right of the list lets you quickly select or deselect all calendars
- Each calendar has a three-dot menu (**•••**) with these options:
- **Manage**: Open detailed management for the calendar
- **Bookings**: View all bookings for the calendar
- **Delete**: Remove the calendar (confirmation required)
Selecting calendars updates the main calendar view to show events for the selected calendars.

---
### 📆 Appointments & Events
The **Appointments** tab provides a comprehensive table of all your appointments and events. You can:
- **Filter by status** using colored pills at the top:
- **All** (shows total count)
- **Pending**
- **Confirmed**
- **Cancelled**
- **Completed**
- **Upcoming**
- **Select Calendars**: Filter events by specific calendars using the selector at the top right.
- **Search**: Use the search box to quickly find events by title, attendee, or other details.
- **Title**: Name of the event or appointment
- **Calendar**: The calendar this event belongs to
- **Date & Time**: When the event is scheduled
- **Duration**: Length of the event (e.g., 30 min)
- **Status**: Current status (e.g., Confirmed, Pending)
- **Attendees**: List of participants
- **Location**: Where the event will take place (or N/A)
- **Actions**: View or manage the event (eye icon for view, other icons for additional actions)

---
### ⚙️ Settings Tab
The **Settings** tab allows you to manage all your calendars in one place. At the top right, you'll find the **+ Create New Calendar** button to add a new calendar.
Below, the **Calendar Settings Management** table lists all calendars with the following columns:
- **Name**: Calendar name
- **Type**: Personal or Business
- **Description**: Brief details about the calendar
- **Booking Enabled**: Shows if booking is enabled ("Enabled" tag)
- **Google Connected**: Shows if the calendar is connected to Google ("Connected" or "Not Connected" tag)
- **Status**: Current status ("Active" tag)
- **Created**: Date the calendar was created
- **Actions**: Manage, Bookings, Edit , Delete
You can search calendars using the search box, and navigate through pages using the pagination controls at the bottom right.

---
#### 🆕 Creating a New Calendar
Click the **+ Create New Calendar** button (in the Settings tab) to open a modal with these options:

- **Calendar Name** (required): Enter a name for your calendar.
- **Type**: Select the calendar type (Personal or Business) from the dropdown.
- **Description**: Optionally add details about the calendar's purpose.
- **Color**: Choose a calendar color using the color picker.
- **Who can book appointments?**: Choose who can book appointments (e.g., Internal only/company users, Public, or Both).
- **Calendar URL**: Shows the booking link for your calendar. If set to internal, a note will indicate that only company users can book. Change the booking type to "public" or "both" to enable external bookings.
- **Slot Duration**: Set the default appointment length (e.g., 30 minutes).
- **Buffer Time**: Add buffer time between appointments (e.g., No buffer, 10 min, etc.).
- **Max Advance Days**: Set how many days in advance bookings can be made (e.g., 30).
At the bottom, use **Cancel** to close the modal without saving, or **Create Calendar** to save your new calendar.

## 🛠️ Managing Calendars
To manage an existing calendar, click the menu (•••) on any calendar and select "Manage Calendar". This opens a detailed management interface with five tabs:(Overview, Settings, Availability, Booking, Integration)

### 🗒️ Overview
The **Overview** tab provides a comprehensive view of your selected calendar:
- **Calendar Events**: The main panel displays a calendar grid (month/week/day view) with navigation arrows and a "today" button. Events and bookings are shown as colored dots with titles.
- **Quick Stats**: On the right, see a summary of:
- Total Events
- This Month's Events
- Pending Bookings
- Confirmed Bookings

- **Quick Actions**:
- **Next Available Slot**: Click to instantly find the next open time slot for booking appointments. This opens a modal showing the next available date and time, with an option to view all slots for that day.


- **View All Bookings**: Click to see a list of all bookings for the selected calendar.


### ⚙️ Settings
Adjust the main configuration options for your calendar here:
- **Calendar Name & Color**: Update the calendar’s name and select a color for easy identification.
- **Timezone**: Specify the timezone for event scheduling (e.g., Winnipeg, Canada, CST, CT).
- **Description**: Add or modify a brief summary or purpose of the calendar.
- **Booking & Activity Settings**:
- **Allow slot booking**: Toggle to permit or restrict appointment bookings.
- **Calendar active**: Activate or deactivate the calendar as needed.
- **Available 24/7**: Optionally make availability round-the-clock, bypassing standard working hours.
- **Appointment Permissions**: Set who can book appointments (internal users, public, or both).
- **Calendar URL**: Access and copy your calendar’s shareable booking link.
- **Actions**: Save any updates, or delete the calendar if no longer needed.

### ⏰ Availability
Set your working hours and availability:
- **Working Hours**: Configure availability for each day of the week
- Check "Available" to enable each day
- Set start and end times (e.g., 9:00 AM - 5:00 PM)
- Option to set "Available 24 hours" for specific days
- **Current Schedule**: View a summary of your configured working hours
- **Default Schedule**: Monday-Friday 9:00-17:00, Sunday typically unavailable

### 📋 Booking
Configure appointment booking settings:
- **Slot Configuration**:
- **Slot Duration**: Set appointment length (e.g., 30 minutes)
- **Buffer Time**: Add time between appointments for preparation/travel
- **Maximum Advance Booking**: Set how many days in advance people can book (e.g., 30 days)
- **Minimum Advance Booking**: Set minimum notice required (e.g., 24 hours)
- **Booking Preview**: See how your configured slots will appear to users
- **Save Configuration**: Apply your booking settings

### 🔗 Integration
Manage Google Calendar integration:
- **Connection Status**: Shows if connected to Google Calendar with account email
- **Enabled Features**:
- Events automatically sync to Google Calendar
- Google Meet links auto-generated
- Calendar events visible in Google Calendar
- **Actions**: Disconnect from Google Calendar if needed

## 🤖 AI Agent Appointment Booking
You can setup calendar in AI agent and it will check available slots and book appointment according to your setup availability, You can manage everything inside the Ai sync.
If you have connected Google Calendar then an AI agent schedules an appointment, it will be automatically added to your connected Google Calendar with all details synchronized.
First Click AI Agent then Click Edit in Action:


---
# Google Calendar
> Connect your Ai sync workspace with Google Calendar to effortlessly organize meetings, appointments, and schedules.
Source: https://docs.aisync.link/calendar/google-calendar
## 🗓️ Google Calendar Integration Overview
Seamlessly manage your schedule—view, create, and edit events—from within your Ai sync dashboard with the Google Calendar integration.
## 📅 Calendar Dashboard

### Key Dashboard Features
- **Connected Account**: Displays your active Google account
- **Navigation Controls**: Use arrow buttons (`<`, `>`) to switch months or click "Today" to jump to the current date
- **View Modes**: Toggle between Month, Week, or Day views
- **Event Creation**: Click the "Create Event" button to schedule new events
## 🤖 AI Join Functionality
This integration offers an AI Join feature, enabling AI agents to join meetings for you:
- Displays "AI Join: No Permission (Locked)" on calendars without access
- Allows AI agents to join meetings automatically when enabled
- Handles multiple subscribed calendars (e.g., regional holidays or secondary calendars)
> **Premium Feature**: AI Join requires a premium subscription. Activate the feature by subscribing to allow AI assistants to automatically participate in your scheduled meetings.

## ✍️ Scheduling New Events
Easily create events by clicking "Create Event." The scheduling modal includes:

**Required Event Details:**
- **Title**: Name your event
- **Description**: Add notes or context (resizable input)
- **Start Date & Time**: Choose the event start (format: dd/mm/yyyy, --:-- --)
- **End Date & Time**: Choose when it ends (format: dd/mm/yyyy, --:-- --)

## 📂 Managing Multiple Calendars
- Quickly switch calendars using the dropdown selector
- View all subscribed calendars alongside your main calendar
- Adjust permissions and AI Join settings per individual calendar

---
# Meta Ads
> Connect Facebook, manage ads, view analytics, and send Lead Forms into PowerLists.
Source: https://docs.aisync.link/marketing/meta-ads
**Meta Ads** lets you connect Facebook, manage campaigns and ads, check performance, and send Lead Form submissions into AI Sync as contacts.
Open from **Marketing → Meta Ads**, or **Settings → Integrations → Facebook Lead Ads** → **Manage**.
## ✨ What you can do
- Connect Facebook and sync ad accounts, Pages, and Lead Forms
- Pause or activate **campaigns** and **ads**
- Review **spend, clicks, leads**, and cost per lead
- Turn on lead delivery and send forms into **PowerLists**
- Send leads, bookings and sales back to Meta with your **Pixel** — see [Meta Pixel & Conversions](/marketing/meta-conversions)
## 📑 Tabs at a glance
| Tab | Use it to… |
|-----|------------|
| **Overview** | See connected account, businesses, and ad accounts |
| **Ad Accounts** | Pick which ad account to work on |
| **Campaigns** | Create, pause, or activate campaigns |
| **Ads** | Manage individual ads and creatives |
| **Analytics** | View spend and results by date range |
| **Pages & Lead Forms** | Turn leads on, assign PowerLists, map fields |
| **Conversions** | Connect your Pixel so leads, bookings and sales go back to Meta — see [Meta Pixel & Conversions](/marketing/meta-conversions) |
---
## 🔌 Connect Facebook
Go to **Marketing → Meta Ads** (or [Integrations](/settings/social-sign-in-integration)) → **Connect Facebook** → sign in and approve permissions.
Click **Sync Assets** to pull ad accounts, Pages, and Lead Forms.
Choose an **Ad Account** from the top dropdown.
Open **Pages & Lead Forms** → turn **Leads On** for your Page.
Use a Facebook login with admin access to your Pages and ad accounts. A personal login without business access may show an empty page.
### 🛠️ Top bar buttons
| Button | When to use |
|--------|-------------|
| **Ad Account** | Switch which account you are managing |
| **Sync Assets** | Refresh data after changes in Facebook |
| **Reconnect** | Fix expired permissions |
| **Disconnect** | Unlink Facebook from this workspace |
---
## 📝 Overview
Quick snapshot of your Meta connection — not for editing ads.
**You will see:**
- **Connected Account** — Facebook name and token expiry
- **Businesses / Ad Accounts / Pages** — summary counts
- Tables listing businesses and ad accounts with status and currency
Numbers look wrong? Click **Sync Assets**.
---
## 💼 Ad Accounts
Pick the ad account for campaigns, ads, and analytics.
| Column | Meaning |
|--------|---------|
| **Name** | Ad account name |
| **Account ID** | Meta account ID |
| **Status** | Active, Disabled, etc. |
| **Currency / Timezone** | Billing and reporting settings |
- Click **Manage** to use an account
- **Selected** means it is active in the header dropdown
- Click **Refresh from Facebook** to update the list
---
## 📣 Campaigns
Create and control campaigns for the selected ad account.
| Column | Meaning |
|--------|---------|
| **Campaign** | Name and Facebook ID |
| **Objective** | Leads, Traffic, Sales, etc. |
| **Status** | Your switch — Active or Paused |
| **Effective Status** | What Facebook is actually doing |
| **Actions** | Rename, Pause, or Activate |
**Create a campaign**
1. Select ad account → **Create Campaign**
2. Enter name and choose objective
3. Click **Create Campaign**
New campaigns start **Paused**. Nothing spends until you click **Activate**.
- Click the **arrow** on a row to expand and view **Ad Sets**
- **Pause** = stop spend fast | **Activate** = confirm to start delivery
---
## 🖼️ Ads
Manage individual ads. Filter by campaign or ad set.
| Column | Meaning |
|--------|---------|
| **Creative** | Ad image thumbnail |
| **Ad** | Ad name and ID |
| **Campaign / Ad Set** | Parent campaign and ad set |
| **Status** | Active or Paused (your switch) |
| **Effective Status** | Real delivery state (e.g. `CAMPAIGN_PAUSED`) |
| **Actions** | Edit, Pause, or Activate |
**Create an ad**
1. **Create Ad** → enter name
2. Pick **Campaign** → **Ad Set** → **Creative** (must exist in Facebook first)
3. Click **Create Ad**
New ads start **Paused**. Creatives are built in Facebook Ads Manager — AI Sync reuses them, it does not design them.
---
## 📊 Analytics
Performance for the selected ad account and date range.
**Filter:** Pick **Date Range** (or custom From/To) → click **Apply**
**Summary cards:** Spend · Impressions · Reach · Clicks · CTR · CPC · Leads · Cost / Lead
**By Campaign table:** Same metrics broken down per campaign.
Use **PowerLists** to see leads that actually arrived in AI Sync. Analytics shows what Facebook reported — they can differ.
---
## 📄 Pages & Lead Forms
Turn Facebook form fills into contacts you can call or text.
| Column | Meaning |
|--------|---------|
| **Page** | Facebook Page name and ID |
| **Status** | **Leads On** or **Off** |
| **Forms** | Number of Lead Forms — click to open |
**For each form:**
1. Turn **Leads On** for the Page
2. Click **Forms** → assign a **PowerList**
3. Click **Map Fields** → match Facebook questions to contact fields → **Save Mapping**
| Facebook question | Map to |
|-------------------|--------|
| Full name | Name fields |
| Phone | Phone |
| Email | Email |
| City / State / Zip | Address fields |
Leads need all four: **Leads On** + **PowerList** + **field mapping** + Facebook connected. Map phone and email for follow-up to work.
---
# Meta Pixel & Conversions
> Send leads, booked appointments and sales back to Meta so your ads learn who actually books and buys.
Source: https://docs.aisync.link/marketing/meta-conversions
**Meta Pixel & Conversions** sends your results back to Meta. Once your Pixel is connected, AI Sync tells Meta every time someone becomes a lead, books an appointment, or buys. Meta then shows your ads to more people like the ones who **book and buy** — not just the ones who fill out a form.
Open from **Marketing → Meta Ads → Conversions**. Setup takes about 3 minutes. You do not need to connect Facebook first.
## ✨ What gets sent to Meta
| Event | When it is sent | What you do |
|-------|-----------------|-------------|
| **Lead** | Every new lead from your Facebook Instant Forms, Lead Forms, and website form | Nothing — automatic |
| **Schedule** | Every booked appointment (calendar or AI booking) | Nothing — automatic |
| **Purchase** | When a lead buys | Add the **Meta Conversion API** step to a workflow ([below](#-send-sales-and-other-stages-from-a-workflow)) |
| **Your own stage** (for example **Qualified**) | When a lead reaches that stage | Add the **Meta Conversion API** step to a workflow |
Each event carries the person's email, phone and name, scrambled (hashed) the way Meta requires. Their real details never leave AI Sync.
---
## 🔌 Connect your Pixel
You need two things from **Meta Events Manager**: your **Pixel ID** and an **access token**. The setup wizard tells you exactly where to click for each one.
Go to **Marketing → Meta Ads**, open the **Conversions** tab, and click **Connect a Pixel**.
Click **Open Events Manager**. On the left, click your Pixel (Meta also calls it a *dataset*). Open its **Settings** tab and copy the **Dataset ID** — a long number. Paste it into **Pixel ID**, then click **Next**.
In Events Manager, stay on the same Pixel's **Settings** tab. Scroll to **Conversions API** and click **Generate access token**. Copy it right away — Meta shows it only once. Paste it into **Access token** and click **Save and continue**.
The access token is not your Facebook password. It can only send events to this one Pixel, and it is stored encrypted. AI Sync never shows it again.
In Events Manager, open the Pixel's **Test events** tab and copy the **test code** (it looks like `TEST12345`). Paste it into **Test code** and click **Send test event**. When you see **Meta received it**, the event also appears on Meta's Test events page within seconds.
The test code is required. It keeps the test out of your real ad results, so Meta never learns from a fake lead.
When you are done, your Pixel shows **Connected**. From now on, new leads and bookings go to Meta automatically.
| Button | What it does |
|--------|--------------|
| **Test** | Opens the wizard on step 3 to send another test event |
| **Finish setup** | Shown when a Pixel is missing its ID or token — opens the step you still need |
| **Edit** | Change the name, Pixel ID or token. Leave the token empty to keep the saved one |
| **Remove** | Stops all events to that Pixel |
You can connect more than one Pixel. Automatic **Lead** and **Schedule** events go to every connected Pixel.
---
## 💰 Send sales and other stages from a workflow
Leads and bookings are automatic. For later stages — a sale, a qualified lead, a signed contract — add the **Meta Conversion API** step to a workflow.
Open a workflow, then drag **Meta Conversion API** (under **Integrations**) onto the canvas after the step where the sale or stage happens.
Choose your Pixel under **Conversion**. It must show **Ready**.
- **Purchase (sale)** — enter the **Sale amount**. Type a number, or a contact field such as `{{contact.deal_value}}` so each sale sends its real amount. A Purchase without an amount is not sent, because Meta rejects it.
- **Custom stage** — type a name such as `Qualified` or `Contract signed`.
- **Lead** and **Schedule** are also available, but they are already sent automatically.
Click **Save**, then **Activate**. The step card shows what it sends, for example *Send Purchase to Meta · 1500 USD*.
**Example — tell Meta who bought:** Trigger **Pipeline stage changed** (stage = *Sold*) → **Meta Conversion API** → Purchase with `{{contact.deal_value}}`. Meta learns which ads bring buyers, not just leads.
---
## 🧠 How Meta gets the most out of it
You do not need to set any of this up. It is here so you know what Meta receives.
| Lead source | How Meta reads it |
|-------------|-------------------|
| **Facebook Instant Form** | Sent with the Instant Form lead ID. Meta links every later booking and sale back to the exact ad and form (Meta calls this *Conversion Leads*). |
| **Lead Form or website form** (in a browser) | Sent as a website event with the page address, the visitor's browser and the Facebook click ID, so Meta can tie it to the ad that was clicked. |
| **Lead Form posted from another tool** (Zapier, cURL) | Sent with the contact's details only. It is never made to look like a website visit. |
- Every person carries the same private ID across events, so Meta sees **lead → booked → bought** as one person.
- One booking sends **one** Schedule event, and a workflow step that retries never counts twice.
- Events older than 7 days are not sent, because Meta rejects them.
### Using your own website Pixel too?
If your website also fires the Meta Pixel **Lead** event when the form is sent, use the same event ID so Meta counts the lead once. The website snippet returns it as `meta_event_id`:
```js
submitLeadForm({ first_name, phone_number }).then(function (result) {
fbq('track', 'Lead', {}, { eventID: result.meta_event_id });
});
```
---
## 🤖 Set it up with your AI assistant (MCP)
With [MCP connected](/connect-mcp), you can connect and test your Pixel by chat. Copy the Pixel ID, access token and test code from Events Manager as in the steps above, then ask:
| You say | Your assistant does |
|---------|---------------------|
| "Connect my Meta Pixel. ID 123456789012345, token EAAG…" | Saves the Pixel (`meta_ads_create_conversion`) |
| "Send a test event to my Pixel with test code TEST12345" | Sends a test and reports whether Meta received it (`meta_ads_test_conversion`) |
| "Which Pixels are connected?" | Lists them with Connected / Needs token (`meta_ads_list_conversions`) |
| "Change my Pixel's token" | Updates it (`meta_ads_update_conversion`) |
| "Remove my old Pixel" | Asks you to confirm, then removes it (`meta_ads_delete_conversion`) |
| "When a deal is marked Sold, send a Purchase to Meta with the deal value" | Builds the workflow with the Meta Conversion API step |
Your assistant never sees your saved token again after it is stored — only its last 4 characters.
---
## 🛠️ Troubleshooting
| What you see | What to do |
|--------------|------------|
| **Needs token** or **Needs Pixel ID** | Click **Finish setup** and complete the missing step. |
| Test says the **access token is invalid** | Generate a new token in Events Manager → Settings → Conversions API, then **Edit** the Pixel and paste it. |
| Test says **Paste the test code** | Copy the code from the Pixel's **Test events** tab in Events Manager. |
| Test worked, but no events show in **Overview** | Real events appear in Events Manager → **Overview** within about 20 minutes. Test events appear only on the **Test events** tab. |
| A workflow **Purchase** step failed | The sale amount was empty. Make sure the contact field in **Sale amount** has a number for that contact. |
## Related
- [Meta Ads](/marketing/meta-ads) — connect Facebook, campaigns, and Instant Form leads
- [Workflows](/workflow/all-workflows) — build automations, including **Meta Conversion API** and **Add to dialer list**
- [MCP](/connect-mcp) — connect your AI assistant
---
# Google Ads
> Connect Google Ads, manage campaigns and ads, view analytics, and send Lead Forms into PowerLists.
Source: https://docs.aisync.link/marketing/google-ads
**Google Ads** lets you connect a Google Ads login, manage campaigns and ads, check performance, and send Lead Form submissions into AI Sync as contacts.
Open from **Marketing → Google Ads**, or **Settings → Integrations → Google Ads** → **Manage**.
This is **not** the same as Google Sign-In or Google Calendar. Connect Google Ads separately.
## ✨ What you can do
- Connect Google Ads and sync ad accounts and Lead Forms
- Create a paused Search campaign, then **Pause** or **Resume** campaigns and ads
- Review **spend, impressions, clicks, leads**, and cost per lead
- Turn on lead delivery and send forms into **PowerLists**
## 📑 Tabs at a glance
| Tab | Use it to… |
|-----|------------|
| **Overview** | See connected account, ad accounts, and Lead Forms |
| **Ad Accounts** | Pick which ad account to work on |
| **Campaigns** | Create paused campaigns; pause or resume |
| **Ads** | Pause or resume individual ads |
| **Analytics** | View last-7-day results by campaign |
| **Lead Forms** | Webhook URL, Leads On, PowerList, map fields |
---
## 🔌 Connect Google Ads
Go to **Marketing → Google Ads** (or **Settings → Integrations**) → **Connect Google Ads** → sign in and approve access.
Click **Sync Assets** so account names and Lead Forms fill in.
Choose an **Ad account** from the top dropdown.
Open **Lead Forms** → paste the **Webhook URL** in Google Ads → turn **Leads On** → **Map Fields**.
Use a Google login with access to the Ads accounts you manage. A personal Gmail without Ads access may show an empty page.
### 🛠️ Top bar buttons
| Button | When to use |
|--------|-------------|
| **Ad account** | Switch which account you are managing |
| **Sync Assets** | Refresh accounts and forms from Google |
| **Reconnect** | Fix expired permissions |
| **Disconnect** | Unlink Google Ads from this workspace |
---
## 📝 Overview
Quick snapshot of your Google Ads connection — not for editing ads.
**You will see:**
- **Connected Account** — Google name on this connection
- **Ad Accounts** — how many accounts were found
- **Lead Forms** — how many forms were found
- **Leads On** — how many forms deliver into AI Sync
Numbers look wrong? Click **Sync Assets**.
---
## 💼 Ad Accounts
Pick the ad account for campaigns, ads, and analytics.
| Column | Meaning |
|--------|---------|
| **Name** | Ad account name |
| **ID** | Google Ads account ID |
| **Status** | Enabled, etc. |
| **Currency / Timezone** | Billing and reporting settings |
- Select the account in the top **Ad account** dropdown
- Click **Refresh** (or **Sync Assets**) to update the list
- Names still look like numbers? Click **Sync Assets** once
You do not create ad accounts in AI Sync. Create them in Google Ads.
---
## 📣 Campaigns
Create and control campaigns for the selected ad account.
| Column | Meaning |
|--------|---------|
| **Name** | Campaign name |
| **ID** | Google campaign ID |
| **Channel** | Type (for example Search) |
| **Status** | Active or Paused |
| **Actions** | Pause or Resume |
**Create a campaign**
1. Select ad account
2. Type a **Campaign name**
3. Click **Create paused**
New campaigns start **Paused**. Nothing spends until you click **Resume**.
This creates a paused **Search** campaign with a starter budget. Finish keywords, ads, and locations in Google Ads.
- **Pause** = stop spend fast
- **Resume** = may start delivery if ads, budget, and billing are ready
---
## 🖼️ Ads
Pause or resume individual ads for the selected ad account.
| Column | Meaning |
|--------|---------|
| **Name** | Ad name |
| **ID** | Google ad ID |
| **Campaign** | Parent campaign |
| **Status** | Active or Paused |
| **Actions** | Pause or Resume |
You can pause a single ad without pausing the whole campaign.
You do **not** create ads here. Build creatives in Google Ads, then pause or resume them on this tab.
---
## 📊 Analytics
Performance for the selected ad account over the **last 7 days**.
| Column | Meaning |
|--------|---------|
| **Campaign** | Campaign name |
| **Spend** | Amount spent |
| **Impr.** | Impressions |
| **Clicks** | Clicks |
| **Leads** | Conversions Google reported |
| **CPL** | Cost per lead (when Google reported at least one lead) |
Currency follows the selected ad account.
Metrics cannot be requested for a **manager (MCC)** account. Select a client ad account under the manager to load Analytics.
Use **PowerLists** for leads that actually arrived in AI Sync. Analytics shows what Google reported — they can differ.
---
## 📄 Lead Forms
Turn Google form fills into contacts you can call or text.
| Column | Meaning |
|--------|---------|
| **Form** | Lead Form name |
| **Customer** | Related Google Ads customer / account |
| **Leads** | Lead delivery status |
| **PowerList** | Where new contacts are stored |
**Empty list?** Click **Sync Assets**. Create the form in Google Ads first if it still does not appear.
### 🔗 Webhook URL
The yellow box shows your **Webhook URL**. AI Sync does **not** attach it for you.
1. Copy the **Webhook URL** from this tab
2. Open that Lead Form in **Google Ads**
3. Paste the URL into the form’s webhook / lead delivery setting
4. Enter the **webhook key** your AI Sync admin provided
Do this on **each** form you care about.
### ✅ Turn leads on
| Status | Meaning |
|--------|---------|
| **Leads On** | AI Sync should accept leads from that form (after the URL is pasted in Google Ads) |
| **Leads Off** | New leads from that form will not be stored here |
If no PowerList is assigned, contacts go to the company **Default** PowerList.
### 🗺️ Map Fields
1. Click **Map Fields** on the form
2. Match each Google question to an AI Sync contact field
3. Choose **skip** for questions you do not want imported
4. Click **Save mapping**
| Google question | Map to |
|-----------------|--------|
| Name / first / last | Name fields |
| Phone | Phone |
| Email | Email |
| City / State / Zip | Address fields |
Leads need: **Sync Assets** + **Webhook URL pasted in Google Ads** + **Leads On** + **field mapping**. Map phone and email for follow-up to work.
---
# Webhooks
Source: https://docs.aisync.link/setup/webhooks
Webhooks enable real-time communication between AI Sync and external systems by sending HTTP POST requests when specific events occur in your system.

Navigate to **Setup > Webhooks** to manage your webhook configurations.
### 📊 Webhook Table Overview
| Column | Description | Example |
|--------|-------------|---------|
| **#** | Sequential webhook ID | `1`, `2`, `3` |
| **Title** | Webhook name/identifier | `CRM Integration`, `Analytics Sync` |
| **Hits** | Total number of webhook calls | `1,247` |
| **Last Hit** | Most recent webhook execution | `2025-01-15 14:30:25` |
| **Created At** | Webhook creation timestamp | `2025-01-10 10:40 PM` |
| **Action** | Management options | Edit, Delete, View Endpoints |
### ⚡ Quick Actions
Create new webhook endpoints for your integrations
Monitor webhook performance and delivery status
### 👁️ Viewing Webhook Details
When you click a webhook entry in the table, you'll see a detailed view showing all of its configuration and delivery parameters.

This detail page includes:
- **Title:** The name of the webhook for easy identification.
- **URL:** The full endpoint address where HTTP POST requests are sent.
- **Method:** The HTTP method used (always `POST`).
- **Form Data:**
A complete list of fields included in the payload sent to your endpoint.
_Examples:_ `phone_number`, `email`, `first_name`, `last_name`, `address`, `city`, `country`,`new_user_field`, `powelist_id`, `wayan_cf`, and more....
This view allows you to:
- Verify the endpoint URL and method used
- See exactly which form fields are transmitted to your external system
- Easily copy field names for integration into your endpoints
Click the yellow **Back** button at the top to return to the main Webhooks overview table.
_Use this page whenever you need to audit, troubleshoot, or integrate with your webhooks more precisely._
## 🔄 Webhook Workflow
An action happens in AI Sync (call ends, agent responds, etc.)
System identifies configured webhooks for the event type
POST request with event data sent to your endpoint URL
Your system processes the data and sends acknowledgment
Failed requests are retried with exponential backoff
## 🎛️ Webhook Configuration
**Creating a New Webhook**
**How to Add a Webhook:**
1. **Go to Setup > Webhooks**
Click the yellow **Add** button to open the Add Webhook form.
2. **Fill out Webhook Details:**
- **Title:**
Enter a clear, descriptive name for your webhook.
*Example:* `Home`
- **Powelist:**
Select the appropriate option from the Powelist dropdown. This field lets you choose a predefined set or type related to your webhook logic.
- **Endpoint:**
Use the dropdown menu to select the desired endpoint or event trigger for your webhook.
*Example:* `Contact` , `Contact Delete`
*Tip: You can select a single or multiple event types as needed for your integration.*
After filling in all fields, click the purple **Submit** button to complete adding the webhook.
> **Tip:** Hover over the event field to see additional info for each webhook trigger.
## 🎪 Available Webhook Events
### 📞 Call Events
**Event**: `call.started`
**Triggered**: When a call begins
**Use Cases**: Call logging, real-time monitoring
**Event**: `call.ended`
**Triggered**: When a call completes
**Use Cases**: Call analytics, CRM updates
**Event**: `call.answered`
**Triggered**: When a call is answered
**Use Cases**: Connection tracking, response rates
**Event**: `call.transferred`
**Triggered**: When a call is transferred
**Use Cases**: Transfer logging, agent routing
### 🤖 Agent Events
**Event**: `agent.created`
**Triggered**: When a new AI agent is created
**Use Cases**: Inventory management, provisioning
**Event**: `agent.updated`
**Triggered**: When agent configuration changes
**Use Cases**: Configuration sync, audit trails
**Event**: `agent.status_changed`
**Triggered**: When agent goes online/offline
**Use Cases**: Availability tracking, monitoring
**Event**: `agent.performance`
**Triggered**: Performance threshold events
**Use Cases**: Quality monitoring, alerts
### 📊 Campaign Events
**Event**: `campaign.started`
**Triggered**: When a campaign begins
**Use Cases**: Campaign tracking, notifications
**Event**: `campaign.completed`
**Triggered**: When a campaign finishes
**Use Cases**: Results processing, reporting
**Event**: `lead.generated`
**Triggered**: When a new lead is created
**Use Cases**: CRM integration, lead routing
**Event**: `appointment.scheduled`
**Triggered**: When an appointment is booked
**Use Cases**: Calendar sync, confirmations
### 💬 SMS Events
**Event**: `sms.sent`
**Triggered**: When an SMS is delivered
**Use Cases**: Delivery tracking, billing
**Event**: `sms.received`
**Triggered**: When an SMS is received
**Use Cases**: Response handling, conversations
**Event**: `sms.failed`
**Triggered**: When SMS delivery fails
**Use Cases**: Error handling, retry logic
**Event**: `sms.replied`
**Triggered**: When recipient replies to SMS
**Use Cases**: Conversation tracking, engagement
## 📦 Webhook Payload Structure
**Standard Payload Format**
All webhooks follow a consistent JSON structure:
```json
{
"event": "call.ended",
"timestamp": "2025-01-15T14:30:25.123Z",
"webhook_id": "wh_123456789",
"data": {
// Event-specific data
},
"metadata": {
"version": "1.0",
"signature": "sha256=abc123..."
}
}
```
**Call Event Payload Example**
```json
{
"event": "call.ended",
"timestamp": "2025-01-15T14:30:25.123Z",
"webhook_id": "wh_123456789",
"data": {
"call_id": "call_987654321",
"agent_id": "agent_abc123",
"caller_number": "+1234567890",
"called_number": "+0987654321",
"call_duration": 180,
"call_status": "completed",
"call_direction": "outbound",
"recording_url": "https://recordings.ai-sync.com/call_987654321.mp3",
"transcription": "Hello, this is John calling about...",
"sentiment": "positive",
"disposition": "interested",
"tags": ["qualified", "follow-up"],
"custom_fields": {
"lead_score": 85,
"next_action": "schedule_demo"
}
},
"metadata": {
"version": "1.0",
"signature": "sha256=abc123def456..."
}
}
```
## 🔒 Security Best Practices
**Webhook Verification**
Always verify webhook signatures to ensure authenticity:
```javascript
const crypto = require('crypto');
function verifyWebhookSignature(payload, signature, secret) {
const expectedSignature = crypto
.createHmac('sha256', secret)
.update(payload)
.digest('hex');
return crypto.timingSafeEqual(
Buffer.from(signature, 'hex'),
Buffer.from(expectedSignature, 'hex')
);
}
// Middleware to verify webhooks
app.use('/webhook/*', (req, res, next) => {
const signature = req.headers['x-webhook-signature'];
const payload = JSON.stringify(req.body);
if (!verifyWebhookSignature(payload, signature, WEBHOOK_SECRET)) {
return res.status(401).json({ error: 'Invalid signature' });
}
next();
});
```
Implement rate limiting to prevent abuse:
```javascript
const rateLimit = require('express-rate-limit');
const webhookLimiter = rateLimit({
windowMs: 15 * 60 * 1000, // 15 minutes
max: 1000, // Limit each IP to 1000 requests per windowMs
message: 'Too many webhook requests'
});
app.use('/webhook', webhookLimiter);
```
Always use HTTPS endpoints for webhook URLs:
```javascript
// ✅ Correct - HTTPS endpoint
const webhookUrl = 'https://api.yoursite.com/webhook/ai-sync';
// ❌ Incorrect - HTTP endpoint (insecure)
const webhookUrl = 'http://api.yoursite.com/webhook/ai-sync';
```
**Error Handling**
AI Sync implements exponential backoff for failed webhooks:
- **Attempt 1**: Immediate
- **Attempt 2**: 30 seconds delay
- **Attempt 3**: 2 minutes delay
- **Attempt 4**: 8 minutes delay
- **Attempt 5**: 32 minutes delay
- **Final**: Webhook marked as failed after 5 attempts
Return appropriate HTTP status codes:
```javascript
app.post('/webhook', (req, res) => {
try {
// Process webhook data
processWebhookData(req.body);
// Success response
res.status(200).json({
received: true,
timestamp: new Date().toISOString()
});
} catch (error) {
// Log error for debugging
console.error('Webhook processing error:', error);
// Return error status
res.status(500).json({
error: 'Internal processing error',
message: error.message
});
}
});
```
## 📊 Monitoring & Debugging
**Webhook Logs**
Monitor webhook delivery and performance:
- Success/failure rates
- Response times
- Error codes and messages
- Retry attempts
- Average response time
- Peak load handling
- Throughput statistics
- Error rate trends
**Testing Webhooks**
Use tools like ngrok for local testing:
```bash
# Install ngrok
npm install -g ngrok
# Start your local server
node webhook-server.js
# Expose local server
ngrok http 3000
# Use the HTTPS URL for webhook configuration
# https://abc123.ngrok.io/webhook
```
Test with sample webhook payloads:
```bash
curl -X POST https://your-webhook-url.com/webhook \
-H "Content-Type: application/json" \
-H "X-Webhook-Signature: sha256=test-signature" \
-d '{
"event": "call.ended",
"timestamp": "2025-01-15T14:30:25.123Z",
"data": {
"call_id": "test_call_123",
"call_duration": 120,
"sentiment": "positive"
}
}'
```
---
# Trigger Hooks
> Advanced automation system for triggering custom actions based on AI Sync events and conditions
Source: https://docs.aisync.link/setup/trigger-hooks
# ⚡ Trigger Hooks
Trigger Hooks provide a powerful automation framework that executes custom actions when specific events occur in your AI Sync system. Unlike webhooks that send data to external endpoints, trigger hooks perform internal actions and workflows within your AI Sync environment.
## 🔄 Trigger Hook Workflow
System monitors for specified events (calls, agent actions, campaigns)
Trigger conditions are evaluated against event data and context
Qualifying events trigger the configured hook actions
Multiple actions can be executed sequentially or in parallel
Execution results and outcomes are logged for monitoring
## 📊 Trigger Hook vs Webhooks Comparison
| Feature | Webhooks | Trigger Hooks |
|---------|----------|---------------|
| **Purpose** | Send data to external systems | Execute internal actions |
| **Direction** | Outbound HTTP requests | Internal processing |
| **Response** | Depends on external endpoint | Immediate internal execution |
| **Actions** | Limited to HTTP calls | Multiple action types available |
| **Latency** | Network dependent | Minimal internal latency |
| **Reliability** | External system dependent | Internal system controlled |
| **Use Cases** | CRM integration, notifications | Automation, data processing, workflows |
## 📋 Trigger Hook Management
Navigate to **Setup > Trigger Hooks** to manage your automation configurations.

### 📑 Trigger Hook Table Overview
| Column | Description | Example |
|--------|-------------|---------|
| **#** | Sequential hook ID | `1`, `2`, `3` |
| **Title** | Hook name/identifier | `Lead Qualification`, `Follow-up Scheduler` |
| **Updated At** | Last modification timestamp | `09-09-2025 10:27 AM` |
| **Created At** | Hook creation timestamp | `09-09-2025 10:23 AM` |
| **Action** | Management options | Edit, Delete, Duplicate, Test |
### ⚡ Quick Actions
Create new trigger hooks for your automation needs
Modify existing hook settings and conditions
## 🎛️ Trigger Hook Configuration
### 🆕 Creating a New Trigger Hook
Navigate to Setup > Trigger Hooks and click "Add"
- **Title**: Descriptive name for the trigger hook
- **Description**: Optional detailed description of the hook's purpose
- **Status**: Enable/disable the hook
- **Trigger When**: Select the event type that activates the hook
- **Conditions**: Set up conditional logic for when the hook should execute
- **Filters**: Apply additional filters based on data attributes
- **Hook URL**: Internal or external endpoint to call
- **Hook Method**: HTTP method (GET, POST, PUT, DELETE)
- **Type**: Define the hook type and processing method
- **Role**: Specify user role requirements for execution
Test the trigger hook with sample data and activate for live events

### 🏷️ Field Definitions
**Title**
- Purpose: Human-readable identifier for the trigger hook
- Format: Text string (max 255 characters)
- Example: "Lead Qualification Hook", "Follow-up Scheduler"
**Description**
- Purpose: Detailed explanation of hook functionality
- Format: Text area (optional)
- Example: "Automatically qualifies leads based on call sentiment and duration"
**Trigger When**
- Purpose: Defines the event that activates the hook
- Options:
- `Power List Dial 1 Time` - After first dial attempt
- `Power List Dial 2 Times` - After second dial attempt
- `Power List Dial 3 Times` - After third dial attempt
- `Call Ended` - When any call completes
- `Call Answered` - When call is answered
- `Agent Response` - When AI agent responds
- `Lead Generated` - When new lead is created
- `Appointment Scheduled` - When appointment is booked
- `SMS Sent/Received` - SMS events
- `Campaign Started/Ended` - Campaign lifecycle events
**Conditions**
- Purpose: Additional logic to filter when hook executes
- Format: Conditional expressions
- Examples:
- `call_duration > 60` (calls longer than 1 minute)
- `sentiment == "positive"` (positive sentiment only)
- `lead_score >= 80` (high-quality leads only)
**Hook URL**
- Purpose: Endpoint URL to send hook data
- Format: Valid HTTP/HTTPS URL
- Examples:
- `https://api.yourcrm.com/webhook/leads`
- `https://app.hookk.com/webhook`
- `https://internal.ai-sync.com/process-lead`
**Hook Method**
- Purpose: HTTP method for the hook request
- Options: `GET`, `POST`, `PUT`, `DELETE`, `PATCH`
- Default: `POST`
- Usage: POST for creating data, PUT for updates, GET for queries
**Type**
- Purpose: Categorizes the hook for processing and organization
- Options:
- `Lead Processing` - Lead qualification and routing
- `CRM Integration` - Customer relationship management
- `Analytics` - Data analysis and reporting
- `Notification` - Alerts and notifications
- `Workflow` - Business process automation
- `Other` - Custom or miscellaneous hooks
**Role**
- Purpose: Defines which user roles can trigger this hook
- Options:
- `Agent` - AI agents can trigger the hook
- `Admin` - Administrator users only
- `Manager` - Manager level and above
- `User` - Any authenticated user
- `System` - System-level automated triggers
- Security: Ensures proper access control for sensitive operations
### 📝 Edit Trigger Hook

When editing existing trigger hooks, you can modify all configuration parameters while maintaining execution history and performance metrics.
## 🎪 Available Trigger Events
**Triggers**:
- `Call Started/Ended/Answered`
- `Power List Dial Attempts`
- `Call Transferred`
**Use Cases**:
- Real-time monitoring
- Progressive lead nurturing
- CRM updates
**Data**: Call status, duration, participant info, recordings
**Triggers**:
- `Agent Response Generated`
- `Escalation Required`
- `Performance Threshold`
**Use Cases**:
- Quality monitoring
- Performance optimization
- Training triggers
**Data**: Agent metrics, response content, conversation context
**Triggers**:
- `Lead Generated/Qualified`
- `Status/Score Changed`
**Use Cases**:
- CRM synchronization
- Lead routing
- Sales notifications
**Data**: Demographics, qualification scores, interaction history
**Triggers**:
- `Campaign Started/Completed`
- `Milestone Reached`
- `Performance Alert`
**Use Cases**:
- Performance monitoring
- Budget management
- Result processing
**Data**: Campaign metrics, progress, ROI statistics
**Triggers**:
- `Scheduled/Confirmed/Cancelled`
- `Rescheduled`
**Use Cases**:
- Calendar integration
- Reminder automation
- No-show prevention
**Data**: Appointment details, participant info, availability
**Triggers**:
- `Follow-up Due`
- `Task Created`
- `Deadline Approaching`
**Use Cases**:
- Task automation
- Deadline management
- Customer retention
**Data**: Task details, assigned members, due dates
---
# Profile
> Complete guide to creating and managing 10DLC profiles for compliant A2P messaging with dual provider support
Source: https://docs.aisync.link/setup/10dlc/profile
Create and manage your business profiles for compliant Application-to-Person (A2P) messaging across both Plivo and Twilio providers. Your 10DLC profile serves as the foundation for all messaging operations, ensuring regulatory compliance and optimal deliverability.
### 📊 Dashboard Overview
The 10DLC Profile dashboard gives you a clear, tabular view of all your business profiles and their compliance status. Below is a representative screenshot of the dashboard interface:
**Profile Table Columns:**
- **Profile Alias**: Internal friendly name for your profile (e.g., "Company MainProfile", "Demo Test")
- **Company Name**: Your business's legal name (must match registration)
- **Customer Type**: Select between "DIRECT" (registered business) or "RESELLER"
- **Entity Type**: Legal structure, such as "PRIVATE", "GOVERNMENT", etc.
- **Industry**: Select the industry classification for your business (e.g., "PROFESSIONAL")
- **Rizz Dial Status**: Displays the integration status of your profile with Rizz CMS, indicating if it's linked (toggle or icon).
- **Created At**: Date and time the profile was created
- **Action**: Options to edit or delete a profile (with confirmation)
**Twilio Status Indicators:**
- 🟢 **Active**/**Approved**: Profile active and messaging enabled
- 🟡 **Pending**: Awaiting review by carrier
- 🟠 **In Review**: Profile is under carrier examination
- 🔴 **Twilio Rejected**: Carrier denied the profile—review the provided feedback before resubmitting
- ⚫ **Disabled**: Profile deactivated; messaging blocked
_Note: Use the "Add Profile" button to create a new 10DLC profile. Use the red "Cancel" button in Actions to remove the draft profile before completion._
For complete transparency, the dashboard also lists the total number of profiles and supports sorting by any field.
## ➕ Creating a New 10DLC Profile
### 🚪 Step 1: Access Profile Creation
1. Navigate to **Setup > 10DLC > Profile**
2. Click the **"Add Profile"** button
3. The system will display the profile creation form
### 📝 Step 2: Complete Profile Information
**Core Profile Details:**
| Field | Description | Requirements | Example |
|-------|-------------|--------------|---------|
| **Profile Alias*** | Internal reference name | 3-50 characters, unique | "Main Business Profile" |
| **Company Name*** | Legal business name | Exact match to registration | "Volt Tech Solutions LLC" |
| **EIN*** | Federal Tax ID | 9 digits (XX-XXXXXXX) | "12-3456789" |
| **Customer Type*** | Business classification | Select from dropdown | "DIRECT" or "RESELLER" |
| **Entity Type*** | Legal structure | Must match documentation | "PRIVATE", "PUBLIC", "GOVERNMENT" |
**EIN Format Validation:** The system automatically validates EIN format and checks against IRS databases. Use format XX-XXXXXXX or XXXXXXXXX (9 digits total).
**Critical Accuracy:** Company name and EIN must exactly match your business registration documents. Mismatched information is the #1 cause of profile rejections.
**Industry Classification & Business Information:**
| Field | Description | Impact on Approval | Best Practices |
|-------|-------------|-------------------|----------------|
| **Plivo Industry*** | Primary business vertical | Affects approval speed | Choose most specific category |
| **Twilio Industry*** | Secondary classification | Provider-specific optimization | Can differ from Plivo industry |
| **Website*** | Company website URL | High - validates legitimacy | Ensure site is live and professional |
| **Business Registration ID*** | Official business identifier | Required for verification | Use primary registration number |
| **Business Type*** | Detailed business structure | Affects compliance requirements | Match legal documentation exactly |
**Industry Selection Guidelines:**
- Technology/Software
- Healthcare
- Financial Services
- Education
- **Approval Time:** 2-3 days
- Retail/E-commerce
- Professional Services
- Real Estate
- Manufacturing
- **Approval Time:** 3-5 days
**Website Requirements:** Your website must be live, professional, and include complete contact information. The system will automatically verify website accessibility during submission.
## 📍 Profile Address & Contact Details
### 🏠 Address Information Section
**Required Address Fields:**
| Field | Description | Validation Rules | Example |
|-------|-------------|------------------|---------|
| **Customer Name*** | Business name for address | Must match company name | "Volt Tech Solutions LLC" |
| **Street*** | Primary street address | No PO boxes, must be physical | "123 Business Ave" |
| **Street Secondary** | Additional address info | Optional | "Suite 100, Floor 2" |
| **City*** | Business city | USPS verified | "San Francisco" |
| **State*** | Business state | Valid US state | "California" |
| **Postal Code*** | ZIP code | 5 or 9 digit format | "94105" or "94105-1234" |
| **Country*** | Business country | Default: "US" | "United States" |
### 👤 Authorized Contact Details
**Contact Information Requirements:**
| Field | Purpose | Requirements | Tips |
|-------|---------|--------------|------|
| **First Name*** | Primary contact person | Legal name, must be authorized | Use CEO, COO, or authorized agent |
| **Last Name*** | Contact surname | Must match government ID | Ensure spelling accuracy |
| **Email*** | Business email address | Business domain preferred | Use monitored email address |
| **Title*** | Contact's position | Business-appropriate title | "CEO", "Operations Manager" |
| **Job Title*** | Specific role | Select from dropdown | Choose most appropriate option |
| **Phone*** | Business phone number | Valid 10-digit US number | Use main business line |
### ℹ️ Additional Business Details
**Supplementary Information:**
| Field | Description | Impact | Requirements |
|-------|-------------|--------|--------------|
| **Call Type*** | Primary messaging use case | Affects approval category | Select from approved list |
| **Call Per Month*** | Expected message volume | Determines tier assignment | Realistic estimate required |
| **Employee Count*** | Company size indicator | Trust score calculation | Current employee count |
| **Stock Symbol** | Public company identifier | Optional for public companies | NASDAQ/NYSE symbol |
| **Stock Exchange** | Trading exchange | Required if stock symbol provided | Select appropriate exchange |
| **Alt Business ID** | Additional identifier | Optional verification | DUNS, LEI, or other ID |
| **Alt Business ID Type** | ID classification | Required if Alt ID provided | Select appropriate type |
| **EIN Issuing Country** | Tax authority country | Default: "US" | Country of tax registration |
## ✏️ Editing Existing Profiles
### ⚙️ Profile Edit Interface
**Edit Capabilities:**
- **Basic Information**: Update company details and contact info
- **Business Details**: Modify industry classifications and website
- **Address Updates**: Change business address and contact details
- **Additional Information**: Update volume estimates and identifiers
**Edit Restrictions:**
- **EIN Changes**: Requires new profile creation
- **Company Name**: Major changes need re-verification
- **Entity Type**: Cannot be changed after approval
- **Provider Settings**: Read-only after initial setup
**Additional Editing Options:**
- **Contact Details**: Modify business phone numbers and email addresses.
- **Brand Information**: Change profile display name and public-facing details.
- **Industry Classification**: Update NAICS or SIC codes for your business.
---
# Brand
> Complete guide to establishing your business identity for compliant A2P messaging with comprehensive brand registration, verification, and management
Source: https://docs.aisync.link/setup/10dlc/brand
# 🏷️ 10DLC Brand Registration & Management
Establish your business identity for compliant Application-to-Person (A2P) messaging by registering and managing your 10DLC brand with wireless carriers. The brand dashboard gives you a centralized interface to review and manage all your brands, as illustrated below.
### 📋 Brand Listing Table
The table lets you view, sort, and manage all registered brands. The columns you will find are:
| Column | Description | Example/Values |
|------------------|-----------------------------------------------------|-------------------------------|
| **Brand Alias** | Custom name you assign to your brand | GROWBRAND |
| **Provider** | Messaging provider associated with the brand | TWILIO |
| **Profile** | Linked 10DLC Profile or company registration | Company-Dawn459A |
| **Brand Type** | Brand level determined by profile/provider | STANDARD, PREMIUM, etc. |
| **Registration Status** | Current approval status | PENDING, PROCESSED, APPROVED |
Register a new brand quickly via the “Register Brand” button — guided process ensures speed and accuracy.
Instantly delete brands or update their status using the action buttons.
## ❓ What is a 10DLC Brand?
A 10DLC Brand is your business's verified digital identity within the messaging ecosystem. Think of it as your "business license" for professional SMS messaging. It represents:
Your legal company information, cross-verified with state business registries and federal databases
Carrier-verified reputation (0-100 scale) affecting message deliverability, sending volume limits, and filtering bypass
Regulatory standing ensuring adherence to TCPA, CAN-SPAM, and carrier-specific messaging guidelines
**Why Brand Registration Matters:** Unregistered messaging can result in 70%+ delivery failures, automatic spam filtering, and potential number blocking. Registered brands see 95%+ delivery rates and can send up to 100,000+ messages daily.
## 📝 Brand Registration Process
### ⚡ Quick Registration Form
The brand registration process has been streamlined to focus on essential information required for carrier approval. The simplified form reduces registration time while maintaining compliance requirements.
| Field | Description | Requirements | Impact |
|-----------------|--------------------------------------|---------------------------------------|--------------------------------------------|
| **Provider*** | Select your messaging provider | Required, choose from supported list | Determines routing and approval workflow |
| **Profile*** | Link to approved 10DLC Profile | Required, select from available | Sets business verification and eligibility |
| **Brand Alias***| Unique brand identifier | Required, unique, 2–50 characters | Used for identification and reporting |
| **Brand Type** | Brand classification (read-only) | Auto-populated from profile/provider | Affects messaging features and throughput |
**All fields marked with (*) are mandatory and must be completed to enable form submission. Real-time validation prevents errors before you submit.**
**Important:** "Brand Type" is automatically determined by your selected profile and provider. If no profiles are available, first create one at [Setup → 10DLC → Profile](/setup/10dlc/profile).
### ▶️ Registration Steps
Select your messaging provider and an approved 10DLC profile. These choices determine how your brand is routed and which brand types are available.
- Choose from supported SMS providers
- Ensures correct carrier routing
- Required for approval by downstream networks
- Business and contact info fully verified
- Address confirmed and compliant
- Profile must be in "Approved" status
If you do not see your desired profile, create one under [Setup → 10DLC → Profile](/setup/10dlc/profile).
Choose your Brand Alias (public brand identifier):
| Requirement | Description | Example |
|----------------|-------------------------------------------|--------------------|
| **Length** | 2-50 characters | `MyCompany` |
| **Uniqueness** | Cannot duplicate an existing brand | `Acme2024` |
| **Characters** | Letters, numbers, spaces, hyphens allowed | `Acme-Tech LLC` |
| **Permanent** | Cannot change after registration | |
- Use your full company name or common abbreviation
- Avoid unsupported characters or emoji
- Be clear, professional, and recognizable for end users
Brand Alias is permanent after submission and cannot be edited later.
Review your selections. "Brand Type" is read-only and set automatically.
**Before submitting, the system will verify:**
- All required fields are filled
- Brand alias is unique to your account
- Profile is in "Approved" status
- Necessary business info is complete
- Form cannot be submitted until all validations pass
- After clicking Submit, your application enters the carrier queue
- Status updates and notifications are sent in real time
If you see "Please fill required fields!" double-check the Brand Alias, Provider, and Profile selections before submitting.
A successful registration appears instantly in your brand list, with status "Processing" until carrier review is complete.
---
# Campaign
> Step-by-step guide to understanding, creating, and configuring compliant Application-to-Person campaigns
Source: https://docs.aisync.link/setup/10dlc/campaign
# 📣 10DLC Campaign Management
A 10DLC Campaign allows you to send business SMS messages at scale with compliance and deliverability. Campaigns are organized containers for your messaging use cases, ensuring that each set of communications aligns with industry and carrier regulations.
## 🎯 Purpose of a 10DLC Campaign
A 10DLC (10-Digit Long Code) Campaign is designed to:
- Enable bulk, automated, and interactive communication with your customers.
- Maintain necessary compliance for carriers and industry standards (TCPA, CTIA).
- Improve sender reputation which impacts delivery and throughput.
Businesses use 10DLC campaigns for notifications, alerts, customer support, verifications, and marketing purposes—all while ensuring customers can identify, trust, and opt in/out of communications.
### 📊 Campaign Dashboard Table
The campaign dashboard displays all your existing 10DLC campaigns in a filterable table, letting you quickly view status and manage each one. The columns in this table are:
| Column | Description | Example/Values |
|-----------------------|---------------------------------------------------------------------|---------------------------------|
| **Campaign Alias** | The internal name you assign to the campaign for easy tracking | Onboarding Campaign |
| **Provider** | Messaging provider handling the campaign's SMS traffic | Ai Sync, Twilio |
| **Brand ID** | The registered brand this campaign is linked to | 245127 |
| **Vertical** | Industry/category for compliance | EDUCATION, RETAIL, HEALTHCARE |
| **Use Case** | The intended messaging use (notifications, marketing, customer care)| Notification, Support |
| **Registration Status** | Carrier approval status for the campaign | APPROVED, PENDING, REJECTED | |
| **Action** | Manage each campaign (edit, delete, view details) | Edit/Delete |
You can filter, sort, or search campaigns using the dashboard controls. If no campaigns are shown, click **"Add New Campaign"** to get started!
## ➕ How to Add a Campaign
1. **Go to Setup > 10DLC > Campaign** in your dashboard.
2. Click the **"Add New Campaign"** button.
3. Complete each section of the campaign form (details below).
4. Review your information for accuracy and compliance.
5. Submit your campaign for validation and carrier approval.
Campaigns let you define each specific messaging purpose (e.g., account alerts, marketing, support) for better deliverability and compliance.
Add campaigns in minutes with step-by-step fields designed to meet all US carrier requirements.
## 📝 Campaign Fields Explained
To create a successful campaign, you must complete several important fields. Here's how each is used:
### 1️⃣ Basic Campaign Details
- **Campaign Alias**
*Internal campaign name for easy tracking. Example: "Onboarding Campaign".*
- **Provider**
*Pre-set by your account (e.g., "Ai Sync"). Ensures the right SMS carrier is used.*
- **Brand Selection**
*Connects the campaign to your registered business brand. Determines compliance and trust score.*
- **Vertical Selection**
*Lets you choose your industry (like "EDUCATION" or "RETAIL"). Impacts approval and compliance.*
### 2️⃣ Campaign Description & Message Flow
- **Campaign Description**
*Explain the campaign's purpose and message content. Example: Sending 2FA codes or appointment reminders. Minimum 40 characters.*
- **Message Flow Documentation**
*Detail the customer journey, opt-in, frequency, and opt-out process. Example: "Customers opt-in via website... can reply STOP to quit messaging."*
### 3️⃣ Use Case & Sample Messages
- **Campaign Type Selection**
*Pick message throughput:*
- Low Volume: up to 1,000/day
- Standard: up to 10,000/day
- High Volume: up to 100,000+/day
- Enterprise: Unlimited (carrier approval required)
- **Sub Use Cases**
*Select specific purposes (only for Low Volume campaigns), e.g. "Customer Care", "Marketing".*
- **Sample Messages**
*Provide at least 2 real examples, each with opt-out instructions (e.g., "STOP to opt out"). Minimum 20 characters each.*
**Example Messages:**
```text
1. "Welcome to Acme! We'll keep you updated. Reply STOP to opt out."
2. "Your support ticket is received. We'll be in touch. STOP to opt out."
```
### 4️⃣ Campaign Attribute Settings
Configure compliance toggles and advanced features:
#### 🔒 Required Attributes (Always enabled)
- **Subscriber Opt-In**: Customers must explicitly agree to receive texts.
- **Subscriber Opt-Out**: Customers can reply STOP to unsubscribe.
- **Subscriber Help**: Customers can reply HELP for support info.
#### ⚙️ Optional Features (Enable as appropriate)
- **Embedded Phone**: Lets you include clickable phone numbers within SMS messages.
- **Age Gated**: Must be enabled for campaigns related to age-restricted (18+) content.
- **Affiliate Marketing**: Enable if the campaign content contains affiliate or referral promotions.
- **Direct Lending**: Required for campaigns involving credit, lending, or related financial products.
- **Embedded Link**: Allows SMS messages to contain clickable web links.
> **💡 Tip:** Properly filling all fields and toggles ensures your campaign passes carrier review and reaches your recipients successfully.
---
# Twilio Brand Registration
> Complete guide to registering brands directly in Twilio console and retrieving Brand Registration SID and Trust Hub A2P Bundle SID
Source: https://docs.aisync.link/setup/10dlc/twilio-brand-registration
# 🟦 Twilio Brand Registration
**Important:** If you are using your own Twilio account, you need to register your brand directly in the Twilio console and retrieve the necessary SIDs for integration. This process ensures proper 10DLC compliance and optimal message deliverability.
Register brands directly in Twilio console for customers using their own Twilio accounts
Extract Brand Registration SID and Trust Hub A2P Bundle SID for system integration
## 🎯 When to Use Twilio Brand Registration
**You must use this method when:**
- **You are using your own Twilio account** - This is mandatory for customers with their own Twilio accounts
- Customer prefers to manage their own 10DLC compliance
- Customer needs direct control over brand registration process
- Integration requires specific Twilio SIDs
**Mandatory Requirement:** If you are using your own Twilio account, you MUST register your brand in the Twilio console. This process requires administrative access to your Twilio console and you must complete the brand registration yourself.
## 📋 Prerequisites
**Before You Begin:** This guide is specifically for customers who are using their own Twilio account. If you are using our managed Twilio service, please refer to the standard [Brand Registration](/setup/10dlc/brand) documentation instead.
Before starting the Twilio brand registration process, ensure:
- Customer has an active Twilio account
- Customer has administrative permissions in Twilio console
- Customer has completed their Twilio Trust Hub profile
- Customer has all required business documentation ready
- Customer understands 10DLC compliance requirements
## 🚀 Step-by-Step Registration Process
### 🖥️ Access Twilio Console
1. **Navigate to Twilio Console**
- Go to [console.twilio.com](https://console.twilio.com)
- Log in with customer's Twilio credentials
- Ensure you're in the correct account
2. **Locate A2P Brand Registration**
- In the left sidebar, expand **"Develop"**
- Under **"Messaging"**, expand **"Regulatory Compliance"**
- Click on **"Brands"**
### 📝 Step 1: Register New Brand
1. **Click "Register new Brand"**
- On the A2P Brands page, click the blue **"+ Register new Brand"** button
- This will open the brand registration form
2. **Complete Brand Information**
- Fill in all required business details
- Ensure information matches official business registration
- Upload any required documentation
3. **Submit for Review**
- Review all information for accuracy
- Submit the brand registration
- Note the registration status will show as "In progress"
### ⏳ Monitor Registration Status
**Status Indicators:**
| Status | Description | Next Steps |
|--------|-------------|------------|
| **In Progress** | Brand is under review by TCR | Wait for approval (up to 7 days) |
| **Approved** | Brand is approved and active | Proceed to retrieve SIDs |
| **Rejected** | Brand was rejected | Review feedback and resubmit |
| **Pending** | Awaiting initial review | Monitor for status updates |
**Review Timeline:** Brand registration typically takes 2-7 business days. If status hasn't changed within 7 days, contact Twilio support.
**Trust Hub Customer Profile (TCR) Review:**
The TCR reviews the information provided in the customer profile before registering the brand. This process includes:
- Business information verification
- Address validation
- Contact details confirmation
- Compliance checks
**Important:** Ensure all business information is accurate and matches official documentation. Inaccurate information will result in rejection.
### 🔍 Step 2: Retrieve Required SIDs
Once the brand is approved, you need to retrieve two critical SIDs:
**Navigate to Brand Details**
- Click on the approved brand name in the brands list
- This opens the Brand Details page
### 🆔 Step 3: Brand Registration SID
**Locate Brand Registration SID**
- In the Brand Details section, find **"Brand registration SID"**
- Copy the SID using the copy icon next to it
### 📦 Step 4: Trust Hub A2P Bundle SID
**Find Trust Hub A2P Bundle SID**
- On the same Brand Details page
- Locate **"Trust Hub A2P Bundle SID"**
- Copy the SID using the copy icon
## 📊 Brand Details Overview
The Brand Details page provides comprehensive information about the registered brand:
| Field | Description | Usage |
|-------|-------------|-------|
| **Brand Registration SID** | Unique identifier for the brand | Required for campaign creation |
| **Trust Hub A2P Bundle SID** | Bundle identifier for messaging | Used for message routing |
| **Connected Customer Profile SID** | Links to customer profile | System integration reference |
| **Registration Status** | Current approval status | Monitor for changes |
| **Brand Type** | Standard, Premium, etc. | Affects messaging capabilities |
| **External Brand ID** | Custom brand identifier | Optional reference field |
## 🔧 Integration Steps
### For System Integration
1. **Collect Required SIDs**
```
Brand Registration SID: [Retrieved from Twilio console]
Trust Hub A2P Bundle SID: [Retrieved from Twilio console]
```
2. **Configure in Your System**
- Add SIDs to customer's account settings
- Configure messaging provider settings
- Test message delivery
3. **Verify Integration**
- Send test messages
- Monitor delivery rates
- Check for any error messages
### 🪧 For Campaign Creation
Once SIDs are retrieved, customers can:
- Create 10DLC campaigns using their brand
- Set up message templates
- Configure delivery settings
- Monitor campaign performance
## ⚠️ Important Considerations
**Critical Requirements:**
- Brand registration must be completed before creating campaigns
- SIDs are required for all messaging operations
- Keep SIDs secure and don't share them publicly
- Monitor brand status regularly for any changes
**Best Practices:**
- Document all SIDs in a secure location
- Set up monitoring for brand status changes
- Keep business information up to date
- Maintain compliance with carrier requirements
## 🆘 Troubleshooting
### 🛑 Common Issues
**Brand Registration Stuck "In Progress"**
- Wait up to 7 business days
- Contact Twilio support if no change
- Verify all information is accurate
**SIDs Not Visible**
- Ensure brand is fully approved
- Check user permissions in Twilio console
- Verify you're in the correct account
**Integration Errors**
- Double-check SID accuracy
- Verify brand status is "Approved"
- Ensure proper API configuration
### 💬 Getting Help
If you encounter issues:
1. Check Twilio documentation
2. Contact Twilio support with brand details
3. Verify account permissions
4. Review business information accuracy
Contact Twilio support for brand registration issues
Review Twilio's 10DLC documentation for detailed guidance
---
# SIPNEX application
> Send your company details, documents, and signature so SIPNEX can review the account.
Source: https://docs.aisync.link/setup/sipnex-application
**SIPNEX application** is how you send your company to SIPNEX for review. Open it from **Setup → SIPNEX application**, fill it in once, and submit. The same page then shows the status, the reference number, and a preview of what you sent.
Only a company owner or an admin can submit. Anyone else sees **Ask an account admin**. The first section comes from your business profile, so finish **Settings → Business Detail** before you start.
## ✍️ Fill in the application
The form has five sections. Work through them in order, then submit once.
Legal name, EIN, entity, address, and website are copied from your business profile. Check them here. To change them, update the business profile — this form does not ask for them again.
Add the main telephone, company email, state of incorporation, and year of incorporation. Then enter the person who will sign: name, title, phone, and email.
Say whether the legal name is spoken on calls, and describe the campaign. Add the main contact, the billing contact, and the traceback contact. The traceback contact must be able to answer within 24 hours.
Answer the three questions: legal action, telephone solicitations, and AI or a prerecorded voice. Extra questions open only when an answer needs them.
Upload a driver's license and proof of incorporation. Each file must be a PDF or an image, and 4 MB or smaller. If you answered yes to telephone solicitations or to AI or a prerecorded voice, a consent document is required too.
The platform is **RizzDial**. If a platform name is filled in, tick **Authorize platform**. Then tick good standing, the terms, and the certification. The signature name must match the signer name exactly. Click **Submit application**.
## ✅ After you submit
The form is replaced by a preview. You will see the status and a reference number. Keep that reference — it is how this application is tracked. Do not start a second application for the same company.
## 📨 When SIPNEX asks for more
If the status is **More information needed**, an alert shows the note from SIPNEX. Click **Send the requested files** and upload only the files they asked for (for example an EIN letter or another document). Those files are added to the **same** application. The reference number does not change.
| What you see | What it means |
|--------------|----------------|
| **More information needed** | SIPNEX is waiting on the files named in the alert |
| **In review** | SIPNEX has the application and is reviewing it |
| **Approved** or **Live** | The review is finished |
| **Declined** | SIPNEX did not approve this application |
## 🤖 Set it up with your AI assistant (MCP)
With [MCP connected](/connect-mcp), you can check or send the application by chat. Your assistant shows a preview and waits for you to say yes before it submits or sends files.
| You say | Your assistant does |
|---------|---------------------|
| "Show my SIPNEX application" | Reads the status, reference, and anything still missing (**sipnex_application_get**) |
| "Submit my SIPNEX application" | Checks the business profile, shows a preview, and submits only after you confirm (**sipnex_application_submit**) |
| "Send the files SIPNEX asked for" | Uploads only those files, after you confirm (**sipnex_application_send_files**) |
Company details are taken from the business profile. You do not paste them into the chat.
## 🛠️ Troubleshooting
| What you see | What to do |
|--------------|------------|
| The company section is empty or incomplete | Finish [Business Detail](/settings/business-detail), then open the application again |
| **Ask an account admin** | You are not the owner or an admin. Ask one of them to submit |
| Already submitted | Use the preview on this page. If SIPNEX asks for files, use **Send the requested files** |
| The signature does not match | Type the signature exactly as the signer name, including spaces and capitals |
| A file was rejected | Use a PDF or an image (PNG, JPG, WEBP, HEIC, or GIF), 4 MB or smaller |
## Related
- [Business Detail](/settings/business-detail) — the company profile this form reuses
- [10DLC profile](/setup/10dlc/profile) — the separate texting registration
- [MCP](/connect-mcp) — connect your AI assistant
---
# Call Reports
> User guide for Reports → Call: filters, call table columns, search, and export.
Source: https://docs.aisync.link/reports/calls
# 📞 Call Report (Reports → Call)
The **Call** option under **Reports** is where you review **phone calls** for your organization: who was involved, numbers, outcomes, length, and when each call happened. Everything below is about that **Call** report only.
**👀 What you see here**
**Phone calls** show in a table—**one row per call**. The table updates when you change filters and apply them, or when you change the date range (where that refreshes on its own).
At the top you pick **which time range** and **which calls** matter. Each row below is **one call** that matches those choices.
## 🛠️ Filters
**🗓️ Date range**
Controls how **Start Date** and **End Date** are filled:
- **Custom dates** — You enter **Start Date** and **End Date** yourself; those fields are editable.
- **Presets** (*Today*, *Yesterday*, *This week*, *Last 7 days*, *This month*, *Last month*, and similar) — The dates are set for you and stay fixed for that preset.
If you are **not** on custom dates, changing the date range refreshes the **calls** shown. On **custom dates**, set start and end, then use **Filter** (or another control that refreshes).
Call times use **your account time zone**, so “today” matches your local calendar day.
**📅 Start date and end date**
Work with **Date range**. They set the **from–to** window for **calls** in the table. Editable only when **Custom dates** is selected.
**✅ Call status**
Limits **calls** to one outcome, or shows **all** outcomes:
- **All** — Every outcome.
- **Answered**, **Completed**, **Busy**, **No-answer**, **Failed**, **Missed Call**, **Cancel** — Only **calls** with that outcome.
Pick a value and apply it (for example **Filter**, or change the date range where it auto-refreshes).
**⏱️ Minimum duration**
Keeps **calls** whose **length** is **at least** what you select (from zero up to two hours). Shorter **calls** are hidden—useful when you only care about **calls** that ran long enough.
**⏳ Maximum duration**
Optional upper cap on length:
- **No limit** — No maximum.
- Any other value — **Calls** **longer** than that are excluded.
Together with minimum duration, you can focus on **calls** in a certain length range.
**🔄 Call direction**
- **All** — Incoming and outgoing **calls**.
- **Inbound** — **Calls** you received.
- **Outbound** — **Calls** you placed.
**👤 Agents**
Shows **calls** for **one** person, or—where the menu includes it—**everyone** (**All**). The names are people who can place or receive **calls** in your setup.
If the team is not set up, you may see a single placeholder instead of names.
**🔎 Filter**
Applies your choices and reloads the **call** table. Use it after changing something that does not refresh by itself (for example **custom** start and end dates).
**💾 Download (export)**
Saves a spreadsheet file using the **same** choices as the Call Report (dates, status, duration limits, direction, agent). Pick a wide date range to download your **whole** call history; large downloads take a little longer but are not cut short.
Each row has: date, first and last name, from and to numbers, direction, status, **outcome** (for example *Connected*, *Voicemail*, *Screened*), duration, talk seconds, who answered, a recording link, and the call's **summary** and **full transcript**. It opens cleanly in Excel and Google Sheets.
Coaching tip: filter to one rep and a week, download, and read the transcripts of their longest calls first. That is where the objections and the wins are.
## 📋 What each column means (calls)
**#️⃣ Sr. No.**
A reference number for the row. Newer calls appear higher up.
**🧑 First name / Last name**
The **contact** linked to that **call**, when known. A dash means the name was not available.
**📞 From number**
Where the **call** came from (caller side).
**☎️ To number**
Where the **call** went (destination).
**🎧 Recording & Transcript**
What the call left behind:
- A one-line **summary** of the conversation, when there is one.
- A **Recording** button when the call was recorded.
- A **Transcript** button when the conversation was transcribed.
Either button opens the call in a window with the summary, an audio player and the **full transcript**. Use **Copy** to paste the transcript into coaching notes. Reps see only their own calls; managers see their team; owners see everyone.
Transcripts are saved for calls from **25 September 2026** onward. Earlier calls
have recordings but no transcript, because the words were never stored.
**🏷️ Status**
**How the call ended**, plus:
- A small **incoming** or **outgoing** marker for quick direction.
- For completed calls with a **recording**, a **player** so you can listen without leaving the Call Report.
**🗓️ Dated**
When that **call** was logged, in **your** time zone.
## 🆕 What changed recently
**Every answered call now keeps its transcript and a short summary**, saved by
the phone system itself when the call ends, so nothing depends on the rep's
browser staying open.
**Read them here.** The old *Transcription* column showed text messages, which
are empty on calls. It is now **Recording & Transcript**, with a viewer for
each call.
**Download your full history.** The export now includes outcome, talk time,
the summary and the full transcript, and it no longer stops on large date
ranges.
**Recordings go to GoHighLevel.** If GoHighLevel is connected, each call's
recording now appears on the call in the contact's GoHighLevel conversation.
See [What's New](/go-live/changelog) for the full history.
---
# SMS Report
> User guide for Reports → SMS: filters, message table, search, and CSV export.
Source: https://docs.aisync.link/reports/sms
The SMS Report lists text messages connected to your organization’s numbers. You can narrow the list by time, carrier, phone number, how the message moved, and delivery state, then review details in one place or save a copy to your computer.
**🔎 Choosing which messages to show**
### 🗓️ Time period
Use **Date Range** to pick a preset or custom dates.
- **Custom dates** — Unlocks **Start Date** and **End Date** so you can set the exact range yourself.
- **Today** — From the start of today through the end of today (this is the default when you open the report).
- **Yesterday** — The full previous calendar day.
- **This Week (Sun – Today)** or **This Week (Mon – Today)** — From the start of the chosen week through today.
- **Last 7 Days** — The seven days ending today.
- **Last Week (Sun – Sat)** or **Last Week (Mon – Sun)** — The last full week in that pattern.
- **Last Business Week (Mon – Fri)** — Monday through Friday of the previous business week.
- **Last 14 Days** — Fourteen days ending today.
- **This Month** — From the first day of the current month through today.
- **Last 30 Days** — Thirty days ending today.
- **Last Month** — The full previous calendar month.
When you pick anything other than **Custom dates**, the start and end dates are filled in for you and cannot be edited until you switch back to **Custom dates**.
Times are shown in **your account time zone**, not necessarily the time on your device if it differs.
### 📡 Carrier (Provider)
**Provider** limits the list to messages tied to numbers from a specific carrier, or shows everything.
- **All** — Every carrier your organization uses (default).
- The first named option — Messages for numbers on the main phone service linked to your account (the label matches your product name).
- **AI Sync** — Messages for AI Sync numbers.
- The “AI Sync V2” option — Messages for numbers on the alternate phone service .
Changing the carrier clears the phone number list and fills it again with numbers that belong to that carrier. If no numbers exist for that choice, the phone number field will tell you.
### ☎️ Phone number
**Phone Number** lists numbers from your organization that match the **Provider** setting. Pick one number to see only traffic involving that number (as sender or recipient), or leave **Select Phone Number** to include all numbers for the chosen carrier.
The list updates when the carrier changes. After you pick a number, the table updates to match.
### 🏷️ Status
**Status** filters by the reported state of the message.
- **All** — No status filter (default).
- **Sent** — Marked as sent.
- **Delivered** — Marked as delivered.
- **Queued** — Waiting to send.
- **Undelivered** — Not delivered.
- **Received** — Received (often used for inbound items).
- **Completed** — Completed.
- **Failed** — Failed.
### 🔄 Direction
**Direction** separates inbound and outbound traffic.
- **All** — Both directions (default).
- **Inbound** — Messages coming in to your numbers.
- **Outbound** — Messages going out from your numbers.
## ✅ How and when your filters update
- **Filter** — Click to refresh the table using your latest Date Range, Provider, Phone Number, Status, and Direction selections.
- Changing the **Provider** reloads the list of phone numbers and automatically updates the table with matches for that carrier.
- Changing the **Phone Number**, **Status**, or **Direction** instantly refreshes the table based on your new choice—no need to click Filter again.
## 📋 The message list (table)
Each row is one SMS record.
| Column | Meaning |
|--------|--------|
| **Sr.No** | Row number in the current view (newer items appear toward the top). |
| **From Number** | The sending number. A dash means none was stored. |
| **To Number** | The receiving number. A dash means none was stored. |
| **Message** | The text of the message (long text may wrap in the column). |
| **Status** | The delivery or handling state (for example Sent, Delivered, Failed). |
| **Direction** | **Inbound** or **Outbound**. |
| **Provider** | Which phone service the message is tied to. Labels may match your product name for the main and V2 services; **AI Sync** appears by name when it applies. |
| **Dated** | When the record was logged, in your account time zone. |
If something is missing in the data, you may see a dash instead of a value.
You can use the **search** box above the table to narrow rows by what appears in the columns (for example part of a number, a word in the message, or a status).
## 💾 Saving a copy (CSV)
The green **CSV** button (with a download icon) downloads a **CSV** file that uses the **same choices** you set on the screen: Date Range (including custom start and end dates), Provider, Phone Number, Status, and Direction.
CSV (comma-separated values) is a standard spreadsheet format. The file includes a serial number, from and to numbers, message text, status, direction, provider (with the same naming as the table), and date/time in your account time zone. You can open it in Excel and other spreadsheet apps, print it, or keep it for your records.
---
# Manage Subscription
> Complete guide to managing your AI Sync subscription, billing, and payment methods
Source: https://docs.aisync.link/billing/manage-subscription
# Manage Subscription
The Manage Subscription page is your central hub for controlling all aspects of your Rizler subscription, from monitoring usage and billing to configuring payment methods and auto-recharge settings.
Monitor trial periods, renewal dates, and subscription status
Configure and manage payment methods securely
Set up automatic balance top-ups for uninterrupted service
View and upgrade to different pricing packages
## 📊 Current Balance & Overview
**Current Balance: $941.69831** - Your account balance is displayed prominently at the top right of the interface for quick reference.
## 🗓️ Subscription Details
The subscription details section provides crucial information about your current subscription status and important dates.
### Key Fields
**Current Value**: 2024-10-21
The date when your trial period began. This helps track how long you've been using the service and when trial benefits expire.
**Current Value**: 2024-10-22
The date when your trial period ends. After this date, regular subscription pricing applies.
**Current Value**: 2024-10-26
Your next billing cycle date. This is when your subscription will automatically renew and your payment method will be charged.
Keep track of your renewal date to avoid unexpected charges. You can modify or cancel your subscription before the renewal date if needed.
## 💳 Setup Payment Method
Secure payment processing is essential for maintaining uninterrupted service. The payment method section allows you to configure your preferred payment option.
### Payment Method Configuration
Click the **Edit** button to add or modify your payment method
Provide your credit card information securely
- Card Number: ****2604
- Cardholder Name: JANE TEST
- Expiration: 8/2029
Complete the verification process to activate your payment method
Ensure your payment method is valid and has sufficient funds to avoid service interruptions. Update your payment information before the card expires.
## 🔄 Auto Recharge Settings
Auto Recharge ensures your account maintains a minimum balance for continuous service without manual intervention.
### Configuration Options
| Setting | Description | Current Value |
|---------|-------------|---------------|
| **Enabled** | Toggle auto-recharge functionality | No |
| **Minimum Balance** | Balance threshold that triggers recharge | $10.00 |
| **Recharge Amount** | Amount added when auto-recharge activates | $30 |
### How Auto Recharge Works
```mermaid
graph TD
A[Account Balance] -->|Falls Below| B[Minimum Balance: $10.00]
B --> C{Auto Recharge Enabled?}
C -->|Yes| D[Charge Payment Method]
C -->|No| E[Manual Top-up Required]
D --> F[Add $30 to Balance]
F --> G[Service Continues]
E --> H[Service May Be Interrupted]
```
System continuously monitors your account balance
When balance falls below $10.00, auto-recharge triggers
$30 is automatically charged to your configured payment method
Your account balance is immediately updated with the recharged amount
Click **Save** after making any changes to your auto-recharge settings to apply the new configuration.
## 📦 Packages Pricing
The Dev Package offers comprehensive features for development and testing environments.
### Dev Package - $1.00/Monthly
Perfect for developers and small-scale testing environments
**BYOC (Bring Your Own Carrier)**
✅ **1.00$ Per Seat Without Carrier**
✅ **Power Dial Upto 10 at a time**
✅ **5 Phone Number Include**
✅ **Free GetLogLevel Account**
✅ **0.50$ Per Phone Number Cost**
✅ **Hello Dev**
### Package BenefitsA
At just $1.00 per seat, the Dev Package provides affordable access to core functionality for development teams.
Bring Your Own Carrier (BYOC) support allows you to use your preferred telecommunications provider while leveraging AISync's platform.
Concurrent dialing capability for up to 10 calls simultaneously, perfect for testing call center operations.
Includes 5 phone numbers in the base package, with additional numbers available at $0.50 each.
Free access to GetLogLevel account for enhanced logging and monitoring capabilities.
## 🔧 Workflow & Usage Guide
### Daily Operations Workflow
```mermaid
flowchart TD
A[Login to Rizler] --> B[Check Account Balance]
B --> C{Balance Sufficient?}
C -->|Yes| D[Continue Operations]
C -->|No| E[Manual Top-up or Wait for Auto-recharge]
E --> F[Add Funds]
F --> D
D --> G[Monitor Usage]
G --> H[Review Subscription Status]
H --> I[Plan for Next Billing Cycle]
```
### Monthly Subscription Management
Check your monthly usage patterns and costs
Determine if your current package meets your needs
Ensure payment information is current and valid
Set appropriate thresholds based on usage patterns
Consider upgrading if you're approaching package limits
## ⚡ Quick Actions
1. Navigate to Auto Recharge section
2. Toggle **Enabled** to "Yes"
3. Set desired minimum balance and recharge amount
4. Click **Save**
1. Click **Edit** in the Setup Payment Method section
2. Enter new payment information
3. Verify card details
4. Save changes
View the **Renewal At** field in Subscription Details to see your next billing date: **2024-10-26**
## 🚨 Troubleshooting
**Common Issues and Solutions**
- **Payment Failed**: Update payment method or contact your bank
- **Service Interrupted**: Check account balance and payment status
- **Auto-recharge Not Working**: Verify payment method and settings
- **Billing Questions**: Contact support with your account details
## 📞 Support & Assistance
For additional help with subscription management:
- **Documentation**: Refer to billing and payment method guides
- **Support Team**: Contact customer support for billing issues
- **Account Management**: Use the settings panel for self-service options
Your subscription status and billing information are updated in real-time. Changes to payment methods or auto-recharge settings take effect immediately upon saving.
---
# Transaction History
> Complete guide to managing and tracking your transaction history with detailed workflows and field explanations
Source: https://docs.aisync.link/billing/transaction-history
## 📊 Overview
The Transaction History feature provides a comprehensive dashboard for monitoring all financial transactions in your account. Track payments, view detailed invoice information, and manage your billing records with powerful filtering and search capabilities.
Monitor all payment transactions with real-time status updates
Search by date range, amount, status, and user information
View detailed invoice information and download receipts
## 🚀 Key Features
Comprehensive table view showing all transaction details with sortable columns, including payment type.
Filter transactions by custom date ranges with quick preset options (Last 14 Days, etc.)
Real-time status updates: Paid, Pending, Failed, Refunded
Transaction History shows two types of payments, each identified by a colored badge in the Payment Type column:
🟡 Manual
- Balance added directly by an Admin or Company Owner from the panel without any payment gateway involvement.
- Recorded immediately as
paid
- Invoice number auto-generated in format
invm-XXXXX (e.g. invm-76083)
- No invoice URL or PDF attached
- No Action buttons (View/Download) shown in the table
🟢 Online
- Balance added through Stripe payment gateway when a user purchases or renews a subscription.
- Status updates in real-time (
paid, pending, failed)
- Invoice number generated by Stripe (e.g.
BD949C2A-0030)
- Invoice URL and PDF attached
- Action buttons available: View (👁️) and Download (📥)
View details, download invoices, and manage transactions directly from the table
## 🔄 Transaction Workflow
The transaction workflow follows a systematic process from initiation to completion:
```mermaid
graph TD
A[🛒 Service Purchase] --> B[💳 Payment Processing]
B --> C[✅ Payment Verification]
C --> D[📝 Invoice Generation]
D --> E[📧 Email Notification]
D --> F[📊 Transaction Record]
F --> G[🔍 Available in History]
G --> H[📄 Receipt Download]
```
### 📝 Workflow Steps
User selects a service package (Dev Package, Pro Plan, etc.) and proceeds to checkout
Payment gateway (Stripe) processes the payment using the selected payment method
System verifies payment success and validates transaction details
Unique invoice number is generated (e.g., BD949C2A-0018) and invoice details are recorded
Payment confirmation email is sent to the user with invoice details
Transaction appears in the Transaction History table with all relevant details
Transaction becomes searchable and filterable in the dashboard
## 📋 Transaction Fields
Understanding each field in your transaction history helps you track and manage your financial records effectively.
### 🔢 Core Fields
**Sequential Number**
Auto-incremented transaction ID for easy reference
**Example**: `1`
**Account Identifier**
Username or email of the account holder
**Example**: `Dev2`
**Unique Transaction ID**
System-generated unique identifier for each transaction
**Example**: `BD949C2A-0018`
**Transaction Value**
Total amount charged including taxes and fees
**Example**: `$1.00`
### 📊 Status & Tracking Fields
**Payment State**
Current status of the transaction
**Values**: `paid`, `pending`, `failed`, `refunded`
**Transaction Timestamp**
Date and time when the transaction was created
**Example**: `09-01-2025 10:25 PM`
**Available Operations**
Actions you can perform on the transaction
**Options**: View Details, Download Receipt
### 📊 Detailed Field Reference
| Field | Description | Example Value | Data Type |
|-------|-------------|---------------|-----------|
| **#** | Sequential transaction number | `1` | Integer |
| **User** | Account username/identifier | `Dev2` | String |
| **Invoice Number** | Unique transaction identifier | `BD949C2A-0018` | String |
| **Amount** | Transaction value with currency | `$1.00` | Currency |
| **Status** | Payment completion state | `paid` | Enum |
| **Created At** | Transaction timestamp | `09-01-2025 10:25 PM` | DateTime |
| **Action** | Available operations | View/Download buttons | Actions |
## 🎯 Transaction Status Definitions
**Meaning**: Payment completed successfully
**Characteristics**:
- ✅ Payment processed without issues
- ✅ Funds transferred successfully
- ✅ Service/product activated
- ✅ Invoice marked as paid
**Actions Available**:
- View invoice details
- Download receipt
- Access purchased services
**Meaning**: Payment is being processed
**Characteristics**:
- 🔄 Payment gateway processing
- ⏰ Bank verification in progress
- 🏦 ACH transfer pending
- 🔍 Fraud check in progress
**Actions Available**:
- Monitor for status updates
- Contact support if delayed
- Wait for processing completion
**Meaning**: Payment could not be processed
**Common Reasons**:
- 💳 Insufficient funds
- 🚫 Card declined
- 🔒 Security restrictions
- ⏰ Expired payment method
**Actions Available**:
- Update payment method
- Retry payment
- Contact support
**Meaning**: Payment was returned to customer
**Characteristics**:
- 💰 Funds returned to original payment method
- 📋 Refund reason documented
- 📧 Customer notified
- 🚫 Service access revoked
**Actions Available**:
- View refund details
- Download refund receipt
- Contact support for questions
## 🔍 Filtering & Search Features
### 📅 Date Range Filtering
**Last 14 Days** - Most commonly used filter
**Last 30 Days** - Monthly overview
**Last 90 Days** - Quarterly review
**Start Date**: Select beginning date
**End Date**: Select ending date
**Filter Button**: Apply custom date range
### 🔍 Search & Display Options
**Show Entries**: Configure number of results per page
**Options**: 10, 25, 50, 100 entries
**Default**: 10 entries per page
**Global Search**: Search across all fields
**Real-time**: Results update as you type
**Fields**: User, Invoice Number, Amount, Status
## 📄 Invoice Details & Actions
### 💳 Payment Information
Based on your transaction screenshots, here's what you'll see in invoice details:
**To**: Company receiving payment
**From**: Payment processor (Meta Tech LLC)
**Invoice**: Unique identifier
**Amount**: Total paid
**Payment Date**: When payment was processed
**Payment Method**: Card type and last 4 digits
**Status**: Current payment state
**Receipt**: Download options available
### 🎯 Available Actions
Click the eye icon to view complete invoice information including payment breakdown and billing details
Use the "Download invoice" button to get a PDF copy of the complete invoice
Use the "Download receipt" button to get a payment confirmation receipt
Use the search function to quickly find specific transactions by any field
## 📈 Transaction Analytics
### 💰 Payment Statistics
Based on your transaction data, you can track important payment metrics and trends.
**Key Metrics to Monitor**:
- ✅ **Success Rate**: Percentage of successful payments
- 💳 **Payment Methods**: Distribution of payment types
- 📊 **Transaction Volume**: Number of transactions per period
- 💰 **Revenue Tracking**: Total income and trends
- 🔄 **Retry Success**: Failed payments that succeeded on retry
### 📊 Data Insights
**Peak Times**: When most payments occur
**Seasonal Trends**: Monthly/quarterly patterns
**User Behavior**: Payment frequency analysis
**Processing Speed**: Average transaction time
**Success Rates**: Payment completion statistics
**Error Analysis**: Common failure reasons
## 🛠️ Troubleshooting & Support
### ❓ Common Issues
**Solution**: Use the search function or adjust date range filters
**Check**: Verify the correct date range and search terms
**Alternative**: Browse through different pages using pagination
**Solution**: Check browser settings and popup blockers
**Retry**: Try downloading again after a few moments
**Support**: Contact support if downloads consistently fail
**Check Status**: Look for real-time status updates in the table
**Wait Time**: Allow up to 24 hours for status changes
**Contact**: Reach out to support for payment discrepancies
### 📞 Getting Help
**User Guides**: Comprehensive help documentation
**FAQs**: Frequently asked questions
**Video Tutorials**: Step-by-step visual guides
**Email Support**: Direct email assistance
**Live Chat**: Real-time support chat
**Help Desk**: Ticket-based support system
---
This documentation covers all aspects of the Transaction History feature based on your actual interface. For additional support or questions about specific transactions, please contact your support team.
---
# Usage History
> Complete guide to tracking and managing your usage history, charges, and consumption analytics
Source: https://docs.aisync.link/billing/usage-history
## 📊 Overview
The Usage History feature provides a comprehensive dashboard for monitoring your platform consumption, tracking charges, and analyzing usage patterns. This powerful tool helps you understand your spending, optimize usage, and make informed decisions about your service plans.
**Real-time Tracking**: All usage is tracked and updated in real-time, giving you instant visibility into your consumption patterns and costs.
## 📥 Usage History - CSV Export
Want to keep a copy of your usage data or analyze spending in Excel/Google Sheets? You can quickly export your usage records as a CSV file.
---
**How to Download Your Usage History**
1. **Choose Filters**
- **Date Range:**
Pick a time period (e.g., *Today*, *Last 7 Days*, *This Month*, or set a custom range).
- **Status:**
Narrow down data by type—Phone No, Minute, SMS, or Other.
- **Bill Type:**
Limit to only *Dialer* or *AI* usage entries.
- **Agent:**
Filter for a specific agent’s activity.
2. **Apply Filters**
Click the **Filter** button after making your selections to refresh the results.
3. **Export**
Click the green **CSV** button next to Filter. Your file will automatically download!
Open the exported file in Excel, Google Sheets, or any spreadsheet software for custom reporting.
---
**🧾 About CSV (Comma Separated Values)**
- **CSV** is a simple, universal file format for tabular data.
- Each line is a row, and each value is separated by a comma.
- CSV files work seamlessly with Excel, Google Sheets, Numbers, and most data tools.
**What’s in your CSV export?**
- All visible usage records (based on your filters)
- Details such as:
- Charge amount
- Usage counts
- Charge type
- Bill type
- Agent
- Date and time of all entries
Need your records for tax, audits, or budgeting? CSV export helps you stay organized and in control!
Monitor real-time usage across all services and features
Analyze charges and optimize your spending patterns
Gain insights into consumption trends and patterns
**Current Balance**: $4.43166 | **Total Usage Count**: 17 entries
## 🚀 Key Features
Monitor your account balance and track all charge deductions in real-time
Filter usage data by custom date ranges, predefined periods, or specific timeframes
Track usage separately for AI services, Dialer, and other platform features
Search usage records by charge type, bill type, agent, and usage patterns
Access your usage history from any device with full functionality
## ⚡ Usage Tracking Workflow
```mermaid
graph TD
A[🚀 Service Usage] --> B[⏱️ Usage Metering]
B --> C[💰 Charge Calculation]
C --> D[📝 Usage Record Created]
D --> E[💳 Balance Deduction]
E --> F[📊 History Updated]
F --> G[🔔 Usage Alerts]
G --> H[📈 Analytics Update]
```
### Workflow Steps
1. **🚀 Service Usage**: User consumes AI services, makes calls, or uses platform features
2. **⏱️ Usage Metering**: System tracks usage duration, count, or consumption amount
3. **💰 Charge Calculation**: Platform calculates charges based on usage rates and pricing
4. **📝 Record Creation**: Usage record is created with detailed consumption data
5. **💳 Balance Deduction**: Charges are deducted from account balance
6. **📊 History Update**: Usage data appears in the usage history dashboard
7. **🔔 Usage Alerts**: Notifications sent for significant usage or low balance
8. **📈 Analytics Update**: Usage patterns and trends are updated for insights
## 📋 Usage History Fields
Each field in the usage history provides specific insights into your platform consumption and charges.
### 🏷️ Service Classification Fields
**Values**: Charge Balance
**Purpose**: Categorizes the type of charge applied
Identifies how the usage was charged
**Values**: AI, Dialer, SMS, Voice
**Example**: `AI`, `Dialer`
Service category that generated the charge
**Values**: Minute, Call, Message, Token
**Example**: `Minute`
Unit of measurement for the usage
**Format**: Agent Name/ID
**Purpose**: Identifies which agent generated the usage
Links usage to specific AI agents or users
### ⏰ Timestamp Fields
**Format**: MM-DD-YYYY HH:MM AM/PM
**Example**: `08-30-2025 02:38 AM`
When the usage occurred
**Format**: MM-DD-YYYY HH:MM AM/PM
**Example**: `08-30-2025 02:38 AM`
When the record was last modified
## 📊 Complete Field Reference
| Field | Description | Example Value | Data Type | Purpose |
|-------|-------------|---------------|-----------|---------|
| **Sr.No** | Sequential record number | `1` | Integer | Unique identifier |
| **Charge Balance** | Amount deducted | `$0.300` | Currency | Cost tracking |
| **Use Limit** | Service usage limit | `0` (Unlimited) | Integer | Limit management |
| **Use Count** | Times service used | `1` | Integer | Usage frequency |
| **Charge Type** | Type of charge | `Charge Balance` | String | Charge categorization |
| **Bill Type** | Service category | `AI`, `Dialer` | Enum | Service identification |
| **Usage Type** | Unit of measurement | `Minute` | String | Usage unit |
| **Created At** | Usage timestamp | `08-30-2025 02:38 AM` | DateTime | Time tracking |
| **Updated At** | Last modified time | `08-30-2025 02:38 AM` | DateTime | Change tracking |
## 🎛️ Dashboard Features & Controls
### 📊 Usage Summary Cards
**Current Value**: $4.43166
Shows your current account balance after all usage deductions
**Current Value**: 17
Total number of usage events recorded in the selected period
### 🎛️ Filter Controls
**Options**:
- Last 7 Days (Default)
- Last 30 Days
- Custom Date Range
- This Month
- Last Month
**Usage**: Filter usage records by specific time periods
**Options**:
- All (Default)
- Active
- Completed
- Failed
**Usage**: Filter by usage record status
**Options**:
- All (Default)
- Specific Agent
- Agent Groups
**Usage**: Filter usage by AI agent or user
## 💡 Usage Optimization Tips
**Pro Tip**: Monitor your usage patterns regularly to identify opportunities for cost savings and efficiency improvements.
### 🎛️ Advanced Controls
**Chart Types**:
- Line charts for trends
- Bar charts for comparisons
- Pie charts for distributions
- Heatmaps for patterns
- Custom dashboard widgets
**Interactive Features**:
- Zoom and pan functionality
- Hover tooltips
- Click-through details
- Real-time updates
**Alert Types**:
- Usage threshold alerts
- Cost limit notifications
- Unusual pattern detection
- Service availability alerts
**Delivery Methods**:
- Email notifications
- SMS alerts
- In-app notifications
- Webhook integrations
**Automated Actions**:
- Auto-pause services at limits
- Scheduled usage reports
- Automatic balance top-ups
- Smart usage optimization
**Configuration**:
- Rule-based automation
- Custom trigger conditions
- Action workflows
- Approval processes
## 🛡️ Troubleshooting & Best Practices
### 🔧 Common Issues & Solutions
**Possible Causes**:
- Delayed processing (up to 5 minutes)
- Network connectivity issues
- Service maintenance periods
**Solutions**:
- Wait 5-10 minutes and refresh the page
- Check system status page
- Verify date range filters
- Contact support if records are missing after 1 hour
**Possible Causes**:
- Rate changes during usage period
- Promotional pricing applied
- Bulk usage discounts
**Solutions**:
- Check current pricing in settings
- Review promotional offers
- Verify usage duration calculations
- Submit billing inquiry if discrepancies persist
**Possible Causes**:
- Large date range selected
- High volume of usage records
- Browser cache issues
**Solutions**:
- Reduce date range to last 30 days
- Clear browser cache and cookies
- Use pagination instead of loading all records
- Try a different browser
**Possible Causes**:
- Special characters in search query
- Case sensitivity issues
- Index update delays
**Solutions**:
- Use simple search terms
- Try case-insensitive search
- Wait a few minutes for index updates
- Use advanced filters instead
**Last Updated**: This documentation reflects the latest features as of the current platform version. For the most up-to-date information, please refer to the in-app help system.
---
# Workflows
Source: https://docs.aisync.link/workflow/all-workflows
The **Workflows** page is where you manage automation workflows in RizzDial. A workflow is an automated process that starts from a trigger, such as a new contact or a specific activity, and then performs actions like messaging, calling, tagging, updating contact details, or moving a lead through a process.
## 🎯 What This Page Is Used For
Use the Workflows page when you want to:
- View all workflows in one place
- Create a new workflow
- Open an existing workflow for editing
- Organize workflows into folders
- Search and browse workflows
- Activate or deactivate workflows
- Duplicate an existing workflow
- Import a workflow from a JSON file
- Export a workflow as a JSON file
- Move a workflow into a different folder
- Delete workflows that are no longer needed
The Workflows page has two main areas.
### 📋 Workflows Table
The right side shows the workflow list. Each workflow row includes:
- Number
- Workflow name
- Status
- Created by
- Created date
- Action menu
The workflow name is clickable. Clicking it opens the workflow builder so you can review or edit the automation.
## 📁 Folders
Folders are optional, but they are useful when an account has many workflows.
### ➕ Add a Folder
Click **Add** in the Folders panel.
Enter a folder name, then click **Save**. After saving, the folder appears in the folder list.
### ✏️ Edit a Folder
Open the folder's three-dot menu and choose **Edit**.
Update the folder name, then save it.
**🗑️ Delete a Folder**
Open the folder's three-dot menu and choose **Delete**.
When a folder is deleted, workflows inside it are moved to **No Folder**. The workflows themselves are not deleted.
**↕️ Reorder Folders**
Folders can be reordered by dragging the handle beside a folder name.
After dropping the folder in a new position, the order is saved automatically.
**🔖 Remembered Folder Selection**
When you select a folder, the page remembers that selection in the browser. If you come back later, the same folder can be selected again automatically.
If that folder no longer exists, the page returns to **All Workflows**.
**🏷️ Workflow Status**
Each workflow has a status badge.
Common statuses are:
| Status | Meaning |
|--------|---------|
| **Active** | The workflow is turned on and can run |
| **Inactive** | The workflow is turned off |
| **Draft** | The workflow is still being prepared and should be reviewed before activation |
You can change a workflow's status from the row action menu.
If a workflow is active, the action menu shows **Deactivate**. If it is inactive or draft, the action menu shows **Activate**.
## ➕ Creating a Workflow
Click **Create Workflow** to start a new workflow.
The system creates a draft workflow and opens the workflow builder. From there, you can design the automation, update its name, add triggers, add actions, and save changes.
New workflows start as drafts so you can safely build and review them before turning them on.
## 📥 Importing a Workflow
Click **Import Workflow** to upload a workflow JSON file.
Steps:
1. Click **Import Workflow**
2. Choose a valid workflow JSON file
3. Click **Import**
4. Wait for the import to finish
If the file is valid, the workflow is imported as a draft. You may be taken directly to the builder to review it.
Import is useful when moving a workflow between accounts, restoring a saved workflow, or sharing a workflow template.
## ⚙️ Workflow Actions Menu
Each workflow row has a three-dot action menu.
Available actions can include:
- **Edit**
- **Change Folder**
- **Activate** or **Deactivate**
- **Duplicate**
- **Export**
- **Delete**
The available actions may depend on your permissions.
**✏️ Edit**
**Edit** opens the workflow builder for that workflow.
Use this when you need to change the workflow name, trigger, actions, settings, or automation structure.
**📁 Change Folder**
**Change Folder** opens a popup where you can move the workflow into another folder.
Choose a folder, then click **Save**. Select **No Folder** if the workflow should not belong to any folder.
**▶️ Activate or Deactivate**
**Activate** turns the workflow on.
**Deactivate** turns the workflow off.
Use **Deactivate** when you want to pause a workflow without deleting it.
**📑 Duplicate**
**Duplicate** creates a copy of the workflow and opens the copy in the builder.
The copied workflow is created as a draft. This is helpful when you want to reuse a workflow structure without changing the original.
**📤 Export**
**Export** downloads the workflow as a JSON file.
Use this for backup, sharing, or migration.
**🗑️ Delete**
**Delete** removes the workflow after you confirm the action.
Only delete a workflow when it is no longer needed. If you may need it later, export it first or deactivate it instead.
**🔍 Searching and Browsing**
The workflow table includes search, pagination, and item-count controls.
Use search when you know part of a workflow name or need to quickly find a specific automation.
Use pagination when the account has many workflows. The table loads workflows in pages so the screen remains fast and organized.
**📭 Empty States**
You may see empty or limited content in these situations:
- **No folders yet** — no workflow folders have been created
- **No workflows in selected folder** — the selected folder does not contain workflows
- **No matching search results** — the search term does not match any workflow
When this happens, you can clear the search, select **All Workflows**, create a workflow, or move workflows into the selected folder.
## 🛠️ Workflow Builder
When you click **Create Workflow**, a workflow name, or **Edit** from the action menu, the **Workflow Builder** opens. This is where you design triggers, actions, and the full automation flow.
### 🎨 Builder Canvas
The builder has three main areas:
- **Left sidebar** — drag triggers and actions onto the canvas
- **Center canvas** — visual grid where your workflow is built
- **Right panel** — configure the selected trigger or action
**Left sidebar groups**
| Group | Blocks |
|-------|--------|
| **Triggers** | Trigger — start the workflow |
| **Messaging** | Send SMS, Send Email, AI Call, Send Transcript |
| **Calendar** | Book Appointment, Google Calendar Event |
| **Logic** | Wait, If / Else |
| **Contact** | Add / Remove Contact Tag, Add / Change / Remove Disposition, **Add to dialer list** |
| **Integrations** | Webhook, **Meta Conversion API** |
**Add to dialer list** puts the contact on the PowerList you pick so the dialer calls them — even if they were already called, booked, or waiting on a callback on another list. Contacts on Do Not Call stay blocked, and contacts someone removed stay removed.
**Meta Conversion API** sends a Purchase (with the sale amount) or your own stage, such as *Qualified*, to your Meta Pixel. See [Meta Pixel & Conversions](/marketing/meta-conversions).
Triggers start the workflow. Actions run after a trigger fires. Use the **+** controls on the canvas to add more steps and connect them into a flow.
### ⚡ Available Triggers
Drag a **Trigger** block from the left sidebar (**TRIGGERS → Trigger**) onto the canvas. Click it to open **CONFIGURE trigger** in the right panel, then choose a **Trigger Event**.
**Configure fields**
| Field | What it does |
|-------|--------------|
| **Label** | Name shown on the canvas block (for example, Contact Created) |
| **Trigger Event** | The event that starts the workflow |
| **Filters** | Optional conditions — Select Field, operator (Equals), and Value. Click **+ Add Filter** to add more |
Filters are saved on the trigger and matched by the workflow engine before the workflow runs.
**Trigger events**
Open the **Trigger Event** dropdown to pick from these groups:
| Group | Trigger | When it runs |
|-------|---------|--------------|
| **Contacts** | **Contact created** | A new contact is added |
| | **Contact changed** | An existing contact's details are updated |
| | **Contact tag added** | A tag is added to a contact |
| | **Contact tag removed** | A tag is removed from a contact |
| | **Note added** | A note is added to a contact |
| | **Disposition changed** | A call disposition is set or updated |
| | **DND changed** | Do Not Disturb status for a contact is changed |
| **Messaging** | **New Message** | A new message is received or created |
| | **Customer replied** | A contact replies to a message |
| | **Dialer call details** | A dialer call ends or reaches a specific call outcome |
| **AI** | **AI call details** | An AI call ends or reaches a specific call outcome |
| | **AI appointment failed** | An AI appointment booking attempt fails |
| **Appointments** | **Appointment booked** | An appointment is booked |
| **Pipeline** | **Pipeline stage changed** | A contact is moved to a different pipeline stage |
| **Facebook** | **Facebook lead form submitted** | A Facebook Lead Form submission arrives |
Use filters to narrow when the workflow runs — for example, only when a contact is created in a specific PowerList or when a field equals a value.
### ⚡ Configure a Trigger or Action
Click any block on the canvas to open its settings in the right panel. Update the label, choose the trigger event, add filters, or configure action-specific options.
### ⚙️ Workflow Settings
Click **Settings** in the builder toolbar to open communication and timing options for the workflow.
Available settings include:
- **Timezone** — used for wait steps and time window rules
- **Allowed Users** — choose who can trigger this workflow; leave empty to allow all users
- **Time Window** — restrict when automated actions may run
- **Sender Details** — default **From Name**, **From Email**, and **From Number** for outgoing messages
Click **Save Settings** when you are done.
### 🧪 Test, History, and Enrollment history
These three buttons sit in the builder header next to Settings, Activate, and Save. They apply to **this workflow only** — open the workflow first.
| Button | What it answers |
|--------|-----------------|
| **Test** | If this workflow ran for this contact right now, what would happen? |
| **History** | What happened on the last few runs — did each step succeed or fail? |
| **Enrollment history** | Who is in this workflow, why they entered, and where they are now? |
- **Test** — practice run you start yourself
- **History** — log of runs (tests and live)
- **Enrollment history** — roster of contacts who entered this workflow
Save the workflow first. Test stays unavailable while there are unsaved changes or the canvas is empty.
#### ▶ Test
Use **Test** to walk the path on the canvas without waiting for a real-life event.
**What a test does**
- Runs this workflow for a **contact you pick**
- Steps light up on the canvas so you can see the path
- **Wait** steps finish immediately (no real delay)
- **SMS, email, and similar messages are not actually sent** — the test pretends they succeeded
- After a test, **View Activity** opens that contact’s activity timeline
A green “Test completed” message means the practice run finished — **not** that a text or email went out.
**How to run a test**
1. Add your trigger and actions on the canvas
2. Click **Save**
3. Click **▶ Test**
4. Choose **Trigger to test** if there is more than one trigger
5. For a call-details trigger, also choose a **Call status** (for example No-answer)
6. Under **Phone / Contact**, search and select a contact (required)
7. Click **▶ Run test**
Watch the canvas. Then open **History** for step results, or **View Activity** for that contact.
**If Test will not start**
- Add at least one node to the canvas
- Click **Save** if it is available
- Select a contact in the Test window
#### 📜 History
**History** (panel title: **Execution history**) is the run log for this workflow. It shows the **last 50 runs**.
Each row typically shows:
- Contact name (or a run number)
- Steps finished vs total
- **FAILED** badge if any step failed
- Phone, trigger, and how long ago it ran
- Status icon: completed, failed, running, paused, or other
Click a run to expand:
- Trigger and overall status
- Started and Completed times
- Each step in order with completed / failed / running
- Red **error message** if something failed
- Short execution log in time order
If the list is empty, run **▶ Test** to create the first row.
Use History when a live SMS or email did not arrive — it shows whether the workflow ran and which step stopped.
#### 👥 Enrollment history
**Enrollment history** is the contact roster for this workflow (last **30 days**).
| | Enrollment history | History |
|--|--------------------|---------|
| Focus | The **contact** in this workflow | One **run** and its steps |
| Question | Who is enrolled, and where are they? | Did this run succeed? |
| Remove | You can take a contact **out** if still in progress | View only |
| Column | Meaning |
|--------|---------|
| **Contact** | Name and phone |
| **Enrollment reason** | Why they entered (trigger or event) |
| **Date enrolled** | When they entered |
| **Current action** | Step they are on now (for example Wait, Send SMS) |
| **Current status** | In progress, waiting, paused, completed, or failed |
| **Next execution on** | When the next step is due — dash means nothing scheduled |
| **Actions** | **Remove** if they can still be taken out |
**Filters:** Start / End date · Event · Contact search · refresh · Previous / Next
**Remove** appears only while the contact is still **in progress**. Confirm to stop them in this workflow — they are not deleted from your contacts list.
A successful **Test** does not send live SMS or email. Check **History** after a **live** trigger (workflow Active, real event) to confirm a real send.
### ✨ Build with AI
Click **Build with AI** in the builder to describe a workflow in plain language. The AI lays out triggers and actions on the canvas based on your prompt.
You can iterate by asking the AI to add or change steps — for example, *"add a tag after the call."* Your changes are saved when you click **Save** in the builder.
### 💾 Save and Activate
Use **Save** in the builder toolbar to store your design. Use **Activate** to turn the workflow on once it is ready. Use **Back** to return to the **All Workflows** list.
| I want to… | Do this |
|------------|---------|
| Practice a run | **Save** → **▶ Test** → pick contact → **Run test** |
| See step results | **History** → expand a run |
| See who is enrolled | **Enrollment history** |
| Stop a contact mid-flow | Enrollment history → **Remove** |
| Turn the workflow on | **Activate** |
For organization-wide past runs, see [Execution Logs](/workflow/execution-logs).
---
# Execution Logs
> User guide for workflow run history: filters, table columns, status labels, and step-by-step details.
Source: https://docs.aisync.link/workflow/execution-logs
## 🧐 Overview
The **Execution log** is your workflow run history: it brings together every time a workflow has run for your organization. You see runs from **all** workflows in one place—not only a single workflow. Each row is one run: what started it, how it finished, how long it took, and when it was first recorded. You can narrow the list with filters, search within the table, view step-by-step detail for any run, and move between pages when there are many results.

**👀 What you see when you open the screen**
At the top, the page title and navigation show that you are under **Workflow** and viewing the run history for workflows.
The main area has a title that describes this as the workflow run history, then a **filters** row, then a **table** of runs.
## 🛠️ Filters

### **📅 Date range**
This controls which runs appear based on the **date each run was first recorded** (the same idea as the “Created at” column—not the time the workflow started or finished).
**Preset ranges** (pick one from the list):
| Option | What it covers |
|--------|----------------|
| **Custom dates** | You choose the start and end dates yourself. |
| **Today** | The current calendar day (this is the default when the screen loads). |
| **Yesterday** | The previous calendar day. |
| **This week (Sun – today)** | From the Sunday that started this week through today. |
| **This week (Mon – today)** | From the Monday that started this week through today. |
| **Last 7 days** | The seven days ending today. |
| **Last week (Sun – Sat)** | The previous full week, Sunday through Saturday. |
| **Last week (Mon – Sun)** | The previous full week, Monday through Sunday. |
| **Last business week (Mon – Fri)** | Monday through Friday of the previous week. |
| **Last 14 days** | The fourteen days ending today. |
| **This month** | From the first day of the current month through today. |
| **Last 30 days** | The thirty days ending today. |
| **Last month** | The full previous calendar month. |
**Start date** and **End date** fields show the range that applies. For every preset except **Custom dates**, those fields are filled in automatically and **cannot be edited**; changing the preset updates the range and refreshes the list.
For **Custom dates**:
- The start and end fields **can be edited**.
- You must click **Filter** to apply your chosen dates (the list does not refresh only from changing the dropdown).
For all other presets, changing the date range dropdown refreshes the list automatically; you do not need to click **Filter** for those.
The **Filter** button is always available; for custom dates it is what applies your start and end dates.
### **📝 Workflow**
- **All** — Every workflow’s runs are included.
- Any other choice — Only runs for that workflow.
You can **type to search** the workflow names in the list. Changing this selection refreshes the table.
### **🎯 Triggers**
- **All** — Every trigger type is included.
- A specific value — Only runs that began with that trigger.
The choices here are **only the trigger types that have actually occurred** for your organization’s runs (duplicates removed and sorted). If a trigger has never been used, it will not appear until it happens at least once.
You can **type to search** this list. Changing this selection refreshes the table.
### **🚦 Status**
- **All** — Every status is included.
- Otherwise — Only runs whose **overall** status matches your choice.
**Status values:**
| Status | Description |
|-------------|--------------------------------------------------------------|
| **Pending** | The run is queued or not yet started. |
| **Running** | The run is currently in progress. |
| **Completed** | The run finished successfully. |
| **Failed** | The run ended due to an error. |
| **Cancelled** | The run was intentionally stopped before completion. |
| **Paused** | The run is temporarily halted and may be resumed. |
Changing this selection refreshes the table.
## 📊 Main table

**🧾 Columns**
| Column | What it shows |
|--------|----------------|
| **#** | The row number on the **current page** (if you go to page 2, numbering starts again for that page). |
| **Workflow** | The name of the workflow that ran. If a name cannot be shown, **N/A** may appear. |
| **Trigger type** | What caused this run. Words are shown in a normal, readable form (for example, spaces instead of internal separators in the name). |
| **Status** | The overall outcome of the run, shown as a **colored label** (see [Status labels (colors)](#status-labels-colors) below). |
| **Duration** | How long the run took **from start to finish**, shown as hours, minutes, and seconds when both times exist. If start or finish time is missing for measuring length, a dash (**–**) is shown. |
| **Created at** | When this run was **first recorded** in the system, shown in **your** time zone (the time zone set on your user profile). Rows are ordered with the **newest** created time first by default. |
| **Action** | A control to **View details** for that run (see below). |
**🔍 Search**
Above the table there is a **search** field (the placeholder may read “Search…”). You can type to narrow rows by text that appears in supported columns—for example workflow name, trigger wording, or parts of the created date.
**⏳ While the table updates**
When you change filters, search, sorting, or page, the table may briefly indicate that it is **loading** or **processing** before the new rows appear.
**📄 Pages and page size**
You can choose how many rows appear on each page. The default is **10** rows per page. Use the paging controls to move between pages when there are more results than fit on one page.
**🟦 Status labels (colors)**
Overall run status uses colored labels so you can scan quickly:
- **Pending** — Usually a warning-style (amber/yellow) tone.
- **Running** — Usually an informational (blue) tone.
- **Completed** — Usually a success (green) tone.
- **Failed** — Usually an error (red) tone.
- **Cancelled** or **Paused** — Usually a neutral (gray) tone.
Exact colors follow the product’s standard styling.
## 🔎 View details
Click **View details** on any row to open a panel. While the content loads, a short **loading** indicator appears.

**📋 Summary section**
| Field | What it shows |
|--------|----------------|
| **Trigger type** | The same trigger as in the table; the wording may match exactly how that trigger is stored for your organization. |
| **Status** | The same overall status as in the table, as a colored label. |
| **Contact** | The person linked to this run, when one exists: usually their name, or a reference like “Contact #[number]” if there is no display name, or **Unknown** when no contact is linked. |
| **Duration** | Total time for the full run, built from start and finish times. Long spans may show hours and minutes; shorter ones may show minutes and seconds or only seconds. If timing is incomplete, a dash may appear. |
| **Started at** | When the run began (date and time in a standard format), or **–** if unknown. |
| **Completed at** | When the run ended, or **–** if not finished or unknown. |
If the whole run failed, an **error** message for the run may appear in a highlighted area.
---
# Courses
> Complete guide to creating, managing, and organizing courses in the Knowledge Hub with comprehensive course builder, analytics, and content management features
Source: https://docs.aisync.link/knowledge-hub/courses
# 📚 Courses Management
The Knowledge Hub Courses feature is a comprehensive learning management system that enables you to create, manage, and organize educational content for your team and organization. This powerful platform provides everything you need to build structured learning experiences with various content types, assessments, progress tracking, and detailed analytics.
## 🚀 Getting Started
**Accessing the Courses Dashboard**
To access the Courses management system:
1. Navigate to **Knowledge Hub** in the main menu
2. Click on **Courses** to view your course library
3. Use the **+ Create Course** button to start building new content
The main courses dashboard provides a comprehensive view of all your courses with advanced filtering, search capabilities, and management tools.

> **Example:**
> The Knowledge Hub courses dashboard displays a comprehensive table listing courses such as "Dev Course" (Published, 20% completion) and "test course" (Draft status). The interface includes features like search, entry controls, and action buttons for editing, settings, and deletion.
## 📋 Course Creation Workflow
### Step 1: Basic Course Information
When creating a new course, you'll start with the essential information in a clean, user-friendly form:

*The "Create New Course" form showing the course title field with character counter (0/140), course visibility options (Private/Public with lock and globe icons), and the informative "What happens next?" section explaining the workflow after course creation.*
### Step 2: Course Builder
After creating the basic course information, you'll be taken to the Course Builder, an intuitive interface designed for structuring your course from start to finish. The builder includes four main tabs:
**Course Builder Tabs:**
- **Outline**: Organize and structure your course content
- **Details**: Edit course information, configure settings
- **Comments**: Manage learner discussions and feedback
- **Analytics**: View performance metrics and enrollment insights
## 🗂️ Course Structure Management
The **Outline** tab enables you to visually build your course using a hierarchical structure. You can create and manage categories, lessons, and assessments within a drag-and-drop interface.
- **Course Structure**: Drag-and-drop to reorder all elements at the top level
- **Categories**: Group lessons and assessments into folders (folder icons)
- **Lessons**: Add individual learning modules (document icons)
- **Assessments**: Insert quizzes and tests (question mark icons)

*The screenshot above shows a typical Course Builder "Outline" tab with a category ("Dev Category") and a lesson ("New Lesson") nested within. Elements can be reordered, edited, or added using plus and reorder buttons. You may see status indicators (such as "Published" for a lesson) and convenient controls for structure management.*
- **Lessons**: Add individual learning modules (document icons)
- **Assessments**: Insert quizzes and tests (question mark icons)

What happens next?
• Your course will be created with the title you provide
• You'll be redirected to the Course Builder to add and organize your content
• Add categories to group lessons, create lessons within categories, and include assessments as needed
• You can drag, reorder, and nest items to customize your course structure
• Your course will remain a draft until you publish it
### 🗂️ Add Categories
Give your course a clear, engaging structure by creating **Categories**—the building blocks for organizing all your content! Categories make it easy for learners to navigate, and for you to group lessons, assessments, and resources into intuitive sections.
**👷 Quick Steps to Add a Category:**
1. **Click "Add Category"** in the Course Builder.

2. **Enter a Category Title**
- *Required* (up to 255 characters). Make it clear and inviting!
3. **Add a Short Description** *(Optional)*
- Briefly describe what this section covers.
4. **Choose Category Visibility**
- 📢 **Published**: Instantly visible to all assigned learners.
- 📝 **Draft**: Only visible to you until it's ready to launch!
5. **Customize Comments for Learners**
- 💬 **Enabled**: Allow discussion and feedback
- 🙈 **Hidden**: Hide comments from learners
- 🔒 **Locked**: Prevent all new comments
6. **Upload a Category Image** *(Optional)*
- Make your course visually engaging! Recommended size: **1280x720px** (thumbnail will display beautifully in the course outline).

**✨ What You Can Do With Categories:**
- Drag and reorder categories in your outline with an intuitive interface.
- Instantly see which categories are Published or Draft, thanks to clear status badges.
- Toggle comment options anytime to fit your learning environment.
#### 🟦 Reordering Feature
Quickly arrange course structure using drag-and-drop in the Course Builder!
**🔹 What Can Be Reordered?**
- **Categories**: Change their order in the overall course.
- **Content Items** *(inside a category)*: Reorder **Lessons**, **Quizzes**, and **Assignments**—mixing types in any sequence you like.
**🔹 How to Reorder Categories**
1. **Open Course Builder** and go to the **Outline** tab.
2. **Find the Category**, then grab the menu icon (☰) at its left.
3. **Drag and Drop** the category to your new spot. A highlight shows where it’ll go.
4. **Release**—the order updates instantly and auto-saves. A confirmation appears.

**Example:**
```
Before: After:
┌─────────────┐ ┌─────────────┐
│ Category A │ ← (☰) │ Category B │
└─────────────┘ └─────────────┘
┌─────────────┐ ┌─────────────┐
│ Category B │ │ Category A │
└─────────────┘ └─────────────┘
```
---

**🔹 How to Reorder Content Items**
1. **Expand a Category** to see its items.
2. **Find an Item** and grab its menu icon (☰).
3. **Drag and Drop** anywhere in the list—even between Lessons, Quizzes, Assignments.
4. **Release**. The item instantly updates its spot and a success message confirms.
**Example:**
```
Before: After drag: (Quiz moved up)
├── Lesson 1: Getting Started ├── Quiz 1: Test Your Knowledge
├── Lesson 2: Basics ├── Lesson 1: Getting Started
├── Assessment 1: Test Your Knowledge ├── Lesson 2: Basics
└── Quiz 1: First Project └── Assignment 1: First Project
Now Assignment moved:
├── Quiz 1: Test Your Knowledge
├── Lesson 1: Getting Started
├── Assignment 1: First Project ← just drag & drop!
└── Lesson 2: Basics
```
> **Tip:** Use the menu (☰) handle to drag. Changes save right away—no button needed!
### 📝 Add Assessment
Assessments help measure learner understanding, reinforce material, and provide feedback within your course. You can add quizzes, tests, or other evaluation types to any category .
**How to Add an Assessment:**
1. **Click "Add Assessment"**
In the Course Builder, look for the "Add Assessment" button within a category .
2. **Enter Assessment Title**
- *Required.*
- Choose a clear, descriptive title. (This appears to learners.)
3. **Select Assessment Type**
- Choose whether this assessment is a **Quiz** (for quick questions and knowledge checks) or an **Assignment** (open-ended or project-based submission).
- Use the dropdown menu to select either **Quiz** or **Assignment** as the assessment type.
4. **Continue**
- Once you've entered the title and selected the type, click **Continue** to proceed to the assessment editor.
- You can cancel at any time before saving.

**Assessment Setup Tips:**
- After continuing, you'll be able to add questions, configure options, set time limits, and more.
- Learner results and attempts are tracked in analytics.
### ➕ Add Lesson
Lessons are the core building blocks of your course. Each lesson typically contains content such as text, images, videos, files, and more.
**How to Add a Lesson:**
1. **Click "Add Lesson"**
In the Course Builder, navigate into a category where you want to add your lesson, and click the **Add Lesson** button.
2. **Complete Lesson Details**
You’ll see the Lesson Editor interface (see screenshot below), where you can:
- **Enter the Lesson Title** (required)
- **Select the Category** the lesson belongs to
- **Write your lesson content** using the rich-text editor provided
- **Upload videos** or audio using the dedicated buttons at the top
3. **Configure Lesson Options**
On the right panel, you can:
- Set **Lesson Visibility**
- 🟢 *Published*: Live for all assigned learners
- 📝 *Draft*: Only visible to you, not learners
- Configure **Comments** options
- 💬 Enabled: Allow comments
- 🙈 Hidden: Hide comments
- 🔒 Locked: No new comments allowed
- *Attach files* (optional): Upload PDFs or other resources
- *(Optional)* Set a **Lesson Thumbnail** to represent your lesson visually
4. **Save**
When you have finished editing, click **Save** in the top-right corner to publish or draft the lesson.

**Quick Tips for Lessons:**
- Use the rich text editor to format content, embed images, or add code blocks.
- The **Upload Video** and **Upload Audio** buttons make it easy to add multimedia.
- Attach supporting resources such as handouts, slides, or reference docs as files.
- Published lessons become visible immediately to assigned learners if the course visibility permits.
**What You See in the Lesson Editor:**
- **Main Panel:** Enter title, category selection, and write rich lesson content
- **Sidebar:** Configure visibility, comments, upload thumbnail, attach files, and manage lesson-specific settings
## 🎮 Action Buttons & Functionality
**Primary Actions**

Each course in the table includes three main action buttons:
**Course Actions:**
- **Edit Course**: Modify course content and settings
- **Preview Course**: View course as learners see it
- **Delete Course**: Remove course permanently
## 👁️ Course Preview
When you click **Preview** in the Course Actions, you are shown an interactive preview of your course as potential learners will see it. The preview interface displays the full course navigation and content organization, allowing you to experience your course from the learner's perspective.
**Preview Interface Includes:**
- **Outline:** The main course structure, with expandable categories and lessons (see screenshot below).
- **Details:** Course information, description, objectives, and settings.
- **Comments:** Preview how course discussions and learner feedback will work.
- **Analytics:** See how progress and engagement stats will appear.

## 📝 Course Details
The **Course Details** section is where you define the key information for your course. This interface allows you to specify the course title, description, category, visibility, thumbnail image, and course status. These fields ensure your course is clearly presented and organized for both learners and administrators.

**Course Details Interface Includes:**
- **Title**
Enter a clear, descriptive name for your course.
*Required. Maximum 140 characters.*
_(Displayed at the top of the Course Details section, as shown in the screenshot)_
- **Description**
Provide a brief summary of what this course covers.
*Appears beneath the title on course landing and search pages.*
- **Course Visibility**
Decide who can access your course:
- **Private**: Only assigned users can view and enroll. (Shown with a lock icon and selected by default in the screenshot.)
- When **Private** is selected and the course is saved, an **Assign** button appears in the **Analytics** tab, positioned to the right of the **Enrollments** section.
- Clicking **Assign** opens a modal listing all users in your company. You can select users and assign them to the course; they will then appear in the "Enrollment" modal.
- **Public**: Anyone with the link can view details and enroll.
- If the course is Public, the **Assign** functionality and button do **not** appear.
- **Course Thumbnail**
Upload an image to represent your course visually.
*Recommended: 1280x720px. Thumbnail appears on course catalog, overview, and at the top of the Course Details panel.*
_(Example shown: “20% Sale” graphic)_
- **Course Status**
Set your course’s current state:
- **Published**: Learners can view and access the course. (Status indicator appears in green in the screenshot.)
- **Draft**: Hidden from learners while you make edits.
You can also add or remove tags and assign the course to relevant categories for better organization.

- A toggle to enable or disable course preview mode (`Enable Course Preview`)
- A numeric field showing the number of previewable lessons (labeled `Preview Criteria Limit`, here set to 1 Lesson)
- A text area for providing a `Preview Description` so you can specify details visible in preview mode
- A `Preview Link` field containing a shareable course preview URL, along with a copy-to-clipboard button for easy sharing
This layout allows you to control and customize how and what parts of your course are shown during preview, set limits on accessible lessons, describe the preview for viewers, and quickly share preview access.
## 💬 Comments
> **Note:**
> The **Comments** tab is currently under development. This feature will soon enable discussion, feedback, and social learning directly within each course. Stay tuned for updates!
//
## 📊 Course Analytics
The **Analytics** tab in the Course Builder offers a comprehensive overview of learner engagement and course effectiveness. It provides key insights into enrollment, completion rates, and individual learner progress, helping you monitor outcomes and identify areas for improvement.

**Course Analytics Dashboard Includes:**
- **Top Metrics Cards**
- **Total Lessons**: The number of lessons included in the course.
- **Enrolled Learners**: How many users are enrolled in the course.
- **Completed**: The number of users who have fully completed the course.
- **Completion Rate**: Percentage of learners who have finished all required assessments.
- **Course Progress**
- Visual progress bar showing aggregate progress across all learners.
- Example: "Completed: 1 | In Progress: 0" indicates the status breakdown.
- **Course Status**
- Instant snapshot of whether the course is **Published** or **Draft**.
- Visibility indicator for Public or Private access.
- Displays creation and published dates.
### 👥 Enrollments & Learner List
The **Analytics** tab also provides a detailed overview of user enrollments within each course. You will see a table displaying all users currently enrolled, their progress, status, enrollment dates, and recent activity.

**Enrollment Table Columns:**
- **User**: The learner's name and email address, along with their avatar.
- **Progress**: A visual progress bar and percentage for how much of the course they've completed.
- **Status**: Indicates whether the learner has completed, is in progress, or not started. (e.g., "Completed")
- **Enrolled Date**: The date the learner was added to the course.
- **Last Activity**: The most recent date the learner interacted with the course.
> **Assign Button:**
> The blue **Assign** button (top right) is only visible when the course is set as **Private**. This allows you to manually assign the course to specific users or companies.
> If the course is **Public**, the Assign button will not appear, as anyone with access can enroll themselves.
When you click the **Assign** button for a Private course, an **"Assign Course"** dialog appears, as shown below:

> **Example: Assign Course Dialog**
> The dialog features a dark-themed table for selecting users or companies to assign a course.
>
> - **Controls:**
> - Entries per page dropdown (e.g., Show 10 entries)
> - Search field for filtering by name/email
> - **Table Columns:**
> - **Company Name**
> - **Email**
> - **Action** — a blue **Assign** button for users not yet assigned , Click button to assign , or a green **Assigned** badge for already assigned users.
> - **Pagination:** Controls at the bottom (Previous, Next, current page highlighted)
> - **Close** button at the bottom right.
This dashboard equips course administrators and instructors with the real-time data needed to track learner progress, celebrate completions, and support those needing help—ensuring a successful learning experience for everyone involved.
---
# Available Courses
> Discover and enroll in comprehensive learning courses designed to help you master the platform and enhance your professional skills with interactive content and progress tracking
Source: https://docs.aisync.link/knowledge-hub/available-courses
# 🎓 Available Courses
Welcome to the **Knowledge Hub** - your gateway to comprehensive learning and skill development!
Discover a curated collection of courses designed to help you master the platform and enhance your professional skills. Whether you're just getting started or looking to advance your expertise, we have the perfect learning path for you.

> 💡 **Quick Tip:** Start with the "Onboarding (Start Here)" course to get familiar with the platform, then explore specialized courses based on your role and interests.
## 📖 Course Catalog
Browse through our comprehensive collection of courses, each designed to help you succeed. Filter by type, search by keywords, or explore based on your learning goals.
## 🚀 Onboarding (Start Here)
**Perfect for:** New users and platform beginners
**Duration:** Self-paced (approximately 2-3 hours)
**Difficulty:** Beginner
**Certificate:** Available upon completion
| **Course Details** | **Information** |
|-------------------|-----------------|
| **Course Type** | Admin Course |
| **Status** | Published |
| **Added By** | Admin |
| **Enrollment** | Available for all users |
| **Description** | Complete onboarding course to get you started with the platform |
### 📋 Course Overview
This comprehensive onboarding course will guide you through the essential steps to set up and activate your account. The course covers everything from initial login to advanced configuration, ensuring you're fully prepared to use all platform features.
### 🏗️ Course Structure
- **Total Lessons:** 5
- **Quizzes:** 0
- **Assignments:** 0
- **Progress Tracking:** Available

### 📝 Lessons Included
1. **Welcome Onboard!**
- Learn how to get started on the platform step-by-step
- From logging in for the first time to setting up your payment
- Activate your account and get ready to use all features
2. **Submit Business Details**
- Complete your business profile setup
- Configure essential business information
3. **How to Purchase and Verify Phone Numbers with Spam Protection**
- Learn the phone number purchasing process
- Understand spam protection features
- Set up verification procedures
4. **How to Configure Incoming Call Routing Settings**
- Master call routing configuration
- Set up proper call handling workflows
5. **How to Connect Your GoHighLevel Account**
- Integrate with GoHighLevel platform
- Configure external system connections

### 🎯 What You'll Learn
- ✅ **Account Access:** How to log in and access your account
- ✅ **Terms & Service:** How to accept the Terms of Service
- 💰 **Payment Setup:** How to add your card and set up auto-recharge
- ⚙️ **Account Activation:** How to activate your account and get ready to use all features
### 🏆 Course Benefits
By the end of this course, your account will be **fully activated and ready to go** so you can enjoy a smooth and powerful AI experience!
**Let's get started - your journey begins now!** 🤖
---
## 👨💻 Dev Course
**Perfect for:** Developers and technical team members
**Duration:** Self-paced (variable based on content)
**Difficulty:** Intermediate to Advanced
**Certificate:** Available upon completion
| **Course Details** | **Information** |
|-------------------|-----------------|
| **Course Type** | Company Course |
| **Status** | Published |
| **Added By** | Company Dev (Company-1-4) |
| **Course ID** | #1 |
| **Enrollment** | Available for company members |
| **Description** | Test course for development purposes |
### 📋 Course Overview
This is a development course designed for testing and training purposes within the company environment. It provides hands-on experience with development tools and processes, helping you master the technical aspects of the platform.
### 💡 Course Features
- **Development-focused content** and practical exercises
- **Company-specific training materials** and guidelines
- **Testing and evaluation tools** for skill assessment
- **Real-world project scenarios** for hands-on learning
- **Code review and collaboration** practices
### 🏗️ Course Structure
- **Total Lessons:** Variable (based on development needs)
- **Quizzes:** Available
- **Assignments:** Practical coding exercises
- **Progress Tracking:** Real-time monitoring
---
## 📝 How to Enroll
Ready to start your learning journey? Follow these simple steps to enroll in any available course:
### 1️⃣ Step 1: Browse Available Courses
Review the course catalog above to see all available courses. Each course shows:
- **Course title and description**
- **Course type** (Admin or Company)
- **Publication status**
- **Who added the course**
- **Available actions**
### 2️⃣ Step 2: Select a Course
- **Click on the course title** to view detailed information
- **Use the "View" button** to access course content
- **Review course requirements** and prerequisites
### 3️⃣ Step 3: Enroll in the Course
- **Click "Subscribe"** for Company courses
- **Click "View"** for Admin courses
- **Confirm your enrollment** when prompted
### 4️⃣ Step 4: Track Your Progress
- **Monitor your completion status** in real-time
- **View lesson progress** and completion percentages
- **Access course materials** and resources

## 🏷️ Course Types
Understanding the different course types helps you choose the right learning path for your needs:
### 🛡️ Admin Course
- **Availability:** System-wide courses available to all users
- **Content:** General platform training and onboarding
- **Access:** No special permissions required
- **Examples:** Onboarding, platform basics, general training
### 🏢 Company Course
- **Availability:** Organization-specific courses for team members
- **Content:** Company-specific processes and procedures
- **Access:** Requires company membership
- **Examples:** Development training, company policies, specialized workflows
## 📑 Course Status
Courses can have different publication statuses:
- **Published:** Course is live and available for enrollment
- **Draft:** Course is being developed and not yet available
- **Archived:** Course is no longer active but may be accessible for reference
## 🛠️ Getting Started
Follow this step-by-step guide to begin your learning journey:
### 1️⃣ Access the Knowledge Hub
- **Navigate to the Knowledge Hub** from the main menu
- **Look for the "Knowledge Hub"** section in the sidebar
- **Click to expand** the menu options
### 2️⃣ View Available Courses
- **Select "Available Courses"** from the Knowledge Hub menu
- **Browse through the course catalog**
- **Use search and filter options** to find specific courses
### 3️⃣ Choose Your Course
- **Review course descriptions** and requirements
- **Check course type** and availability
- **Select a course** that matches your learning needs
### 4️⃣ Begin Learning
- **Click "Subscribe"** for Company courses
- **Click "View"** for Admin courses
- **Start with the first lesson** and track your progress

## ✨ Course Features
The learning platform offers several features to enhance your educational experience:
### 📈 Progress Tracking
- Real-time progress monitoring
- Completion percentages for each lesson
- Overall course progress indicators
- Achievement badges and milestones
### 🖥️ Interactive Content
- Video lessons with playback controls
- Downloadable attachments and resources
- Interactive quizzes and assessments
- Discussion forums for each lesson
### 📱 Mobile Access
- Responsive design for mobile devices
- Offline access to downloaded content
- Synchronized progress across devices
- Push notifications for course updates
---
# DND Numbers
> User guide for adding, editing, filtering, and managing Do Not Disturb entries.
Source: https://docs.aisync.link/DND-number/dnd-numbers
**DND Number** is where you keep a list of phone numbers (and related details) that should be treated as **Do Not Disturb** for your organization. Each entry tells the system which contact channels should be limited.
## 📋 Main list
When you open the screen, you will see:
- a table of DND entries
- and an **Add DND Number** button at the top.
### 📝 What each column shows
| Column | Meaning |
|--------|---------|
| **#** | Row number in the list. |
| **First Name** | First name or label, if provided. |
| **Last Name** | Last name, if provided. |
| **Area Code** | Area code, if provided. |
| **Email** | Related email, if provided. |
| **DND Status** | Which DND channel types are active for this row. |
| **Added By** | User who created this entry. |
| **Created At** | Added date/time in your timezone. |
| **Action** | Row controls to edit or delete. |
If a value was never provided, the table may show **N/A**.
### 🔍 Search and ordering
- Search box above table filters by matching text across searchable columns.
- Typical searchable values include names, area code, email, added-by, and date text.
- Default order is usually newest entries first.
## 🎛️ Filters
Filters narrow results before table refresh.
### 📅 Date range
Filters by **Created At** date.
- Choose a preset (today, yesterday, this week, last month, etc.).
- Or choose **Custom dates** and set **Start Date** + **End Date**.
- Click **Filter** to apply.
For presets, dates are auto-filled. For custom range, both dates should be selected before applying.
### 🚦 DND status filter
Shows rows matching selected status type:
- **All**
- **DND all channels**
- **Emails**
- **Text messages**
- **Calls & voicemails**
- **DND inbound calls and SMS**
Choose one option, then click **Filter**.
## ➕ Adding a DND number
1. Click **Add DND (Do Not Disturb ) Number**.
2. Fill form fields.
3. Click **Submit**.
On success, confirmation appears and list refreshes with the new entry.
Use **Back** to return without saving.
## ✏️ Editing a DND number
1. Click **Edit** on a row.
2. Update fields.
3. Click **Submit**.
For existing rows, DND checkbox changes may save shortly after toggling. Still click **Submit** when changing text fields (name, phone, area code, email) so all updates are persisted together.
## 🖊️ Form fields (add and edit)
**🧑 First name**
Optional short text.
**👤 Last name**
Optional short text.
**☎️ Phone number (required)**
Required primary number for this DND entry.
- Must be present before save.
- Input formatting is normalized by system.
**📞 Area code**
Optional short text.
**📧 Email**
Optional email address field.
**🚫 DND status (checkboxes)**
This section defines which channels are limited for this number.
The UI is split as:
- top: **DND all channels**
- middle: individual options (Emails, Text messages, Calls & voicemails)
- bottom: **DND inbound calls and SMS**
**1️⃣ DND all channels**
- Turning this **on** applies broad DND across channel types.
- When turned on, middle individual options are turned off.
**2️⃣ Individual channels**
- **Emails**
- **Text messages**
- **Calls & voicemails**
If any of these turn on, **DND all channels** is turned off.
If one of these turns off in edit logic, **DND inbound calls and SMS** may also turn off to maintain consistency.
**3️⃣ DND inbound calls and SMS**
Separate option shown at bottom with info icon.
- Can be toggled independently in UI behavior.
- May be constrained by broader DND logic based on implementation rules above.
### 🏷️ How status appears in table
Rows show color badges for active DND types (for example DND All, Emails, Text Messages). Badge text is normalized for readability.
## 🗑️ Deleting a DND number
1. Click row **delete** control.
2. Confirm prompt.
If successful, row is removed and success message appears. If not, error message is shown.
Delete is permanent for that entry. To restore it later, add it again as a new DND row.
---
---
# Activity Log
> User guide for filtering, reviewing, and inspecting activity history in your workspace.
Source: https://docs.aisync.link/activity-logs/activity-logs
The Activity Log is a running record of important actions in your workspace. It helps you see who did what, when it happened, and (when details exist) what changed.
Use it to review recent work, trace updates, or confirm that something was created, updated, or removed.
## 🧲 Filters (top of the page)
Filters narrow the list so you only see relevant entries.
### 👤 User
If available, choose one user or keep **All Users** to include everyone.
### 🗂️ Type
Choose one activity category (module/area) or **All Types**.
Type options reflect categories present in your logs.
### ⚡ Event
Choose event kind (such as created/updated/deleted) or **All Events**.
### 📅 Date Range
Select time period:
- Today
- Yesterday
- week/month presets
- last 7/14/30 days
- **Custom dates**
If range is not custom, Start/End are auto-filled and locked to preset logic.
Default page load is typically **Today**.
### 🕑 Start Date and End Date
Used with Date Range.
- In **Custom dates**, both are editable.
- In presets, values are auto-managed by selected range.
### 🔎 Filter
Apply date changes (especially for custom range/manual date adjustments).
User/Type/Event selections may auto-refresh without pressing Filter.
### ♻️ Reset
Resets filters to defaults:
- User = all
- Type = all
- Event = all
- Date Range = Today
Then refreshes the list.
## 📋 The Activity Log list
The main table shows one row per activity.
| Column | Meaning |
|--------|---------|
| **#** | Row number on current page (not a permanent record ID). |
| **User** | User associated with the activity. |
| **Type** | Activity category/module label. |
| **Event** | Action label or mapped event text. |
| **Description** | Short human-readable explanation of what happened. |
| **IP Address** | Source network address when recorded. |
| **Date/Time** | Activity timestamp in readable format. |
| **Details** | Opens Activity Details panel for that row. |
### 🛠️ Table controls
- **Search** box filters rows by matching text.
- Rows-per-page control changes table density.
- Pagination moves through larger history sets.
## 🔍 Activity Details
Clicking Details opens **Activity Details** for one row.
This panel usually includes:
- **Activity** (combined title/summary of action)
- **Name** (item name when available)
- **By User**
- **IP Address**
- **Date/Time**
Depending on event type, you may also see:
- **Setting Changed** (specific settings area)
- **Related To** (extra context like pipeline/number/course/etc.)
- **Changes** (old vs new values when change snapshots exist)
If detail payload is unavailable, panel may show a short unavailable message.
Close panel using **Close** or standard window close control.
---
# Personal Settings
> Manage your personal profile information and account preferences
Source: https://docs.aisync.link/profile-settings/personal-settings
## 👤 Profile Information

### 📝 Name
Your display name that appears throughout the platform. This is how other users and system notifications will identify you.
### 📧 Email Address
Your primary email address used for:
- Account login
- System notifications
- Password recovery
- Important account communications
### 📱 Phone Number
Your contact phone number for account-related communications and verification purposes.

## 📞 Communication Preferences
### ☎️ Incoming Call Settings
Configure how you want to handle incoming calls with the following options:
- **Dialer**: Handle calls through the platform's dialer interface
- **Phone**: Receive calls directly on your phone
- **AI**: Use AI assistance for call handling
- **Dialer + AI**: Combine dialer functionality with AI assistance

## 🌍 Location & Time Settings
### 🕒 Timezone
Set your local timezone to ensure:
- Accurate call scheduling
- Proper timestamp display
- Correct business hours alignment
Example: Chicago / USA / CST

## 🔄 Updating Your Settings
1. Navigate to **Settings** > **Personal Settings**
2. Modify any of the available fields
3. Click the **Update** button to save your changes
4. Use **Cancel** to discard any unsaved changes

---
# Password Settings
> Change your account password
Source: https://docs.aisync.link/profile-settings/password-settings

## 🔒 Change Password
- **Current Password**: Enter existing password
- **New Password**: Enter new password
- **Confirm Password**: Re-enter new password
Click **Update** to save changes.

---
# Browser Sessions
> View and manage all active browser sessions across devices to maintain account security.
Source: https://docs.aisync.link/profile-settings/browser-sessions
## 🖥️ Logout Options

- **Logout Other Devices** - End all sessions except current one
Sessions automatically expire after inactivity. You'll receive email alerts for new device logins and suspicious activity.

---
# Integrations
Source: https://docs.aisync.link/settings/social-sign-in-integration
The **Integrations** tab is where you connect RizzDial with outside apps and services. These connections help you sign in faster, sync contacts and leads, connect calendars, and prepare other tools for automation.
## 🎯 What This Tab Is Used For
Use the Integrations tab when you want to:
- Connect Google Sign In to your account
- Manage LeadConnector locations
- Connect Facebook Lead Ads and sync leads from Facebook Pages
- Choose which Facebook Pages should send leads into RizzDial
- Assign Facebook Lead Forms to PowerLists
- Map Facebook form questions to RizzDial contact fields
- Check whether calendar, email, payment, or social integrations are available
- Disconnect an integration when it is no longer needed
The Integrations tab shows a group of integration cards. Each card represents one app or service.
Each card normally shows:
- App name
- App icon
- Connection status
- A short note about the connection
- A button such as **Connect**, **Manage**, **Disconnect**, or **Awaiting setup**
Status labels help you quickly understand what is ready:
| Status | Meaning |
|--------|---------|
| **Connected** | The app is already linked |
| **Not Connected** | The app is available but not linked yet |
| **Awaiting setup** | The app is shown, but it is not ready to connect on the current account or plan |
## 🔌 Available Integration Cards
### 🔐 Google Sign In
Google Sign In lets you connect your Google account for login access.
When it is not connected, the card shows a **Sign in with Google** button. After connection, the card shows **Connected** and may display the connected Google email address.
Use this when you want easier account access through Google.
### 🔗 Managing LeadConnector
Click **Manage** on the LeadConnector card to open the LeadConnector Integration window.
**➕ Connect New**
Use **Connect New** when you want to add another LeadConnector location.
After clicking it, you are taken through the connection process. Once completed, the location appears in the LeadConnector table.
**🔄 Re-Connect**
Use **Re-Connect** when an existing location needs to be refreshed or authorized again.
This is useful if:
- The connection expired
- Permissions changed
- The location is not syncing correctly
**❌ Disconnect**
Use **Disconnect** when a location should no longer be linked to RizzDial.
Before disconnecting, make sure the location is not needed for active workflows or contact syncing.
#### **🌐 Embedding Link**
The **Embedding Link** button copies a special link to the clipboard.
Use this when you need to place or share the embedded RizzDial experience inside a connected LeadConnector environment.
**🧑💼 Agent Name Field**
The **Agent Name Field** dropdown lets you choose which connected-location custom field should store or receive the agent name.
The list loads available custom fields from the connected location. After selecting a field, the choice saves automatically.
**⭐ Default Location**
The **Default** switch marks which connected LeadConnector location should be treated as the main location.
Only one location should be default at a time. If there is only one connected location, the system does not allow you to turn off the default setting because at least one default is needed.
**🔄 Sync Contact**
The **Sync Contact** dropdown controls which contacts should sync.
Available choices:
- **All** — sync all eligible contacts
- **Answered** — sync contacts based on answered activity
- **No** — do not sync contacts for that location
The setting saves automatically after you change it.
**🆔 Assign User ID**
The **Assign User ID** switch controls whether user assignment information should be included for that connected location.
When turned on, the setting shows **Yes**. When turned off, it shows **No**. The change saves automatically.
### 📘 Facebook Lead Ads
Click **Connect Facebook** or **Manage** on the Facebook Lead Ads card.
#### 🔗 Connect Facebook
If Facebook is not connected, click **Connect Facebook** and sign in with a Facebook account that has access to the business Pages you want to use.
The connected Facebook account must have the correct Page permissions. If no Pages appear after connecting, confirm that the Facebook user is an admin or has lead access for the Page.
**🔄 Refresh Pages**
**Refresh Pages** reloads the current Facebook Pages and connection information.
Use it when:
- A Page was added recently
- Permissions were changed
- The list looks outdated
**📥 Sync Assets**
**Sync Assets** pulls the latest Facebook Pages, Lead Forms, and form fields into RizzDial.
Use it after:
- Connecting Facebook for the first time
- Creating a new Facebook Lead Form
- Editing form questions in Facebook
- Changing Page access
After syncing, the module shows how many Pages, Lead Forms, and fields were synced.
**🔛 Turn Lead Delivery On or Off**
Each Facebook Page can be switched on or off for lead delivery.
- **Leads On** means RizzDial should receive leads from that Page
- **Off** means the Page is connected but not sending leads into RizzDial
Turn on only the Pages that should send leads to your account.
**📋 Assign Lead Forms to PowerLists**
After syncing assets, Facebook Lead Forms appear under their Page.
Each form can be assigned to a PowerList. This tells RizzDial where new leads from that form should go.
If a form is not assigned to a PowerList, new leads may not be organized the way you expect.
**🗺️ Map Fields**
Click the **Map Fields** button to match each Facebook form question to a RizzDial contact field.
For every question from Facebook, select the RizzDial field where its answer should be stored. If you don’t want to import a particular question, either leave it unassigned or select **Do not import**.
Accurate mapping keeps your contact information organized and useful.
| Facebook Question | Choose RizzDial Field |
|-------------------|----------------------|
| Full Name | First Name / Last Name / Name |
| Phone Number | Phone Number |
| Email | Email |
| City | City |
Once you’ve made your selections, click **Save Mapping** to apply your changes.
**🔄 Reconnect Facebook**
Click **Reconnect** if you need to refresh Facebook permissions.
You might need to do this if:
- Page access has changed
- Lead forms are not syncing
- The connected Facebook user’s role was updated
- Facebook requests a new authorization
**❌ Disconnect Facebook**
Use **Disconnect** when Facebook Lead Ads should no longer send leads into RizzDial.
Disconnecting can stop active Page lead subscriptions, so confirm this action carefully.
### **📆 Connect Google Calendar**
You can also integrate Google Calendar to automatically create and manage events from RizzDial.
To connect your Google Calendar:
1. Click the **Connect Google Calendar** button in your Integrations settings.
2. Sign in with your Google account and grant the necessary permissions.
3. Once connected, you’ll see your calendar appear in the integration list.
Once connected, RizzDial will sync events automatically based on your settings.
- You can choose which calendars are used for scheduling.
- Any meetings or appointments added via RizzDial will appear on your Google Calendar.
- Changes you make in Google Calendar will stay in sync with RizzDial, keeping everything up to date.
Disconnect or reconnect at any time from the Integrations page.
---
# Business Detail
> Configure your business profile information for regulatory compliance and company identification.
Source: https://docs.aisync.link/settings/business-detail
## 🏢 Basic Information

Update and complete your company details for compliance and platform requirements:
- **Entity Type**: Select the legal structure of your business (e.g., Private, Public, LLC, Nonprofit, Partnership)
- **Company Name**: Enter your full legal company name as registered
- **Rizz Dial Industry**: Choose the industry your business operates in (e.g., Professional, Engineering, Technology)
- **Twilio Industry**: Select your industry classification as required by Twilio
- **EIN**: Enter your 9-digit Employer Identification Number (EIN)
- **EIN Issuing Country**: Select the country that issued your EIN (e.g., US)
- **Website**: Enter your company website (without http:// or https://)
- **Stock Symbol** (Optional): Enter your stock ticker symbol (e.g., AAPL), if applicable
- **Stock Exchange** (Optional): Select the relevant stock exchange (e.g., NASDAQ), if applicable
- **Business Type**: Specify your business type (e.g., Partnership)
- **Business Regions of Operation**: Indicate areas where your business operates (e.g., USA and Canada)
- **Business Registration Identifier**: Enter your business registration ID (e.g., EIN, DUNS, etc.)
- **Alternate Business ID** (Optional): Provide an additional business identifier (e.g., DUNS number)
- **Alt Business ID Type** (Optional): Choose the type for your alternate business ID (e.g., DUNS)
- **Social Media Profile URLs** (Optional): Add social media links (comma separated)
- **Testing**: (Field in use for internal/testing purposes or notes)

## 🏠 Address Details
Complete business address information:
- **Customer Name**: Name of the customer or business entity at this address
- **Street**: Primary business address (required)
- **Street Secondary** (Optional): Secondary or suite/apartment details
- **City**: Business location city (required)
- **State**: Select from dropdown menu (required)
- **Postal Code**: ZIP/postal code (required)
- **Country**: Select your country (required)

## 👤 Authorized Contact Details
Primary contact information for business verification:
- **First Name**: Contact person's first name (required)
- **Last Name**: Contact person's last name (required)
- **Email**: Official contact email address (required)
- **Title**: Contact person's title (required)
*Example: "Master"*
- **Job Title**: Contact person's specific role or position (select from options, required)
*Example: "DIRECTOR"*
- **Phone**: Direct contact phone number (required, include country code)

## 📋 Additional Details
- **Call Type**: Select the nature of calls (e.g., Other, Marketing, Customer Service, etc.) *
- **Call Per Month**: Enter the expected number of calls per month *
- **Employee Count**: Specify your organization's total employee count *
Click **Submit** to save your business profile information.

---
# Whitelabel Settings
> Configure custom domain, branding, and white-label interface settings
Source: https://docs.aisync.link/settings/whitelabel-settings
## 🌐 Custom Domain & Branding
### 🚫 No Whitelabel Domain Found
When no domains have been configured yet, the interface displays an empty state:
#### 📝 Setup Guide
- **Primary Action** - "Add Domain" button
- **Purpose** - Initial domain setup to enable white-label branding
- **Branding Context** - Explains connection between domain and branding customization

- **Section Title** - "Whitelabel Settings → Update IP To Domain ( A-Record : 34.204.28.243 )"
- **DNS Instructions** - Clear guidance for A-Record configuration
- **IP Address** - 34.204.28.243 for DNS setup

## 🛠️ Domain Configuration
### 🌍 Current Domain: portal.aisync.link.com
The domain management section displays the configured domain with action controls:
#### 🛡️ Domain Action Buttons
- **Edit Button** - Blue edit icon for modifying domain settings
- **Activate Button** - Blue activate icon to enable the domain
- **Delete Button** - Red delete icon for removing the domain

## 🎨 Brand Identity Settings
### 🏷️ Brand Name Configuration
- **Current Brand Name** - "Ai sync"
- **Purpose** - Appears next to logo in navigation
- **Brand Display** - Controls how brand appears throughout the interface
- **Customization** - Fully customizable text branding for your organization

### 🖼️ Logo Management System
#### 🌞 Light Logo Configuration
- **Current Status** - "Not set"
- **File Requirements** - PNG/JPG format, maximum 2MB file size
- **Usage Context** - Displayed in light theme interfaces
- **Recommended Dimensions** - Optimized for navigation bar display
- **Upload Process** - Click "Choose File" to select and upload logo

#### 🌚 Dark Logo Configuration
- **Current Status** - "Not set"
- **File Requirements** - PNG/JPG format, maximum 2MB file size
- **Usage Context** - Displayed in dark theme interfaces
- **Theme Compatibility** - Ensures brand visibility across all interface themes
- **Upload Process** - Select appropriate logo for dark backgrounds

#### 🧩 Favicon Configuration
- **Current Status** - "Not set"
- **File Requirements** - ICO or PNG format
- **Recommended Dimensions** - 16×16 or 32×32 pixels
- **Browser Display** - Appears in browser tabs, bookmarks, and favorites
- **Brand Recognition** - Small but important branding element for web presence

## ✏️ Edit Whitelabel Domain Modal
When clicking the **Edit** button, the modal opens with detailed configuration options:

---
# Twilio Credentials
> Configure Twilio API credentials and communication settings
Source: https://docs.aisync.link/settings/twilio-credentials
## 📞 Bring Your Own Carrier
The "Bring Your Own Carrier" option determines whether you want to use your own Twilio account or the platform's default carrier services.
### ⚙️ Available Options
- **Yes** - Use your own Twilio account with your credentials
- **No** - Use the platform's default carrier services
When set to "Yes", you must provide your own Twilio Account SID and Auth Token.

## 🔑 Required Credentials
When using your own Twilio carrier, you'll need to provide the following credentials:
### 🆔 Account SID
Your Twilio Account SID is a unique identifier for your Twilio account. This can be found in your Twilio Console dashboard.
### 🔒 Auth Token
Your Twilio Auth Token is a secret key used to authenticate API requests to your Twilio account.
Keep your Auth Token secure and never share it publicly. Treat it like a password.

---
# Send From Your Own Domain
> Emails to leads go out as your rep, from your business address, and replies go straight to them. About ten minutes, once.
Source: https://docs.aisync.link/settings/email-domain
When a rep emails a lead from the dialer, the Inbox or an automation, the lead
should see a real person at your company, not a platform address. Set up your
domain once and every email goes out like this:
> **Maria Gomez** <maria@harbordental.com>
and when the lead replies, it lands in **Maria's own inbox**.
```mermaid
graph LR
A[🌐 Enter your domain] --> B[📋 Copy 3 records
into your DNS]
B --> C[✅ Check DNS
Verified]
C --> D[✉️ Emails go out
as each rep]
```
## ✅ Before you start
- You're the **account owner** in AI Sync.
- You can sign in to wherever your domain is managed: GoDaddy, Cloudflare,
Namecheap, Google, Squarespace or similar. If someone else manages it,
send them the three records from step 2.
- Your domain is a business domain. Gmail, Yahoo, Outlook and other free
addresses can't be used.
---
## 🧭 Set it up
Go to **Settings → Email Setting** and click **Set up your domain** on the
*Send from your own domain* card. Type your domain, like `harbordental.com`,
and click **Continue →**.
AI Sync shows three **CNAME** records. Pick where your domain is managed and
the page shows exactly where to click there. Add each record with the **Copy**
buttons so nothing is mistyped.
Someone else runs your website? Click **Copy instructions for your web
person** and paste it into an email to them.
| Provider | Where | Host / Name field | Value field | Watch out |
|---|---|---|---|---|
| GoDaddy | My Products → domain → **DNS** → Add New Record | **Name**: `aisync` | **Value** | |
| Cloudflare | domain → **DNS → Records** → Add record | **Name**: `aisync` | **Target** | Set **Proxy status** to **DNS only** (grey cloud) |
| Namecheap | Domain List → Manage → **Advanced DNS** | **Host**: `aisync` | **Value** | Click the green ✓ to save |
| Squarespace / Google | Domains → domain → **DNS** | **Host**: `aisync` | **Data** | |
| Other | DNS settings where the domain is registered or hosted | The short name | The value | If it asks for the full name, use `aisync.yourdomain.com` |
The table shows record 1. Records 2 and 3 work the same way with
`s1._domainkey` and `s2._domainkey`. Don't change or delete any records that
are already there.
Click **Check DNS now**. Leave the page open and it checks again every minute
by itself. New records usually show up within a few minutes, sometimes up to
an hour. When all three say **✓ Found**, you land on **Verified**, with a
preview of exactly what your leads will see.
Under **Who emails come from**, set the company address (for example `hello`)
and your company name. Click **Save**.
---
## 🤖 Or let your AI assistant do it
With Claude, ChatGPT or Codex connected to AI Sync (see
[Connect MCP](/connect-mcp)), paste this:
```text
Set up my business email domain in AI Sync so emails to leads go out from my
own domain. Use my AI Sync connection: look up the email domain setup, add my
domain if it isn't there yet, and show me the three DNS records in a simple
table with exactly what to type for my DNS provider. If you can reach my DNS
provider, add them for me (Cloudflare: proxy off). Then check DNS until it's
verified, and tell me in one line when it's done.
```
The same prompt is on the setup page, with a **Copy prompt** button.
- **Your assistant can reach your DNS** (for example Cloudflare's own
connector): it adds the records itself, and you just approve.
- **It can't:** it gives you a table of exactly what to type, then checks for
you.
| Tool | What it does |
|---|---|
| `email_domain_get` | Status (`not_set_up`, `pending`, `verified`), the 3 records and a plain `next_step` |
| `email_domain_setup` | Add the domain; returns the records. Safe to repeat. |
| `email_domain_check` | Check DNS now. Wait a minute between checks. |
| `email_domain_sender` | Set the company address (e.g. `hello`) and name |
| `email_domain_remove` | Remove it. Confirm with the user first. |
Each record has `host` (full name) and `host_short` (what most providers
want). Only the account owner can use these. The API behind them is
`/api/settings/email-domain`.
---
## ✉️ Who each email comes from
| The rep's AI Sync login | Email goes out as | Replies go to |
|---|---|---|
| On your domain, e.g. maria@harbordental.com | **Maria Gomez** <maria@harbordental.com> | Maria |
| Somewhere else, e.g. sam@gmail.com | **Sam Patel** <hello@harbordental.com> | Sam's own address |
| No rep involved | The **account owner**, the same way | The account owner |
This covers the dialer's **Email** tab, the **Inbox** and **Send Email** steps
in automations and workflows. For automations, "the rep" is whoever saved the
disposition.
**Before your domain is verified,** emails still send, from the AI Sync
address, and replies still go to the rep. Nothing breaks while you wait for
DNS.
**Already using your own SendGrid account** under Email Setting? That keeps
working exactly as before. A workflow step that names its own From address
also keeps it.
---
## 📋 SOP: onboarding a client
1. ☐ Client's **account owner** is signed in to AI Sync.
2. ☐ **Settings → Email Setting → Set up your domain**, enter the domain.
3. ☐ The three CNAME records are added in the client's DNS (by them, or whoever runs their website).
4. ☐ **Check DNS** shows **Verified**.
5. ☐ Company address and name saved under **Who emails come from**.
6. ☐ Test: from the dialer, email a contact with **your own** email address. It arrives from the rep's address, and replying goes to the rep.
7. ☐ Tell reps: "Your emails now go out from your work address, and replies come to you."
---
## 🧯 If something is off
Check each record's **Host** in your provider. The most common mistake is the
domain added twice, like `aisync.harbordental.com.harbordental.com`: enter
only the short name. On **Cloudflare**, the proxy must be off (grey cloud,
"DNS only").
Free addresses like Gmail or Outlook can't be set up. Use the domain your
business email and website are on.
Another account already added it. Contact support to move it.
Their AI Sync login email isn't on your domain. Change their login email to
their work address in **User Management**, or leave it: replies still go to
them.
Make sure all three records say **✓ Found**. Keep emails personal and short;
long promotional emails to people who didn't ask for them get filtered
whatever the setup.
Click **Remove domain**. Emails go out from the AI Sync address again at once,
with replies to the rep. You can delete the three records from your DNS
afterwards.
**Lead replies don't come into the dialer's Inbox yet.** They go to the rep's
own email inbox. See [Inbox](/dialer/inbox).
---
# S3 Storage
Source: https://docs.aisync.link/settings/s3-storage
**S3 Storage** lets your company connect an external cloud storage bucket to RizzDial. Once configured, uploaded files can be saved in that bucket instead of keeping everything only on the application server.
## ☁️ Why use S3 Storage?
S3 Storage makes file storage more **reliable**, **scalable**, and **easier to manage**.
| Benefit | What it means for you |
|--------|------------------------|
| **One secure location** | Uploaded files live in your cloud bucket, not scattered on the app server |
| **Stable file links** | Files can be opened through consistent public or controlled URLs |
| **Less risk during maintenance** | Server updates or deployments are less likely to affect stored files |
| **Organized by company** | Files are separated by company and feature area |
| **Room to grow** | Supports larger file usage as your account expands |
Inside this tab, you will see the **S3 Storage Configuration** form with fields for your bucket name, region, access key, secret key, and bucket URL.
## 📝 What you need before setup
Before saving S3 Storage in RizzDial, make sure you already have:
- A cloud storage bucket created in **Amazon S3** or an **S3-compatible** storage provider
- The **bucket name**
- The **bucket region**
- An **access key**
- A **secret key**
- The **bucket URL**
- Permission for the access key to **upload**, **read**, and **delete** files in the bucket
If your company uses Amazon AWS, these details are usually created inside the AWS account. If you use another S3-compatible provider, the same type of information is normally available in that provider's storage dashboard.
## 📄 Field guide
**🗂️ Bucket Name**
The name of your storage bucket.
**Example:** if your company created a bucket named `my-company-files`, enter that name here. This tells RizzDial where files should be stored.
**🌎 Region**
The region where the bucket is hosted — for example, a US, Europe, or Asia region.
The region **must match** the bucket's real region. If it is wrong, uploads may fail. When unsure, check your storage provider dashboard.
**🗝️ Access Key**
Like a **username** for the storage bucket. RizzDial uses it to identify the storage account when uploading or deleting files.
**🔒 Secret Key**
Like a **password** for the storage bucket.
**🔗 Bucket URL**
The web address used to open files after they are uploaded — for example, `https://my-bucket.s3.us-east-1.amazonaws.com`.
If this URL is incorrect, files may upload but links may not open correctly.
---
# AI Settings
> The AI Settings page allows you to configure various artificial intelligence features and manage AI agent behavior limits to optimize performance and control costs.
Source: https://docs.aisync.link/settings/ai-settings

# 🔄 AI Call Concurrent Limits
Control how many AI calls can run simultaneously to manage system resources and costs.

#### 📊 Base Limit
Your base concurrent call limit is determined by your subscription plan. This represents the number of simultaneous AI calls included in your plan.
#### ➕ Additional Limit
You can purchase additional concurrent call capacity beyond your base limit:

- **Pricing**: $8.00 per additional concurrent call per month
- **Adjustment**: Use the `-` and `+` buttons to adjust your additional limit
- **Cost Calculation**: The total cost is automatically calculated based on your additional limit
#### ⚙️ Managing Concurrent Limits
1. Click the **Adjust Limit** button on the AI Call Concurrent card
2. Review your current base limit from your plan
3. Set your desired additional limit using the adjustment controls
4. Review the pricing and total cost
5. Click **Save changes** to apply the new limit

# 📅 Daily Calls Per Number
Set limits on how many calls each phone number can make per day to prevent overuse and manage costs.

#### ⚙️ Setting Daily Limits

1. Click the **Set Limit** button on the Daily Calls Per Number card
2. Enter your desired daily call limit (between 1 and the maximum allowed)
3. The system will validate that your limit is within acceptable ranges
4. Click **Save changes** to apply the new daily
# 🌎 Use Number For Local Presence
Leverage local presence to improve answer rates and reach by automatically selecting an outgoing number that matches the area code of the person being called.

Local presence ensures calls appear to come from a local number, increasing trust and the likelihood contacts will answer.
#### ⚙️ How to Configure
1. Click the **Edit** button on the "Use Number For Local Presence" card (as shown above)
2. Choose which of your available numbers the AI should use for each area code or region
3. You can assign multiple numbers to cover different locations
4. Optionally, set specific rules for fallback behavior if no matching local number is available (e.g. default to main number)
_Local presence settings help optimize answer rates and support tailored outreach across different geographies._

> **Note:** In AI Settings, a new tab named **"Use Number For Local Presence"** has been added with two options: **"All"** and **"Unassigned"** (by default, "All" is selected). When you click the **Set** button in this tab, a modal titled **"Set Use Number For Local Presence"** opens, where you can select between the same two values from a dropdown. After changing the value and clicking **Save changes**, the selected value is updated and reflected in the tab. This lets you easily control which numbers are used for local presence through a simple, clear interface.
---
# API OAuth Setting
> Configure and manage OAuth clients and personal access tokens for API authentication
Source: https://docs.aisync.link/settings/api-oath-setting
## 🔐 API OAuth Configuration

Manage your OAuth clients and personal access tokens to securely authenticate your applications with the API.
### 🏗️ OAuth Client Management
Create and manage OAuth clients to enable secure API access for your applications. OAuth clients allow you to:
- Generate Client ID and Client Secret for authentication
- Configure redirect URIs for authorization callbacks
- Set up confidential clients for server-side applications
### 🔑 Personal Access Tokens
Create personal access tokens for simpler API authentication without going through the full OAuth flow. Personal access tokens are ideal for:
- Personal use and testing
- Server-to-server communication
- Quick API access without OAuth complexity
For detailed information about OAuth setup, creating clients, generating tokens, and understanding the complete OAuth flow, please refer to the [API Reference Introduction](/api-reference/introduction).
---
# Configuring Daily Working Hours
> Configure business hours, availability schedules, and time zone settings
Source: https://docs.aisync.link/settings/working-hours
### 📅 Setting Work Days
For each day of the week, you can:
1. **Toggle Day Status**: Use the "On/Off" toggle to enable or disable working hours for specific days
2. **Set Start Time**: Configure when your business day begins
3. **Set End Time**: Configure when your business day ends

### ⏰ Time Selection
When configuring start and end times:
- Click on the time field to open the time picker
- Select hours (00-23) and minutes (00-59) using the dropdown menus
- Times are displayed in 24-hour format (e.g., 09:00, 17:00)

---
# Agency Reseller Overview
> Run client accounts under your agency: plans, setup, phone carriers, and payouts.
Source: https://docs.aisync.link/agency-reseller/overview
**Agency Reseller** is how an agency runs many client accounts from one login.
Each client gets their own workspace (numbers, reps, dialer, AI). You stay the parent account. You sell them a plan, finish their setup (or send them a link to finish it), and get paid on your own Stripe account.
The menu lives in the left sidebar as **Agency Reseller**. Only agency accounts see it.
## 📋 What is in the menu
| Item | What it is for |
| --- | --- |
| **Clients** | Every client at a glance: plan, setup progress, carrier, numbers, reps, and minutes. |
| **Add client** | Create the account, then walk a 6-step setup. You can finish it or invite the client. |
| **Plans** | Packages you sell: features, monthly price, and markup on calls, texts, numbers, and seats. |
| **Payments** | What clients paid you, what failed, and when Stripe sent it to your bank. Owner only. |
| **Agency settings** | Connect Stripe once. Optionally save your Twilio login so clients can run on it. Owner only. |
| **Reselling Setup** | The older pricing screen. Same plans, with per-rate markup. Use **Plans** for day-to-day work. |
## 💰 How the money works
Two different things get charged, and they are not the same wallet.
| What | Who pays | Where it lands |
| --- | --- | --- |
| The client's **plan** (and wallet top-ups they buy from you) | The client, on **your** Stripe | Your Stripe balance, then your bank |
| **Usage** on Our network (AI minutes, calls, texts, numbers) | You, from your agency usage balance | Platform billing. Turn on auto-recharge so it does not run dry |
| Usage on **your Twilio** or **the client's Twilio** | Twilio bills that account directly | We do not bill call, text, or number usage for those clients |
We do not take a cut of what clients pay you on Stripe.
A client cannot be created until you have at least one plan that includes features. An empty plan opens a blank account.
## ✅ Suggested order
Open **Plans** and click **New plan**. Pick features, a monthly price, and a markup. Every new client needs one.
Open **Agency settings** and finish Stripe. Plans and wallet top-ups cannot reach your bank until it is active.
Create the account, save business details, pick a phone carrier, then buy or import numbers.
From Clients, click **Open**. You are now inside that client's workspace.
Staff can use **Clients** and **Add client**. **Payments** and **Agency settings** are owner-only.
---
# Set up your agency
> Make a plan, connect Stripe, optionally save Twilio, then add your first client.
Source: https://docs.aisync.link/agency-reseller/first-day
Do these in order. A new agency account can add clients the same day if a plan exists.
## 1️⃣ Make a plan
Open **Agency Reseller → Plans**.
Click **New plan**. You need:
- A **name** the client will see
- A **monthly price**, or **Bill at my cost** if you do not want a fixed price
- A **markup** on calls, texts, numbers, and seats (`0%` means they pay your cost)
- At least one **feature** turned on
If every plan has zero features, **Add client** will block you. The account would open blank.
## 2️⃣ Connect Stripe so you get paid
Open **Agency Reseller → Agency settings**.
Client plans and wallet top-ups are charged on **your** Stripe account and paid out to **your** bank. We do not take a cut.
Until Stripe shows it can take payments and pay out, the Clients page shows **Your Stripe account needs attention**.
Click **Finish in Stripe** and complete whatever Stripe asks. Come back and confirm:
| Check | You want |
| --- | --- |
| Can take payments | Yes |
| Payouts to your bank | Yes |
| Bank account | A real account, last four shown |
## 3️⃣ Decide how phones will work
Every client picks one phone carrier. You can use a different one per client.
| Option | When to use | Who Twilio bills |
| --- | --- | --- |
| **Your agency's Twilio** | You already have Twilio and want each client on a separate subaccount | You |
| **The client's own Twilio** | The client already has Twilio | The client |
| **Our network** | Nothing to set up. Fastest way to get them dialing | Your agency usage balance |
If you want **Your agency's Twilio**, save the Account SID and Auth Token on Agency settings first.
Our network usage comes out of **your** agency balance. Turn on **auto-recharge** under Billing.
## 4️⃣ Add the first client
**Agency Reseller → Add client**.
Step 1 (**Business**) creates the account. Then finish (or invite them to finish) legal business details, phone carrier, numbers, team, and GoHighLevel.
See [Add a client](/agency-reseller/add-a-client) for every field.
## ✅ Before you hand them the login
A plan with features is assigned
Stripe can take payments if they are supposed to pay you
A phone carrier is connected
At least one number is on the account (or they know how to buy one)
You clicked **Open** and the workspace looks like theirs
If they will finish setup themselves, you sent **Invite client to finish** (the link lasts 7 days)
---
# Clients
> Every client account you run, at a glance. Open one or finish its setup.
Source: https://docs.aisync.link/agency-reseller/clients
**Clients** is the Agency Reseller home page. You see every client account you run, how far setup has got, which phone carrier they are on, and whether they have been active.
## 🔔 Banners at the top
Two warnings can appear above the tiles. They are for the agency owner.
**Turn on auto-recharge.** Your clients' AI voice minutes and other usage on Our network come out of your agency balance. Auto-recharge keeps it from running dry. **Open billing** goes to your subscription page.
**Your Stripe account needs attention.** Client plans and wallet top-ups are charged on your Stripe and paid out to your bank. Until Stripe is finished, those charges cannot land. **Open settings** goes to Agency settings.
Staff who are not the owner do not see the Stripe banner.
## 📊 Tiles
| Tile | What it counts |
| --- | --- |
| **Clients** | How many client accounts you have, and how many are Active |
| **Setup complete** | How many finished all 6 setup steps, and how many are still in progress |
| **Phone numbers** | Numbers across every client |
| **Active reps** | Team members across every client |
| **Minutes this month** | Dialer talk time across every client |
## 📋 The table
Search by name or email in the box on the right.
| Column | Meaning |
| --- | --- |
| **Client** | Business name and the sign-in email. Initials are taken from the name. |
| **Plan** | The plan this client is on. Owners can change it from the dropdown. |
| **Setup** | A percent bar. **Done** means all 6 steps are finished or skipped. If it is not done, **Next:** tells you which step is waiting. |
| **Carrier** | **Our network**, **Your agency's Twilio**, or **The client's own Twilio**. **Not set** until the Phone carrier step is saved. |
| **Numbers** | Phone numbers on that account |
| **Active reps** | Team members on that account |
| **Minutes (mo)** | Dialer talk time this month |
| **Last activity** | How long since something happened. **No activity yet** on a brand new account |
**Open** switches you into that client's workspace. See [Open a client](/agency-reseller/open-a-client).
From the top of the page you can jump to **Payments**, **Platform usage**, **Agency settings**, or **Add client**.
## ➕ Empty state
If you have no clients yet, the page asks you to add the first one. Create the account, pick its plan and phone carrier, then finish setup yourself or send the client a link.
---
# Add a client
> Create the account, then finish the 6-step setup yourself or send the client a link.
Source: https://docs.aisync.link/agency-reseller/add-a-client
**Add client** opens the wizard. Create the account first. Everything after that can be finished by you or by your client.
The left rail is the same 6 steps the whole way through.
| # | Step | Required? | What it is for |
| --- | --- | --- | --- |
| 1 | **Business** | Yes | Name, contact, time zone, address, plan, who pays |
| 2 | **Business details** | Yes | Legal name, EIN, industry. Carriers need this to register texting |
| 3 | **Phone carrier** | Yes | The network calls and texts go through |
| 4 | **Phone numbers** | Yes | Buy or import the numbers the team calls from |
| 5 | **Team** | Optional | Reps and managers who will use the account |
| 6 | **GoHighLevel** | Optional | Sync contacts and appointments |
After step 1 you also get **Invite client to finish** and **Open account** at the top.
You can keep working on a client after you send the invite. The link does not lock you out.
## 1️⃣ Business
The client's company and the person you work with. They sign in with this email.
| Field | Notes |
| --- | --- |
| **Business name** | The account name. Example: Bright Smile Dental |
| **Contact first / last name** | The person you work with |
| **Email** | Their sign-in. Must be unique |
| **Phone** | Optional |
| **Time zone** | Used for their calendar and dialer hours |
| **Street, city, state, ZIP, country** | Defaults to US |
| **Plan** | Only plans that include features are listed |
| **Who pays for the plan** | **Client pays you** charges their card on your Stripe. **You cover it** means you eat the cost |
| **Password** | Optional. Leave empty and they choose one from the invite link |
Create a plan first. Every client needs a plan that includes features, or their account opens blank.
**Create client & continue** saves the account and unlocks the other steps. You can change any of this later from the client's own Settings.
## 2️⃣ Business details
Carriers check these before the client can text at scale (A2P 10DLC). Use the **legal name and address on the EIN letter**, not a trading name.
| Field | Notes |
| --- | --- |
| **Legal business name** | As on the EIN letter |
| **Business type** | Private company, public company, non-profit, government, or sole proprietor |
| **Industry** | Used on the texting registration |
| **EIN (Tax ID)** | Example format: 12-3456789 |
| **Website** | Optional |
| **Street address** | As on the EIN letter |
| **City, state, ZIP** | Required |
| **Where they do business** | USA only, USA and Canada, Canada only, or International |
Saved to the client's texting registration profile. **Save & continue**.
## 3️⃣ Phone carrier
Choose the network this client calls and texts through. You can use a different one for every client.
### Your agency's Twilio
We create a separate Twilio subaccount for this client under your Twilio login. Their numbers stay separate.
- Twilio bills **you** directly
- We bill **no** call, text, or number usage for this client
- You must have a Twilio login saved under Agency settings
### The client's own Twilio
The client already has Twilio. Paste their Account SID and Auth Token.
- Twilio bills **them** directly
- We bill **no** call, text, or number usage
### Our network
Nothing to set up.
- Calls, texts, and numbers are billed to **your agency wallet** at your plan's base rates
- Turn on auto-recharge so a busy client cannot run the balance dry
**Connect carrier** saves the choice.
## 4️⃣ Phone numbers
Buy local numbers or import ones the client already owns, then turn on spam protection so calls do not show as "Spam Likely".
The step shows how many numbers are already on the account and which carrier those numbers will be bought on.
**Buy or import numbers** opens the client's Numbers page **as that client**. The setup bar updates when at least one number exists.
You cannot buy numbers until a carrier is connected. If the usage balance is below zero on Our network, new number purchases are blocked until you top up.
## 5️⃣ Team (optional)
Add the reps and managers who will dial. Each gets their own sign-in.
**Add team members** opens the client's team page as them. **Skip for now** if you will do this later.
## 6️⃣ GoHighLevel (optional)
Connect the client's GoHighLevel location to sync contacts, pipelines, and appointments.
**Connect GoHighLevel** opens their integrations page as them. **Skip** if they are not on GoHighLevel.
## ✉️ Invite the client to finish
On any step after the account exists, click **Invite client to finish**.
They get a one-time link, valid **7 days**, to choose a password and finish the remaining steps. You can keep working on it too.
---
# Plans
> Make the packages you sell, then put each client on one.
Source: https://docs.aisync.link/agency-reseller/plans
**Plans** is where you build what you sell.
A plan is a package: a name, a monthly price (or bill-at-cost), a markup on usage, and the features the client can see. Every client must be on a plan that includes features.
## 📋 What each card shows
| On the card | Meaning |
| --- | --- |
| **Name** | What you and the client see |
| **Price** | Monthly amount, or **Your cost** if you checked bill-at-cost. A `x 5.7` style figure is a multiplier from Advanced pricing |
| **Clients** | How many accounts are on this plan |
| **Seats in use** | Team seats currently used by those clients |
| **Features** | How many features are turned on |
From a card you can **Add clients**, **Edit**, **Duplicate**, **Make default**, or **Archive**.
## ➕ New plan
Click **New plan**. You can start from a preset or build from scratch.
| Field | What to put |
| --- | --- |
| **Plan name** | Example: Growth |
| **Monthly price** | What you charge. Or check **Bill at my cost (no fixed price)** |
| **One line your client sees** | Optional description |
| **Markup on calls, texts, numbers and seats** | `0%` means they pay your cost. Fine-tune a single rate under **Advanced pricing** |
| **Features** | Grouped checkboxes. **Select all** on a group if you want the whole set |
The right side of the editor is **What your client sees**: name, price, and the features you ticked.
A plan with zero features is not offered when you add a client. The account would open blank.
## 👥 Assign a plan
**Add clients** on a card opens a picker. You see who is not already on that plan, and a preview of what changes. Confirm to move them.
You can also change one client's plan from the **Plan** dropdown on [Clients](/agency-reseller/clients).
## 📄 Duplicate, default, archive
**Duplicate** copies the plan so you can tweak a variant without touching the original.
**Make default** marks the plan new clients should land on when you do not pick another one.
**Archive** stops the plan being offered for new clients. Anyone already on it **stays on it** and keeps everything.
## ⚙️ Advanced pricing
**Advanced pricing** in the top right opens **Reselling Setup**, the older screen where you can set individual rates instead of one markup for everything.
Use Plans for day-to-day work. Use Advanced pricing when one rate should not follow the plan markup.
Only the agency owner can create, edit, assign, or archive plans.
---
# Payments
> What your clients paid you, what failed, and when Stripe sent it to your bank.
Source: https://docs.aisync.link/agency-reseller/payments
**Payments** is owner-only.
This page is **your** Stripe, not the platform's. Plans and wallet top-ups your clients buy from you show up here. Usage on Our network does not: that is your agency billing page.
## 🔔 If Stripe is not finished
A banner at the top:
**Stripe needs attention: finish Stripe setup.** Client payments cannot reach your bank until it is.
**Fix in settings** goes to [Agency settings](/agency-reseller/agency-settings).
## 📊 Tiles
| Tile | Meaning |
| --- | --- |
| **Available in Stripe** | Ready to pay out to your bank |
| **On the way** | Pending in Stripe (not in your bank yet) |
| **Collected** | Paid charges in the current filter |
| **Failed** | Failed charges in the current filter |
## 📋 Client payments
Filter by client, type, status (Paid / Failed), and date range.
| Column | Meaning |
| --- | --- |
| **Date** | When the charge was attempted |
| **Client** | Which account paid |
| **Type** | Plan, seat, wallet top-up, and similar |
| **Amount** | What was charged |
| **Status** | **Paid** or **Failed**. Failed rows show Stripe's reason |
| **Payout** | Which payout the money is in, when Stripe has assigned one |
| **Receipt** | Opens the Stripe receipt when there is one |
**Export CSV** downloads the same filtered list.
## 🏦 Payouts to your bank
The right-hand card is Stripe's payout schedule to the bank account on file (name and last four).
If the list is empty: Stripe pays out your **available** balance on its schedule. Connecting Stripe today does not create a payout until there is money to send.
---
# Agency settings
> Connect Stripe once, save your Twilio login, and keep track of replaced carrier accounts.
Source: https://docs.aisync.link/agency-reseller/agency-settings
**Agency settings** is owner-only. Set these up once. Every client you add can use them.
## 💳 Get paid: Stripe
Your clients pay **you**. Plans, seats, and wallet top-ups are charged on your own Stripe account and paid out to your bank by Stripe. We do not take a cut of those payments.
| Status on the card | What it means |
| --- | --- |
| **Finish Stripe setup** / needs attention | Connected, but Stripe still wants details |
| **Not connected** | You have not started Stripe Connect |
| **Active** | Can take payments and pay out |
After you connect, the card shows:
- The Stripe account name and id
- **Can take payments** — Yes or Not yet
- **Payouts to your bank** — Yes or Not yet
- **Bank account** — bank name and last four, or None added
If Stripe still needs information, the page says how many details are left. **Finish in Stripe** opens Stripe's form. **Payments & payouts** opens [Payments](/agency-reseller/payments).
Clients can still be created and can use the product while Stripe is unfinished. Their card charges just cannot reach your bank yet.
## 📞 Your Twilio login (optional)
Save it once, then pick **Your agency's Twilio** for any client.
Each client gets its own Twilio subaccount under this login, so their numbers stay separate. Twilio bills you directly. We bill no carrier usage for those clients.
| Field | Where to find it |
| --- | --- |
| **Account SID** | Twilio Console → Account Info. Starts with `AC` |
| **Auth Token** | Same page. We check it with Twilio before saving and store it encrypted |
| **Label** | Optional. Example: Main Twilio |
**Verify & save**. A verified login shows a masked SID and the date it was checked.
Do not paste a client's Twilio here. Client-owned Twilio is entered on that client's Phone carrier step, not on Agency settings.
## 🕘 Earlier carrier connections
When a client is moved to a different carrier, the Twilio account they used before is **not** closed for you. It stays open until you close it in the Twilio Console.
This list exists so none are forgotten: client name, label, masked SID, and the date it was replaced.
---
# Open a client
> Jump into a client's workspace, work as them, then come back to your agency.
Source: https://docs.aisync.link/agency-reseller/open-a-client
**Open** on the Clients table (and **Open account** in the wizard) switches you into that client's workspace.
You are not logging in as them with their password. The product puts you inside their account so you can finish setup, buy numbers, add reps, or fix something. They keep their own login.
## 👁️ What you see inside
A banner at the top of the page:
**Viewing [client] as [your agency]**
The button on the right of the banner takes you home (back to the agency).
The left sidebar changes to **what that client would see**. You do not keep the Agency Reseller menu while you are inside a client. That is on purpose: you are looking at their product, not yours.
Clients inherit your brand (logo, name, colors).
## 🔄 The account switcher
Top-left of the header is the account switcher.
- While you are on the agency, it shows **Agency** and your agency name
- While you are inside a client, it shows **Client account** and that client's name
Click it to search accounts, jump to another client, or go **Back to [agency]**.
Use the switcher when you are bouncing between three clients. Use **Open** on the Clients table when you are starting from the list.
## 🔐 What you can and cannot do
You can do the work you would do in their account: numbers, team, integrations, dialer, AI, settings.
Money that belongs to the **agency** (Stripe payouts, saving a Twilio login, creating plans) stays on the agency pages.
Owner-only agency pages (Payments, Agency settings) are hidden from agency staff, even when they can open clients.
## ↩️ Coming back
Any of these return you to the agency:
- The banner button
- The switcher's back row
- **Agency Reseller → Clients** after you are home
Closing the tab does not always clear the switch. Use the banner or the switcher so the next page load is your agency again.
---
# FAQ
> Short answers for the questions agencies hit first.
Source: https://docs.aisync.link/agency-reseller/faq
## Why can't I add a client?
You need at least one [plan](/agency-reseller/plans) that includes features. A plan with a price and no features is not listed on the Add client form.
## What does the Plan column mean?
It is the [plan](/agency-reseller/plans) assigned to that client: features they can use, the monthly price you charge, and the markup on usage. Change it from the dropdown on Clients or with **Add clients** on a plan card.
## Client pays you vs You cover it
**Client pays you** charges their card on **your** Stripe for the plan.
**You cover it** means you do not charge them for the plan. They still get the features.
Neither option changes how **Our network** usage is billed. That still comes from your agency usage balance.
## Who pays for calls and numbers?
| Carrier | Call / text / number usage |
| --- | --- |
| **Our network** | Your agency usage balance, at the plan's base rates |
| **Your agency's Twilio** | Twilio bills you. We do not bill that usage |
| **The client's own Twilio** | Twilio bills them. We do not bill that usage |
AI voice minutes on Our network always come from your agency balance. Turn on auto-recharge.
## Stripe says it needs more details
Open [Agency settings](/agency-reseller/agency-settings) and click **Finish in Stripe**. Payments cannot reach your bank until **Can take payments** and **Payouts to your bank** are both Yes.
## Can I use a different carrier per client?
Yes. Each client has their own Phone carrier step. Moving a client off Twilio does **not** close the old subaccount. Close it yourself in the Twilio Console.
## How long does the invite last?
**7 days**, one-time. Sending a new invite replaces the old link. You can still finish setup yourself after you send it.
## Why does Open take me out of Agency Reseller?
**Open** switches you *into* the client. The sidebar becomes theirs. Use the **Viewing [client] as [agency]** banner or the top-left switcher to come back. See [Open a client](/agency-reseller/open-a-client).
## Staff cannot see Payments or Agency settings
Those two pages are owner-only. Staff can still open Clients, add a client, and work inside a client account.
## Plans vs Reselling Setup
**Plans** is the day-to-day screen (presets, assign, duplicate, default).
**Reselling Setup** (Advanced pricing) is the older screen for per-rate markup. Same plans underneath.
---
# Introduction
Source: https://docs.aisync.link/api-reference/introduction
## 🚀 What is OAuth?
OAuth is a secure way to let your application access user data without asking for their password. Think of it like giving a hotel key card - you get access to specific rooms (permissions) without sharing your master key (password).
### 🏗️ Step 1: Create Your OAuth Client
Before you can use OAuth, you need to create an OAuth client in your dashboard. This gives you the credentials needed to authenticate.
1. Go to **OAuth Client Management (Advanced)** in your dashboard
2. Click the **"Create New OAuth Client"** button
3. Fill in the required information:
- **Client Name**: Give your application a descriptive name (e.g., "My Application")
- **Redirect URI**: Where users will be sent after they authorize your app (e.g., `https://app.aisync.link/test/callback`)
- **Confidential Client**: Check this box if your app can securely store secrets (recommended for server-side apps)
4. Click **"Create Client"**

The Redirect URI must exactly match what you use in your authorization requests. Make sure it's the full URL including the protocol (http:// or https://).
### 🔑 Step 2: Get Your Credentials
After creating your OAuth client, you'll see it in the client management table with:
- **Client Name**: The name you gave your application
- **Client ID**: Your unique client identifier (you'll need this)
- **Client Secret**: Your secret key (keep this secure!)
- **Redirect URI**: The callback URL you registered

Never share your Client Secret publicly! It's like a password - keep it secure and never commit it to version control.
### 🔄 Step 3: The OAuth Flow
Once you have your Client ID and Client Secret, follow this flow:
#### 1️⃣ Authorize (Get Permission)
Send users to the authorization endpoint with your Client ID. They'll grant permission to your app.
```bash
https://app.aisync.link/login/oauth/authorize?client_id={{client_id}}&redirect_uri={{redirect_uri}}&response_type=code&scope=*'
```
#### 2️⃣ Get Authorization Code
After the user authorizes, they'll be redirected back to your Redirect URI with a code:
```
YOUR_REDIRECT_URI?code=AUTHORIZATION_CODE
```
#### 3️⃣ Exchange Code for Token
Use the authorization code to get an access token:
```bash
POST /oauth/token
```
#### 4️⃣ Use Your Access Token
Now you can make API calls using the access token:
```bash
Authorization: Bearer YOUR_ACCESS_TOKEN
```
## 🧩 Understanding Your Credentials
### 🆔 Client ID
- **What it is**: A public identifier for your application
- **Where to find it**: In the OAuth Client Management table
- **Is it secret?**: No, it's safe to include in your frontend code
### 🤫 Client Secret
- **What it is**: A private key that proves your app's identity
- **Where to find it**: In the OAuth Client Management table
- **Is it secret?**: Yes! Never expose this publicly
### 🔁 Redirect URI
- **What it is**: The URL where users are sent after authorization
- **Important**: Must exactly match what you registered
- **Example**: `http://127.0.0.1:8000/callback` or `https://yourapp.com/callback`
## 🔐 Personal Access Tokens
Personal Access Tokens provide a simpler alternative to the OAuth flow. They're like passwords for your API - you can use them immediately without going through the OAuth authorization process.
**🆕 Creating a personal token**
1. Click the **"Create New Personal Token"** button

2. Fill in the token details:
- **Token Name**: Give your token a descriptive name (e.g., "Test Package")
- **Token Expiration**: Choose between:
- **Never Expire**: Token works indefinitely
- **Custom Expiration Date**: Set a specific expiration date
- **Scopes (Permissions)**: Select the permissions you need:
- **Full Access (*)**: All permissions
- Or uncheck and select specific scopes
3. Click **"Create Token"**

**Important**: The token will be shown only once. Make sure to copy it immediately! For security reasons, it won't be shown again.
After creating the token, you'll see a confirmation dialog with your new token. Copy it immediately:

**🔧 Using Your Personal Access Token**
Once you have your personal access token, use it in the Authorization header of your API requests:
```bash
Authorization: Bearer YOUR_PERSONAL_ACCESS_TOKEN
```
### 🗂️ Managing Personal Access Tokens
In the Personal Access Tokens table, you can see:
- **Token Name**: The name you gave your token
- **Scopes**: The permissions associated with the token
- **Created**: When the token was generated
- **Expires**: Expiration status (or "Never" if it doesn't expire)
- **Actions**: Revoke the token if needed

Personal Access Tokens are ideal for personal use, testing, or server-to-server communication where OAuth flow isn't necessary. For production applications with multiple users, use the OAuth flow instead.
## ⏭️ Next Steps
Now that you understand the basics, check out these endpoints:
Start the authorization flow
Exchange code for access token
Get new access token
Validate your access token
---
# Authorize
Source: https://docs.aisync.link/api-reference/authorize/authorize
## Authorize
Start the OAuth authorization flow by redirecting users to the authorization endpoint. Users will grant permission to your application and be redirected back with an authorization code.
Your OAuth client ID obtained from the dashboard
The redirect URI registered with your OAuth client. Must exactly match the registered URI.
Must be set to `code` for authorization code flow
The scope of access requested. Use `*` for full access.
```bash cURL
curl --location --globoff 'https://app.aisync.link/oauth/authorize?client_id={{client_id}}&redirect_uri={{redirect_uri}}&response_type=code&scope=*'
```
After the user authorizes your application, they will be redirected to your `redirect_uri` with an authorization code:
```
{{redirect_uri}}?code={{authorization_code}}
```
The authorization code is single-use and expires quickly. Exchange it for an access token immediately.
---
# Generate Token
Source: https://docs.aisync.link/api-reference/authorize/generate-token
## Generate Token
Exchange the authorization code for an access token and refresh token. This endpoint is used after receiving the authorization code from the authorize endpoint.
The authorization code received from the authorize endpoint
Your OAuth client ID
Your OAuth client secret (keep this secure!)
Must be set to `authorization_code` for this flow
The same redirect URI used in the authorization request
```bash cURL
curl --location 'https://app.aisync.link/oauth/token' \
--form 'code="{{code}}"' \
--form 'client_id="{{client_id}}"' \
--form 'client_secret="{{client_secret}}"' \
--form 'grant_type="authorization_code"' \
--form 'redirect_uri="{{redirect_uri}}"'
```
The access token to use for API requests. Include this in the Authorization header as `Bearer {access_token}`.
Token used to obtain a new access token when it expires. Store this securely.
The type of token, typically `Bearer`
The number of seconds until the access token expires
Store your refresh token securely. You'll need it to get new access tokens without requiring user re-authorization.
---
# Refresh Token
Source: https://docs.aisync.link/api-reference/authorize/refresh-token
## Refresh Token
Obtain a new access token using your refresh token. Use this endpoint when your access token expires to continue making API calls without requiring user re-authorization.
Your OAuth client ID
Your OAuth client secret
Must be set to `refresh_token` for this flow
The redirect URI registered with your OAuth client
The refresh token obtained from the Generate Token endpoint
```bash cURL
curl --location 'https://app.aisync.link/oauth/token/refresh' \
--form 'client_id="{{client_id}}"' \
--form 'client_secret="{{client_secret}}"' \
--form 'grant_type="refresh_token"' \
--form 'redirect_uri="{{redirect_uri}}"' \
--form 'refresh_token="{{refresh_token}}"'
```
A new access token to use for API requests
A new refresh token (may be the same or different from the one provided)
The type of token, typically `Bearer`
The number of seconds until the new access token expires
Refresh your access token before it expires to ensure uninterrupted API access. Most applications refresh tokens proactively when they're close to expiration.
---
# Access Validation
Source: https://docs.aisync.link/api-reference/authorize/access-validation
## Access Validation
Validate that your access token is still valid and active. Use this endpoint to check token status before making API calls.
Bearer token in the format: `Bearer {access_token}`
```bash cURL
curl --location 'https://app.aisync.link/api/access_validation' \
--header 'Authorization: Bearer {{bearer_token}}'
```
Indicates whether the access token is valid
ISO 8601 timestamp of when the token expires
The scope of access granted to this token
If the token is invalid or expired, you'll receive an error response. Use the Refresh Token endpoint to obtain a new access token.
---
# List Agents
Source: https://docs.aisync.link/api-reference/ai-agent/list-agents
## List Agents
Retrieve a paginated list of all AI agents associated with your account. Use this endpoint to get an overview of all your agents and their details.
The page number to retrieve (starts from 1)
Number of agents to return per page (maximum 100)
Bearer token in the format: `Bearer {access_token}`
```bash cURL
curl --location 'https://app.aisync.link/api/ai/agent/list?page=1&per_page=100' \
--header 'Authorization: Bearer {{bearer_token}}'
```
Array of agent objects containing agent details
The current page number
Number of items per page
Total number of agents available
Use pagination parameters to efficiently retrieve large lists of agents. The maximum number of agents per page is 100.
---
# Create Agent
Source: https://docs.aisync.link/api-reference/ai-agent/create-agent
## Create Agent
Create a new AI agent with custom configuration. Define the agent's name, general prompt, and optional webhook settings for call completion callbacks.
Bearer token in the format: `Bearer {access_token}`
Must be set to `application/json`
A descriptive name for your AI agent
The main system prompt that defines the agent's behavior and purpose. This guides how the agent interacts during calls.
Optional callback URL that will be called when the agent completes a call. Leave empty if not needed.
HTTP method for the webhook callback. Must be either `GET` or `POST`. Defaults to `POST` if not specified.
```bash cURL
curl --location 'https://app.aisync.link/api/ai/agent/create' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{bearer_token}}' \
--data '{
"agent_name": "My Agent 3",
"general_prompt": "Your purpose is simple: book qualified strategist appointments with business owners by running the cleanest, most natural conversations possible.\n\nYou are an AI disguised as a human. You must sound fluid, casual, and confident at all times.",
"weebhook_endpoint": "",
"weebhook_endpoint_method": "POST"
}'
```
Unique identifier for the newly created agent
The name of the created agent
Status of the agent creation (typically "active" or "pending")
The general_prompt is crucial for defining your agent's behavior. Make sure it clearly describes the agent's purpose, tone, and objectives for best results.
---
# AI Call Endpoint
Source: https://docs.aisync.link/api-reference/ai-agent/call-endpoint
## AI Call Endpoint
Retrieve the call endpoint URL for a specific AI agent. This endpoint provides the unique URL that can be used to initiate calls with the specified agent.
The unique identifier of the agent (e.g., `agent_07a9005357b35d0943f7359ad9`)
Bearer token in the format: `Bearer {access_token}`
Must be set to `application/json`
```bash cURL
curl --location 'https://app.aisync.link/api/ai/agent/call-endpoint?agent_id=agent_07a9005357b35d0943f7359ad9' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{bearer_token}}'
```
Response status (e.g., "success")
Response data object containing endpoint information
The unique endpoint URL for initiating calls with this agent
The HTTP method to use when calling the endpoint (typically "POST")
Array of form field names that must be included when making a POST request to the endpoint:
- `phone_number`: The phone number to call
- `email`: Contact email address
- `first_name`: Contact's first name
- `last_name`: Contact's last name
- `ghl_contact_id`: GoHighLevel contact ID
- `override_agent_id`: Agent ID override (optional)
- `local_presence_number`: Set to "Yes" to make the call from AI local presence number, or "No" otherwise
Use the returned endpoint URL with POST method and include the required form_data fields to initiate conversations with your AI agent. The endpoint is unique to each agent. When `local_presence_number` is set to "Yes", the call will be made from the AI local presence number.
---
# List Numbers
Source: https://docs.aisync.link/api-reference/ai-number/list-numbers
## List Numbers
Retrieve a paginated list of all AI phone numbers associated with your account. Use this endpoint to get an overview of all your AI numbers and their details.
The page number to retrieve (starts from 1)
Number of numbers to return per page (maximum 100)
Bearer token in the format: `Bearer {access_token}`
Must be set to `application/json`
```bash cURL
curl --location 'https://app.aisync.link/api/ai/number/list?page=1&per_page=25' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{bearer_token}}'
```
Array of phone number objects containing number details
The current page number
Number of items per page
Total number of phone numbers available
Use pagination parameters to efficiently retrieve large lists of phone numbers. The maximum number of numbers per page is 100.
---
# Assign 10DLC Number to Campaigns in Aisync
> Watch a step-by-step tutorial on how to assign 10DLC numbers to campaigns using the Aisync platform. This process helps you ensure your business messaging complies with A2P 10DLC regulations.
Source: https://docs.aisync.link/video-tutorials/video
# 🎥 Assign 10DLC Number to Campaigns
Learn how to assign 10DLC numbers to your campaigns in Aisync.
> **Tip:**
> Follow the video to see each step in detail. Once assigned, your numbers will be linked to your campaigns, making them ready for compliant messaging.