Positive scripting in customer service works when a reply states what you can do in concrete words backed by real order data. It fails when cheerful words replace facts. Rewrite your most used replies, keep a plain no when the answer is no, and give AI agents the same rules.
A customer can forgive a no. What they do not forgive is a cheerful reply that dodges the question they asked, because it tells them nobody looked at their order.
Open any support inbox the week after a shipping delay and you will find the same reply sent forty times. “Great news! Your order is on its way to you soon!” The order is not on its way. The customer knows it is not on its way, because the tracking page has said “label created” for nine days. The reply was written to sound positive, and it does. It also tells the customer that whoever sent it did not look.
That is the gap this guide is about. Positive scripting is a real skill with real research behind it, and most stores practice a version of it that does more harm than a blunt answer would. Whether you answer every ticket yourself or you have just handed the first reply to an AI agent, the fix is the same: make the script concrete, make it true, and let it say no.
Positive scripting means writing support replies around what you can do for the customer, stated in specific terms, rather than around what you cannot do or what the policy forbids. “We can’t ship to PO boxes” becomes “I can ship this to a street address or a nearby pickup point; which works better for you?” The constraint is the same. The reply now hands the customer a next step instead of a wall.
The idea grew up in call center training, which commonly coaches agents away from words like “unfortunately,” “policy” and “can’t.” For an online store it lives in three places: the macros or saved replies in your helpdesk, the order and shipping notifications Shopify sends on your behalf, and, increasingly, the instructions you give an AI agent that answers the first message. If you are still building the basic skills on your team, our guide to using core customer service skills like active listening and positive language covers the ground underneath this one.
What the call center version leaves out is the part that matters most for ecommerce. A phone agent can soften a hard answer with tone of voice and a pause. Your written reply cannot. In email, chat and SMS, the only things that carry warmth are the facts you include and the order you put them in. A reply that names the customer’s product, gives a real date and offers one clear option feels positive even if it contains the word no. A reply that says “We’d love to help!” and then says nothing specific feels like a form letter, however many exclamation marks it carries.
So the working definition for a store is narrower and more useful than the training manual one. A positive script leads with the action you will take, states it in concrete terms the customer can picture, carries the real data from their order, and is honest about the limit when there is one. Everything else in this guide follows from those four parts.
Word swaps read as spin because customers judge a reply by whether it addresses their specific problem, not by how many positive words it contains. Two published studies of real support conversations point the same way, and neither one rewards cheerfulness on its own.
The first is Grant Packard and Jonah Berger’s work on how concrete language shapes customer satisfaction, published in the Journal of Consumer Research in 2021 and based on more than 1,000 recorded calls and written exchanges. Agents who used concrete language, the kind a customer can picture, produced more satisfied customers, and the authors connect that to repeat purchases. Their contrast is useful for any store: “I’ll help you with that” is abstract, while naming the specific flight being rebooked, or exactly when and where a package will arrive, is concrete. The mechanism they propose is simple. Concrete words show the customer they were heard.
The second is research by Grant Packard, Sarah Moore and Brent McFerran, published in the Journal of Marketing Research in 2018, which looked at around 3,000 customer service email exchanges covering everything from lost passwords to “where is my shipment?” It found that agents who wrote “I” instead of “we” drove higher satisfaction and more purchases over the following months, and that pronouns predicted outcomes better than emotion words did. Read together, the two studies say something most scripting guides miss. The words that move customers are the ones that signal a specific person did a specific thing about their specific order. Generic positivity is not on that list.
That is why the most common positive scripting mistake is not a bad word choice. It is a reply built to sound upbeat about a fact the agent does not have. “Your order will be with you soon!” is positive and abstract. “I checked your order and the blue size M jacket leaves our warehouse on Thursday” is neutral in tone and concrete in content, and the research suggests the second one is the reply that earns the repeat purchase.
A support script can only state a concrete next step if the person or AI sending it can see the facts that make the step true. When the ship date, the preorder status or the return window is missing from the screen the agent works in, every script quietly falls back to vague reassurance, and vague reassurance is exactly what customers read as spin.
Sandesh Kulai of STOQ, a Shopify preorder app, made this point on episode 483 of the eCommerce Fastlane podcast, on pre-orders and back in stock alerts, when he described how a brand’s support team handled preorder questions. The brand put the preorder details on the Shopify order itself, then pulled them into a widget in its helpdesk:
“But because everything you need to know about preorders is already on the order, they were just able to pull that information in easily and add a custom widget saying that, hey, this order contains a preorder item. This is when shipping is expected. This is the latest information we have on it. and to talk to their customers based on whatever information they have.”
His broader point was that every team, fulfillment and support alike, is feeding off one source of truth in Shopify: the order itself. For positive scripting, that changes where the work starts. Before you rewrite a single macro, check that the facts the macro needs are visible on the order or in the helpdesk sidebar: expected ship date, preorder flag, tracking status, return eligibility and the refund amount if one was issued.
There is a mechanical trap here too. Helpdesks fill scripts with order data using variables, and when the data is missing the variable can simply disappear. Gorgias documents that a macro variable with no data behind it is replaced with a blank. A script that reads “Great news, your order ships on [date]!” becomes “Great news, your order ships on !” That is worse than no script at all, because it is cheerful and visibly broken in the same sentence. Any macro that depends on a variable needs a version written for the case where the data is not there, and that version should say so plainly: “I don’t have a confirmed ship date yet. I’ll email you the day it’s set.”
Of three replies to the same delayed preorder, only the one that names the product, gives a real date and offers a concrete exit builds trust. What follows is a composite built from patterns common in Shopify support inboxes, not one real store, and the details are illustrative.
The situation: a customer preordered a jacket with an estimated ship date three weeks out. The supplier is late, the new estimate is ten days after the original, and the customer writes: “It’s been three weeks. Where is my order? I need it for a trip on the 20th.”
Version one is the negative reply many small stores send when they are busy. “Unfortunately your item is on preorder and we cannot ship it until it arrives from our supplier. As stated on the product page, preorder dates are estimates. Please be patient.” Every sentence is accurate. Every sentence also puts the store’s policy between the customer and an answer, and it ignores the trip on the 20th entirely.
Version two is the reply that a word swap exercise produces. “Great news! Your jacket is part of our exclusive preorder collection and will be on its way to you very soon! We truly appreciate your patience and can’t wait for you to enjoy it!” The negative words are gone. So is any fact. “Very soon” is abstract, the trip is still ignored, and a customer who has already waited three weeks reads it as a brush off. This is the version I would delete first from any macro library.
Version three is the positive script done properly. “I checked your order. Our supplier is running late, and your jacket is now expected to ship on the 14th, with delivery about three days after that, so it is likely to arrive before your trip but it is tight. If you’d rather not risk it, I can cancel and refund the full $148 to your card today, or switch you to the in stock grey version, which ships tomorrow. Just reply with which you prefer.”
Look at what changed. The reply uses “I,” names the product, gives a real date, admits the risk instead of hiding it, and offers two concrete options, one of which is a full refund. It is honest about the delay, which version two was not, and it leads with what the store can do, which version one did not. The judgment call that makes it work is the refund offer. Plenty of stores would leave it out to protect the sale. I would keep it, because in my judgment a customer who chooses to wait with that option on the table is less likely to file a chargeback than one who felt cornered. If your margins cannot absorb that on a given product, offer the swap first and the refund second, but do not remove the exit.
Scripts decay in two ways, people stop following them and the scripts stop matching reality, and an AI agent repeats whichever script it is given at volume. The first happens to human teams because repetition wears down tone. The second happens because policies, carriers and products change while the macro library does not. An AI agent fixes the first problem and makes the second one more dangerous.
Matt Stafford, managing partner at Build Grow Scale, described the human side of this on episode 411 of the eCommerce Fastlane podcast, in a conversation about where AI is helping stores:
“Yeah, I just think as a human you, you get tired of answering the same question day after day and you don’t even realize that your tone has changed or your language is off putting where it just doesn’t. You never have a bad day with a, with a customer service spot that’s set up properly.”
He is right about tone, and the key words are “set up properly.” An AI agent does not get tired, but it reproduces whatever you tell it, at volume, on every ticket. Gorgias, for example, lets merchants set an AI agent’s tone of voice as friendly, professional, sophisticated or custom, add greetings and sign offs, and list forbidden words and phrases. That is positive scripting moved from a training manual into a settings screen. If the settings say “always stay upbeat” and the agent cannot see the ship date, you get version two from the previous section on every ticket, all day.
So the rules from this guide belong in the AI agent’s configuration, not only in a team doc. Put “unfortunately” and “please be patient” on the forbidden list if you like, but also tell the agent to state the real date or say it does not have one, to use the customer’s product name, and to hand the ticket to a person when the customer mentions a deadline. Our guide to setting up an AI chatbot on Shopify without losing customer trust covers the handoff rules in more depth. Then read a sample of the agent’s replies each week, because a script you never read is a script that has already drifted.
Most stores need far fewer scripts than they have, and the right amount depends on volume and who is answering. A founder answering 20 tickets a week needs a handful of written rules, not a library. A team handling hundreds of tickets a day needs ten to fifteen strong macros and a monthly review, and very little beyond that.
If you are just starting and you answer every message yourself, skip the macro library. Write five rules on one page: use “I,” name the product, give a date or say you do not have one, offer one concrete option, and say no plainly when the answer is no. Your replies will be more concrete than any template because you are looking at the order while you write.
If you are in the growth stage with one to five people on support, this is where scripts pay off and where they go wrong fastest. Pull a report of your most used macros and rewrite the top ten using the version three pattern. Ten is a starting point, not a rule: look at your own usage report and stop where the curve flattens, because the replies customers see most are the ones worth the rewrite. Retire anything that has not been used in 90 days.
If you are scaling with an AI agent answering first, your scripts now live in two places, the macros your people use and the agent’s tone and behavior settings, and they have to agree. Review both on the same day each month. When you change a policy, change the macro, the agent instructions and the Shopify notification that mentions it in one sitting. A refund policy that says one thing in the agent and another in the macro is the fastest way to produce two different answers to the same customer.
Cut every macro that sounds positive without stating a fact, every macro that depends on a variable with no fallback, and every macro that hides a no behind soft language. Those three types cause most of the spin your customers notice, and removing them does more for your replies than writing new ones.
The first cut is the reassurance macro: “We’re so sorry for the wait, your order will be with you soon!” It exists because it is fast to send, and it is fast to send because it does not require looking at the order. Replace it with a macro that forces the agent to fill in a date or choose the “no confirmed date yet” version. If speed matters, and in a carrier meltdown it does, send a short honest holding reply instead: “I’m checking your order now and will reply with the date by 3pm.” That is fast and still true. What does not work is a fast reply that pretends to answer.
The second cut is any macro that buries a no. If your return window is 30 days and the customer is on day 45, a reply that says “We’d love to find a solution that works for you!” and then offers nothing is cruel in a polite voice. Say it plainly and give the best real option you have: “Your order is outside our 30 day return window, so I can’t offer a refund. I can offer store credit for the full amount, or help you sell it on through our resale partner.” Returns are where these replies are tested hardest, especially after the holidays, so pair this with a clear look at where returns money actually leaks before the BFCM wave.
The third cut is the stack of near duplicates. Most macro libraries grow by copying: one agent tweaks a reply, saves it under a new name, and the old one stays. Within a year you have six versions of the shipping delay reply, all slightly different, and customers get different answers depending on who is on shift. Keep one per situation. Fewer scripts, written concretely and read often, is the whole method.
Positive scripting is writing support replies around what you can do for the customer, in specific terms, instead of around what you cannot do. For an online store it means a reply that leads with the action you will take, names the customer’s product, includes the real date or amount from their order, and is honest about any limit. It is not about removing every negative word. A reply that says “I can’t refund this, but I can offer full store credit today” is positive scripting done well, because the customer knows exactly what happens next.
The most useful positive phrases are concrete ones that show you looked at the order, such as “I checked your order and it ships on Thursday.” That works better than “Your order will be with you soon.” “I can switch you to the grey version, which ships tomorrow” works better than “We’d love to help!” “I” tends to land better than “we,” and published research on support emails links it to higher satisfaction and sales. Phrases to retire include “please be patient,” “as stated in our policy” and any upbeat line that does not include a fact.
Say no plainly, give the reason in one short sentence, and follow it immediately with the best real option you have. For example: “Your order is outside our 30 day return window, so I can’t offer a refund. I can offer store credit for the full amount today.” Customers handle a clear no far better than a vague reply that avoids the question. What makes a no feel negative is a dead end, so the fix is always to end on a concrete next step the customer can choose.
Yes, but give the AI agent rules about facts, not just tone. Many helpdesk AI agents, including Gorgias, let you set a tone of voice and a list of forbidden phrases. Use those settings, and also instruct the agent to state the real ship date or say it does not have one, to use the customer’s product name, and to hand the ticket to a person when the customer mentions a deadline or asks for an exception. An agent told only to stay upbeat will send cheerful, empty replies at scale.
Most Shopify stores need between ten and fifteen well written macros, not dozens. A founder answering their own inbox can work from a one page list of rules instead. Growing teams should pull a usage report, rewrite the most used replies so they include real order data and a concrete next step, keep one macro per situation, and retire anything unused for 90 days. Review the macros and any AI agent settings together once a month so they never give customers different answers.