Add Smartlead spintax ({option|option}) to an Outreach Hub campaign's approved email copy, so each send varies its wording while saying the same thing. Use after a person approves the copy and before the desk pushes it to Smartlead, in the hub or in Claude Code. Returns the same two-email sequence with spin blocks added. Varies wording only: never changes the offer, a claim, the ask or a merge field, never writes new copy, and never calls Smartlead or sends.
smartlead-spintax/SKILL.md9.3 KB212 lines
When asked which version of this skill is active, report metadata.version exactly.
You add wording alternatives to copy a person has already approved, just
before the desk pushes it to Smartlead. Smartlead picks one option from each
{option|option} block for each lead, so the same email goes out in a few
wordings. Answer only with JSON that matches
schemas/spun-sequence.schema.json: the sequence you were given, with spin
blocks added and nothing else changed.
What you are given
A JSON object:
campaign:offer, the campaign's offer as the desk stores it, so you can find the sentence in each email that states it.steps: the approved sequence, shaped as cold-email-copy'sschemas/sequence.schema.jsondescribes itssteps: Email 1 (variantA, and sometimesB) and one threaded follow-up. A person may have edited it by hand after cold-email-copy wrote it. It has passed the desk's mechanical checks and a person approved it, so its wording is final.
The copy is clean, with no spintax yet. If an email already contains a {,
} or | that is not part of a merge field, return that email unchanged and
say why in notes. Never add a pass around existing blocks.
What to spin
Spin only these, in each email and variant:
- The greeting word:
{Hey|Hi|Hello} {{first_name}},. - The opening sentence, when it frames their situation or why they should care. If it states the offer or makes a claim, it stays as approved.
- The ask, keeping exactly what it asks for: the same reply, the same commitment, and no call length, date or deadline the approved ask does not have. In Email 2 the ask is also the line that makes a no easy; keep that.
- Email 1's subject, as one block of two or three complete subjects. Each option follows cold-email-copy's subject rule: two to five words, lower case, specific to them, no question mark.
Leave everything else exactly as approved:
- The offer line, the sentence that says what we give them. It must read the same to everyone.
- Any sentence that carries a claim, a number, a name or how the offer works.
- Merge fields and
%signature%. - Email 2's subject, which stays
""so Smartlead threads it. - Step numbers, day offsets,
threadedand variant labels.
Variants. Spin A and B separately. Every option in a variant keeps that variant's angle, so the A/B test still measures the angle. A's opener options never drift toward B's angle, or the other way round.
How to write a block
- Two or three options, never more. Two good options beat a forced third. If you cannot write a second option that is as clear and says the same thing, leave the sentence fixed.
- The approved wording is the first option, character for character, so
choosing the first option in every block gives back the approved email. If
the approved wording has a typo or a problem, keep it and say so in
notes. Never hide a copy change inside a block. - Same meaning in every option. No new claim, no stronger or weaker promise ("likely" stays "likely"), no added familiarity, no different ask.
- Whole units. Spin a whole sentence or a self-contained phrase, with its
punctuation inside the block. Each option must read right with the fixed
text around it and with every option of a neighbouring block.
{Would you|Are you} {be open to a chat|interested in a chat}?fails;{Would you be open to a chat?|Are you interested in a chat?}works. - Flat. Never put a block inside a block.
- Merge fields stay outside blocks, and so do Variables, the campaign's
own fields with their fallbacks, such as
{{school|your program}}, which count as merge fields here. Spin the words around a merge field, never a stretch that contains one:{Worth a quick chat|Open to a quick chat} about {{company}}?, never{Worth a chat about {{company}}?|...}.%signature%stays on its own last line, outside every block. - Clean options. No empty or duplicate options, no space at the start or
end of an option, and no literal
|,{or}inside one (use a comma or a colon). - House voice in every option. cold-email-copy's rules apply to each
option on its own: plain and direct, regular hyphens and never em dashes,
no emoji, no ALL CAPS, none of its model tells, and no trigger language
("free", "guarantee", "act now" and the rest of campaign-qa's
references/spam-triggers.md). - Length. Keep each option close to the length of the wording it
replaces. The longest reading of each email (the longest option in every
block) stays at 80 words or fewer, not counting merge fields or
%signature%, and Email 2's stays within cold-email-copy's 30 to 60.
What the desk checks in code
The rules a machine can check are the desk's code's job, as word counts and
merge fields already are for clean copy. references/house-rules.md lists
them. Write within them so the answer is not refused, but spend your own
review on what code cannot see: whether every option means the same thing,
keeps its variant's angle and sounds like one person writing to another.
Before you answer
Read every option against the approved sentence it replaces. Then read each email as the person receiving it would, several ways through: all first options, all second options, and the longest options. If any reading changes the offer, a claim or the ask, or stumbles at a block boundary, fix the block or leave the sentence fixed.
Output
steps: the steps you were given, in the same order, with spin blocks added as above.merge_fields: the merge fields and Variables the copy uses, by name (first_name,school). Your pass never changes them.notes: which lines you left fixed and why, any email you returned unchanged, and anything in the approved copy a person should look at. Never say what spintax will do for delivery: it varies wording, and it does not promise unique emails, inbox placement or more replies.
Worked example
Illustrative only, not a real campaign. Given:
{
"campaign": {
"offer": "A benchmark of each of your clients' ops metrics against companies of a similar size."
},
"steps": [
{
"step": 1,
"day_offset": 0,
"threaded": false,
"variants": [
{
"label": "A",
"subject": "client ops benchmark",
"body": "Hey {{first_name}},\n\nWhen you start with a new client, it is hard to tell whether their ops numbers are good for a company their size.\n\nWe build a benchmark of your clients' ops metrics against similar companies, so you can show each one where it stands.\n\nWorth a quick chat?\n\n%signature%"
}
]
},
{
"step": 2,
"day_offset": 3,
"threaded": true,
"variants": [
{
"label": "A",
"subject": "",
"body": "Hey {{first_name}},\n\nThe benchmark also shows which metric sits furthest from its peers, which gives you a clear first project with a new client.\n\nWorth a look, or should I leave it there?\n\n%signature%"
}
]
}
]
}
Answer:
{
"steps": [
{
"step": 1,
"day_offset": 0,
"threaded": false,
"variants": [
{
"label": "A",
"subject": "{client ops benchmark|ops benchmark for clients}",
"body": "{Hey|Hi|Hello} {{first_name}},\n\n{When you start with a new client, it is hard to tell whether their ops numbers are good for a company their size.|When you take on a new client, it is hard to know whether their ops numbers are good for a company their size.}\n\nWe build a benchmark of your clients' ops metrics against similar companies, so you can show each one where it stands.\n\n{Worth a quick chat?|Open to a quick chat?|Up for a quick chat?}\n\n%signature%"
}
]
},
{
"step": 2,
"day_offset": 3,
"threaded": true,
"variants": [
{
"label": "A",
"subject": "",
"body": "{Hey|Hi|Hello} {{first_name}},\n\nThe benchmark also shows which metric sits furthest from its peers, which gives you a clear first project with a new client.\n\n{Worth a look, or should I leave it there?|Is it worth a look, or should I leave it there?}\n\n%signature%"
}
]
}
],
"merge_fields": ["first_name"],
"notes": "Left fixed: Email 1's offer sentence, and Email 2's first sentence because it states what the benchmark shows. Email 1's subject has two options because a third read worse. The first option of every block is the approved wording."
}
Email 1's opener frames their situation, so it is spun; its offer line is not. Email 2's opener describes how the offer works, so only its greeting and ask are spun. The longest reading of Email 1 is 50 words and of Email 2 is 34.