This skill builds a library of pre-written customer-service reply templates for ecommerce sellers on TikTok Shop, Shopee, and Shopify. A good script library keeps every agent (or auto-reply) on-brand, compliant with platform rules, and fast — turning a 6-minute freehand reply into a 45-second personalized paste. The goal is not robotic canned text; it is a flexible scaffold with variables and tone rules that a human can send confidently or lightly edit.
DecisionStrongAcceptableWeakTone registerWarm-professional, plain language, matches brand voice and platform normsGeneric-polite, slightly stiff but inoffensiveCorporate-legalese or over-casual slang that erodes trustPersonalization levelUses {{customer_name}}, references the specific {{order_id}} and itemUses name only; rest is generic"Dear Customer" with zero order contextRefund authority phrasing"I've issued a full refund of {{amount}} — it lands in 3-5 business days" (within policy)"I'll request a refund for you" (when approval is needed)"You will definitely get your money back today" (overpromising)Escalation triggerClear rules: chargebacks, safety/injury claims, >$X value, 3rd contact, legal/press threatsEscalate on "angry customer" gut feelNo defined trigger; agents improvise or stallResponse-time SLAFirst reply <2h in business hours, <12h off-hours; states a realistic windowReply same business day"We'll get back to you" with no timeframeApology framingSpecific, owns the issue, no excuses: "That's on us — your parcel was mislabeled""Sorry for any inconvenience""Sorry you feel that way" (non-apology, blames customer)Channel adaptationTightens length and emoji for TikTok Shop chat vs. fuller email on ShopifyOne length reused everywhereLong formal email pasted into a 1-line chat boxCompensation offerTiered and pre-approved (reship, partial credit, coupon) with caps per scenarioAd-hoc gesture decided per ticketReflex discount on every complaint, training customers to complainClosing / next stepStates exactly what happens next and by when, invites replyPolite sign-off, no next stepAbrupt close that forces a follow-up message
Audit ticket volume and tag the backlog. Pull 30-90 days of tickets/chats from each platform and tag them by inquiry type. Note volume, average handle time, CSAT, and where conversations stall or escalate. You are looking for the 20% of inquiry types that drive 80% of contacts — that is where scripts pay off first.
Identify and rank the top inquiry types. Cluster the tags into clear scenarios (e.g. "Where is my order?", "Item arrived damaged", "Wrong size"). Rank by volume × handle time × escalation rate so you script the highest-leverage scenarios first. Aim for 15-25 scenarios in v1; resist trying to cover every edge case.
Define brand voice and policy rules. Set the voice (register, warmth, formality, emoji usage) and the non-negotiable guardrails: what agents can promise on refunds, reships, and timelines without approval, and what must escalate. Write these as plain rules so every script inherits the same boundaries. See references/tone-and-policy-guide.md.
Draft scripts per scenario, two variants each. For each scenario write variant A (standard) and variant B (high-empathy / repeat or upset customer). Lead with acknowledgement, give the answer or action, and end with a concrete next step. Keep chat variants short; keep email variants complete. Use references/scenario-library.md for seeds.
Add variables, placeholders, and branch notes. Replace specifics with clear tokens like {{customer_name}}, {{order_id}}, {{tracking_link}}, {{amount}}, {{eta_date}}. Mark every spot an agent must verify before sending, and add "do-not-say" notes to block off-policy phrasing. Variables prevent copy-paste accidents (wrong name, stale ETA).
QA against policy and voice. Run every script through assets/quality-checklist.md: check coverage, voice consistency, policy accuracy, personalization, empathy, escalation, and localization. Have a second reviewer read scripts cold and flag anything that sounds canned, risky, or off-brand. Fix, then approve.
Roll out, measure, and maintain. Load scripts into the helpdesk/macros and brief the team on when to edit vs. send as-is. Track first-response time, handle time, CSAT, and escalation rate before/after. Review monthly: retire dead scripts, add new scenarios from emerging tickets, and refresh anything affected by a policy or product change. Log every change in the maintenance table from references/output-template.md.
Brand: Lumio & Co. — a mid-size home-fragrance brand (candles, reed diffusers, refills) selling on Shopify (primary) and TikTok Shop. Voice: warm, sensory, lightly playful; first-name basis; one emoji max per message; never clinical.
Top inquiry types (from a 60-day audit): WISMO / order status (34%), melted or broken-in-transit candle (18%), scent expectation mismatch (11%), discount code won't apply (9%), cancel/change order (7%).
Sample scripts
Scenario: "Where is my order?" — variant A (standard, Shopify email)
Hi
{{customer_name}}, thanks for reaching out! Your order{{order_id}}is on its way — here's live tracking:{{tracking_link}}. Right now it's showing{{tracking_status}}, with delivery expected by{{eta_date}}. If it hasn't arrived by then, just reply here and I'll chase the carrier and sort it out for you. 🕯️
Scenario: "My candle arrived melted/broken" — variant B (high-empathy, photos already attached)
Oh no,
{{customer_name}}— a{{product_name}}showing up like that is not the welcome we wanted to send. That's on us and the summer heat in transit. I've arranged a free replacement for order{{order_id}}, shipping{{ship_method}}today, no need to return the damaged one. You'll get tracking by{{eta_date}}. Thanks for the photos — they help us pack smarter for warm-weather routes.
Scenario: "Discount code won't apply" — variant A (TikTok Shop chat, short)
Hi
{{customer_name}}! Let's fix that. Code{{promo_code}}is valid on orders over{{min_spend}}and excludes{{excluded_items}}— could either of those be it? If your cart qualifies and it's still not taking, send a screenshot and I'll apply the discount manually before you check out. 💛
Brand: TrailKit — outdoor gear and apparel (packs, jackets, footwear) selling on Shopee (SEA markets) and Shopify. Voice: confident, practical, no-fluff, gear-expert peer; sizing and durability questions are frequent and high-stakes for returns.
Top inquiry types: sizing/fit advice pre-purchase (22%), return/exchange for fit (19%), delivery delay (17%), waterproofing/defect claim (12%), warranty question (8%).
Sample scripts
Scenario: "Will this jacket fit me?" — variant A (pre-sale, Shopee chat)
Hi
{{customer_name}}! The{{product_name}}runs true to size with room for a midlayer. For your stats ({{height}}/{{chest}}), I'd go{{recommended_size}}— size up only if you'll layer a thick fleece. Full size chart here:{{size_chart_link}}. Want it roomier or more fitted? Tell me how you like your shell to sit and I'll dial it in.
Scenario: "I need to exchange for a different size" — variant A (standard)
Hi
{{customer_name}}, happy to swap that for you. I've started an exchange on order{{order_id}}: you'll get a prepaid return label at{{return_label_link}}, and your{{new_size}}will ship the moment your return scans in (usually{{exchange_window}}). Keep the item unworn with tags so it qualifies. Want me to reserve the{{new_size}}now so it doesn't sell out? I can hold it for{{hold_days}}days.
Scenario: "My jacket leaked / isn't waterproof" — variant B (high-empathy, possible defect)
That shouldn't happen,
{{customer_name}}— the{{product_name}}is rated to{{waterproof_rating}}, so a leak means something's off. A couple of quick questions so I get you the right fix: where did water come through (seams, zip, or fabric), and roughly how old is the jacket? If it's a manufacturing fault it's covered under our{{warranty_period}}warranty and I'll arrange a replacement or repair — no cost to you. In the meantime, here's a 2-minute re-proofing guide in case it's the DWR coating:{{care_link}}.
{{customer_name}} + one order-specific reference ( {{order_id}}, item, or ETA) in every script.{{eta_date}}").{{threshold}}, third contact) in each script and the policy guide.{{tracking_link}} literally, or last week's ETA, destroys trust instantly. Fix: mark every must-verify field and add a final "swap all {{ }}" QA step.references/output-template.md — Fill-in-the-blank structure for the finished Support Script Library deliverable, including the per-scenario block and maintenance log.references/scenario-library.md — Catalog of ~25 common ecommerce CS scenarios with triggers, customer emotion, key info, and a script seed for each.references/tone-and-policy-guide.md — How to define brand voice, platform policy guardrails, the acknowledge→align→act empathy pattern, and localization cautions.assets/quality-checklist.md — QA checklist to run every script through before approval and rollout.