Write a sales email template you can reuse

TL;DR. A reusable sales email template is a fixed skeleton (subject, one-line hook, one ask, a signature with your unsubscribe link and mailing address) where the parts that change per person are merge fields like {{contact.first_name}}. Keep it under about 125 words, give it exactly one call to action, and add a fallback to every merge field so an empty cell never leaves a blank in the middle of a sentence. Write it once, personalize the opening line per segment, and send it to every list you import.

A reusable sales email template is a short message with a fixed structure and a few blanks that fill themselves in. You write the skeleton once (a subject line, a one-line hook, a single clear ask, and a signature that carries your unsubscribe link and physical mailing address), and you mark the parts that change from person to person with merge fields like {{contact.first_name}} or {{contact.company}}. When you send it, each contact's own data drops into those slots. The template earns the word reusable because the structure never changes; only the merged values and, ideally, one hand-written opening line do.

What makes a template reusable instead of generic?

A reusable template is not a generic template. The difference is where the personalization lives. A generic email says the same words to everyone and reads like a blast. A reusable one keeps a stable spine and lets two things vary: the merge fields, which change automatically, and a single opening line that you write per segment, which changes the reason you are emailing.

That distinction is the one that matters most. Real personalization changes why the email exists: a specific trigger, a shared context, a reason this person in particular should read it, not just the name in the greeting. Dropping in {{contact.first_name}} is table stakes; it does not make an email personal. So build the template so the spine is reusable and the opener is easy to swap.

What are the parts of the template?

Five parts, each doing one job:

PartJobReusable or per-send
Subject lineEarn the open: short, specific, no hypeReusable, sometimes tweaked
Opening lineGive the reason this person is getting the emailWritten per segment
Body (1-2 sentences)One idea, one point of relevanceReusable spine
Call to actionAsk for exactly one thingReusable
SignatureName, unsubscribe link, mailing addressReusable, fixed

Notice what is not on the list: multiple asks, a paragraph of company background, three links, and a P.S. stacked with more links. Every sentence you add is a sentence the reader has to get through before they decide to reply. The reusable spine should be lean enough that swapping the opener is the only real work per segment.

How long should it be?

Short. For a first touch, aim for roughly 50 to 125 words, and the strongest ones often land under 80. A message that fits on a phone screen without scrolling gets read; a wall of text gets archived. Length is not a style preference here. It tracks with reply rates, because a busy reader decides in a few seconds whether the email is worth their time.

Give it one call to action. Not two, not "either reply or book a call or check out our site." One ask, phrased as a small, low-friction question. "Worth a quick look?" beats "Book a 30-minute demo" for a first email, because the yes is cheaper.

How do merge fields keep it safe to reuse?

Merge fields are the placeholders that make one template work for a thousand contacts. They pull from the columns in the list you imported, so {{contact.first_name}} becomes Dana for one row and Sam for the next. The catch is the empty cell: if a contact has no first name and your template opens with "Hi {{contact.first_name}}," that reader gets "Hi ," which instantly signals a mail merge.

The fix is a fallback. Write {{contact.first_name | there}} and an empty cell degrades to "Hi there" instead of a blank. Add a fallback to every merge field you use: company, title, city, anything that is not filled in on every single row. This is also where the cleaning work from importing your list pays off: a verified, well-mapped CSV means your merge fields resolve to real values, and your fallbacks are a safety net rather than the default.

Template writesContact has a first nameContact's cell is empty
Hi {{contact.first_name}},Hi Dana,Hi ,
Hi {{contact.first_name | there}},Hi Dana,Hi there,

What has to be in every version?

Two things are not optional, no matter how short the email gets: a working unsubscribe link and your physical mailing address, both in the body of the message. That is a legal requirement for commercial email in the United States, and it is also just good hygiene. An easy opt-out keeps annoyed readers from marking you as spam, which protects your ability to reach everyone else. Bake both into the signature block of the reusable template so you cannot forget them. Use the {{system.unsubscribe_url}} and {{system.mailing_address}} merge fields and they populate automatically on every send.

How does SEMAOS handle this?

You build the template once in the SEMAOS editor, drop in merge fields with fallbacks for anything that varies, and reuse it across every sequence and every list you import. The unsubscribe link and mailing address merge in automatically, so a compliant footer is not something you have to remember on each send. Because your contacts came in through a clean CSV import, the fields you merge on are the fields you actually cleaned (first name, company, title), and the fallbacks cover the gaps. Write the spine, keep it under 125 words with one ask, personalize the opening line per segment, and you have a template that does the repetitive work for you.

Next in this series: building your first multi-step sequence.