Turn one template into reviewed messages
Fill a message template from your list, then review each result before copying or downloading. You decide how to send it.
1. Add your list
The example replaces the list and template.
The first row contains unique, nonempty column names. UTF-8 CSV: up to 1 MiB, 1,000 rows and 30 columns.
Only your selected file is read. It replaces pasted text after validation. Previous results are discarded when reading starts.
2. Write the template
Use {{exact column name}}. Spaces and case must match. Values are inserted once as plain text; conditions are not supported.
Available fields and syntax
Column spaces are preserved below. Copy the full marker into your template.
- Add your list to see its available fields here.
3. Check and generate
By default, any missing value blocks the whole batch. When enabled, used blank cells become empty text. Only an empty string is blank; spaces are preserved.
There are no placeholders. Every row will receive identical text.
The template, list or blank option changed. Previous previews were discarded. Generate again to review.
Choose a CSV list, or start by writing your template.
Review each message
After generation, the first message appears here. Review each row, then copy or download the results.
Filenames are personalized-text.txt and personalized-text.json. TXT separates messages by row number; JSON includes the template, column names and blank-field details. Save and handle these files yourself.
Supported format and limits
UTF-8 CSV only. Commas, newlines and double quotes inside cells must follow CSV quoting rules. Record separators must consistently use CRLF, LF or CR. Templates are limited to 32,768 UTF-16 code units; complete TXT and JSON files together are limited to 8 MiB.
Common questions
Does the template support conditions?
No. It performs one literal substitution for each {{column}} field.
Will messages be sent automatically?
No. You review, copy or download the text yourself.
What happens to blank cells?
Generation is blocked by default and the missing rows are listed. You may explicitly allow blanks to become empty text.