Every customer wants three things from support: a fast reply, a clear answer, and the sense that someone actually read their message. Live chat scripts let your team deliver all three on every shift, without burning agents out or making the conversation feel canned.
The 50+ templates below cover every situation a support team handles in a typical week. Greetings, refunds, returns, delayed orders, password resets, after-hours replies, handoffs, and angry customers. Copy any one, tweak it in two seconds, send it.
What is a live chat script?
A live chat script is a pre-written reply that your support agents adapt during a conversation: greetings, common questions, refunds, troubleshooting, handoffs. Scripts cut response time, keep brand voice consistent across agents — two of the core benefits of live chat that teams cite most often — and give new hires a starting point on day one. Each one is a draft the agent edits for the customer in front of them—not a canned auto-reply.
Three things every good script does:
Names the customer and the specific issue in the first line.
States the action the agent is taking right now.
Offers a next step with a real timestamp the customer can hold the team to.
Most support teams keep a library of 30–80 active scripts and refresh them quarterly. Tidio customers running Lyro AI feed their script library into the AI as training data, which is one of the fastest ways to get a chatbot answering accurately on day one.
According to HubSpot’s 2024 State of Service report[1], 82% of customers now expect immediate problem resolution from support agents. A maintained script library is the single biggest lever support teams have for delivering on that. For more context on response time benchmarks, see our breakdown of live chat statistics.
Scripts for greeting visitors
Greeting scripts set what the whole conversation feels like. A good one names the visitor, identifies the agent by name, and offers help without forcing it. A bad one reads like a vending machine. The sets below cover first-time visitors, repeat visitors, and customers picking up from a previous chat.
First-time visitors
“Hi [customer name], thanks for stopping by. I’m [your name]—let me know if you need help with anything.”
“Hello and welcome to [your company name]. Got a question about [your product/service]? I’m here.”
Repeat visitors
“Welcome back, [customer name]. Good to see you again—what can I help with today?”
“Hey [customer name], been a minute. Want to pick up where we left off, or is this something new?”
Picking up from a previous conversation
“Hi [customer name], last time we were sorting out [previous issue]. Did that get resolved on your end, or do you want to keep going?”
“Welcome back. I see you and [previous agent name] were working on [issue]—I’ve got the full thread, so no need to repeat anything.”
Read more: Find out more about different types of welcome messages and how they can benefit your business.
Proactive message scripts
Proactive scripts trigger when a visitor lingers on a page, hovers near a checkout button, or looks ready to bounce. The goal is to offer help at the moment they need it, without interrupting a calm browsing session.
Pricing page
“Hi, looks like you’re checking out our pricing. Want a 60-second walk-through of which plan fits your team size?”
Checkout page
“Hi, looks like checkout is giving you trouble. Want me to walk you through it, or is there a discount code I can help you apply?”
“Hey, I noticed your cart’s been open for a few minutes. Anything I can sort out before you finish?”
Product or category pages
“Hi, need help picking between [option A] and [option B]? I can give you the short version.”
“Hey, if you’re trying to find something specific and it’s not showing up, let me know what you’re after and I’ll point you to it.”
Related reading: the full case for proactive live chat, and how to set up trigger rules without spamming visitors.
Promotional and discount scripts
Promotional scripts work when they feel like a tip, not a pitch. A short message that gives the customer something useful—a code, a deadline, a heads-up—earns goodwill. A long message that reads like a banner ad earns a chat-window close.
Promoting a product
“Hey, you’ve unlocked [10% off] on this visit. Use code [PROMO] at checkout and it’ll apply automatically.”
“Hi, quick heads-up: [product name] just dropped to [discounted price]. The sale ends [date] if you want to grab it.”
“Hi, our [season] sale starts [date]. Want me to email you the morning it goes live so you don’t miss it?”
On the checkout page
“One thing before you finish: here’s a code for [10% off]: [CODE]. Drop it in the discount field and your total updates.”
“Looks like you’re checking out. Want a code for [free shipping] before you go?”
Use live chat to support your customers in real-time
Refund and return questions are the highest-stakes conversations your support team handles. The customer is already frustrated, the money has already left their account, and one bad reply turns a refund into a chargeback. These scripts give you time, set clear expectations, and protect the relationship even when the answer is no.
Approving a refund
“Hi [customer name], thanks for reaching out. I’ve reviewed order #[order_number] and approved a full refund of [amount] to your original payment method. You’ll see it within 5–10 business days, depending on your bank. Anything else I can sort out for you today?”
Refund is in progress (customer is checking)
“Good news—your refund for order #[order_number] was processed on [date]. Most banks post refunds within 5–10 business days. If you don’t see it by [date + 10 days], reply here with a screenshot of your statement and I’ll escalate it the same day.”
Declining a refund (outside policy window)
“I hear you, and I’m sorry this didn’t work out. Your order was placed on [order_date], which falls outside our [X]-day refund window, so I’m unable to issue a full refund. Here’s what I can do: [store credit / partial refund / exchange]. Which works best for you?”
Starting a return
“Happy to help with the return. I’ve created return label #[return_id] and emailed it to [customer_email]. Drop the package at any [carrier] location within 14 days. Once it arrives at our warehouse, your refund processes within 2 business days.”
Cancellation—order not yet shipped
“Caught it just in time—your order hasn’t shipped yet, so I’ve cancelled it. Your card was authorized but not charged, and the hold drops off in 3–5 business days.”
Cancellation—order already shipped
“Your order shipped this morning, so I can’t cancel it directly. Simplest fix: refuse delivery when the carrier arrives, or accept it and start a free return. Either way, you won’t pay return shipping. Which works better?”
Subscription cancellation
“Confirmed—your [plan_name] subscription is cancelled. You’ll keep access until [end_of_billing_period], and you won’t be charged again. If you cancelled for a specific reason, I’d genuinely like to hear it. Sometimes there’s a fix we can offer that you didn’t know about.”
Order status and tracking scripts
“Where is my order” is the most common e-commerce support query. The script needs to give a real answer fast, set expectations when the news is bad, and offer an action the customer can take. Vague reassurance like “it should arrive soon!” makes things worse.
Order is on the way
“Order #[order_number] shipped on [ship_date] via [carrier]. Tracking: [tracking_url]. Estimated delivery: [eta_date]. Want me to set up a notification for when it’s out for delivery?”
Order is delayed
“I can see order #[order_number] is running about [X] days behind schedule. Here’s what happened: [honest reason—warehouse delay, carrier disruption, weather]. New estimated delivery: [new_eta]. If you’d rather not wait, I can cancel and refund right now.”
Order says delivered but customer didn’t receive it
“That’s frustrating, and I’ll help you sort it. Tracking shows delivery on [date] at [time]. Three quick things to check first: (1) side doors, porches, or neighbors, (2) anyone else in your household, (3) the building’s front desk if you have one. If none of those turn it up, reply within 48 hours and I’ll file a lost-package claim and ship a replacement.”
Changing the shipping address
“Let me check if it’s still in time. [pause] Good news—your order is still in our warehouse, so I’ve updated the address to [new_address]. Can you confirm that’s correct before I save it?”
“It already shipped, so I can’t change the address on our end. Two options: (1) [carrier] sometimes lets you redirect via their site, or (2) refuse delivery and I’ll reship to the new address at no charge.”
Technical troubleshooting scripts
Technical issues like password resets, account lockouts, login errors, payment failures need a script that diagnoses before it solves. Jumping straight to “have you tried clearing your cache” makes the customer feel unheard. Start with the symptom, confirm the environment, then act.
Password reset
“I’ve sent a reset link to [customer_email]—check your inbox and spam folder. The link expires in 60 minutes. Once you’ve set the new password, reply here and I’ll confirm you’re back in.”
Account locked
“You’re locked out from [number] failed login attempts—standard security measure. I’ve unlocked the account now. Try logging in again, and use the reset link if you’ve forgotten the password.”
Login error: “account not found”
“That usually means one of two things: the account is registered to a different email, or it was created through [Google / Apple / Facebook] sign-in. Which email have you used with us in the past? I’ll check both.”
Payment failed at checkout
“Sorry about that. A failed payment is almost always one of three things: an expired card, a billing-address mismatch, or your bank flagging the transaction. Which error message did you see? Paste it here and I’ll point you to the fix.”
App or website is loading slowly
“Let’s narrow it down. Three quick checks: (1) is it slow on both Wi-Fi and mobile data, (2) is it slow in a different browser, (3) does it happen on more than one page. Reply with what you find and I’ll know whether it’s a network issue, a browser issue, or something on our end.”
Scripts for waiting and putting customers on hold
Waiting scripts have one job: acknowledge the delay without making it worse. According to Zendesk’s CX Trends 2026 report[2], 88% of customers now expect faster response times than they did just a year ago. “Thanks for your patience” is hollow on its own. Pair it with what you’re doing right now to help.
Thanking the customer for waiting
“Sorry for the wait—I had to dig into your account to give you a real answer. Here’s what I found: [answer].”
“Thanks for hanging on. We’re busier than usual this morning. I’ve got you now—what’s the issue?”
“I see your request is time-sensitive. I’m pulling in [name] from the [team] right now so we can get this resolved without you having to repeat anything.”
Putting the customer on hold
Holding a customer is a small breach of trust. The script repairs it by giving a reason and a timeframe, never a vague “one moment.”
“Give me 60 seconds to pull up your account.”
“I want to double-check this with my supervisor before I give you the wrong answer. Two minutes, tops—stay on the line?”
“Let me check [specific thing]. About 90 seconds—sit tight.”
Scripts for apologizing
Most unhappy customers don’t tell you they’re unhappy. Coveo’s research found that 84% of customers struggle to get relevant help[3], and 73% will abandon a brand after three or fewer negative experiences. The customer who complains is doing you a favor—they’re the one who didn’t leave silently. Apologize specifically, fix the thing, and tell them when it’ll be done.
Apologizing for an error
“[Customer name], that’s our mistake—sorry about it. I’m looking into it now, and you’ll have an answer within [timeframe].”
“Thanks for flagging this, [customer name]. We had a [specific issue] this morning and your order was caught in it. I’m refunding [amount] now and re-shipping at no charge.”
“We had a technical issue between [time] and [time] today. Our engineering team has a fix in place. Sorry it affected your account—here’s [credit / refund / replacement] to make up for the trouble.”
Declining a request without losing the customer
“Thanks for the suggestion. Right now, [requested feature] isn’t on our roadmap because [honest reason]. I’ve logged your request so our product team sees it. If anything changes, I’ll email you personally.”
“I can’t do exactly what you’re asking, but here’s the closest thing I can offer: [alternative]. Would that solve the underlying problem?”
Scripts for transferring chats
Handoffs are where most customer trust dies. The customer has to repeat the issue, the new agent has no context, and the conversation feels like it’s starting over. Good transfer scripts prevent that.
“[Colleague’s name] on our [team] is the right person for this—she handles [topic] all day. I’ve shared the full thread with her so you won’t have to repeat anything. Bringing her in now.”
“I want to bring in [colleague’s name] from billing—she can see your invoice history directly and will get you a faster answer. Two minutes.”
“[Colleague’s name] has your file from last time. I’m passing you back to him so you keep continuity. Hold on a moment.”
Angry customers are testing whether you’ll listen or get defensive. The script that defuses them acknowledges the specific thing they’re upset about, takes responsibility for what you can, and offers a real next step in the same message.
Acknowledging the feeling
“I hear you, and I’d be annoyed too. Let me see what I can sort out right now.”
“That’s a real problem, and I’m sorry it happened. Can you tell me exactly what went wrong with [issue] so I can fix the right thing?”
“You’re right to be upset—this shouldn’t have happened. Here’s what I’m doing about it: [action].”
Asking for specifics without making it worse
“Can you walk me through what happened step by step? I want to make sure I’m fixing the actual issue, not guessing.”
“When you say [issue], do you mean [interpretation A] or [interpretation B]? I want to fix the right thing the first time.”
An out-of-stock message is a chance to keep the customer in the conversation. Pair every “it’s not available” with a back-in-stock alert offer or a comparable alternative, and you turn a dead conversation into a saved sale.
When the item is coming back
“That size is out of stock right now. We expect it back the week of [date]—want me to email you the moment it’s available? One notification, no marketing.”
“[Item] is on backorder, shipping [date]. You can pre-order today and your card won’t be charged until it ships.”
When the item is discontinued
“[Item] was discontinued at the end of [year], so I can’t get you that exact one. The closest thing we sell is [alternative]: [link]. Most customers who liked [item] now use this one.”
Suggesting an alternative
“Sorry about that. Here’s an alternative that might work: [alternative]. The main differences from what you wanted: [1–2 differences].”
“I get it—that’s a disappointment. Let me show you [alternative]. It fits the same use case at a slightly different price point.”
After-hours and out-of-office scripts
After-hours scripts have one job: give the customer a real next step. “We’ll get back to you soon” is the worst possible auto-reply because the customer can’t act on it. Good after-hours scripts state when you’ll respond, offer self-service alternatives, and capture the right contact details so the morning shift can resolve in one message.
Standard out-of-office
“Thanks for reaching out—our team’s offline right now. We’re back at [open_time] [timezone] on [next_business_day], and we reply to overnight messages in the order they come in. For order status, check [tracking_url] anytime.”
Out-of-office with self-service
“We’re offline until [open_time] tomorrow. Most questions get answered faster in our help center—try these direct links first: track an order [link], start a return [link], reset a password [link]. If you still need a human, leave your question here and we’ll reply by [response_time].”
Weekend or holiday closure
“Our support team is off for [holiday_name] and back on [return_date]. We’ll reply first thing that morning. For urgent shipping issues, [carrier] support is available 24/7 at [carrier_support_link].”
Pre-handoff capture
“Before you go—best email to reach you on if I need to follow up? And if I solve this overnight, do you want a reply tonight or first thing tomorrow?”
Multichannel consistency: WhatsApp, Messenger, Instagram, and email
Your customer doesn’t see four channels. They see one brand. If the WhatsApp reply is breezy and the email reads like a legal disclaimer, trust drops on both. Keep the substance the same and adjust length, tone, and formatting for the platform.
What stays the same across channels
The customer’s name and the order number, always in the first line.
The action you’re taking, stated plainly.
The next step, with a timestamp the customer can hold you to.
What changes by channel
WhatsApp and SMS: short, one idea per message, no formal sign-off. Emojis sparingly, and only if they’re already in your brand voice.
Messenger and Instagram DM: slightly longer than WhatsApp. Casual tone fits. Use quick-reply buttons for yes/no and routing questions.
Email: full context in the first paragraph. Sign-off with name and role. Reply-to address a human actually monitors.
Live chat on site: conversational, fast, and willing to ask follow-up questions inside the same thread.
Same refund approval, four channels
WhatsApp:
“Hi Sarah—refund for order #4821 approved, $89.50 going back to your card in 5–10 days. Anything else?”
Instagram DM:
“Hi Sarah! Refund for order #4821 is approved. The $89.50 will hit your card in 5–10 business days. Let me know if I can help with anything else.”
Email:
Hi Sarah,
Thanks for getting in touch about order #4821. I’ve approved a full refund of $89.50 to your original payment method. You’ll see it within 5–10 business days, depending on your bank.
Best, Alex—Customer Support
Live chat:
“Refund approved for order #4821—$89.50 going back to your card in 5–10 business days. Want me to send a confirmation email too?”
Tidio handles WhatsApp, Instagram, Messenger, and email in one inbox, so the same agent can keep voice consistent without copy-pasting between four tools.
Closing the chat and survey scripts
Closing scripts confirm the issue is actually resolved, not just that the conversation is over. The biggest mistake is the lazy “Is there anything else?” closer. It invites a “no” that ends the chat before you’ve checked whether the real problem is solved. Better closers ask a specific question.
When the customer has gone quiet
“Looks like you’ve stepped away. I’m going to close the chat for now, but everything we discussed is logged on your account. If you need me again, just open a new chat.”
“Haven’t heard from you in a few minutes—closing this one out. Anything from this conversation that’s still open, reply here and it’ll come back to me.”
Thank-you messages
“Thanks for reaching out. I’ve made a note on your account so the next agent who picks up will know what we covered.”
“Glad we sorted that. Anything from the last 10 minutes still feel unclear?”
“All set on my end. Did I get all of that for you, or is something still open?”
Survey requests
“Quick favor—did this conversation actually solve your problem? One-word answer is fine.”
“If you have 30 seconds, I’d genuinely value your feedback on this chat: [survey link]. It goes straight to me and the support lead.”
What to say (and avoid) in a live chat reply
The fastest way to improve script quality is to cut the phrases that frustrate customers and replace them with the honest equivalent. Most bad replies aren’t dishonest—they’re defensive, vague, or padded with corporate filler.
Skip this phrase
Say this instead
Why the swap works
“Unfortunately, I can’t…”
“Here’s what I can do…”
Leads with the option, not the wall.
“Please be patient”
“I’m on it—give me 60 seconds”
Names a real timeframe.
“As per our policy…”
“Our refund window is 30 days, and your order is on day 35. Two options I can offer…”
Cites the rule and the workaround together.
“I understand your frustration”
“That’s a real problem, and I’d be annoyed too.”
Validates without sounding scripted.
“Let me transfer you to the right team”
“Sarah on billing is the right person—bringing her in now without restarting your case.”
Keeps continuity, not just a handoff.
“Is there anything else?”
“Did I get all of that for you?”
Easier to answer; gives a clear signal.
“We apologize for the inconvenience”
“Sorry—this one’s on us. Here’s the fix…”
Owns the mistake; names the action.
“Your call is important to us”
(Delete entirely. Show it, don’t say it.)
Saying it proves the opposite.
Three rules behind the table:
Never apologize without naming what you’re apologizing for.
Never quote a policy without also offering an action.
Never close a chat without confirming the customer’s question is fully answered.
Your script library should change shape depending on what you sell. An e-commerce script that opens with order tracking will fall flat for a SaaS user asking about an integration error. The four sets below cover the most common deviations from the general scripts above.
E-commerce
Lead with order status, refund eligibility, and shipping timelines. Add sizing, restock, and gift-receipt scripts. Pair every “out of stock” reply with a back-in-stock notification offer.
“That size is out of stock right now, but we expect it back the week of [date]. Want me to email you the moment it returns? One notification, no marketing.”
SaaS and software
Lead with login, billing, and feature-specific troubleshooting. Most SaaS chats fall into four buckets: “I can’t log in,” “I was charged for something I didn’t expect,” “the integration broke,” “how do I do X.” Build a script for each.
“Looks like your card was charged on [date] for the [plan_name] annual plan. You’re on the team plan that switched from monthly to annual at renewal—here’s the setting that controls that: [link]. Want me to switch it back to monthly and refund the difference?”
Hospitality and travel
Lead with booking changes, cancellation policies, and confirmation resends. Tone runs warmer than e-commerce, because the customer is often planning something they care about.
“Looking forward to having you with us on [date]. I’ve updated your reservation to a king room with a late check-in flag noted in your file. Confirmation resent to [email]. Anything else for the trip?”
Financial services and fintech
Stricter. Every script needs to verify identity before anything sensitive happens, and every script should remind the customer what you’ll never ask for.
“For your security, I’ll need to verify a couple of details before we look at the account: the last four digits of your card and the email on file. As a reminder, we’ll never ask for your full card number or your password in chat.”
Boost customer satisfaction with a professional AI agent
A live chat script is a pre-written reply your support agents adapt to each customer, covering greetings, refunds, troubleshooting, handoffs, and after-hours messages. The agent edits the script to fit the conversation. The goal is consistency and speed, with the conversation still feeling human.
Do live chat scripts reduce response time?
Yes. Teams using a maintained script library cut first-response time by 30–50% on common questions because agents stop writing from scratch. The bigger gain is consistency. Every customer gets the same clarity regardless of which agent picks up the chat.
Can I use live chat scripts with an AI chatbot like Lyro?
Yes, and you should. Your AI chatbot trains faster and answers more accurately when you feed it your existing script library as source material. Tidio’s Lyro learns from your saved replies, FAQs, and past chats. Start with the scripts in this guide, then refine based on what your customers actually ask.
How often should I update my live chat scripts?
Review the library every quarter, and refresh any script tied to a policy that changes: refund windows, shipping carriers, return periods. Scripts that quote a price, a date, or a product name go stale fastest. Set a 90-day calendar reminder for the agent who owns your help center.
Key takeaways
Swap three things before sending: the customer’s name, a specific detail from their message, and a real timestamp. If you can’t change all three, pick a different script.
Lead with the action. “Here’s what I can do” beats “Unfortunately, I can’t.” Never quote a policy without offering an option in the same message.
Replace “Is there anything else?” with “Did I get all of that for you?” The second closer gives you a real signal the issue is resolved.
Feed your scripts into Lyro. Tidio’s AI agent trains faster when you give it your existing script library. Refresh every quarter—scripts tied to prices and policies go stale fastest.
Sources
Show all sources
1. HubSpot State of Service 2024 2. Zendesk’s CX Trends 2026 report 3. Coveo’s 2025 CX Relevance Report
Polina is an AI Content Strategist at Tidio with over a decade of experience in tech, SaaS, and product-led growth. She creates research-driven, practical content that helps businesses improve customer communication, scale support with AI, and turn content into a real acquisition channel.