For documents with variable information that frequently changes, what you need is a way to generate dynamic content for each recipient and transfer data directly from Full Fabric to the final doc, as that will let you push out hundreds of letters for the effort of one. The solution is using merge fields, and that's what this article is about.
(Pshhh, have you read our introductory article to Letters? If you haven't, check it out here, but if you have, proceed in peace. 🙏 🏳 )
What are merge fields?
A merge field is a tag representing a field in Full Fabric that will get replaced with the field’s content when a letter is generated for a profile.
To create letter templates in Full Fabric, you need to create a Microsoft Word documents with merge fields and then upload these as letter templates to Full Fabric. Merge fields are inserted inside the MS Word document through Word's Mail Merge feature (after which they take their name).
Merge fields allow you to create personalized documents with specific information about the particular student and their chosen product.
To learn how to configure merge fields in Microsoft Word, kindly click here.
Export your school’s merge field references
The first step for generating letter templates is creating a Microsoft Word document that contains mail merge fields named with the appropriate field reference. Full Fabric provides a list of field references for easy searching. To access it:
1) Click the gear in the top-right corner and then General settings
2) Open the Documents tab
3) Press Download field references
You'll get a Word document that looks something like this:
The file was designed to be self-explanatory, so every tag has a description. The Description is on the left while the Name of the reference field is on the right. That said, some of the field references in the file are not meant for letters, so please just consider these four sections: GENERAL, PROFILE, PROGRAMME and CLASS.
Merge fields for profile fields
Any profile field on your school's profile schema i.e. fields that appear in the info tab of a profile e.g. first name, can be used as merge fields. Please refer to the field references export for the field reference for your school's fields.
Merge fields for class/course/campus information for a profile's journey
You can pull information related to the class/course information of a profile's journey when generating a letter. This includes standard fields as well as class/course schema fields which are particular to your school.
=programme.name
=class.name
=class.start_date
=class.end_date
=class.price
=class.__class_schema_field_name
=subject.name
=course.name
=course.start_date
=course.end_date
=course.price
=course.__course_schema_field_name
=campus.name
=campus.__campus_schema_field_x
Merge fields for a profile's journey fields
It's also possible to substitute information for the journey fields on a profile's journey. Please ask Full Fabric support for the field references for your school's journey fields.
The format of the fields is:
=journey.__journey_schema_field_name
Merge field modifiers
It's possible to add the following modifiers to merge fields for schema fields to generate information in a specific language/date format etc.
Modifiers for language for country, drop down, checkbox and cascading drop down fields
British English - _in_en-gb
Danish: _in_da-dk
Dutch: _in_nl
French: _in_fr-fr
German: _in_de-de
Italian: _in_it-it
Spanish: _in_es-es
Example: «=profile.__nationality_in_de-de».
Modifiers for different date formats and language for date fields
These modifiers can be applied to date schema fields, class/course dates, and today's date.
Standard today's date: =today (e.g. July 27th, 1994)
Modifier 1: =today_as_ddmmyyyy (e.g. 27/07/1994)
Modifier 2: =today_as_yyyymmdd (e.g. 1994/07/27)
Examples for long format in different languages
British English: =profile.__date_of_birth_as_long_format_in_en-gb (example: 27 July, 1994)
Danish: =profile.__date_of_birth_as_long_format_in_da-dk (example: 27. juli 1994)
Dutch: =profile.__date_of_birth_as_long_format_in_nl (example: 27 juli 1994)
French: =profile.__date_of_birth_as_long_format_in_fr-fr (example: 27 juillet 1994)
German: =profile.__date_of_birth_as_long_format_in_de-de (example: 27. Juli 1994)
Italian: =profile.__date_of_birth_as_long_format_in_it-it (example: 27 luglio 1994)
Spanish: =profile.__date_of_birth_as_long_format_in_es-es (example: 27 de julio de 1994)
Produce a list of the selected checkbox or drop down field options
This merge field loop prints the selected checkbox or drop down field offer as a list into the letter:
Merge field format
profile.__checkbox_field_name_array:each(option)
=option
profile.__checkbox_field_name_array:endEach
Letter template example
Please find the conditions that you must meet for your scholarship below:
profile.__scholarship_conditions_checkbox_array:each(option)
=option
profile.__scholarship_conditions_checkbox_name_array:endEach
Printed letter example
Please find the conditions that you must meet for your scholarship below:
Copy of parent's income
Official diploma certificate for your Bachelor's degree with attainment of first degree
Modifiers for cascading drop down fields
These modifiers can be applied to cascading drop down fields
_as_long_format
.sub_field_name
Letter template and printed letter examples
Please see the examples for an "Industry and job" cascading drop down field with "Industry" and "Job as sub-fields where the selection for "Industry" is "Education" and "Job is "Teacher.
Merge field example | Printed merge field example |
=profile.__industry_and_job | Education, Teacher |
=profile.__industry_and_job_as_long_format | Industry: Education Address: Teacher |
=profile.__industry_and_job.job | Teacher |
Merge fields for a profile's payment plan
These merge fields print the chosen profile payment plan as a table into the letter
Letter template and printed letter examples
=payment_plans
=payment_plans_with_discounts
Merge fields for a profile's offer
This merge field loop prints the conditions of the chosen offer as a list in the letter:
Merge field format
Offer conditions merge fields are composed of the following merge codes.
offers.conditional_offer_template_name.conditions:each(condition)
=condition.label
=condition.description
offers.conditional_offer_template_name.conditions:endEach
The first merge field and the last merge field are simply the opening and closing tags to print the details of the list of offer conditions that are selected.
Please note that"conditional_offer_template_name" should be replaced by the name of the Conditional Offer template which you are using.
For example, for an Offer Template named - Masters Conditional Offer
The opening and closing tags would be:
Opening tag:
offers.masters_conditional_offer.conditions:each(condition)
Closing tag:
offers.masters_conditional_offer.conditions:endEach
As for the other merge code fields included in the conditions set, the =condition.label produces the "Field title" of the condition, and the =condition.description - produces the "Field instructions" of the condition
Letter template example
Your merge fields will look like this:
Note: Offer templates are created under General Settings > Institution > Offer templates.
Printed offer letter example
Once you generate your offer letter for a particular profile, the selected conditions will be displayed like this:
Conditional Text in Letters
Sometimes, you need to include certain text in a letter only when a specific condition is met, for example, if a student has chosen a particular option from a dropdown menu, or if a data point in their profile matches a certain value. Conditional merge fields make this possible.
Conditional merge fields let you define rules that control whether a section of text is displayed in the generated document based on the data contained in the recipient’s profile.
Syntax
MERGEFIELD context:if <operator> <operand>
Text to display if the condition is true.
MERGEFIELD context:endIf
Components
context – The merge field or variable to evaluate, for example
profile.__study_formatorprofile.country.operator – The comparison operator that determines how the condition is evaluated. Supported operators:
==(is equal to)!=(is not equal to)<(less than)>(greater than)<=(less than or equal to)>=(greater than or equal to)
operand – The value or expression to compare against. This can be:
A string literal:
'Online'A numeric value:
10Another merge field:
profile.first_name == profile.last_name
Example
Let’s imagine your student profile schema includes a dropdown field called __study_format, and one of its options is "Online". You want to display a paragraph in the letter only when this option is selected.
MERGEFIELD profile.__study_format:if == 'Online'
As you have selected the online format, your courses will be delivered entirely remotely.
MERGEFIELD profile.__study_format:endIf
If the student has chosen "Online" in their profile, this paragraph will appear in their letter. If they selected any other option, the paragraph will be omitted from the final output.
Using Conditional Text for Dropdowns and Checkbox Groups
Conditional merge fields can also be used to check if a particular option in a dropdown or checkbox group has been selected.
Dropdown field example:
MERGEFIELD profile.__scholarship_type:if == 'Merit-based'
Congratulations! You have been awarded a merit-based scholarship.
MERGEFIELD profile.__scholarship_type:endIfCheckbox group example:
MERGEFIELD profile.__preferences:if == 'Newsletter'
You are subscribed to our monthly newsletter.
MERGEFIELD profile.__preferences:endIf
Advanced Conditions
You can also compare values between two merge fields or use numeric comparisons:
Compare two merge fields:
MERGEFIELD profile.first_name:if == profile.last_name
It looks like your first and last names are the same.
MERGEFIELD profile.first_name:endIfCompare numeric values:
MERGEFIELD profile.__test_score:if >= 85
Excellent work! You scored above 85 on your test.
MERGEFIELD profile.__test_score:endIf
Important Notes
Values are case-sensitive — ensure you match the exact casing used in dropdown options or data values (e.g.,
Onlineis different fromonline).Conditional fields must always be closed with
:endIf.You can nest merge fields within the conditional section, but not conditional blocks within each other.
Always test your conditions with a sample letter to confirm that the logic behaves as expected.
_________________
PUBLISHED: June 22, 2020
LAST UPDATED: July 4, 2025 at 10:02 a.m. by Ivan Silva






