Import a contact list, personalize messages, send from your domain, and write results back to the spreadsheet.
The most common mail-merge use case: you have a spreadsheet of contacts and want to send each one a personalized email. Formt handles this end-to-end: import the list, loop through contacts, personalize content, send from your domain, and write delivery results back to the spreadsheet.
Two options for getting your contact list into the workflow. Both produce a list of records that For Each can iterate over. Each row becomes a contact with access to all their column data.
Add a For Each step after the import. Each iteration processes one contact with access to all their row data: name, email, company, and any other columns from the spreadsheet.
Step Guide: For Each →Use AI Generate or field mappings to customize content for each contact. The AI Email Generate action can write purpose-aware emails (cold outreach, follow-up, newsletter) with a subject line and HTML body.
Alternatively, use field mappings to insert contact data directly into a template body. For example, "Hi {{name}}, I saw that {{company}} recently..." without AI generation.
Step Guide: AI Generate →Use Send Email with the Custom Domain action. Map the recipient email from the contact row. Emails go from your verified domain (e.g. hello@yourdomain.com), not a shared Formt address.
Step Guide: Send Email →After the loop completes, use Collect to aggregate results from each iteration, then write delivery status back to the original spreadsheet or export a delivery report.
Start from a pre-built template to get a working spreadsheet-to-email pipeline in minutes.