Contract Ingestion
Contracts can enter Tabs through several channels. All inbound paths feed into the same contract processing pipeline.
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
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
Save the id from the response. The contract is created with status NEW; processing has not started yet.
Step 3 — 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: 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.
Identify customer
Tabs matches the contract to a customer using CRM data, API parameters, or details extracted from the document itself.
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.

