How do I use merge fields to auto-fill contracts from a spreadsheet?
Short answer: Merge fields are placeholders inside a saved template, a name, a price, a date, that get filled in automatically from a spreadsheet instead of typed in by hand for each document. Build the template once with those placeholders, upload a spreadsheet with one row per recipient and a column matching each placeholder, and the tool generates an individually filled, ready-to-sign document per row. This works well for sending the same document shape to a list of people with a few varying details. For anything connecting signing directly into another system automatically, that's an API integration instead, a different and more technical step.
You've got a spreadsheet full of names and numbers and one contract shape, and retyping each person's details into a fresh document every time feels like exactly the kind of busywork that shouldn't still exist.
I'm Ranjit, and I run Blur Studio: 15+ years building software, 120 apps taken live, and clients who have gone on to raise $10M+. I build AI systems and processes that help businesses do a lot more with a lot less time. I also work differently from most of what else is out there, more on that further down this page. Say hello.
This page may contain affiliate links from which Blur Studio earns commissions.
Merge fields sit inside a saved template as placeholders, a client's name, an agreed price, a specific date, that get filled in automatically rather than typed into the document body by hand each time you send it. QuickSigner, a web-based e-signature tool, supports this through its templates feature, available from its Business plan upward, $5 a month per user billed annually, which carries the merge field capability referenced in its template setup.
Steps with a sheet
- Build the template with merge fields placed where variable content goes. Instead of typing "John Smith" directly into the contract text, you place a placeholder, often something like {{client_name}} depending on the tool's exact syntax, which the tool will later replace with real data per recipient. Start with reusable document templates.
- Set up your spreadsheet with one column per merge field, one row per recipient. The column headers should match your merge field names exactly, or map cleanly to however your specific tool expects the mapping, since a mismatch here is the single most common point of failure.
- Upload the spreadsheet against the template. The tool pairs each row with a generated copy of the template, substituting the merge fields with that row's values.
- Review a sample before sending anything. Open a few of the generated documents and confirm the right values landed in the right places, a quick check that catches a mapping error before it goes out to every recipient rather than after. Pair it with a contract review checklist.
- Send, individually or as part of a bulk send if you're sending to the whole list at once, covered in more depth in my bulk send guide.
Common errors
- Column headers that don't exactly match the merge field names. A field named {{client_name}} in the template but a spreadsheet column headed "Client Name" or "name" can fail to map correctly depending on how strict your tool's matching is. Keep headers consistent and literal rather than assuming the tool will interpret a close match correctly.
- Blank cells in required fields. A missing value in even one row's required column typically leaves that field blank in the generated document rather than throwing an obvious error, which means it's easy to miss until a recipient notices their document has a gap in it.
- Formatting mismatches, especially dates and currency. A date stored as "10/31/2026" in the spreadsheet but expected in a different format by the template can insert incorrectly or inconsistently. Check how your specific tool expects dates and numbers formatted before relying on a large batch.
- Reusing an old spreadsheet without re-checking it. A spreadsheet built for a previous send, then reused for a new batch without updating stale rows, duplicate entries, or outdated prices, carries those errors straight into the new batch.
- Not testing with a small batch first. Before mapping a 100-row spreadsheet, test the exact same mapping on two or three rows, confirm it's correct, then scale up, rather than discovering a mapping error only after it's already gone out widely.
When to use an API
Merge fields and a spreadsheet upload solve the "same document, many people, a few varying details" problem well, but they're still a manual step, you're the one preparing and uploading the spreadsheet each time. An API, a way for software to talk to the e-signature tool directly, is the right next step once you want this to happen automatically without a human preparing a spreadsheet at all, say, a document should generate and send itself the moment a new customer is added in your booking system or CRM, with no one manually exporting anything. The wider process is covered in generating contracts from a spreadsheet.
QuickSigner's API is available from its Professional plan and above, $15 a month per user, with its first 50 sign requests free and $0.30 per sign request after that, standalone API pricing also runs from $0.30 per signature. This is a genuinely different kind of setup from the spreadsheet-upload approach, it requires someone comfortable connecting software systems together, typically a developer or a tool like a no-code automation platform acting as the bridge, rather than something you'd set up casually in an afternoon the way a spreadsheet-based merge is.
Keeping your spreadsheet clean for repeat use
If this is a recurring task, the same enrollment form every term, the same onboarding packet every new hire, a bit of spreadsheet hygiene saves real trouble down the line. Keep one master spreadsheet template with the exact column headers your merge fields expect, saved separately from the version you actually fill in and upload each time, so you're never rebuilding the column structure from memory. Clear out old rows before each new batch rather than appending new rows to old ones and hoping you remember which rows are new. And keep a dated copy of each batch you actually send, not just the live working spreadsheet, so if a question comes up later about what a specific person's document said, you have the exact data used for that specific send rather than a spreadsheet that's since been overwritten with newer information.
A quick worked example
Say you run a small driving school and need to send the same enrollment agreement to 25 new students each term, with each one needing their own name, course start date, and tuition amount filled in correctly. Build the enrollment agreement once as a template with merge fields for student name, start date, and tuition. Build a spreadsheet with exactly those three columns plus each student's email, double-check the date format matches what the template expects, and test the mapping on two rows before uploading the full list of 25. Review those two generated documents carefully, confirm everything landed correctly, then run the full batch. This turns what would be 25 manually retyped contracts into one spreadsheet upload and a quick review pass. The time saved scales directly with class size too, the setup work is identical whether the term brings in 10 students or 40, which is exactly the kind of leverage that makes this worth the small upfront effort of getting the column mapping right the first time.
How I'd approach this
Merge fields and a spreadsheet are the right tool for the vast majority of small businesses with this exact problem, the same document, many people, a handful of varying details, and they're genuinely simple to set up once you understand the column-matching step. Where I'd recommend the more technical API route instead is when the data's already sitting somewhere else, a booking system, a CRM, and manually exporting a spreadsheet every single time is itself becoming the bottleneck. For businesses at that stage, I build the direct connection so the contract generates and sends itself the moment the underlying system creates a new customer record, removing the spreadsheet step entirely rather than just making it faster. Get in touch if that's where your business actually is.
Questions people ask
What's the difference between a merge field and a regular template field?
A regular template field, like a signature or date line, stays fixed in the same place every time. A merge field is a placeholder inside the document's text that gets filled in with different data, a name, a price, from a spreadsheet for each recipient.
Why did my merge fields come out blank after uploading my spreadsheet?
The most common cause is a column header that doesn't exactly match the merge field name in the template, or a blank cell in that column for a specific row. Check both before assuming something's wrong with the tool itself.
Does QuickSigner support merge fields from a spreadsheet?
Yes, through its templates feature, available from the Business plan, $5 a month per user billed annually, which carries merge field capability for filling in variable content per recipient.
Should I test a merge before sending it to everyone on my list?
Yes, always test on two or three rows first and review the generated documents before running the full batch. A mapping error caught early affects a couple of test documents, the same error caught late affects everyone on the list.
When do I actually need an API instead of just uploading a spreadsheet?
Once you want documents to generate and send automatically from another system, a CRM or booking tool, with no one manually exporting and uploading a spreadsheet each time. That's a more technical setup, usually needing a developer or an automation platform to connect the two systems.
How much does QuickSigner's API cost?
$0.30 per sign request on its standalone API pricing, or included starting with 50 free sign requests a month on the Professional plan, $15 a month per user, with $0.30 per request after that.