You can make any PDF fillable by connecting it to an app.
To create a PDF template, simply upload a PDF to the App Builder under the Templates tab:
As soon as you upload a PDF, you will be brought into the PDF template editor. This is where you will add variables and conditional logic to your new template.
Adding variables to your PDF template is a two-step process:
You can draw several different types of fields onto your PDF. The most common are Text and Checkbox fields:
After you draw a field, you need to assign a variable to it (i.e. what variable do you want to populate this field?). You can assign a variable to a field by either double-clicking on the field itself or clicking on the field once and using the 'Choose a value' dropdown:
After you insert a variable onto your template, you can click on that variable to add conditional logic to it:
Clicking the 'Conditionally insert' toggle gives you access to an Expression Editor (learn more about creating conditional logic).
What is unique about creating conditional logic on PDF template variables is that you can define what's known as an "else statement": an alternate definition for the variable to be used if the conditional logic expression is not satisfied.
Typically, you will leave the else statement empty, which amounts to telling your app "insert this variable if the following conditional expression is true, else insert nothing."
Manually drawing fields and assigning variables can be a time-consuming process. With some preparation, you can use the 'auto map' feature to speed up this process.
Before you upload your PDF to the App Builder, (1) draw fields on it using a PDF editor (e.g. Adobe Acrobat's "Prepare Form" tool), and (2) give each field a name that is equal to a variable in your App.
For example, here is a field that was drawn with Adobe Acrobat and given a name of client_name:
After you prepare the PDF by drawing fields with variable names, simply upload the PDF to the App Builder. This will automatically map your PDF fields with the associated variable inside your App.