{"id":"cx-macro-shipping-delay-variables","audience":"customer-support","category":"support-work","technique":"format","track":"support","level":"intermediate","title":"Build a shipping-delay macro with merge variables","free":false,"task":"Write one reusable macro for agents to paste into delay tickets. Use only these four merge fields, written exactly like this: {{first_name}}, {{order_number}}, {{new_date}}, {{carrier}}. Plain text, under 70 words, with no subject line. End with a line that tells the customer to reply CANCEL to cancel the order. Do not mention credits or compensation.","materialLabel":"Your material (attached to your prompt automatically)","material":"SHIPPING DELAY BRIEF (ops, Oct 29)\n\nProblem: Our Reno warehouse lost power for a day. Orders placed Oct 25-27 will ship 3 to 4 days late.\n\nWhat agents can offer:\n- A new estimated delivery date (varies per order, look it up in the order page)\n- Free cancellation any time before it ships\n- Credit of $5: only for orders delayed more than 7 days. Not applicable to this delay.\n\nCarrier: ShipNova ground, tracking updates 24 hours after pickup.\n\nSample past macro: \"Hi {{customer}}, your order {{id}} is late because of supply issues. We're sorry for the trouble and offer a $5 credit.\"","rules":[{"type":"plainText"},{"type":"maxWords","max":70}],"mistakes":[{"title":"Inventing merge fields","why":"The AI copies the old macro style, so you get {{customer}} or {{id}} that your helpdesk can't fill.","fix":"List the exact fields: \"Use only {{first_name}}, {{order_number}}, {{new_date}}, {{carrier}}.\"","checks":["r0"]},{"title":"Offering the credit","why":"The old macro and the brief both mention $5, so the AI offers it even though it doesn't apply.","fix":"Add: \"Do not mention credits or compensation.\"","checks":["r2"]},{"title":"Hiding the reason","why":"The AI says 'supply issues' or nothing, so the customer doesn't know why.","fix":"Say: \"Give the reason in one short sentence: the warehouse lost power.\"","checks":["r1"]},{"title":"Getting markdown back","why":"AI adds bold and headings by default, which show up as stray symbols where this is pasted.","fix":"Say \"plain text, no bold, no headings, no asterisks\".","checks":["plainText"]},{"title":"Trusting the AI to count words","why":"AI is bad at counting and usually runs long, so a vague \"keep it short\" lands well over the limit.","fix":"Cap each part instead of the total, for example \"each line under 15 words\".","checks":["maxWords"]}],"promptHints":[{"label":"Asks for plain text","patterns":["plain","no bold","no markdown","no formatting","no headings"]},{"label":"Sets a length limit","patterns":["\\d+\\s*words","word (limit|count)","under \\d+"]},{"label":"Lists the exact merge fields","patterns":["\\{\\{","first_name","merge"]},{"label":"Sets where CANCEL goes","patterns":["cancel","last line","end with"]}],"hint":"A macro is only useful if the fields match your helpdesk. Name them exactly, say what to leave out, and say what the last line must be.","rubricLabels":["Uses the merge fields {{first_name}}, {{order_number}} and {{new_date}} exactly as written and invents no other double-brace fields","Explains the delay is because of a warehouse power outage (or power loss) and gives the new date through {{new_date}}","Ends with the CANCEL instruction as its last line, and mentions no credit, discount or compensation"]}