Airdocx Documentation
- Version: 1.3 Updated: 23 January, 2025
This documentation will guide you on how to use Airdocx according to best practices. If you have any questions that are beyond the scope of this documentation, feel free to email us.
Getting started
Airdocx is a powerful platform for generating professional and complex documents at scale. It works by combining dynamic templates with data, whether through forms or data sources.
Getting started with Airdocx is simple:
-
Create an account
Create your account and choose a plan that suits your needs. Airdocx offers both usage-based and subscription-based options.See our pricing page for more information.
-
Create a form
Use Airdocx's form builder to create a form that matches your document requirements.Learn how to create forms in the following sections.
- Upload a template
-
Generate documents
You can start generating a document using the form or import data sources to generate multiple documents.
Forms
Forms are used to gather information to populate the tags within your document templates. They also contain the field types and tags needed to create your documents. In Airdocx, a form is required to create a document, and you can either generate a document directly from a form or create multiple documents using data sources, without manually entering data into the form.
-
Creating a form
- To create a new form, navigate to the Forms section from the sidebar and click on "Create new form" or you can access it from the Dashboard section and click on the
icon. - You will be presented with the form builder interface, where you can start adding fields to your form using an intuitive drag-and-drop interface. To create a cleaner layout, especially for forms with many fields, you can organize them into sections and tabs.
- Once you've added and customized your fields, click the "Create form" button. The form will be created, saved, assigned its own link, and you can make adjustments to it at any time as needed.
- To create a new form, navigate to the Forms section from the sidebar and click on "Create new form" or you can access it from the Dashboard section and click on the
-
Field types
Airdocx offers a variety of field types to capture different data inputs:
- TextFor single-line text input (e.g., names, titles).
- TextareaFor multi-line text input (e.g., addresses, descriptions).
- NumberFor numeric input (e.g., quantities, prices).
- CheckboxFor toggle selection (e.g., yes/no options).
- Radio ButtonsFor single choice selection from a list of options.
- DropdownFor selecting a single option from a dropdown list.
- DateFor selecting a date using a date picker. Default format is dd/MM/yyyy (e.g., 18/09/2024).
- TimeFor selecting a time using a time picker. Default format is hh:mm A (e.g., 04:27 PM).
- DatetimeFor selecting both date and time. Default format is dd/MM/yyyy hh:mm A (e.g., 18/09/2024 04:27 PM).
- AreaFor inputting area measurements (Square Foot, Square Meter, Hectare, Acre).
- ImageFor uploading one or more image files (e.g., logos, property photos, or document scans).Airdocx supports .jpg, .jpeg, .png, .gif, .webp, and .bmp file formats.
- Text
-
Field settings
Each form field can be edited with the following settings:
- LabelThe name that appears next to the field.
- Tag nameNames without curly braces (e.g.,
first_name,sale_price) that are used to replace values in the templates. - Hint (optional)Additional information to help users fill out the field.
- Required (optional)Mark the field as mandatory (where applicable).
- List (optional)Enable multiple entries for certain fields.
- Default (optional)Pre-fill the field with a default value (where applicable).
- Label
Templates
Templates serve as the foundation for generating personalized documents. They contain tags that will be replaced with the data you provide, enabling dynamic and personalized document generation. Each template is linked with its own form, which can be modified at any time.
Airdocx supports templates in the .docx format, which can be created using popular word processing applications like Microsoft Word, LibreOffice Writer, and Google Docs.
Creating a template is straightforward:
-
Design the layoutBegin by designing the layout of your document, or use an existing one, and identify where dynamic data will be inserted in a word processor of your choice. This layout can include text, images, tables, headers, footers, and any other necessary formatting for your document.
-
Save as .docxOnce you’ve set up the document and inserted the necessary tags, save it as a .docx file. Airdocx only supports this file format, so it's essential to ensure the document is in the correct format for uploading.
-
Upload to the formAfter saving the document, navigate to the Templates section in the form and upload the .docx file. This connection between the form and the template allows for seamless document generation using the data from the form fields.
- Navigate to the Templates section from the form editor:
- Click on Choose a file or drag a file to the upload area.
- Your template will then be automatically uploaded, and you can download, replace, preview, or delete it later, or upload another template to the form. Airdocx supports multiple templates for each record submitted using the form.
- Navigate to the Templates section from the form editor:
-
Test and refineOnce uploaded, it’s a good practice to generate a test document to ensure that all tags are working as expected and pulling the correct data from the associated form. If any errors or misalignments occur, edit the .docx file and re-upload the updated template.
Operators
Airdocx operators are special symbols or characters used within tags to evaluate expressions, define conditions, and manipulate data dynamically during document generation.
-
Mathematical operators
Used for performing calculations on numeric data.
- + (Addition) : Adds two values.
- - (Subtraction) : Subtracts one value from another.
- * (Multiplication) : Multiplies two values.
- / (Division) : Divides one value by another.
- % (Modulus) : Returns the remainder of a division.
- ^ (Exponentiation) : Raises one value to the power of another.
- () (Parentheses) : Groups expressions to specify the order of operations.
-
Comparison operators
Used to compare two values and return a Boolean result (true or false).
- == (Equals) : Checks if two values are equal.
- != (Not equal) : Checks if two values are not equal.
- < (Less than) : Checks if the left value is less than the right.
- > (Greater than) : Checks if the left value is greater than the right.
- <= (Less than or equal to) : Checks if the left value is less than or equal to the right.
- >= (Greater than or equal to) : Checks if the left value is greater than or equal to the right.
-
Logical operators
Used to combine or negate conditions.
- && (AND) : true if all conditions are true.
- || (OR) : true if at least one condition is true.
- ! (NOT) : Negates the condition (true becomes false, and vice versa).
-
Aggregate operators
Used to compute summary values.These operators perform calculations only on list-enabled fields and are applied as suffixes to tag names.
- .total or .sum : Calculates the total sum of the list.
- .avg : Calculates the average value of the list.
- .min : Retrieves the minimum value from the list.
- .max : Retrieves the maximum value from the list.
- .count : Counts the number of elements in the list.
- .median : Calculates the median value of the list.
- .range : Calculates the range (difference between max and min) of the list.
ExampleTemplateThe average house price is ${prices.avg}, with the lowest at ${prices.min}.Values{prices} =- 450,000
- 320,000
- 280,000
ResultThe average house price is $350,000, with the lowest at $280,000.
Modifiers
Airdocx modifiers are used to modify or format values within tags in your templates. These modifiers are written in square brackets and applied to the tags, such as {first_name[case:upper]}. They are case-insensitive, meaning [case:upper] and [Case:Upper] would work the same way. Multiple modifiers can be chained and applied to the tags to further format the values (e.g. {price[spellout][case:upper]}).
-
Case conversion
Modifies text to uppercase, lowercase, title case, proper case, or sentence case.This modifier can be applied to Text, Textarea, Radio Buttons, and Dropdown tags, as well as to input that has been converted to alphabetical text (e.g., by using the Number to words modifier[case:type]
[spellout]).- typeSpecifies how conversion occurs.
- upper: Converts the text to uppercase.
- lower: Converts the text to lowercase.
- title: Capitalizes the first letter of each major word.
- proper: Capitalizes the first letter of every word.
- sentence: Capitalizes the first letter after each sentence-ending punctuation.
ExampleTemplate{description[case:upper]}Value{description} = the property features a garden and a garage.ResultTHE PROPERTY FEATURES A GARDEN AND A GARAGE. - type
-
Date formatting
Returns date formatted according to given format.This modifier can be applied to Date, Time, and Datetime tags.[date:format,locale,timezone]
- formatSpecifies the output format of the date. This format follows the common date symbols listed below:
- Day: d, D, E, F, e
- d: Day of the month
- d = 1 ... 31
- do = 1st ... 31st
- dd = 01 ... 31
- D: Day of the year
- D = 1 ... 366
- Do = 1st ... 366th
- E: Day of the week (text)
- E = Mon ... Sun
- EEEE = Monday ... Sunday
- F: Day of week in month
- F = 1 ... 5
- Fo = 1st ... 5th
-
It tells you if a certain weekday is the first, second, third, fourth, or last occurrence in that month. For example, suppose today is Wednesday, September 25, 2024:
- F would be 4, because it's the fourth Wednesday of September.
- e: Local day of week
- e = 1 ... 7
- eo = 1st ... 7th
-
The numbering starts from 1, but the first day of the week can vary depending on the locale:
- In most locales, Monday is the first day (Monday = 1, Sunday = 7).
- In the US locale, Sunday is typically considered the first day (Sunday = 1, Saturday = 7).
- Week: w, W
- w: Week of year
- w = e.g, 6
- wo = e.g, 6th
- ww = e.g, 06
- W: Week of month
- W = e.g, 2
- Wo = e.g, 2nd
- WW = e.g, 02
- Month: M
- M: Month in year
- M = 1 ... 12
- Mo = 1st ... 12th
- MM = 01 ... 12
- MMM = Jan ... Dec
- MMMM = January ... December
- MMMMM = J ... D
- Year: y, Y, Q, G
- y: Year
- yy = e.g, 24
- yyyy = e.g, 2024
- Y: Week year (transition occurs on a week boundary)
- YY = e.g, 24
- YYYY = e.g, 2024
- Q: Quarter
- Q = 1 ... 4
- Qo = 1st ... 4th
- QQ = 01 ... 04
- QQQ = Q1 ... Q4
- QQQQ = 1st quarter ... 4th quarter
- G: Era designator
- G = AD
- GGGG = Anno Domini
- GGGGG = A
- Time: h, H, k, K, m, s, a, A, B, z, Z
- h: Hour in am/pm (1~12)
- h = 1 ... 12
- hh = 01 ... 12
- H: Hour in day (0~23)
- H = 0 ... 23
- HH = 00 ... 23
- k: Hour in day (1~24)
- k = 1 ... 24
- kk = 01 ... 24
- K: Hour in am/pm (0~11)
- K = 0 ... 11
- KK = 00 ... 11
- m: Minute
- m = 0 ... 59
- mm = 00 ... 59
- s: Second
- s = 0 ... 59
- ss = 00 ... 59
- a: Day period
- a = am or pm
- A: Day period (capitalized)
- A = AM or PM
- B: Flexible day period
- B = at night, in the morning, in the afternoon, or in the evening
- z: Time zone name
- z = e.g., PDT
- zzzz = e.g., Pacific Daylight Time
- Z: Time zone
- Z = e.g., -0800
- ZZZZ = e.g., GMT-08:00
- ZZZZZ = e.g., -08:00
To include literal text (i.e., plain text), wrap the text you want to display literally in single quotes ('), with two single quotes producing one (e.g., hh 'o''clock' A, zzzz outputs 12 o'clock PM, Pacific Daylight Time).References: Formatting Dates and TimesCommon combinations:Format Returned values Date field = 18/09/2024 dd/MM/yyyy (default) 18/09/2024 MMM d, yyyy Sep 18, 2024 MMMM d, yyyy September 18, 2024 do 'of' MMMM yyyy 18th of September 2024 EEEE, MMMM d, yyyy Wednesday, September 18, 2024 Time field = 04:27 PM hh:mm A (default) 04:27 PM hh:mm a 04:27 pm h:mm A 4:27 PM h:mm a 4:27 pm HH:mm 16:27 Datetime field = 18/09/2024 04:27 PM dd/MM/yyyy hh:mm A (default) 18/09/2024 04:27 PM MMM d, yyyy, HH:mm Sep 18, 2024, 16:27 MMMM d, yyyy 'at' h:mm A September 18, 2024 at 4:27 PM do 'of' MMMM yyyy 'at' h:mm A 18th of September 2024 at 4:27 PM EEEE, MMMM d, yyyy 'at' h:mm A Wednesday, September 18, 2024 at 4:27 PM ExampleTemplate{sale_date[date:"MMMM d, yyyy"]}
{closing_time[date:h:mm A]}
{contract_signed[date:"MMMM d, yyyy 'at' h:mm A"]}Values{sale_date} = 18/09/2024
{closing_time} = 04:27 PM
{contract_signed} = 18/09/2024 04:27 PMResultSeptember 18, 2024
4:27 PM
September 18, 2024 at 4:27 PMWhen the value of the format contains a comma or a quote, we wrap it in double quotation marks. - locale (optional)Displays dates in a specific language and region. (default follows your own locale setting)View the list of locales supported by Airdocx.ExampleTemplate{contract_signed[date:"EEEE, MMMM d, yyyy, h:mm A",ja_JP]}Value{contract_signed} = 18/09/2024 04:27 PMResult水曜日, 9月 18, 2024, 4:27 午後
- timezone (optional)Adjusts the dates based on a specific timezone. (default follows your own timezone setting)View the list of timezones supported by Airdocx.ExampleTemplate{contract_signed[date:"EEEE, MMMM d, yyyy, h:mm A",ja_JP,Asia/Tokyo]}Value{contract_signed} = 18/09/2024 04:27 PMResult木曜日, 9月 19, 2024, 1:27 午前
- format
-
Date Adjustment
Adjusts dates by adding or subtracting a specified amount of time.This modifier can be applied to Date, Time, and Datetime tags.[offset:+/-N unit]
- NA numeric value representing the amount of time to offset.
- unitThe time unit to apply the offset. Supported units include:
- second or seconds
- minute or minutes
- hour or hours
- day or days
- month or months
- year or years
ExampleTemplate{sale_date[offset:-3 days]}
{closing_time[offset:+2 hours]}
{contract_signed[offset:+1 month +15 days]}Values{sale_date} = 18/09/2024
{closing_time} = 04:27 PM
{contract_signed} = 18/09/2024 04:27 PMResult15/09/2024
06:27 PM
02/11/2024 04:27 PM - N
-
Number formatting
Modifies the appearance of numbers by adjusting decimal places, and separators for decimals and thousands.This modifier can be applied to Number and Area tags.[number:decimals,
decimal_separator, thousands_separator] - decimalsThe number of decimal places you want to display (default is empty). If left empty, it will follow the original number's decimal places.
- decimal_separator (optional)The symbol used for the decimal point (default is a dot (.)).
- thousands_separator (optional)The symbol used to separate thousands (default is a comma (,)).
ExampleTemplate{total[number:2,",",.]}
{total[number:4]}Value{total} = 1,234.567Result1.234,57
1,234.5670When the value of the parameters contains a comma, we need to wrap it in quotation marks (single quotes or double quotes). - decimals
-
Number rounding
Adjusts a number's precision by rounding it to a specified decimal place or significant digit, with customizable rounding modes.This modifier can be applied to Number and Area tags.[round:precision,mode]
- precision (optional)Positive number to round digits after the decimal; negative number to round significant digits before the decimal (default is 0).
- mode (optional)Specifies how rounding occurs (default is up).
- up: Rounds number away from zero when it is half way there, making 1.5 into 2 and -1.5 into -2.
- down: Rounds number towards zero when it is half way there, making 1.5 into 1 and -1.5 into -1.
- even: Rounds number towards the nearest even value when it is half way there, making both 1.5 and 2.5 into 2.
- odd: Rounds number towards the nearest odd value when it is half way there, making 1.5 into 1 and 2.5 into 3.
ExampleTemplate{total[round:2]}
{total[round:-2]}
{tax[round:2,down]}Values{total} = 1,234.567
{tax} = 5.285Result1,234.57
1,200
5.28 - precision (optional)
-
Number abbreviation
Converts large numbers into abbreviated forms.This modifier can be applied to Number and Area tags.[abbr:precision]
- precision (optional)Specifies the number of decimal places to show in the abbreviated number (default is 2).
ExampleTemplate{price[abbr]}
{price[abbr:0]}
{property_value[abbr:1]}
{total_amount[abbr:1]}
{annual_revenue[abbr:1]}Values{price} = 52,822
{property_value} = 900,234
{total_amount} = 2,500,000
{annual_revenue} = 1,300,000,000Result52.82k
53k
900.2k
2.5M
1.3B - precision (optional)
-
Number to words
Converts numerical values into their word equivalents.This modifier can be applied to Number and Area tags.[spellout:locale]
- locale (optional)Displays words in a specific language and region. (default follows your own locale setting)View the list of locales supported by Airdocx.
ExampleTemplate{price[spellout]}
{price[spellout:fr_FR]}Value{price} = 500,000Resultfive hundred thousand
cinq cent mille - locale (optional)
-
Alphabetic conversion
Converts numbers into alphabetic characters.This modifier is suitable for converting the[alpha]
{$index}number into its alphabetic equivalent.ExampleTemplate{$index[alpha]}Value{$index} = 2Resultb -
Roman conversion
Converts numbers into Roman numerals.This modifier is suitable for converting the[roman]
{$index}number into its roman numeral equivalent.ExampleTemplate{$index[roman]}Value{$index} = 2Resultii -
Area unit conversion
Convert area values from square feet (sqft) to other units like hectares (ha), acres (ac), and square meters (sqm).This modifier can be applied to Area tags.[area:unit]
- unitSpecifies the target unit for conversion. Supported units include:
- ha: Converts square feet to hectares
- ac: Converts square feet to acres
- sqm: Converts square feet to square meters
ExampleTemplate{land_size[area:ha]}Value{land_size} = 13,000Result0.1208 - unit
-
Image dimensions
Resize images to specific dimensions.These modifiers can only be applied to Image tags and allow you to control the dimensions of images dynamically while maintaining the original aspect ratio.
-
[size:width,height]
-
width
Specifies the width in pixels. The value must be greater than 0.Standalone version: [width:width]
-
height
Specifies the height in pixels. The value must be greater than 0.Standalone version: [height:height]
If both the width and height are equal, the modifier can be simplified to [size:value], where the value is either the width or height, and the image will be square. -
width
-
[minSize:width,height]
-
width
Specifies the minimum width in pixels. The value must be greater than 0.Standalone version: [minWidth:width]
-
height
Specifies the minimum height in pixels. The value must be greater than 0.Standalone version: [minHeight:height]
If both the width and height are equal, the modifier can be simplified to [minSize:value], where the value is either the width or height. -
width
-
[maxSize:width,height]
-
width
Specifies the maximum width in pixels. The value must be greater than 0.Standalone version: [maxWidth:width]
-
height
Specifies the maximum height in pixels. The value must be greater than 0.Standalone version: [maxHeight:height]
If both the width and height are equal, the modifier can be simplified to [maxSize:value], where the value is either the width or height. -
width
ExampleTemplate{image[maxWidth:75]}Value{image} =
Width = 150px, Height = 100pxResult
Width = 75px, Height = 50px -
[size:width,height]




