Skip to main content
The Tomorro Public API lets you exchange data between Tomorro and the third-party software your teams already use — your CRM, ERP, data warehouse, automation platform, or any internal app. The clearest way to scope an integration is to start from the end goal — what should this automation achieve? — and describe it as a simple Trigger → Action → Data flow:
  • Trigger — the event that starts the automation, in Tomorro or in your tool. Pick one that’s unique, easy to identify, and free of edge cases.
  • Action — what should happen as a result, in the other system.
  • Data — the fields exchanged, and in which direction.
Below are the most common integration patterns, each framed this way. They use only endpoints available today, and most combine just two or three calls.

Create contracts from your tools

Generate ready-to-sign contracts straight from your CRM or ERP.

Keep counterparties in sync

Mirror your suppliers, clients, or partners between systems.

Push contract data back

Reflect contract status and fields in your CRM or ERP.

Archive signed documents

Store signed PDFs in your DMS, storage, or data lake.

Create contracts from your CRM or ERP

Generate a ready-to-sign, pre-filled Tomorro contract straight from your CRM, ERP, or internal app — without anyone leaving their system of record.
TriggerA user clicks “Generate contract” in your CRM/ERP, or your backend calls the API.
ActionLook up the required fields via GET /contract-types/{id}/creation-form, then create it with POST /contracts.
DatacontractTypeId, templateId, counterparty, and fields (smart-field values; rich-text as Slate JSON; dynamic tables via PUT /custom-objects/{customObjectId}/contract/{contractId}/records). Returns the contractId to rebuild the Tomorro URL.

Keep counterparties in sync

Keep the third parties you manage elsewhere — suppliers, clients, partners, or any external entity — aligned with their Tomorro counterparties, in either direction.
TriggerA counterparty changes in Tomorro or in your system (poll updatedAt, or a webhook).
ActionDetect changes with GET /counterparties + GET /counterparties/{id}; update Tomorro with PATCH /counterparties/{id}; fetch related contracts via GET /contracts filtered by counterpartyId.
DataCounterparty fields mapped between systems; counterpartyId as the join key.

Push contract data back into your tools

Reflect a contract’s status and fields in your CRM, ERP, or reporting tools the moment they change — including via no-code automation platforms.
TriggerA webhook event (contract created, signed, or status changed) carrying the contract ID.
ActionFetch full details with GET /contracts/{id}, then update the matching record in your destination tool.
DataContract fields keyed by field ID (unique per organization, not labels); your destination record ID.

Archive signed documents in your systems

Keep a copy of every signed contract in your document management system, cloud storage, or data lake — ready for audit, search, or downstream extraction.
TriggerA scheduled run, or a webhook on signature.
ActionSelect contracts with GET /contracts; download the signed PDF with GET /contracts/{id}/signed-files; for drafts, fetch the working copy with GET /contracts/{id}/current-version.
DataSigned PDF (and metadata) stored in your DMS, storage, or data lake.