PowerPoint Autofill
Automatically fill and route PowerPoint templates from your form or AI data.
Feathery allows users to generate PowerPoint presentations from templates (in .pptx format) from their form submission or AI data.
Templates can contain variables via double-curly brace syntax, e.g. {{Field1}}. When the document is generated, Feathery will replace variables with the corresponding field value.
Fields can only contain letters, numbers, and underscores when being used in PowerPoint Autofill. Other characters may cause the generation to fail by reading the field name as a formula instead.
Feathery supports Jinja templating logic for advanced use cases such as conditionally showing/hiding sections, generating sections in a loop, formulas, and more.
Conditional Logic
Feathery supports conditionally including and excluding different slides and shapes in the PowerPoint presentation based on field values.
Hiding Slides
To conditionally hide a slide, place a text box with the following syntax anywhere within a slide:
feathery.hide_slide = {{ some_expression }} some_expression can be any jinja expression. If expression evaluates to True the slide will be removed from the rendered document.
Hiding Shapes
To conditionally hide a shape, place the following syntax at the top of the shape:
feathery.hide_shape = {{ some_expression }} some_expression can be any jinja expression. If expression evaluates to True the shape will be removed from the rendered document.
Inline Conditional Blocks
Feathery supports Jinja {% %} block tags directly within text boxes to conditionally show or hide content within a shape.
You can also loop over a list field to repeat content:
Any Jinja expression is supported, including comparisons, string equality, and nested conditions.
Paragraph-Level Block Tags
For multi-paragraph loops or conditionals where each block tag should occupy its own paragraph (preserving formatting on the content rows), use {%p %} instead of {% %}:
Each {%p %} paragraph is treated as a pure block tag and removed from the output — only
the content paragraphs in between are kept. This preserves the rich formatting of
content rows across loop iterations.
Rich Text Formatting
You can apply inline formatting to text (including variable values) using backslash-tag syntax. Tags can be nested.
\bold(text)
Bold
\italic(text)
Italic
\underline(text)
Underline
\color.RRGGBB(text)
Font color (hex, no #)
Example:
Tags can wrap variable placeholders as well:
Add Tables
Feathery supports adding tables with a flexible number of rows/columns based on the field used in the following syntax:
For example if you have the following field
and you insert a table placeholder in your document template like this:

where the upper-left cell contains just the expression feathery.add_table = my_table you can expect the final table to expand to contain all of the rows/columns and retain the text and table styles. In this example the final table will look like this:

If your field my_table does not exist or is empty the table will be removed from the final rendered document.
Cell Background Color
Inside table cells, you can set the cell's background color using:
The hex color applies to the entire cell background. This tag can be combined with other rich text tags:
Add Charts
Feathery supports dynamically populating charts from a field value. Place a chart in your template and set its title to:
The field value must be a JSON object with the following structure:
title
No
Overrides the chart title in the rendered output
type
No
Overrides the chart type. Supported values: pie, bar, column, line, area, doughnut, scatter. If omitted, the chart type from the template is preserved.
categories
Yes
List of category labels for the x-axis
series
Yes
List of series objects (see below)
Each series object supports:
name
Yes
Series label shown in the legend
values
Yes
List of numeric data points
color
No
Hex color (e.g. #FF0000) applied to the entire series. For line charts this colors the line; for bar/column/pie it fills all data points.
colors
No
List of per-point hex colors. Overrides color if provided.
If the field does not exist or is empty, the chart shape will be removed from the rendered document.
Embed Images
To embed an image into the document that was pulled from a form submission, input the following syntax within a shape's text:
FileUploadFieldId is the ID of the file upload field that the image to embed was uploaded to. Width is the width of the embedded image, in millimeters. Height is the height of the embedded image, in millimeters. If you set width or height to 0, the image width or height will be set to the size of the shape. In order to preserve the aspect ratio of the image you can set one side as described before and the other side to -1 which will auto-adjust that side to keep the correct aspect ratio. If you set both sides to -1 the image will scale to fit the shape while keeping the correct aspect ratio.
Speaker Notes
Variables and Jinja expressions in slide speaker notes are also replaced during autofill, using the same {{FieldID}} syntax.
Automatic URL Hyperlinking
If a rendered cell value contains a URL (starting with http:// or https://), Feathery automatically converts it into a clickable hyperlink in the output file.
Document Workflow
Once you've mapped your document, you can integrate it into your existing workflow for filling and routing to the desired location. For example, you can include your PowerPoint as an attachment in a custom email integration to be sent to recipients.
Last updated
Was this helpful?