Connect Airtable to PandaDoc with Make.com: auto-generate contract docs from templates, then write PandaDoc documentId and status back to Airtable.
Connect Airtable to PandaDoc with Make.com to Auto-Generate Contracts
If you manage contracts in Airtable, the manual version is painful. Someone copies fields into a PandaDoc template, generates the document, then updates Airtable with links and statuses. It works until you have volume, then you get duplicates, missing fields, and “what’s stuck?” pings every morning.
This is where Cross-Platform Automation (XPA) matters: you wire Airtable to PandaDoc using Make.com so eligible records automatically create PandaDoc documents from your templates. You also write the PandaDoc documentId back into Airtable, and you can optionally sync PandaDoc status changes back into Airtable.
By the end of this post, you will know exactly how to set up the Make.com scenario, including the duplicate-prevention logic and the field mappings that make PandaDoc merge variables render correctly.
What You’ll Need
- Airtable: base and table (example:
Contracts) with fields you will merge into PandaDoc. - PandaDoc: one or more templates with merge fields matching what you send from Airtable.
- Make.com: an account to build and run the scenario.
- PandaDoc API access in Make.com (credentials needed to create documents from templates).
- Permissions:
- edit access to the Airtable base
- access to the PandaDoc template
- (Recommended) tracking fields in Airtable:
pandaDoc_documentId(text)pandaDoc_status(text)pandaDoc_created(checkbox) OR rely onpandaDoc_documentIdbeing emptypandaDoc_lastUpdated(date/time)
If you want the framing behind these Cross-Platform Automation builds, start with Cross-Platform Automation (XPA).
How It Works (The Logic)
Your Make.com scenario follows one clear loop:
- Trigger: an Airtable record is new or updated.
- Action: Make.com creates a PandaDoc document from a template, using merge data from that Airtable row.
- Write-back: Make.com updates the same Airtable record with the generated
documentId(and initial status). - (Optional) Webhook loop: PandaDoc sends status events back to Make, and Make updates
pandaDoc_statusin Airtable.
Step-by-Step Setup
1) Add a duplicate-prevention gate in Airtable
Pick one gating strategy and implement it consistently.
Best option:
pandaDoc_createdcheckbox, initially unchecked.
Alternative:
- leave
pandaDoc_documentIdempty until the automation creates the document.
Also create tracking fields:
pandaDoc_documentIdpandaDoc_statuspandaDoc_lastUpdated
2) Confirm merge field names in PandaDoc
In your PandaDoc template, list the merge variables you will fill. Example:
{{company_name}}{{contact_name}}{{contact_email}}{{amount}}{{due_date}}
Now verify that the keys you plan to send from Make match these merge variables exactly. A tiny naming difference results in blanks inside the generated agreement.
3) Create a new scenario in Make.com
In Make.com, create a new scenario.
4) Add your Airtable trigger
Use an Airtable trigger that can detect records needing PandaDoc creation (watch-style triggers or scheduled polling, depending on your setup).
Configure it to pull the fields you need for document generation, such as:
company_name,contact_name,contact_emailamount,due_date- the gate field (
pandaDoc_createdorpandaDoc_documentId)
5) Add a filter immediately after the trigger
Add a filter module so only eligible rows go through.
Common conditions:
pandaDoc_createdequals false, orpandaDoc_documentIdis empty
This is the idempotency layer that prevents duplicates when Make retries runs.
6) Add the PandaDoc “create document from template” action
Add the PandaDoc module that creates a document from a template.
Set:
- Template ID: your PandaDoc template ID
- Document name: for example
Contract - {{company_name}} - {{due_date}} - Recipient mapping: use
contact_emailandcontact_namefrom Airtable - Merge field mapping: provide a mapping object where keys match your PandaDoc merge variables
Conceptual mapping example:
company_name= Airtablecompany_namecontact_name= Airtablecontact_namecontact_email= Airtablecontact_emailamount= Airtableamountdue_date= Airtabledue_date
Gotcha: if due_date is stored as text in Airtable, normalize it in Make to the format your PandaDoc template expects.
7) Capture the PandaDoc response values
From the PandaDoc create step output, capture at least:
documentId- any initial status your module returns (if provided)
8) Update the Airtable record with documentId and status
Add an Airtable action: Update a record.
Use the Airtable record identifier from the trigger, then set:
pandaDoc_documentId= PandaDocdocumentIdpandaDoc_status= initial status (or set tocreated)pandaDoc_lastUpdated= current timestamppandaDoc_created= true (if you use the checkbox gate)
9) (Optional) Add PandaDoc webhook status sync back into Airtable
If you want your Airtable row to stay current when documents move through send, completed, declined, voided:
- Create a webhook listener in Make.com (often as a separate scenario).
- Configure the webhook in PandaDoc to send events to that listener.
- In the Make webhook handler:
- read
documentIdand the event status from the payload - locate the Airtable row by
pandaDoc_documentId - update
pandaDoc_statusandpandaDoc_lastUpdated
- read
Gotcha: correlate strictly on documentId. Email alone causes mismatches when recipients change or multiple documents share similar data.
10) Test with one controlled contract record
Before you enable broad automation:
- duplicate a real contract into a test record
- ensure your filter targets only that test row
- run the scenario
- confirm:
- PandaDoc merge fields render correctly
- Airtable updates
pandaDoc_documentId - a rerun does not create a second document
Real-World Business Scenario
A services firm uses Airtable for contract intake, each inquiry creating a row in Contracts with client details and a signature deadline. Previously, the coordinator created PandaDoc documents manually, then updated Airtable with a link and status.
With this Airtable to PandaDoc Make.com automation, the coordinator sets pandaDoc_created to true when a row is ready. Make generates the PandaDoc document from the template automatically, writes back pandaDoc_documentId, and (with webhook sync enabled) keeps pandaDoc_status accurate as the document moves through the signature workflow.
Result: less admin, fewer mistakes, and a single dashboard in Airtable for what needs attention.
Common Variations
-
Route by contract type to different PandaDoc templates
- Add a router in Make based on
contract_type, then choose a different Template ID per branch.
- Add a router in Make based on
-
Only create PandaDoc for specific conditions
- Filter on
amount, region, or a checkbox likeapproved_for_signaturebefore the PandaDoc action.
- Filter on
-
Notify Slack after creation
- After Airtable write-back, send a Slack message to your approvals channel with
company_nameand the PandaDoc document reference.
- After Airtable write-back, send a Slack message to your approvals channel with
What You Built
You built a reliable Airtable to PandaDoc document pipeline in Make.com, with a gate to prevent duplicates, correct merge-field mapping for PandaDoc templates, Airtable write-back of the PandaDoc documentId, and an optional webhook loop for status syncing.
Olmec Dynamics helps teams design and implement these practical Cross-Platform Automation workflows, especially where data consistency and traceability matter. If you want to sanity-check your mappings or turn this into a production-ready blueprint for your exact Airtable schema, see what we do here.