Integration
Formfeed for Bubble
Bubble apps need invoices, tickets and certificates like everyone else, and the browser print dialogue is not it. There is no Formfeed plugin for Bubble; one call in the API Connector does the job, and the workflow gets the document’s download URL back.
No plugin: Bubble’s API Connector calls the API, today and without anything to install.
Free plan with 100 units a month, no credit card
One call in the API Connector
- Add an API with the authentication Private key in header: key name
Authorization, valueBearerfollowed by your API key. Bubble keeps that key on its server. - Add a call that you use as an Action:
POST https://api.formfeed.dev/v1/renders, headerContent-Type: application/json, and a JSON body with the template’s slug and its data, such as{"template": "invoice-de", "data": {"invoice": {"number": "2026-0042"}}}. Make the values that change per run parameters of the call. - Initialize the call once with a test key: it renders a real document, and Bubble reads the fields of the answer from it. From then on,
download_url,idandpage_countare there for the next steps of the workflow, to save the link or send it by email.
Worth knowing before you build it
- The key belongs in the authentication, never in the body: Bubble treats a call’s body as client safe, so its values can reach the browser.
- A new key’s default scopes are enough. A test key renders without being metered (on the Free plan with a small watermark); switch to a live key when the app goes live.
- A render that takes longer than a minute answers 202 and finishes in the background, without a download URL yet. For long documents, send
mode: asyncwith awebhook_urland let a backend workflow receive the result. - A download link expires after seven days at the latest; store the render’s
idand fetch a fresh link withGET /renders/{id}for as long as the file is kept. The request is described in the rendering documentation.