A call center script is the written plan for one type of call. It sets out what the agent says, what they check, what they're allowed to do and when the call goes to someone else. A good one covers the branches as well as the main path, so whoever takes the call, a new hire or an AI agent, handles it the same way.
Settle the decisions before you write any wording. The template below lists the fields a script has to answer first, and each of the six examples further down was built from it.
| Field | What to decide | Example: order status calls |
|---|---|---|
| Call type and goal | One sentence that says when the call is done | The caller knows where the order is and when it should arrive |
| Who calls | The kinds of caller the script has to handle | Customers with an order number, customers without one, couriers |
| Identity check | What the caller must give, and what it unlocks | Order number and ZIP code unlock order details; a name alone unlocks nothing |
| Sources | Where each answer comes from, by name and version | The order status screen and the shipping policy, March version |
| Allowed actions | What the agent may do on the call, and the limits | Resend tracking; reship a lost order worth up to [amount] |
| Questions, in order | What to ask, and what each answer leads to | Order number, then ZIP code, then what the caller needs |
| Transfer triggers | When the call goes to a person, and to which number | A damaged item goes to claims at [number]; a request for a person goes to [queue] |
| Never say | Promises and topics that are off limits | No delivery date the system doesn't show; no credit outside policy |
| Word-for-word lines | Lines nobody paraphrases | [Recording notice]; [refund terms] |
| Wrap-up | The outcome code and the note to leave | Resolved, transferred or callback scheduled, with the order number |
| After hours | What changes when nobody is there to take a transfer | Take a message for claims and say when the team calls back |
| Owner and version | Who approves changes, and the date of this version | [Team lead], [date] |
On many contact center platforms the finished script is a set of screens. Genesys Cloud builds scripts from pages of text, buttons and input fields, stores what the agent collects in variables, and shows the script to agents on inbound and outbound campaign calls (Genesys Cloud, About scripting). Amazon Connect's step-by-step guides walk agents through a workflow one screen at a time (Amazon Connect, step-by-step guides). The template's fields map onto those screens: the identity check turns into input fields, and each transfer trigger turns into a branch.
What should a call center script include?
A call center script includes the spoken stages of the call in order: the greeting, the identity check, the reason for the call, the resolution, a summary of what happens next and the close. It also needs a hold line, a transfer line and a prepared response for each branch, because those are the points where a call leaves the main path.
NICE defines call scripts as documents that outline what an agent should say in response to specific customer issues (NICE glossary, call script). These are the lines most scripts share, written so you can reuse them:
| Stage | Reusable line | Note |
|---|---|---|
| Greeting | "Thanks for calling [organization], this is [name]. How can I help?" | Say the organization first, so a caller who dialed the wrong number knows straight away |
| Recording notice | [The notice your legal team approved for the states you take calls from] | Word for word, before the caller gives any personal details |
| Identity check | "So I can pull up your account, can I have your [account number] and the [ZIP code] on it?" | Nothing from the account gets read out before this |
| Reason | "Just so I have it right, you're calling about [reason]?" | Saying it back catches a wrong guess before any work starts |
| Hold | "I need about [two minutes] to check that. Is it OK if I put you on hold?" | Come back when the time is up, even if only to say you need longer |
| Transfer | "I'm transferring you to [team], who handle [topic]. If we get cut off, you can reach them at [number]." | Tell the caller who they'll reach and give them a way back |
| Summary | "So [what was done], and [what happens next, by when]." | Repeat anything you changed or promised |
| Close | "Is there anything else I can help with? Thanks for calling [organization]." | Pick the outcome code before the next call |
The script begins where the routing ends. The call flow decides which queue or agent gets the call, and the script covers what is said once someone answers.
Call center script examples for six inbound calls
Each example gives the goal, the identity check and the actions allowed, then the main path and a table of branches with the next line and what happens in your systems. Fill the bracketed fields from your own policies. They are written for people, and an AI agent can follow the same structure with the changes in the section after the examples.
1. Order or account status
Goal: the caller knows the status and the next date. Identity check: [order number] and [ZIP code]. Allowed: resend tracking, reship a lost order up to [amount].
Thanks for calling [organization], this is [name]. [Recording notice.] How can I help?
I can check that for you. What's the order number?
And the ZIP code on the order?
Thanks. Your order shipped on [date] and is due on [delivery date]. Would you like me to send the tracking link to [email on file]?
| If the caller says | Next line | What happens |
|---|---|---|
| "I don't have the order number." | "No problem. What email or phone number did you order with?" | Look the order up by contact detail, then ask for the ZIP code |
| "It says delivered, but it isn't here." | "I'm sorry about that. Let me check the delivery details." | Reship or open a claim within policy; transfer to [claims] above [amount] |
| The details don't match | "I can't find an order with those details. Could you check the number on your confirmation email?" | After two tries, read nothing out and offer [the email route] |
| "I want to cancel it." | "Let me check whether it has left the warehouse." | Cancel if it hasn't; if it has, give the return steps |
| "Can I talk to someone?" | "Of course. I'm transferring you to [team] now." | Transfer to [queue] and log Transferred |
2. Billing question
Goal: the caller understands the charge, or a billing review is open with a reference number. Identity check: [account number] and [second identifier]. Allowed: explain charges, credit up to [amount], take payment through [approved payment process].
I can help with that. To pull up the account, can I have the [account number] and [second identifier]?
Thanks. I see the [amount] charge on [date]. That's for [plain description of the charge].
Does that match what you were expecting?
| If the caller says | Next line | What happens |
|---|---|---|
| "That charge is wrong." | "Thanks for flagging it. I'm opening a billing review now. Your reference is [number], and you'll hear from us by [date]." | A ticket for billing with an owner and a due date |
| "I want a refund." | Within your limit: "I can credit [amount] to the account now." Above it: "I'll send this to our billing team, who can approve it." | Credit within the limit; above it, a ticket with an owner |
| "Why did my price go up?" | "[Reason from the price change notice], from [date]." | Read the reason from the notice, word for word |
| "I'd like to pay now." | "I can take that through [approved payment process]." | Card details go only through that process, never into call notes |
| "I want to cancel." | "I'm sorry to hear that. [Retention offer, if the program has one.] Or I can walk you through canceling." | Follow the cancellation policy and log the reason |
3. Booking, changing or canceling an appointment
Goal: a booked, moved or freed slot that matches the record. Identity check: [name] and [phone number on the account]. Allowed: book, reschedule and cancel within [notice period].
I can help with that. Can I have your name and the phone number on your account?
Thanks, [first name]. Are you booking a new appointment or changing one you have?
I have [option one] or [option two]. Which works better?
You're booked for [appointment type] on [day, date] at [time], at [location].
| If the caller says | Next line | What happens |
|---|---|---|
| "Neither of those works." | "Which days usually suit you? I'll look at those." | Offer two more; after that, [waitlist or callback] |
| "I need to cancel." | "I can do that. [Late cancellation note, if inside the notice period.] Would you like to book another time?" | Free the slot and log Canceled |
| "It's urgent." | "[Earliest available slot], or I can transfer you to [team]." | Follow [your urgent-request rule] |
| "It's for someone else." | "Can I have their name and [identifier]?" | Follow [your policy on booking for others] |
| "I'm not sure which appointment I need." | "I'll transfer you to [team], who can help you choose." | Transfer and log Transferred |
Calls you make to confirm those appointments need their own script, and the appointment confirmation call script has one with a line for every answer.
4. Returning a missed call
If you run outbound programs, your inbound line needs this script. On our platform, more than half of the inbound calls AI agents answered from October 2025 to September 2026 were people calling back a number that had dialed them (call center statistics from 181,555 calls).
Goal: the caller learns why we called and the campaign's task gets done, or the number comes off the list. Identity check: [name] and the number we called. Allowed: whatever the campaign does, such as confirming or rescheduling.
Thanks for calling [organization], this is [name]. Are you returning a call from us?
Thanks. Can I have your name and the number we called?
I see we called about [campaign purpose]. [The campaign's main question.]
| If the caller says | Next line | What happens |
|---|---|---|
| "I don't know why you called." | "Let me check. Which number did we call?" | Look the number up in the campaign records |
| You find no call to that number | "I can't see a call from us to that number. Sorry for the confusion." | Log Wrong number |
| "Please stop calling me." | "Understood. I'm taking your number off our calling list now." | Add it to your internal do-not-call list |
| "You have the wrong person." | "Thanks for telling me. I'll update our records so we don't call this number for [name] again." | Correct the contact record |
| They're ready to do the task | The campaign's own script | Log the campaign's outcome code |
For AI outbound calls, the federal opt-out rules set how quickly a number has to come off your list once someone asks.
5. After-hours call
In the same data, 37.6% of calls to our customers' business lines arrived outside Monday to Friday, 8am to 6pm, in the caller's local time. The after-hours script decides what those callers can get done before morning.
Goal: the caller leaves with a time for the next step, or reaches the emergency path. Identity check: [name] and callback number, plus [account identifiers] for anything you can do after hours. Allowed: [after-hours actions, such as status checks and bookings]; take a message.
Thanks for calling [organization]. Our team is available [hours]. [If you have an emergency line: If this is about (emergency type), please call (number).] I can [after-hours actions] now, or take a message for the team.
Can I have your name and the best number to reach you?
And what's the call about?
Thanks. [Team] will call you back [after opening, on the next business day].
| If the caller says | Next line | What happens |
|---|---|---|
| "It's an emergency." | "[Emergency line], or I'll transfer you to [on-call number]." | Transfer only to an on-call number someone answers at night |
| "I need a person tonight." | "Our team is back at [time]. I'll take a message so they call you first thing." | Message, logged as Callback scheduled |
| A request you can handle after hours | The same lines as the daytime script | The daytime outcome codes |
| "Will someone really call me back?" | "Yes, [team] will call you [when]." | Promise only a time your callback list is actually worked |
6. Complaint or a request for a supervisor
Goal: the complaint is logged with its facts, and the caller knows who owns it and by when. Identity check: [account identifiers]. Allowed: [goodwill credit up to amount]; transfer to a supervisor during [hours].
I'm sorry that happened. Can you tell me what happened, from the start?
[Listen without interrupting, then say it back.] So [summary]. Have I got that right?
Here's what I can do now: [action within policy]. Anything beyond that goes to [team], who will contact you by [date]. Your reference is [number].
| If the caller says | Next line | What happens |
|---|---|---|
| "I want a supervisor." | If one is free: "I'll transfer you to [supervisor] now." If not: "A supervisor will call you by [time]. Can I confirm your number?" | Transfer or callback; log Escalated |
| "That's not good enough." | "I understand. On this call I can [action]. I can also send this to [team] to review." | Escalate, and promise nothing outside policy |
| Abusive language | "I want to help, but I'll have to end the call if the language continues." | End the call under [your policy] and flag it for review |
| A lawyer or a regulator comes up | "I'll pass this to [designated team], who handle these." | Ticket or transfer to that team; no further comment on the substance |
How do you write a call center script for a new program?
Start from the material the team already works from and a sample of real calls. Fill in the template, write the main path and the branches, then test the script with calls before launch. Whoever owns the program signs off on the facts, the limits and the word-for-word lines, because they answer for what callers hear.
- Collect the FAQs, policies, price and refund rules the program runs on, and any recordings or transcripts of real calls.
- List the call types by volume and write one script per call type, busiest first. A single script covering several call types gets long and hard to follow on a live call.
- Fill in the template for each call type, and get the program owner to approve the identity check, the allowed actions, the never-say list and the word-for-word lines.
- Write the main path. Then read a sample of real calls of that type and add a branch for each turn the main path doesn't cover.
- Agree the outcome codes with the program owner before launch. The disposition codes guide covers keeping each program's codes under shared categories.
- Run the readiness audit below and fix what fails.
- Keep the script, its version and its owner in one place, and score the same steps on the QA scorecard.
- After the first week of live calls, read the transferred calls and the ones closed with a catch-all code. Missing branches tend to show up there.
Every new branch adds questions and checks to the call, which shows up in average handle time, so add branches where real calls need them rather than for every case someone can imagine.
What changes when an AI agent follows the script?
A person fills gaps in a script from experience, and an AI agent has only what it was given. Every branch needs an ending, every answer needs a written source, and every transfer trigger has to be something the agent can recognize on the call, such as a topic, a direct request or a failed identity check.
- Write a fallback line for anything the script doesn't cover, and say whether it ends in a transfer or a message.
- Point each factual answer at the FAQ or policy it comes from, and keep that document current. A price changed in the policy but not in the script gives callers two answers.
- Make transfer triggers concrete: "the caller asks for a person", "the caller mentions [topic]", "the identity check fails twice". "If the caller seems upset" is much harder to apply the same way every time.
- Mark the word-for-word lines separately from the lines the agent may put in its own words.
- Add guessing to the never-say list: no price, date or policy that isn't in the sources.
- Decide how the agent introduces itself, and write that line word for word.
Then test it the way you would test a new hire, with more calls. Twelve test conversations that catch invented policy and dead-end loops is a set to run before you sign off, and how an AI call center agent works on a call covers the rest of the setup.
Script readiness audit
Run these checks before a script takes live calls, whichever kind of agent will follow it, and again after any change to a policy or a transfer number.
| Check | How to run it | It fails when |
|---|---|---|
| Every branch ends | Trace each row of each branch table | A row leaves the agent on the line with nothing to say |
| Transfer numbers answer | Call each one during the hours it will be used, and after hours | A number rings out or reaches voicemail or a closed queue |
| Verification comes first | Read the script top to bottom | An account detail is read out before the identity check |
| Answers match their sources | Check each factual line against the named document and version | A price, date or policy differs from the source |
| Lines work out loud | Read every line aloud at speaking pace | A line needs a second breath or sounds like a contract clause |
| The never-say list is approved | Have the program owner sign it off | Only the writer has read it |
| Every ending has a code | Map each ending in the script to an outcome code | An ending has no code, or two different endings share one |
| Test calls stay on the script | Have colleagues call as each caller type in the template, including one who can't verify and one who asks for a person at once | A test caller ends up somewhere the script doesn't cover |
| QA scores the same steps | Compare the QA form line by line with the script | QA scores the exact wording of a line agents may paraphrase, or misses a word-for-word line |
Handing a script to Telvana
Send us the script your agents use today, with the FAQs, policies and transfer rules behind it. Our team builds the agent from that material and tests it on your call types before it takes a live call, and you approve it first.
On the call, the agent answers from your knowledge base in English or Spanish. It can look up customers, check availability, and book, reschedule and cancel appointments in the tools you connect. Calls that need a person transfer to the number you choose, under rules you set. The transfer is an ordinary call, so the person who answers starts the conversation and sees the transcript and summary afterward, which is why your transfer line should tell the caller who they're about to reach. Every call is recorded, transcribed, summarized and tagged by outcome, and each team or department gets a separate workspace. Pricing starts at $399 a month based on call volume, plus a one-time setup fee (pricing).
Frequently asked questions
What is a good script for handling a customer complaint?
A good complaint script lets the caller tell the whole story without interruption, says it back to check, states what the agent can do on this call, and names who owns anything left over and by when. The complaint example above has branches for a supervisor request, abusive language and a mention of a lawyer or regulator.
Should call center agents read the script word for word?
Only the lines that must not change: the recording notice, the identity check, required disclosures and exact prices or policy terms. Agents can put the rest in their own words, with QA scoring whether each step happened rather than the exact phrasing. Mark the word-for-word lines in the script so nobody has to guess which they are.
What is the difference between a call script and a call flow?
A call flow routes the call through the hours check, the menu, the queue and any transfers. The script is what the agent says once someone answers. The call flow guide has worked examples of flows and a test sheet for each one.
How long should a call center script be?
Long enough to cover every branch, with each spoken turn kept short. The main path of the order status example above is four turns, and its branch table adds five more lines. When a script runs to several pages, it usually covers more than one call type and is easier to use split into one script for each.
What is an inbound call script?
An inbound call script is a script for calls customers make to you, such as status checks, billing questions and bookings. An outbound script opens the other way round, with who is calling and why. The appointment confirmation call script is a worked outbound example, and the inbound call center guide covers the rest of running an inbound line.
Bring one of your scripts
Book a demo and bring the script for your busiest call type. We'll show you how an agent handles it as written and which branches it would need before going live, and you can hear it take a call.