Contract Ingestion
Contracts can enter Tabs through several channels. All inbound paths feed into the same contract processing pipeline.
HubSpot syncs PDFs from closed-won deals. Salesforce syncs contract documents from configured opportunities. CRM sync creates one Tabs contract per PDF file.
DocuSign and PandaDoc can automatically email signed PDFs to Tabs once a signature is complete. The PDF attachment is required — a link alone won’t work.
Email finalized contracts to contract-ingest@tabsplatform.com from an authorized company domain. The message must include a PDF attachment.
Create a contract record via POST /v3/contracts, then upload the PDF with POST /v3/contracts/{id}/file. Best for legacy agreements, batch imports, or workflows outside your CRM.
Your ERP handles accounting downstream — it does not upload contracts into Tabs. After a contract is processed, billing terms, invoices, and revenue data sync to your ERP per your configuration.
When to use the API vs. CRM sync
Every contract requires a Tabs customer ID. Customers are often already in Tabs from CRM sync before the contract arrives. If not, create one via POST /v3/customers first. See Customers for more on how customer records work.
Email ingest requirements
To use email ingest reliably:
- Send from an official company email domain (or a configured subsidiary domain)
- Attach a PDF — links from DocuSign or PandaDoc without a PDF attachment will not work
- Configure e-signature platforms to attach a signed PDF copy automatically when a document is completed
Emails from third-party domains (consultants, lawyers, advisors) cannot be automatically associated with your Tabs instance and must be uploaded manually.
API upload flow
Tabs uses a two-step upload: create the contract record, then attach the PDF.
Step 1 — Create the contract
Save the id from the response. The contract is created with status NEW; processing has not started yet.
Step 2 — Upload the PDF
With shouldProcess=true (the default), Tabs stores the file and begins contract processing. Check status with GET /v3/contracts/{id}.
Avoiding duplicates: CRM sync skips files it has already ingested. API uploads without a CRM external ID are treated as separate contracts. If the same file could arrive through both channels, link them explicitly via external IDs.
Processing flow
After a contract is uploaded, Tabs runs automated extraction followed by human review before billing terms become visible in the app.
- Upload — the contract PDF is attached to a contract record (status
NEW) - Extract — Tabs reads the document and extracts billing terms, dates, and pricing
- Review — trained accountants review the extraction before it goes live
- Link — extracted terms are linked to the customer and organized into billing term groups
For live merchants, most contracts are instantly processed agentically. During implementation, your implementation manager schedules calibration sessions — the live SLA does not apply until go-live.
If Tabs creates a new customer during processing and can’t confidently match it to an existing record, you’ll need to confirm the customer before invoices can be sent.

