What is spintax? A cold email example, taken apart

What is spintax: one line that holds several versions of your words, one picked per contact. See how each sending tool writes it.

Hi|Hello {{first_name}}, quick question|one question about {{company}}.

  • A rotation: “Hi” or “Hello”. Each contact gets one.
  • A rotation: “quick question” or “one question”. Each contact gets one.
  • A merge tag: {{first_name}} becomes each contact's first name.
  • A merge tag: {{company}} becomes each contact's company.
Spintax or merge tag?
Spintax is text with several versions of a word or sentence in one place. The sending tool picks one version for each contact, so the emails in a campaign are not all word for word the same. A merge tag is different. It drops a value from the contact's row into the email, like a first name, and a fallback is the text used when that value is empty.
4 versions of one line2 × 2: the rotations multiply.
  1. Hi {{first_name}}, quick question about {{company}}.
  2. Hi {{first_name}}, one question about {{company}}.
  3. Hello {{first_name}}, quick question about {{company}}.
  4. Hello {{first_name}}, one question about {{company}}.
{{spin: Hi | Hello}} {{First Name}}, {{spin: quick question | one question}} about {{Company}}.
All 13 formats
  • {{spin: a | b}} rotations and {{Column name}} variablesOneprofile sequences
    Spintax
    {{spin: Hi | Hello}}
    Merge tag
    {{First Name}}
    Fallback
    None. A required variable left blank skips that contact rather than sending a gap.
    Nesting and limits
    No. A version cannot hold a variable or another rotation.Each contact locks onto one version, so a preview and the real send agree. Two to 20 versions per rotation.
    Source: backend/app/api/assistant_tools/tools_sequences.py, docs.getoneprofile.ai (opens in a new tab). Checked Nov 9, 2026.
  • {a|b} single-brace spintaxCold email sequencers and email platforms; the classic spintax form
    Spintax
    {Hi|Hello|Hey} there
    Merge tag
    Not part of the format; merge tags follow the sending tool's own syntax.
    Fallback
    Not part of the format.
    Nesting and limits
    Depends on the tool. Spintax libraries read {a|{b|c}} and empty options; some email tools do not read nested braces at all.The pipe separates versions, so a version cannot contain a pipe.
    Source: help.mailercloud.com (opens in a new tab), hackage.haskell.org (opens in a new tab), en.wikipedia.org (opens in a new tab). Checked Nov 9, 2026.
  • {{a|b}} double-brace spintax with {{first_name}} tagsA cold email sequencer
    Spintax
    {{Hi|Hello|Hey}} {{first_name}},
    Merge tag
    {{first_name}}
    Fallback
    Not documented.
    Nesting and limits
    Not documented. Single braces are not read as spintax.Every expression must be closed and needs at least two alternatives. Works in subject, body and LinkedIn messages.
    Source: help.salesforge.ai (opens in a new tab). Checked Nov 9, 2026.
  • {{RANDOM | a | b}} with {{fname|default('there')}} tagsA cold email sequencer
    Spintax
    {{RANDOM | Hi | Hello | Hey}}
    Merge tag
    {{company}}
    Fallback
    {{fname|default('There')}}
    Nesting and limits
    Not documented.Spaces around the pipes are optional.
    Source: help.mystrika.com (opens in a new tab). Checked Nov 9, 2026.
  • {{SPINTAX | "a" | "b"}} with {{FIRST_NAME | "fallback"}}A cold email sequencer
    Spintax
    {{SPINTAX | "Hi" | "Hello" | "Good morning"}}
    Merge tag
    {{FIRST_NAME}}
    Fallback
    {{FIRST_NAME | "there"}}
    Nesting and limits
    Not documented. A merge tag may sit inside a version, without its fallback.Each version sits in double quotes. Works in the subject and the body. Fallbacks do not work inside a spintax formula.
    Source: woodpecker.co (opens in a new tab), woodpecker.co (opens in a new tab). Checked Nov 9, 2026.
  • {{Random | 'a' | 'b'}} with {{FirstName | 'fallback'}}A cold email sequencer
    Spintax
    {{Random | 'quick call' | 'short chat'}}
    Merge tag
    {{FirstName}}
    Fallback
    {{Company | 'your company'}}
    Nesting and limits
    No merge tags inside a block; put them before or after it.Each version sits in single quotes. A space is required before and after each pipe.
    Source: how.reply.io (opens in a new tab). Checked Nov 9, 2026.
  • {spin} a | b {endspin} with {{First Name}} tagsA cold email sequencer
    Spintax
    {spin} Hey there | Hello | Hi {endspin}
    Merge tag
    {{First Name}}
    Fallback
    Not shown on the spintax page.
    Nesting and limits
    Not documented.Close every {spin} with {endspin}. Formatting is applied to each word separately.
    Source: docs.saleshandy.com (opens in a new tab). Checked Nov 9, 2026.
  • {%spin%}a|b{%endspin%} with {{First_Name}} tagsA cold email sequencer
    Spintax
    {%spin%}Hi|Hello{%endspin%}
    Merge tag
    {{First_Name}}
    Fallback
    Not documented on the spintax page.
    Nesting and limits
    Not documented.The docs suggest two to five versions per block. A wrong tag can show the raw code in the email.
    Source: help.smartreach.io (opens in a new tab). Checked Nov 9, 2026.
  • {{spin}}a{{variation}}b{{end spin}} with {FirstName|fallback}A mail merge tool for Gmail
    Spintax
    {{spin}}Hello{{variation}}Hi{{end spin}}
    Merge tag
    {FirstName}
    Fallback
    {FirstName|Friend}
    Nesting and limits
    Not documented. A merge tag may sit inside a version.Merge tags use single braces. Spintax works in subject lines too.
    Source: gmass.co (opens in a new tab), gmass.co (opens in a new tab). Checked Nov 9, 2026.
  • *|FNAME|* merge tags with *|IF:FNAME|* blocksAn email marketing platform
    Spintax
    None documented.
    Merge tag
    *|FNAME|*
    Fallback
    *|IF:FNAME|* *|FNAME|* *|ELSE:|* Friend *|END:IF|*
    Nesting and limits
    Not applicable.FNAME inserts the contact's first name if the audience has it. A conditional block shows other text when the field is empty.
    Source: mailchimp.com (opens in a new tab), mailchimp.com (opens in a new tab). Checked Nov 9, 2026.
  • {{ contact.firstname }} tokens with |defaultA CRM's marketing email
    Spintax
    None documented.
    Merge tag
    {{ contact.firstname }}
    Fallback
    {{ contact.firstname|default("there", true) }}
    Nesting and limits
    Not applicable.The property's internal name follows contact. A token with no default shows blank for a contact without the value; the second parameter true makes the default apply to empty values too.
    Source: developers.hubspot.com (opens in a new tab), developers.hubspot.com (opens in a new tab), knowledge.hubspot.com (opens in a new tab). Checked Nov 9, 2026.
  • {{ first_name | default: "there" }} Liquid tagsThe Liquid template language, which several email tools read
    Spintax
    None in the language.
    Merge tag
    {{ first_name }}
    Fallback
    {{ first_name | default: "there" }}
    Nesting and limits
    Not applicable.default shows its value when the input is nil, false or empty.
    Source: shopify.github.io (opens in a new tab). Checked Nov 9, 2026.
  • {{first_name}} Mustache tagsThe Mustache template language
    Spintax
    None in the language.
    Merge tag
    {{first_name}}
    Fallback
    None. A missing value prints nothing.
    Nesting and limits
    Not applicable.A tag looks the key up in the current context.
    Source: mustache.github.io (opens in a new tab). Checked Nov 9, 2026.
Photo of Utku Zihnioglu

By

· CEO & co-founder

Updated Nov 11, 2026

Shorter page: the tool first, the answer in a few lines.

What is spintax? It is a line of an email written with several versions in one place, such as {Hi|Hello}, so the sending tool picks one version for each contact and the campaign stops reading word for word the same. Every contact still gets one finished email. The name is short for spin syntax, borrowed from article spinning, where it marks which words software should vary.

The explainer above takes a sentence apart and writes out every email a contact could get.

Spintax and merge tags

A merge tag often sits in the same sentence, and it is a different thing. Spintax picks one of the versions you wrote. A merge tag inserts a value about the contact, such as their first name, and prints a fallback when that value is empty.

{Saw|Noticed} that {{company}} is hiring. {Worth a quick chat|Open to a short call} this week?

Each contact gets one opener and one question, with their own company name in between.

Why the brackets matter

Every sending tool spells spintax its own way. Some use single braces, some double, and others a keyword or an end tag. The pipe between versions is the closest thing to a constant, which is why a version with a pipe in it breaks most of them. Merge tags travel worse still, since field names and fallbacks change from tool to tool.

So text written for one tool can reach a contact as raw braces from another. Convert it before you move a sequence, and read what a contact with an empty field would get.

What to do next

Rotate the sentences that say nothing about the reader: the greeting, the sign-off, the ask. The sentence about them deserves to be written for them.

We think spintax is oversold. It makes emails differ without making them more relevant, so time spent finding the people worth writing to usually pays more. To build a rotation or convert one for your sending tool, use the spintax generator.

What is spintax: common questions

Can you nest spintax inside spintax?

Only where your sending tool says so. Spintax libraries read a rotation inside a rotation, but most sequencer help pages do not document it, and one says nested spintax is not recognized. Keep rotations flat unless the target's docs say otherwise.

Does spintax keep cold emails out of spam?

Not on its own. Spintax changes the wording, and filters also weigh your sending reputation and whether SPF, DKIM and DMARC pass. Read any deliverability promise for spintax with care.

How do I add spintax to a Oneprofile sequence?

Select words in an email step and write your own versions, or paste text in Oneprofile's spin format (shown in the tool above) and it arrives as a rotation. Each contact locks onto one version, so the preview and the real send agree.

About this article

Photo of Utku Zihnioglu

Utku Zihnioglu

CEO & co-founder

Serial entrepreneur who built infrastructure companies handling billions of requests. Now leads engineering at Oneprofile, which finds the people worth talking to, researches each one, and follows up until they reply.

Drafted with AI from our product docs and code. Utku Zihnioglu answers for what it says.

Write rotations straight into a sequence

Oneprofile sequences take spintax, variables and AI-written steps in one place.

Free plan: 200 credits a month, 3 integrations, no card

Write rotations straight into a sequence

Oneprofile sequences take spintax, variables and AI-written steps in one place.

Free plan: 200 credits a month, 3 integrations, no card