Prepare your Excel data.
doctagd reads each row of your spreadsheet and produces one Word document per row by default. A few simple structural choices in Excel make every later step easier - mapping, grouping, bullets, filenames.
Header row
Row 1 is your headers. Headers must be unique and stable - we match them to placeholders.
One row, one doc
By default each Excel row becomes one Word document. Group rows when several belong to one record.
We detect patterns
Sparse-fill, full-repeat, and delimited values are auto-detected and offered as one-click suggestions.
Header row and naming
Keep header names short, unique, and consistent across re-runs. Matching the headers to your Word placeholder names (eg. client_name) removes the mapping step entirely on the next upload of the same shape.
client_name | agreement_date | total_fee | payment_terms
Acme Ltd | 14 May 2026 | 4800 | Net 30
Northline | 22 May 2026 | 7200 | Net 14One row per document
The default behaviour: each Excel row produces one populated .docx. Multiple rows return a zip. Use this for service agreements, certificates, access requests - anything where the document is self-contained.
service-agreement-Acme Ltd.docx
service-agreement-Northline.docx
service-agreement-Globex.docxGrouped output (parent + line items)
For invoices, quotes, packing slips, or anything with line items, pick an ID column. Rows sharing the same ID become one document with a header section and a line-item table. In Mode A you wrap line-item placeholders in {#items}…{/items}; in Quick mode the grouping suggestion card sets it up for you.
order_id | item | qty | price
1001 | Keyboard | 1 | 89.00
1001 | Mouse | 2 | 24.00
1002 | Monitor | 1 | 320.00
1002 | USB hub | 1 | 38.00
# Pick order_id as the ID column → 2 documentsSparse-fill (Shopify style)
Export tools like Shopify only fill the ID column on the first row of each group, leaving the rest blank. Don't repeat the parent value yourself - doctagd detects the pattern and treats the blanks as "continues the previous record".
order_id | item | qty
1001 | Keyboard | 1
| Mouse | 2
| Wrist rest | 1
1002 | Monitor | 1
| USB hub | 1Full-repeat (HubSpot style)
Some exports repeat the parent fields on every line item row. That is also fine - we detect it and offer to collapse the duplicate columns into the header section automatically.
deal_id | client | stage | item | price
A-1 | Acme | Closed | Setup fee | 1200
A-1 | Acme | Closed | Retainer | 4800
A-2 | Globex | Closed | Setup fee | 1500Delimited cells
Form-response exports tend to pack several values into one cell separated by commas, semicolons, or new lines. The delimited suggestion turns those into a bullet list in the output. Newlines always trigger it; commas / semicolons trigger when the column is consistently multi-value.
Services
Strategy, Implementation, Support
# Output:
# • Strategy
# • Implementation
# • SupportHard limits
The server enforces these regardless of plan, to keep generation fast and predictable.
500 rows per upload
Split larger spreadsheets into batches - the API supports multiple runs against the same saved config.
80 columns
Wide exports rarely matter to a Word document - prune the irrelevant columns before upload.
10,000 characters per cell
Trim oversized free-text fields - long answers belong in a separate document, not a placeholder.
8 MB per output, 80 MB per zip
Very rich templates with embedded images can hit the per-doc cap. Reduce image sizes in the template if you see a payload-too-large error.
Next: prepare your Word template, or skip the template and use Quick mode.
