Skip to content
NewSee how
Fix

Mail merge fields and bulk tag updates restored

The template editor's Insert toolbar now loads all standard and custom contact fields again, and bulk tag updates work reliably. A routing conflict made both features fail silently.

Two features in the campaign builder stopped working silently: the mail merge field picker showed nothing, and bulk tag updates on contacts didn't apply. Both are fixed.

What was broken

The problems affected anyone using the template editor or managing contacts in bulk:

  • In the campaign builder's template editor, the Insert toolbar showed "No fields found" even when your contact list had plenty of standard and custom fields. Mail merge variables like {{first_name}} or any custom field you'd added were effectively unreachable from the editor — leaving personalization gaps you may not have noticed until after sending.
  • Bulk tag updates from the contacts table — adding, removing, or replacing tags across many contacts at once — failed silently. The operation appeared to complete but the tags weren't applied. Segmentation that depended on those tags couldn't be trusted.

Neither failure showed a useful error message, which made them hard to spot and easy to mistake for user error.

Root cause

Both requests were being captured by the wrong API route on the server, so they never reached the right handler. The fix moved the two endpoints onto unambiguous paths and added an automated guard that prevents this class of routing conflict from shipping again.

Why it matters

Mail merge personalization is one of the highest-leverage levers in cold outreach. An email that opens with a prospect's real name, company, or a tailored detail outperforms a generic blast — and custom fields let you go further, pulling in any signal you've collected on a lead. Losing the field picker during template editing meant either hand-typing variables (and risking typos that render as broken placeholders) or sending less personalized emails.

Bulk tag management is equally load-bearing. Tags control which contacts enter which campaigns and which are excluded. Silent failures there meant your segmentation logic wasn't actually being applied — contacts you meant to exclude could receive emails they shouldn't, or contacts you meant to target were being missed.

What you'll see now

  1. Open a campaign → Builder → template editor: the Insert toolbar lists every standard field plus the custom fields found on your selected lists — click any chip to insert it.
  2. If field loading ever fails for any reason, the toolbar now shows a clear error instead of pretending the list is empty.
  3. Bulk tag operations from the contacts table apply correctly again.

If you were working around the broken Insert toolbar by typing merge tags manually, you can stop — the picker is back and includes every custom field on your account. No campaign changes are needed; the fix is live across all template editors.

All updates

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.