SnapPDFSnapPDF
integration · productivity · beta

SnapPDF + Airtable

Extension that runs ops on PDF attachments in bulk.

The SnapPDF Airtable Extension sits in the Extensions panel of any base. Point it at a field with PDF attachments, pick an op, run. Great for agencies processing client submissions, course platforms bulk-generating certificates, and anyone who lives in Airtable grids. Also has a native Airtable Scripting integration if you prefer code-driven workflows.

What you can build

  • Bulk apply an op to every row in a view.
  • Scripted access: `fetch()` from Airtable Scripts with a stored SnapPDF key.
  • Automation action: "When record matches condition, run SnapPDF op".
  • Attach result back to a second attachment field.
  • Rate-limited to Airtable's per-base limits — 5 req/s.

Setup

  1. 01
    Install the Extension
    In any base: Extensions panel → Add extension → search "SnapPDF". Install per-base (no global install).
  2. 02
    Connect your key
    The extension prompts for an API key on first use. Stored in base-scoped secrets (Airtable Pro+).
  3. 03
    Pick fields
    Source: PDF attachment field. Target: another attachment field. Op: your choice with per-op options.
  4. 04
    Run against a view
    The extension processes only rows in the selected view. Use views to chunk large bases (e.g. "Unprocessed" view).
  5. 05
    Automate with a trigger (optional)
    Airtable Automations → "When record matches" → Run script → paste our provided script template.

Code example

Airtable Scripting block: OCR a new document attachment and write the extracted text to a text field.

const table = base.getTable('Client Documents');
const record = await input.recordAsync('Pick a record', table);

const attachment = record.getCellValue('Document')[0];
const key = await input.config().snappdfKey;

const response = await fetch('https://api.snappdf.dev/api/v1/ocr', {
  method: 'POST',
  headers: { Authorization: 'Bearer ' + key, 'Content-Type': 'application/json' },
  body: JSON.stringify({ fileUrl: attachment.url, searchablePdf: false, languages: ['eng'] }),
});

const { text } = await response.json();
await table.updateRecordAsync(record, { 'Extracted Text': text });

Known limits

  • · Airtable 5 req/s soft limit — bulk runs are paced.
  • · Attachment URLs expire in 2 hours — re-fetch before processing.

Pricing notes

Beta — available on Starter plan and above.

Available from the Starter plan.

FAQ

Do I need Airtable Pro for the extension?

Yes — base-scoped secrets (where we stash the key) are a Pro+ feature.

Can this process a view with 10,000 rows?

Technically yes, but Airtable will rate-limit around 5 req/s. Budget 30+ minutes for 10k rows. Run overnight or switch to a server-side automation if volume matters.

Where does the result file live?

The extension uploads the processed PDF to Airtable's attachment CDN via their filestack-backed upload endpoint. Costs Airtable attachment storage quota.

Can I preview before committing?

Yes — dry-run mode processes the first record only and displays the result in the extension panel.

What if an attachment has expired?

Airtable attachment URLs expire every 2 hours. The extension always fetches fresh URLs; scripted use must refresh each time.

Start freeRead the quickstart

Related integrations