---
title: "Pdfless Integration"
description: "Generate PDF documents from HTML and CSS templates designed in Pdfless, merging JSON data into template variables with optional password encryption. Agents produce per-record documents that stay on brand."
url: https://flowrunner.ai/integrations/pdfless
date_modified: 2026-08-07T17:20:23-07:00
---

# Pdfless

[Documents](https://flowrunner.ai/integrations/category/documents-forms)

Generate PDF documents from HTML and CSS templates designed in Pdfless, merging JSON data into template variables with optional password encryption. Agents produce per-record documents that stay on brand.

[Verified](https://flowrunner.ai/integrations/verified "What does verified mean?") · 5 actions · API key · available

[Platform Documentation](https://app.pdfless.com) · Capability data verified 2026-08-04

1.  Payroll finalizes and the period's payslips are ready to issue to every employee
2.  Get Workspace reports the remaining monthly generation quota against the size of the run
3.  The agent builds one JSON payload per employee from the payroll and HRIS records
4.  The agent classifies the template as one that carries personal data, so the unprotected path is not available to it
5.  Generate PDF renders each payslip with a user password and permission flags that block copying and assembly
6.  Each employee receives their document, and the passphrase reaches them through a separate channel
7.  People Ops approves the protection settings for the run before a single document is generated

## What This Integration Enables

Pdfless splits document generation into two actions that look almost identical and are not. Generate PDF renders a template into a document and can encrypt it on the way out. A user password is required to open the file, an owner password governs permission changes, and individual flags control whether the reader may print, modify, copy content, annotate, fill forms, use a screen reader, or assemble pages. Generate PDF And Store File renders the same document and immediately persists it into FlowRunner file storage, returning a durable URL that outlives Pdfless's short-lived download link, and it does not carry the encryption options. Everything else in the connector supports those two: List Document Templates and Get Document Template to resolve the design, Get Workspace to read the remaining monthly quota before a bulk run.

That split is the reason this connector belongs in a payslip, statement, or benefits-summary flow rather than a generic invoice flow. The design is HTML and CSS built in Pdfless, so the layout stays with whoever owns the brand, and the automation only ever sends values. But the important design decision is not visual. It is that the convenient action and the protected action are different actions, which means every flow that generates a document containing someone's compensation, address, or account balance has to make a choice rather than inherit one. FlowRunner makes that choice explicit and attaches a person to it.

### Without FlowRunner

**Protection is a manual afterthought**: Someone remembers to password protect the sensitive documents, or does not

**Convenience quietly wins**: The easiest way to store a file is the way that cannot encrypt it

**Links are the security model**: A temporary download URL is treated as if it were access control

### With FlowRunner

**Sensitive templates carry a rule**: Documents built from a personal-data template cannot take the unprotected path

**The trade-off is a decision, not a default**: Durable storage versus encryption is settled by a person, on the record

**Permissions travel with the file**: Printing, copying, annotating, and assembly are constrained inside the document itself

## Use Case Scenarios

### Payslips issued with protection, not with hope

Payroll closes and the agent pulls each employee's record from [BambooHR](https://flowrunner.ai/integrations/bamboohr). It calls Get Workspace first to confirm the monthly quota covers headcount, then generates one payslip per employee through Generate PDF with a user password derived from a value only that employee knows, and with printing allowed but content copying and document assembly blocked. The documents go out through [Gmail](https://flowrunner.ai/integrations/gmail-service). The passphrase convention is communicated separately, because a password mailed alongside the file it protects is decoration. Nothing about this run touches durable storage, which is the point: the file exists for the recipient and then the link expires.

### Form submissions returned as a branded document

A benefits enrollment form is submitted. The agent merges the submission into a confirmation template and calls Generate PDF And Store File, because this document has to survive into later steps: it gets attached to the employee's record and referenced by the enrollment workflow weeks later. This is the correct use of the unprotected path. The confirmation restates choices the employee just made and contains no compensation figures, so durability is worth more than encryption here, and the flow says so deliberately rather than by accident.

### Offer packs generated from an ATS record

A candidate accepts and the agent assembles the offer pack from the [Workable](https://flowrunner.ai/integrations/workable) record. It reads Get Document Template to confirm it is pointing at the current offer design rather than a superseded one, generates the pack with a user password, and posts a link and the run's protection settings to the hiring channel in [Slack](https://flowrunner.ai/integrations/slack). Compensation in a document that anyone with the URL can open is the kind of mistake that is only discovered by the person who was never meant to see it.

## Human-in-Loop Highlight

The gate sits before generation, not after it, and it is aimed at the exact place this connector makes it easy to go wrong. Generate PDF And Store File is the convenient action, because it hands back a durable URL instead of a link that expires, and it is the one action that cannot encrypt. So when a flow is about to run a bulk generation against a template classified as carrying personal data, the agent stops and asks in the People Ops channel: "About to generate 312 payslips from the June template. Storing them durably means Generate PDF And Store File, which cannot apply a password. Encrypting them means Generate PDF, and the download links expire within the hour. Which do you want, and if encrypted, which permissions stay open?" The agent does not resolve that itself, because the answer is a data-handling policy question rather than a technical one, and it changes with the document, the jurisdiction, and who is on the distribution list. Getting it wrong produces 312 unprotected documents containing 312 people's compensation, sitting at durable URLs. That is why the [human-in-the-loop](https://flowrunner.ai/concepts/human-in-the-loop) step comes first here: after generation, the decision has already been made.

Agent processes routinely

Detects exception requiring judgment

Clear match Continues automatically

Ambiguous Routes to human via preferred channel

Human decides

Agent resumes with decision

## Agent Capabilities

5 actions

### PDF Generation

2

-   **Generate PDF** Generates a document from a Pdfless template, merging the supplied JSON payload into the template variables and returning a temporary download URL with its expiry timestamp. This is the action that can encrypt: it accepts user and owner passwords plus per-permission flags restricting printing, modifying, annotating, content copying, screen reader access, form filling, and document assembly.
-   **Generate PDF And Store File** Generates a document from a template and immediately downloads it into FlowRunner file storage, returning a durable file URL. Use it when the document has to outlive the short-lived Pdfless link or be handed to a later step as a stored file, and use Generate PDF instead when the document needs the encryption options.

### Templates

2

-   **List Document Templates** Returns a page of the document templates in the workspace tied to the API key, each with its identifier, name, image and PDF preview URLs, and timestamps. Used to resolve which design a flow should render against.
-   **Get Document Template** Retrieves a single template by identifier, returning its name, preview URLs, and creation and modification dates. Used to confirm a flow is pointing at the current design rather than a superseded one before a run goes out.

### Workspace

1

-   **Get Workspace** Returns the workspace bound to the API key, including its name, active status, and the monthly generation quota alongside the remaining quota. Used as a guard before a bulk run so a payroll or statement cycle does not stop partway through on an exhausted allowance.

## Frequently Asked Questions

### What can FlowRunner do with Pdfless?

FlowRunner agents can run Generate PDF, Generate PDF And Store File, and List Document Templates in Pdfless, plus 2 more actions.

### Does connecting Pdfless to FlowRunner require OAuth?

No. Pdfless connects to FlowRunner with an API key, no OAuth flow required.

### Can Pdfless trigger a FlowRunner workflow automatically?

Pdfless doesn't currently expose triggers in FlowRunner. It connects as an action step inside workflows started by another trigger.

**Work at Pdfless?** This integration exposes Pdfless to AI agents on every FlowRunner plan, including through MCP, at no cost to you. [See what FlowRunner offers integration partners](https://flowrunner.ai/integrations/partners), including how to keep this page current.

---
Markdown version of https://flowrunner.ai/integrations/pdfless. Site index: https://flowrunner.ai/llms.txt
