Data preparation

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 or Quick mode sections.

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.

Good headers
client_name | agreement_date | total_fee | payment_terms
Acme Ltd    | 14 May 2026    | 4800        | Net 30
Northline   | 22 May 2026    | 7200        | Net 14

One row per document

The default behaviour: each Excel row produces one populated document. Multiple rows return a zip. Free users receive DOCX; Pro and Business users can choose DOCX or PDF — in the browser or via the API. Use this for service agreements, certificates, access requests - anything where the document is self-contained.

Each row becomes a separate file
service-agreement-Acme Ltd.docx
service-agreement-Northline.docx
service-agreement-Globex.docx

# Pro / Business can switch output to:
service-agreement-Acme Ltd.pdf

Grouped 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.

Two parent records, four line items
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 documents

Sparse-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".

Leave the blanks alone
order_id | item       | qty
1001     | Keyboard   | 1
         | Mouse      | 2
         | Wrist rest | 1
1002     | Monitor    | 1
         | USB hub    | 1

Full-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.

Parent fields repeat across line item rows
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  | 1500

Delimited 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.

One cell, three bullets
Services
Strategy, Implementation, Support

# Output:
#   • Strategy
#   • Implementation
#   • Support

Per-column formatting

Keep raw values in your spreadsheet — formatting happens at generation time. Expand a column on the Confirm screen (Quick mode) or a placeholder on the mapping screen (template mode) to format its value as a date, currency, number, or change its letter case. The rule is saved with the config and applies on every re-run, including via the API.

Raw cell → formatted output
2026-05-13   date     → 13 May 2026
4800         currency → £4,800.00
acme ltd     case     → Acme Ltd

Hard 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.