Contract Ingestion

View as Markdown

Contracts can enter Tabs through several channels. All inbound paths feed into the same contract processing pipeline.

CRM sync

Sync PDFs from closed-won deals in Hubspot or opportunities in Salesforce. CRM sync also brings in customer information and custom fields as configured in CRM integration settings.

E-signature platforms

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 ingest

Email finalized contracts to contract-ingest@tabsplatform.com from an authorized company domain. The message must include a PDF attachment.

API

Create a contract record via POST /v3/contracts, then upload the PDF with POST /v3/contracts/{id}/file. Best for batch imports or automated workflows from an unsupported tool.

Your ERP handles accounting downstream — it does not upload contracts into Tabs. After a contract is processed, customers, invoices, payments, credit memos and revenue journal entries sync to your ERP per your configuration.

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 be discarded
  • 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 three-step upload: create the customer (if needed), create the contract record, then attach the PDF.

Step 1 — Create the customer

curl -X POST https://integrators.prod.api.tabsplatform.com/v3/customers \
-H "Authorization: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Acme Inc",
"externalId": "{crmId}"
}'

Save the id from the response — you’ll need it in the next step. Skip this step if the customer already exists in Tabs.

Step 2 — Create the contract

curl -X POST https://integrators.prod.api.tabsplatform.com/v3/contracts \
-H "Authorization: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Acme - 2026 Order Form",
"customerId": "{customerId}",
"closeDate": "2026-01-15"
}'

Save the id from the response. The contract is created with status NEW; processing has not started yet.

Step 3 — Upload the PDF

curl -X POST "https://integrators.prod.api.tabsplatform.com/v3/contracts/{contractId}/file?shouldProcess=true" \
-H "Authorization: YOUR_API_KEY" \
-F "file=@contract.pdf"

With shouldProcess=true (the default), Tabs stores the file and begins contract processing. Check status with GET /v3/contracts/{id}.

Avoiding duplicates: Tabs deduplicates on a hash of the exact PDF file, regardless of which channel it arrives through. A duplicate upload is flagged as such rather than silently reprocessed — a logged-in user can choose to reprocess it if needed.

Processing flow

After a contract is uploaded, Tabs runs it through an automated pipeline that identifies the correct customer, classifies the document, extracts all relevant information, and triggers invoice generation. In rare cases, a human reviewer is notified to check the contract before it is marked as processed.

1

Identify customer

Tabs matches the contract to a customer using CRM data, API parameters, or details extracted from the document itself.

2

Extract text

The PDF is converted to text (status IN_PROGRESS).

3

Classify

Tabs classifies the document type. If it’s an Amendment, it also identifies the parent contract being amended.

4

Extract & finalize

Tabs extracts billing, revenue, and renewal information, and flags the contract for review if needed. Once complete, the contract is marked processed and invoices are regenerated (status PROCESSED).

Contracts that can’t be processed — because they’re duplicates, corrupted, or missing key information — are given status BLOCKED instead, and need to be resolved in the app.

Most contracts are processed by Contract Agent within a few minutes of upload. At peak times and when uploading hundreds or thousands of documents, processing will take longer.

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.