Skip to content
NewSee how

How to Use Personalization Variables in FirstSales

Use {{merge tags}} with fallbacks, standard and custom fields, and know when to reach for Autopilot AI writing instead of templated tokens.

  1. How merge tags work

    Personalization uses merge tags wrapped in double curly braces: {{first_name}}, {{company_name}}. At send time each tag is replaced with that contact's value, so one template reads one-to-one for everyone.

    A default first line looks like Hi {{first_name}},. This is how you send at scale without sounding like a blast.

  2. The standard variables you can use

    Every contact carries these fields as tags:

    • Person: {{first_name}}, {{last_name}}, {{full_name}}, {{email}}, {{phone}}, {{job_title}}, {{headline}}, {{linkedin_url}}, {{timezone}}.
    • Company: {{company_name}}, {{company_website}}, {{company_domain}}, {{company_industry}}, {{company_size}}, {{company_linkedin}}.
    • Location: {{city}}, {{state}}, {{country}}.

    Plus two send-time tags for you, the sender: {{sender_name}} and {{sender_company}}.

  3. Always set a fallback

    What if a contact has no first name? Add a fallback after a pipe: {{first_name|there}} renders "there" when the field is empty. Use it anywhere a blank would read awkwardly:

    • Hi {{first_name|there}},
    • at {{company_name|your company}}

    FirstSales also tidies dangling punctuation when a value is empty, but a good fallback is what keeps the sentence natural.

  4. Insert tags in the editor

    In the email editor you don't have to type tags by hand. Use the Insert merge tag toolbar or the slash / menu to pick a field from a searchable list: including your custom fields. Inserted tags appear as chips so they're easy to see and can't be broken by a stray character.

    The editor also lints for broken tags and warns if you drop a merge tag inside a link URL.

    Insert tags in the editor
  5. Use custom fields for anything extra

    Need a data point that isn't a standard field: a recent event, a product they use? Add a custom field to your contacts and reference it as a snake_case tag, e.g. {{recent_funding}}. Custom fields resolve from each contact's data just like standard ones (they can't reuse a standard field's name).

    This is how you personalize on something specific to your outreach, not just generic firmographics.

  6. Merge tags vs Autopilot AI writing

    Two different things share the "personalization" idea:

    • Template campaigns use the {{ }} merge tags above: you write the copy, tags fill the blanks.
    • Autopilot campaigns have the AI write each email using personalization hooks about the contact: not merge-tag templating.

    So if you want precise control over wording, use Template mode with merge tags; if you want the AI to compose per-contact copy, use Autopilot. Note there is no spintax: the pipe | is only for fallbacks, not random spin alternatives.

Pro tips

  • Never ship a tag without a fallback

    Use {{first_name|there}}, not bare {{first_name}}. One contact with a missing field turns a bare tag into an awkward blank in front of a real prospect.

  • Insert from the menu, don't type

    Use the Insert merge tag toolbar or / menu so tags become chips the editor can validate. Hand-typed braces are the usual cause of a broken tag that sends literally.

  • Custom fields personalize on what matters

    Firmographic tags are table stakes. A custom field ({{recent_funding}}, {{signup_source}}) is what makes an email feel researched rather than mail-merged.

  • No spintax: pick Template or Autopilot

    There's no {a|b} spin syntax. For varied copy, either write real A/B variants in a Template campaign or let Autopilot's AI compose each email.

Frequently asked questions

What's the syntax for a merge tag?

Double curly braces around the field name: {{first_name}}, {{company_name}}. Whitespace inside is tolerated ({{ first_name }}), and values are filled per contact at send time.

How do I set a default when a field is empty?

Add a fallback after a pipe: {{first_name|there}} or {{company_name|your company}}. The text after the | is used whenever that contact's field is blank.

Which variables are available?

Standard contact fields (name, email, phone, job title, headline, LinkedIn, timezone; company name/website/domain/industry/size/LinkedIn; city/state/country) plus the sender tags {{sender_name}} and {{sender_company}}, and any custom fields you add.

Can I personalize on custom data?

Yes. Add a custom field to your contacts and reference it as a snake_case tag (e.g. {{recent_funding}}). It resolves from each contact's data like a standard field, and can't reuse a standard field's name.

How do I insert a tag without typos?

Use the Insert merge tag toolbar or the slash / menu in the editor to pick a field from a searchable list. Tags appear as chips, and the editor lints for broken tags or a tag mistakenly placed inside a link.

Does FirstSales support spintax?

No: there's no spintax / {a|b} spin alternation. The pipe character is only for fallback values. For copy variety, use A/B variants in a Template campaign or Autopilot's AI writing.

How is this different from AI personalization in Autopilot?

Merge tags fill blanks in copy you write (Template mode). Autopilot instead has the AI compose each email from personalization hooks about the contact: no merge-tag templating. Choose Template for exact wording, Autopilot for AI-written copy.

Personalization

Outreach that keeps going after you log off.Leads, emails, follow-ups and replies, handled.

Connect unlimited mailboxes and let AI agents find leads, write each email and follow up. Or send your own templates in manual mode. From $29/mo.

$1 for 3 days · Cancel anytime · No contract

Install with AI

Your coding agent sets up the FirstSales CLI and skills for you.

Prompt for Claude Code

I'm setting up FirstSales (https://firstsales.io), an AI outbound sales platform: campaigns, contacts, a reply inbox, deliverability and lead signals. Help me get my workspace sending real, good emails end to end, from Claude Code.

Read these first so you know how FirstSales works:
- Developer docs and API: https://developer.firstsales.io
- CLI: https://www.npmjs.com/package/@firstsales.io/cli
- Skills for coding agents: https://github.com/firstsalesio/firstsales-skills (read README.md and GUIDE.md)

Setup
1. Install the CLI: npm install -g @firstsales.io/cli
2. Install the FirstSales skills:
   claude plugin marketplace add firstsalesio/firstsales-skills
   claude plugin install firstsales@firstsales
3. Ask me if I already have a FirstSales account. If not, send me to https://app.firstsales.io to sign up.
4. Ask me to create an API key under Settings → API → API Keys, with only the scopes we need.
   Never ask me to paste the key into this chat. Tell me to run this in my own terminal, so the key stays hidden:
   read -rs FS_KEY && firstsales auth login --api-key "$FS_KEY"; unset FS_KEY
5. Run `firstsales whoami` and tell me which workspace and organisation we are connected to.

Then ask me about my business: what I sell, who I sell to (roles, company size, countries), my best customers, and what I use today for outbound (tools, lists, mailboxes). Walk me through:
1. Teaching FirstSales my business: website, offer, proof points and case studies in the knowledge base, so the AI writes like someone who knows the product.
2. Connecting my sending mailboxes and checking my sending domain: SPF, DKIM, DMARC and warm-up. If anything is unhealthy, tell me the exact DNS record to add.
3. Bringing in contacts: import my CSV or CRM export into a clean list, remove duplicates and bad emails, and block domains I must never email (customers, competitors, my own).
4. Building my first campaign: the right list, senders, steps and timing. Write the sequence with me, show me the drafts, and do not launch until I say yes.
5. Setting up Signals if it fits: find people engaging with LinkedIn posts about topics my buyers care about, and turn them into leads.
6. Inviting my team and giving each person the right access.

Once campaigns run, show me how to work the reply inbox from here: which replies need an answer, draft responses in my voice, and move good conversations into deals. If I use Cal.com, connect it so follow-ups can offer my booking link (not the first email).

Throughout, as you learn about my business, proactively suggest and help create:
- Reply templates for the questions and objections my prospects are likely to raise, based on my product, site and codebase if you can see them.
- Campaign ideas and segments worth testing, with the reason for each.

Safety rules:
- Show every change as a dry run (--dry-run) first and wait for my yes. Never send emails, launch campaigns or delete anything without my yes.
- Tell me before anything that spends credits, and how many.

Be opinionated. If the docs give a sensible default, just use it. Don't make me choose between five options.