Skip to content

§ Airtable to PDF

Airtable to PDF: Export Airtable Records to PDF Invoices and Reports

Generate a real PDF from Airtable data without fighting a fixed-position layout. Render your own HTML template, so an invoice with three line items and one with thirty both come out right, then write the finished PDF straight back to an attachment field. Try it on any URL or HTML below.

  • Early access, launching soon
  • No card required
  • Your HTML stays yours

§ Live demo

Runs in your browser. Nothing is uploaded.

Your PDF is downloading. Want this as one API call, with the page archived too?

§ Short answer

To export Airtable to PDF, you have three routes. Page Designer, available on all paid Airtable plans, lays out a single record on a fixed canvas and exports through your browser print dialog. Interface Designer, which Airtable now recommends over Page Designer, prints the visible area of an interface page. Both are fixed-layout tools, so neither handles data whose length varies, which is why invoices with a changing number of line items are the most common reason teams outgrow them. The third route is to build the document as an HTML template, fill it with record data in an Airtable automation, and POST it to a rendering API that returns a PDF. Because HTML tables flow naturally across pages, variable-length data stops being a problem.

Last updated July 2026. Written and fact checked by the Sitepdf team.

§ 00

Four ways to get a PDF out of Airtable, compared

These options differ on who designs the document, whether the layout can grow with the data, and how much of it runs without a human clicking Print. Facts below were read from Airtable's own documentation in July 2026.

Approach Who builds the layout Variable-length data Automatable Best for
Page Designer extension
all paid plans
You, on a fixed canvas in Airtable Poor: fixed positions, content overflows when it grows No, export runs through the browser print dialog Single records with a stable shape: badges, labels, one-page profiles
Interface Designer printing
Airtable's recommendation
You, as an interface page Limited: captures the visible area No, a person prints it Quick sharing of a view someone is already looking at
Template builder apps
marketplace and third party
You, in the vendor's visual editor Good: most support repeating sections Yes, via automations or Zapier and Make Teams who want document templates and no code at all
HTML template plus a render API
Sitepdf
You, in ordinary HTML and CSS Native: tables flow across pages automatically Yes, from a Run a script automation Invoices, statements and multi-record reports that must look exact

The honest read: if your document is one record on one page and never changes shape, Page Designer is already included in your Airtable plan and you should just use it. If you want a document template and refuse to touch HTML, a no-code template builder is a better fit than we are. We earn our place when the layout has to be exact, the data length varies, or the document needs to match a web page your app already renders.

§ 01

Why Page Designer runs out of road

Page Designer is a genuinely useful extension and it is included with every paid Airtable plan. You drag fields onto a canvas at Letter, A4, business card or a custom size, it renders at 109 PPI, and you export by printing to PDF from the browser. For a name badge, a product spec sheet or a one-page client summary, that is the whole job and nothing here beats it on effort.

The wall is fixed positioning. Everything sits at coordinates you set, so nothing can grow. The canonical failure is an invoice: design it around three line items and it looks perfect until a customer orders fifteen, at which point the table runs off the bottom of the canvas or over the totals block. There is no reliable way to flow linked records onto a second page, because the layout was never designed to reflow. Airtable's own documentation also states that batch printing of Page Designer records is not supported, and describes the extension as built for printing individual records, so a fifty-record catalog is working against the tool rather than with it.

Worth stating plainly since a lot of writing on this gets it wrong: Airtable has not announced that Page Designer is going away. What the documentation now says is that they recommend Interface Designer instead. Those are different claims, and the extension still works.

§ 02

The pattern: build the document in HTML, fill it from the record

The alternative treats the document as what it actually is, a page. You write an HTML template with your real CSS, including a table for the line items, and fill it with values from the Airtable record. Because the browser lays it out, the table grows to fit the data, headers repeat on page two, and the totals block stays attached to the end of the table instead of at fixed pixel coordinates.

Everything you know about styling a web page applies. Web fonts, a logo, brand colors, a footer with page numbers, all of it works the way it works in Chrome, because a real Chromium instance is what prints it. If you already have an invoice view in a web app, you can point the renderer at that URL instead and skip templating entirely.

§ 03

Wiring it into an Airtable automation

Airtable's Run a script action can call an external API with fetch, which is the whole integration. Trigger the automation when a record enters a view or a status field flips to Ready, build the HTML from the record's fields, POST it, and put the returned PDF URL into an attachment field. If the workflow already lives in an external automation platform rather than in Airtable itself, the same call works from a webhook step, and the guide to generating PDFs from Zapier, Make and n8n covers the three ways to wire that up.

The limits that matter, from Airtable's documentation as of July 2026: a script gets 512MB of memory and can make 50 fetch requests per run, each with a 30 second timeout. The overall script timeout is currently 120 seconds, which Airtable labels as a temporary increase from 30 seconds for observation and testing, so do not design a job that needs the longer window to survive. Output passed to later automation steps is capped at 6MB.

let table = base.getTable("Invoices");
let record = await input.recordAsync("Invoice", table);
let lines = await base.getTable("Line items").selectRecordsAsync({
    fields: ["Description", "Qty", "Amount"]
});

let rows = lines.records.map(r => `<tr>
    <td>${r.getCellValueAsString("Description")}</td>
    <td>${r.getCellValueAsString("Qty")}</td>
    <td>${r.getCellValueAsString("Amount")}</td>
</tr>`).join("");

let html = `<html><head><style>
    table { width: 100%; border-collapse: collapse }
    thead { display: table-header-group }
    tr { break-inside: avoid }
</style></head><body>
    <h1>Invoice ${record.getCellValueAsString("Number")}</h1>
    <table><thead><tr><th>Item</th><th>Qty</th><th>Amount</th></tr></thead>
    <tbody>${rows}</tbody></table>
</body></html>`;

let res = await fetch("https://api.sitepdf.com/v1/render", {
    method: "POST",
    headers: { "Authorization": "Bearer " + apiKey, "Content-Type": "application/json" },
    body: JSON.stringify({ html, format: "Letter", print_background: true, archive: true })
});
let { pdf_url } = await res.json();

await table.updateRecordAsync(record, { "PDF": [{ url: pdf_url }] });

Two details in that last line save a lot of debugging. Airtable fetches attachment URLs itself, unauthenticated, so the PDF URL has to be publicly reachable at the moment the automation runs. And if you were thinking of uploading the bytes directly instead, through the uploadAttachment endpoint, note that path has a hard 5MB per file limit, which a report with a few images will exceed. Airtable's documentation points you at the URL method for anything larger, which is what the code above uses.

§ 04

Multi-record reports, the other thing Airtable will not do

The second reason teams end up here is a report that covers many records at once: a monthly summary of every project, a catalog, a statement covering a quarter of transactions. Page Designer is explicitly one record per layout, so this is not a matter of configuring it correctly.

In HTML it is a loop. Query the view, build a section per record, and let the pages fall where they fall. If you want each record to start on a fresh page, that is one CSS declaration, break-before: page. If you want a table of every record with repeating column headers, that is a normal table with a thead. Our guide to controlling page breaks covers the handful of properties that do the work, and scheduled PDF reports covers running the whole thing on a timer rather than on a button.

§ 05

Keep a copy of the invoice you actually sent

One Airtable-specific trap worth knowing: attachment URLs in Airtable are time limited, so a link you stored months ago may not resolve when someone goes looking for it. That matters most for exactly the documents people go back to, invoices and signed quotes.

Add archive=true to the render call and Sitepdf keeps a timestamped, retrievable snapshot of the document as rendered, independent of your base. If a customer disputes what an invoice said in March, you have the March document rather than a regenerated one built from data that has since changed. The website archiving page explains how the record works, and leaving archiving off means we return the PDF and store nothing at all.

Post your filled template from an Airtable script, or point the API at an existing invoice URL.
curl https://api.sitepdf.com/v1/render \
  -H "Authorization: Bearer $SITEPDF_KEY" \
  -F url=https://app.example.com/invoices/8842 \
  -F format=Letter \
  -F print_background=true \
  -F archive=true

{
  "pdf_url": "https://api.sitepdf.com/v1/documents/doc_at91c.pdf",
  "pages": 3,
  "rendered_in_ms": 1418,
  "archive": {
    "id": "arc_at55e",
    "captured_at": "2026-07-19T22:31:07Z",
    "retrieve_url": "https://api.sitepdf.com/v1/archives/arc_at55e"
  }
}

The API is in early access; this is the documented call shape it opens with. Full request and response walkthrough.

§ 06

Questions about this job

How do I export Airtable records to PDF?
Airtable gives you two built-in routes: the Page Designer extension, available on all paid plans, which lays out one record on a fixed canvas and exports through the browser print dialog, and printing an Interface Designer page, which captures the visible area. For documents whose length varies or that cover many records, build an HTML template instead and render it through an API from a Run a script automation.
Can Airtable generate a PDF automatically?
Not on its own. Page Designer and interface printing both need a person to click Print. To generate PDFs automatically, use an automation with the Run a script action, which can call an external rendering API with fetch, then write the returned PDF back into an attachment field on the record.
What are the limits of Airtable Page Designer?
It positions elements at fixed coordinates, so content that grows, such as invoice line items, overflows rather than reflowing onto another page. Airtable documents that batch printing of Page Designer records is not supported and describes the extension as built for individual records, so multi-record reports and catalogs are outside what it was designed to do.
Is Airtable Page Designer being deprecated?
Airtable has not announced a shutdown. Its documentation now recommends using Interface Designer instead of Page Designer, which is a steer rather than a deprecation, and the extension continues to work on paid plans. Treat it as a tool Airtable is no longer investing in rather than one with a known end date.
How do I attach a generated PDF back to an Airtable record?
Pass a publicly reachable URL to updateRecordAsync as an attachment value and Airtable fetches the file itself, with no authentication, so the link must resolve at that moment. Uploading raw bytes through the uploadAttachment endpoint also works but carries a hard 5MB per file limit, so the URL route is the practical choice for anything with images.
Can Airtable create an invoice PDF with a variable number of line items?
Not reliably with Page Designer, because the layout is fixed and a longer table overflows the canvas. Rendering an HTML template solves it structurally: a table grows to fit however many rows exist, column headers repeat on continuation pages with thead, and break-inside rules stop a row splitting across a page boundary.

§ Early access

Get on the early-access list

The API opens to the list first, in order. Early access locks the planned launch rates for 12 months. No card required, launching soon.

Render + archive, one API