For the complete documentation index, see llms.txt. This page is also available as Markdown.

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.

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.

Syntax
Effect

\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:

Field
Required
Description

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:

Field
Required
Description

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?