Changelog
What shipped, newest first.
The plugin for Codex, GitHub Copilot, the Gemini CLI and Antigravity
- The plugin for coding agents installs in Codex, the GitHub Copilot CLI, VS Code, the Gemini CLI and Antigravity as well, with the hosted MCP server and both skills, from the same repository formfeed-dev/skills. In Codex: codex plugin marketplace add formfeed-dev/skills, then codex plugin add formfeed@formfeed-dev.
- Each agent signs in to the server with your Formfeed account. The documentation’s page on coding agents gives every agent’s command.
Two skills for coding agents
- Claude Code installs Formfeed as a plugin that brings the hosted MCP server and two skills: formfeed-templates writes, checks and renders templates with the command line, and formfeed-api writes the code that renders them, in TypeScript, Python or any language over HTTP.
- Cursor, Codex, GitHub Copilot and other agents take the two skills with npx skills add formfeed-dev/skills. The skills say when a render costs units and change the workspace only when asked. The agents page and the documentation show how to install them.
n8n has verified the Formfeed node
- The Formfeed node is now a community node verified by n8n, so n8n Cloud offers it too: open the nodes panel, search for Formfeed and click Install node. A self-hosted n8n finds it the same way.
- It renders documents and e-invoices, reads templates and renders, manages the file library and converts Office files to PDF, and its trigger starts a workflow when a render finishes. n8n’s AI Agent can use it as a tool.
The Power Automate connector is available
- The Formfeed connector Microsoft certified on 5 October has arrived in makers’ environments: add an action in Power Automate, Power Apps or Copilot Studio, search for Formfeed, pick a template and map its fields in the designer.
- It is a premium connector, marked Preview like every newly certified one. Where it is not offered, the HTTP action makes the same call.
Keys, endpoints and members in the search box
- The search box on Ctrl+K finds your API keys by name and prefix, your webhook endpoints by address and the members of your organisation by name and e-mail. A pasted API key finds the key it belongs to, without anything being sent for it.
- The right arrow on a template lists what you can do with it: open it, open its API tab, see its renders, copy its slug or id. Owners and admins create a key, add an endpoint or invite members from the same box.
The paged preview breaks tables as the PDF does
- A table that runs over several pages now shows its header row at the top of every page in the editor’s Paged preview, and its tfoot at the foot of every page it goes on from, as the PDF prints them. Until now page 2 of an invoice had no header row in the preview, its rows moved by one a page against the PDF, and at 120 line items the preview showed five pages where the PDF has six.
- A header row left alone at the foot of a page, a row taller than a page and a footer with position: fixed come out as in the PDF too. The 21 tables of the post on page breaks in tables lay out page for page as their PDFs do, and a test holds them there.
One search box on Ctrl+K
- Ctrl+K (⌘K on a Mac) now finds your templates, the examples, shared partials, files, every page and section of the app and the documentation, beside the commands of the page you are on.
- Words may come in any order and umlauts need not be typed; the part of each result that matched is marked. The arrows move through the results and keep them in view, PageUp and PageDown jump between groups, Ctrl+Enter opens a result in a new tab.
- With nothing typed, the box starts with the templates you opened last. Type # for templates only, > for commands, / for pages; a pasted render or template id opens it.
Test e-invoices carry the test mark on every plan
- A test render that makes an e-invoice now carries the test mark on every plan, and the paid plans count them per day: 100 on Starter, 500 on Pro, 2,000 on Business. Until now a paid plan’s test e-invoices were valid invoices without a mark that cost no unit.
- Test renders of other documents stay unmarked on the paid plans, and live renders are neither counted nor marked.
E-invoices from Zapier
- The Zapier app has a new action, Create E-Invoice: it turns the invoice of a Zap into a ZUGFeRD / Factur-X e-invoice, printed by your template and validated before the Zap receives it. Lines and the VAT breakdown are line items, so an invoice from your shop or accounting app maps line by line.
- A refused invoice names every field and rule in the Zap’s error.
E-invoices from n8n and from AI agents
- The n8n node has a new action, Create E-Invoice: it turns the invoice of a workflow (seller, buyer, lines, VAT, totals, payment) into a ZUGFeRD / Factur-X e-invoice, printed by your template and validated before the node receives it.
- AI agents make e-invoices too: the new MCP tool check_invoice checks the invoice offline, field by field, and render makes the e-invoice. A refused invoice names every field and rule, so the agent corrects it by itself.
- The hosted MCP server has both now; the n8n node and the MCP server’s npm package bring them with the next release.
One address for AI agents: sign in, choose the workspace
- The hosted MCP server takes a sign-in at mcp.formfeed.dev/mcp, the same address that takes an API key. A chat client such as Claude or ChatGPT opens the Formfeed sign-in itself, and you choose the workspace the agent works in on the consent page; the workspace id in the address is no longer needed, and the per-workspace address stays for a second connection.
- New under Account → Connected agents: every agent you allowed, each with its workspace, which you can change there, and a revoke that signs the agent out.
- New tool get_workspace: an agent can say which workspace it works in, on which plan, and how many units the period has left.
The Power Automate connector is certified
- Microsoft has certified the Formfeed connector and released it for Power Automate, Power Apps, Logic Apps and Copilot Studio: pick a template, map its fields in the designer, and attach the file to a mail or save it to SharePoint or OneDrive.
- Microsoft rolls a new connector out region by region, which takes about two weeks. Until it appears in your environment, the HTTP action makes the same call.
E-invoices that are PDF/UA-1 files too
- An e-invoice can now be a PDF/UA-1 file as well. A template that declares an e-invoice and Accessible PDF (PDF/UA-1) renders one file that is both: the PDF/A-3 keeps its tags, the finished e-invoice is checked against both standards in the same request, and the render carries both reports.
- A file that fails PDF/UA-1 fails a strict render and delivers nothing. In report mode you get the valid e-invoice, without the PDF/UA label. Until now the two settings could not be combined, and a request for both was refused.
- Also new: an e-invoice can carry a text watermark. The watermark’s font is embedded in the file, which is what a PDF/A asks for.
- The e-invoice example on this site is rendered this way.
Accessible PDFs: PDF/UA-1, checked on every render
- A PDF render can be a tagged PDF in the PDF/UA-1 format: switch it on in the Document section of a template’s page setup, or per request with pdf.ua. Formfeed repairs what the browser’s tags leave open and checks every file against the rules of the standard a machine can check. It is part of every plan and costs no extra unit.
- A file that fails is not delivered: the render fails and names the rule, what to change and the elements concerned. In report mode it is delivered without the PDF/UA label, and the report says what was found. Every render that asked for the check carries the report, with the validator and its version.
- With the switch on, the editor’s previews check the page, and the Problems list names each finding at its line in the template: an image without a text, a skipped heading level, an empty table cell, text that stands only in the footer.
- A passed check does not make a document accessible: alternative texts, reading order and contrast stay with the template. The page on accessible PDFs says what the check proves and what it does not.
- Also new: the page setup holds the document’s title, author, subject and keywords, and a text watermark and the mark on test renders are set in an embedded font.
Try e-invoices on the Free plan
- Test renders on the Free plan now make e-invoices: up to 20 a day, from a test key, Send test request in the editor’s API tab or the editor’s true render. Each is a valid ZUGFeRD / Factur-X file with the test mark on its pages, so you can see your own invoice pass the validator before you pay.
- Live e-invoices stay with Starter and above. The E-invoice section of a template’s page setup now works on Free and says what a test render is.
E-invoices: ZUGFeRD and Factur-X from your invoice template
- A PDF render can be a ZUGFeRD / Factur-X invoice: the page as your template prints it, converted to PDF/A-3b, with the invoice attached as XML. Switch it on in the template’s page setup or ask for it per request with post.einvoice (Starter and above, one unit on top of the render).
- The invoice is the _invoice block of the render data. It is held to the rules of EN 16931 before anything renders, and the finished file is validated again; a file that fails is never delivered, and every e-invoice comes with its validation report.
- The editor says what the data set lacks, with the rule each finding breaks, and counts the values of the XML the preview shows. The render log and a true render show the validator’s report.
- New on the site: the e-invoice example with a real ZUGFeRD file to download, and the guide in the docs.
The API tab: from the open template to a working request
- Every template has an API tab: the call that renders it in curl, TypeScript, Python, PHP, Go, C#, Java and Ruby, with the template’s own slug and its sample data as data.json.
- The first line says which version a call renders. Where a saved draft is ahead of the published version, a switch adds it to the request.
- Owners and admins create a test key from the tab, shown once. Send test request runs the request as a free test render and shows the answer: the file, its entry in the render log and the JSON your code will hold.
- After Use this template, the editor leads straight to the request of your copy, and the templates list has API request in each row’s menu.
The canvas: write at once, bold with one key, shadows
- A new text on the canvas opens for typing straight away, and a selected text takes what you type. A handle under the selection moves the layer, also while you are in its text.
- Bold, italics, underline and strikethrough are buttons and keys (Ctrl+B, Ctrl+I, Ctrl+U), and font weights have names. Every layer can cast a shadow: behind the letters of a text, behind the box of anything else.
- Paste a picture from the clipboard with Ctrl+V, and upload your own fonts without leaving the editor.
- Fixed: adding an image from the layer bar closed the canvas with “The design cannot be opened”.
Start from an example
- Every example on formfeed.dev has a Use this template button: sign in, and one click puts a copy into your workspace with its sample data, published and ready for the API.
- The same examples are in the app under Templates → Examples, with a search and filters for group, kind and engine. An empty workspace shows four of them first.
- The five templates of the Free plan are now counted when a template is created, duplicated or restored from the archive. Templates you already have stay as they are; archive one you no longer need, or change the plan.
Edit text in the preview, design images on a canvas
- With Edit text on, change headings, paragraphs and translated labels right in the preview. Values from the data stay as they are, and the change goes into the template as one edit that Ctrl+Z undoes.
- Image templates can be designed on a canvas (beta): text, images, shapes, QR codes and barcodes as layers, text from fields of your data, brand colours and fonts. Start blank or from an article card, a quote card or an event story.
- Titles of varying length shrink to fit their box, on the canvas and in code templates with data-ff-fit. The Problems list names text that a data set would cut off.
- The canvas writes an ordinary template: renders, SDKs and integrations work unchanged, and you can detach the design at any time to edit the code by hand.
Bring your own storage
- Copy every document into your own Amazon S3, Cloudflare R2 or S3-compatible bucket, such as Hetzner, IONOS, Scaleway, Wasabi, Backblaze B2, MinIO or Google Cloud Storage (Pro and above). Owners and admins connect it once per workspace in the settings, and Formfeed tests the key before it saves anything.
- Your bucket is an additional destination, not a replacement: Formfeed keeps its own copy for the workspace retention, so download links, PDF tools and batch zips work as before. In your bucket Formfeed only ever writes; it never reads, lists or deletes anything there.
- Object keys from a pattern of your choice or named per document, the webhook events storage.delivered and storage.failed, and failed copies sent again with one click, without rendering again.
- Formfeed still renders and stores in the EU. The copy goes wherever your bucket is: you choose that destination, and your own bucket is not one of Formfeed’s sub-processors.
Zap templates for Formfeed
- Ready-made Zaps for Google Forms, Typeform, Google Sheets, Google Drive, Stripe and Slack are published in Zapier’s directory: start one, connect the two accounts, pick your template.
- The same templates appear on the Integrations page in the app.
Formfeed in Zapier’s app directory
- The Formfeed app for Zapier is public: search for Formfeed when you add a step to a Zap, no invite link needed. Create documents from templates, HTML or a URL, upload files and start Zaps when a render finishes.
- Its version 0.1.0 adds Convert Document to PDF, DOCX and PPTX output for Word and PowerPoint templates, and a Version field for release channels.
- A new Integrations page in the app shows the Formfeed Zap templates and your Zaps, and links the other integrations.
Hosted MCP endpoint with sign-in
- mcp.formfeed.dev is live: Claude.ai, Claude Code, Cursor, ChatGPT and other MCP clients connect to https://mcp.formfeed.dev/mcp/<workspace id> and sign in with your Formfeed account; no key to paste.
- A signed-in agent reads templates and renders documents, nothing more, whatever your role. Automations keep using https://mcp.formfeed.dev/mcp with an API key.
Release channels in the list and the no-code apps
- The templates list shows the named release channels of every template in its own column.
- n8n, Zapier and Make pick a release channel from a Version field; n8n also takes a version number. Zapier and Make get it with their next app version.
- The validate and schema endpoints take a channel name, so a staging environment checks data against the version it renders.
Office to PDF in agents and no-code apps
- AI agents convert Word, Excel, PowerPoint and OpenDocument files to PDF with the new MCP tool convert_to_pdf.
- n8n converts documents to PDF and renders Word and PowerPoint templates to DOCX and PPTX. Zapier and Make get the same with their next app version.
Packages 0.3.0
- All packages are at version 0.3.0. The TypeScript and Python SDKs create Word and PowerPoint templates, render them and convert office documents to PDF.
- The command line tool keeps template.docx or template.pptx in a template folder, pulls and pushes it, checks the tags offline, fills the file locally and converts office files with formfeed pdf convert.
Word and PowerPoint templates
- Word and PowerPoint templates: type Jinja2, Liquid or Handlebars tags into your own .docx or .pptx and render it as DOCX, PPTX or PDF (Starter and above; on Free, create them and test-render to PDF).
- QR codes, barcodes, payment codes and pictures in Word documents, and as pictures on slides.
- A template page for office files: tags with their problems, fonts, sample data, settings and versions, a quick Word preview in the browser and a PDF preview for both kinds.
- Import from apitemplate.io in bulk: enter the API key and pick single templates or all of them, in the app or with formfeed import apitemplate --all.
- Archive or delete several templates at once in the templates list.
- Zoom in the previews, with Ctrl and the mouse wheel or Ctrl with plus and minus.
- Office to PDF also accepts HTML saved as .doc, as many report exports are.
Office to PDF and workspace deletion
- Convert Word, Excel, PowerPoint, OpenDocument and RTF files to PDF through the API or the Office to PDF action on the Renders page (Starter and above). Files up to 20 MB are converted and not kept.
- Delete workspaces you no longer need, in the app or through the API; their API keys stop working at once.
Building blocks in the editor
- A Blocks panel beside the code: search, a live preview of each block and one click to insert it with its sample data, CSS and labels in English and German.
- New blocks for business letters and invoices: letterhead and legal footer from the brand kit, window envelope address (DIN 5008), reference block, invoice heading, payment terms with bank details, small business and reverse charge VAT notes, key figures and page breaks.
- Charts from plain labels and values, so an integration sends numbers instead of a chart configuration.
- Organisation partials appear in the panel and preview with the template’s data.
Brand kit, shared partials and release channels
- Brand kit: company name, legal footer, colours, fonts, logos and default paper once per organisation. Templates read it as a variable and as CSS variables, and changes reach published templates without republishing.
- Shared partials for letterheads, footers and other fragments across the organisation, with a list of the templates each change affects.
- Release channels such as staging beside published, with promote, rollback and canary shares (Pro and above), and a schema check that stops a breaking change before it goes live.
- Typed template data: the command line tool generates TypeScript and Python types from a template’s schema and fails CI when they are out of date.
- Develop webhooks locally: the command line tool forwards the workspace’s events to a local server and can resend any stored event.
- Reproduce a failed render: keep render requests for 24 hours or 7 days, open one in the editor, or pull it into a project and render it locally.
- Server-side validation of template data before anything is rendered or counted.
- The n8n community node is on npm as n8n-nodes-formfeed; all packages are at version 0.2.0.
File library, activity log and WebP
- A file library per workspace: upload logos, backgrounds and PDFs once, use them in any template by name, as image watermarks and as pages to append.
- Activity page for owners and admins: who changed members, keys, templates, webhooks and settings, filterable and exportable as CSV (Pro and above).
- WebP as an image output, next to PNG and JPG.
- File uploads in the SDKs, the command line tool and the n8n, Zapier and Make integrations.
Private beta
- Template editor with autocomplete from your sample data, diagnostics, paginated preview, true render and version history with diffs.
- Jinja2, Liquid and Handlebars with one shared helper set, organisation fonts and Tailwind support.
- Rendering API with synchronous, asynchronous and batch renders, idempotency keys, deduplication, signed webhooks and a reproducibility record per render.
- Command line tool and development kit: templates as files, hot-reload preview, validation, Vitest and Jest matchers.
- TypeScript and Python SDKs, and a Model Context Protocol server for AI agents.
- Batch from a spreadsheet in the app: upload a CSV or Excel file, map the columns, download a zip.
- EU-only processing with a data processing agreement, a sub-processor list and a security page.
- German interface and German documentation.
API-level changes are listed in the developer documentation.