Creates a Word document (.docx) from a template by filling in placeholders with dynamic values.
Transform your static Word documents into dynamic, data-driven templates that automatically populate with information from your workflows.
With Cassidy's Word document templates, you can:
Generate personalized contracts that pull client details from your CRM
Create dynamic reports with charts, tables, and conditional sections
Produce invoices that automatically calculate totals and format line items
Build proposals that adapt content based on client requirements
Generate certificates with participant information from your database
To explain how this feature works, we'll walk you through a specific example: creating an RFP response document that automatically fills in project details, requirements, and conditional content based on your workflow data.
How to create template placeholders in Word documents
1. Text Placeholders - Insert Dynamic Content
Use these to insert text, numbers, or formatted content from your workflow data.
Syntax: {variableName}
Examples from our RFP template:
We look forward to discussing how SprinterSoftwareGroup can best serve {Requesting Organization}.
{Contact Information}Inline placeholders insert content within the same line or paragraph like the
{Requesting Organization}Block placeholders replace entire paragraphs with formatted content including headers, bullet points, and multi-paragraph text, like the
{Contact Information}
2. Conditionals - Show Content When Conditions Are Met
Use these to display sections only when certain conditions are true, or to show alternative content when conditions are false.
Syntax:
Standard:
{#if:conditionName}…{/if:conditionName}Inverse:
{^if:conditionName}…{/if:conditionName}
Example from our RFP template:
{#if:Excel Uploaded}
An Excel document has been attached for a detailed breakdown of requirements and responses.
{/if:Excel Uploaded}
3. Loops - Repeat Content for Lists of Items
Use these to display repeating content for arrays of data.
Syntax: {#loop:arrayName} … {/loop:arrayName}
Example from our RFP template:
{#loop:Requirements}
{Requirement Description}
{Solution Details}
{/loop:Requirements}
Understanding Variable Scope in Loops:
When you're inside a loop, you can access both properties of the current item and properties from outside the loop:
Properties of the current item - Use the field names directly
Properties from outside the loop - These remain accessible
See the below example with mixed scope:
Company: {Requesting Organization} ← From outside the loop
{#loop:Requirements}
Requirement: {Requirement Description} ← From current requirement Solution: {Solution Details} ← From current requirement Client: {Requesting Organization} ← Still accessible from outside {/loop:Requirements}
Nested Loops:
You can create sophisticated nested structures for complex documents:
{#loop:departments}
{name} Department
{#loop:employees}
- {name} ({role})
Current Projects:
{#loop:projects}
• {projectName} - {status}
{/loop:projects}
{/loop:employees}
{/loop:departments}
Data Needed For Loops
If your template has this loop:
{#loop:Requirements}
{Requirement Description}
{Solution Details}
{/loop:Requirements}
Your data must have an array that matches the properties exactly:
{
"Requirements": [
{
"Requirement Description": "Modern responsive design with mobile optimization",
"Solution Details": "We will implement a fully responsive design using the latest CSS frameworks to ensure optimal viewing across all devices."
},
{
"Requirement Description": "Content management system integration",
"Solution Details": "Our team will integrate a user-friendly CMS that allows your team to easily update content without technical expertise."
}
]
}
How to set up and use Export as CSV action
Follow these steps:
Add a Create Microsoft Word Document from Template action: While editing a Workflow, click the plus button between existing blocks. This will open a modal where you can select from Cassidy's pre-configured actions. Choose the Create Microsoft Word Document from Template action to add it to your Workflow.
Rename the action (if needed): If you want to make the action more descriptive or easier to reference as a variable later, enter a new name.
Upload Word Template: Click to upload your Word document template (.docx file) that contains placeholders for dynamic content.
Enter Output Document Name: Provide a name for your generated Word document. This will be the filename when the document is created. You can use variables from previous steps.
Variables are inputs from the trigger, or outputs from previous steps
Configure Template Fields: Under the Template Fields section, configure any field mappings using variables from previous Workflow steps or trigger inputs. For our RFP example:
{Project Name}: This is a text placeholder that maps to a simple text variable from your trigger or previous step
{Requesting Organization}: Another text placeholder that maps to your client company variable
{Requirements}: This is a loop which requires a list variable containing objects with "Requirement Description" and "Solution Details" properties
{Excel Uploaded}: This is a conditional that maps to a boolean variable to determine whether to show the Excel attachment message
Preview and download the document: After running the Workflow, you can preview the generated Word document and download it by clicking the icons next to the action in the results panel.
Optionally, attach the document to other actions: You can use the generated Word document as an attachment in other actions like Send Email. Simply reference the Word document output from this action when configuring email attachments.
Here's a sample of the type of output you can expect from our RFP example:
Troubleshooting
Tags not processed
If you see template tags in the final output, double-check that the names of your template tags match the names of your data fields exactly. For example, {Project Name} in your template must correspond to the exact field name in your data.
Extra lines in output
To avoid extra empty lines in the output, place the closing tag on the same line as your variable:
{#loop:Requirements}
- {Requirement Description}: {Solution Details}{/loop:Requirements}









