Power Automate
The Formfeed connector works in Power Automate, Power Apps, Logic Apps and Copilot Studio. Microsoft certified and released it on 5 October 2026 and rolls it out region by region, marked Preview like every newly certified connector. It is a premium connector, so flows and apps that use it need a licence with premium connectors, as the HTTP action does. Until it appears in your environment, the HTTP action does the same job with one request, see the end of this page.
Connect
Add a Formfeed connection and paste an API key from the app (API keys)
as it is: the connector adds the Bearer prefix. A ff_test_ key renders for free (with a
watermark on the Free plan), which is what you want while building a flow. The default scopes of a
new key (render:create, render:read, template:read, account:read) cover the connection test,
the template picker and fields, and every action. When a render or batch finishes registers a
webhook endpoint, so its key needs the webhook:manage scope as
well; new keys do not have it unless you tick it.
Actions and trigger
| Operation | What it does |
|---|---|
| Create a document | Renders a template to PDF, PNG, JPG or WebP, and a Word or PowerPoint template to DOCX, PPTX or PDF. Returns the render with its download link, page count and units. |
| Create a document file | The same render, returning the file itself as File Content. |
| Create a document from HTML | Renders HTML built earlier in the flow, in Jinja2, Liquid or Handlebars. |
| Create a document from a web page | Renders a public page. |
| Get a render | Returns a render by its ID, with a fresh download link. |
| Get a batch | Returns the progress of a batch created through the API, its documents and the zip URL. |
| Convert a document to PDF | Turns a Word, Excel, PowerPoint, OpenDocument or RTF file of up to 20 MB into a PDF; the file is not kept. Starter plan and above. |
| When a render or batch finishes | Starts the flow on render.completed, render.failed, job.completed or job.failed. |
The fields of each operation (the designer lists the advanced ones among the advanced parameters):
| Operation | Fields |
|---|---|
| Create a document, Create a document file | Template (required), Data (the template's fields, see below), Output (empty: the template's format; PDF, PNG, JPG, WebP, DOCX or PPTX), File Name; advanced: Version, Locale (for example de-DE) |
| Create a document from HTML | HTML (required), Template Language (Jinja2, the default, Liquid or Handlebars), Data, Output (PDF when empty, PNG, JPG or WebP), File Name |
| Create a document from a web page | URL (required, a public page), Output (PDF when empty, PNG, JPG or WebP), File Name |
| Get a render, Get a batch | Render ID (rnd_…) or Batch ID (job_…), required |
| Convert a document to PDF | File (required: DOCX, XLSX, PPTX, ODT, ODS, ODP, DOC, XLS, PPT or RTF), File Name (the file's own name with .pdf when empty); advanced: Page Ranges (for example 1-3,5), Landscape, One Page per Sheet |
| When a render or batch finishes | Events (required); advanced: Environments (renders of live keys, test keys or both; both when empty) |
Fields from your template
The template picker lists the workspace's templates (up to 100); only published templates render, and
an unpublished one fails with template_not_found. Picking a template
loads the fields of its data schema or, when the template has none,
the fields of its sample data. Nested objects become groups, and lists such as
invoice lines become arrays: map an array from an earlier action onto them, or build the whole
Data object with a Compose action. Version (advanced) renders a
release channel or a version number instead of the published
version.
Attaching the file
Create a document file is the one to use when the document goes on as a file: its
File Content is the attachment of Send an email (V2), or the content of Create file in
OneDrive or SharePoint. Give the attachment a name with the extension, such as invoice.pdf.
Create a document returns the download link instead, which is what a Teams message or a
SharePoint list column wants.
Long renders
A render that takes longer than a minute continues in the background, and the action waits for it: Power Automate asks again every few seconds until the document is finished, then returns it as usual, the file of Create a document file included. A render that fails ends the action with its error.
The trigger
When a render or batch finishes registers a webhook endpoint in the workspace when the flow is turned on and removes it when the flow is turned off; it shows in the app under Webhooks as Power Automate. The events carry the render, or for batch events the batch with its zip URL. Power Automate does not check the delivery's signature; the flow's callback address is a secret of its own, and every render in an event can be read back with Get a render.
Until the connector reaches your region
Microsoft released the connector on 5 October 2026 and deploys it to one group of regions per working day, starting on a Friday (9 October at the earliest): its own test region and the US preview region first, then Asia, then Europe, then Brazil, Canada, Japan and India, and last Australia, the United Kingdom and the United States. Microsoft gives 10 to 14 days for the whole rollout. Until the connector appears in your environment, the HTTP action (a premium action) calls the API directly:
- Method
POST, URIhttps://api.formfeed.dev/v1/renders?output=binary - Header
Authorization:Bearer ff_test_…, headerContent-Type:application/json - Body
{"template": "invoice-de", "data": {"invoice": {"number": "2026-0042"}}}
With ?output=binary the response body is the document itself, so body('HTTP') goes straight into
an email attachment; without it the response is the render as JSON with its download_url. A render
that takes longer than a minute answers 202 with a Location that the HTTP action polls until the
document is there, as long as the action's asynchronous pattern setting is on (its default). The
request shape is described in Rendering. Keep the key in a secure input or an
environment variable of the solution rather than in the action.