Contract Analysis
Extract key terms, dates, and clause presence from contracts and legal agreements. This recipe uses webhooks instead of polling, which is the recommended approach for production integrations where you process contracts asynchronously.Workflow Fields
| Field | Type | Description |
|---|---|---|
contract_type | enum | Type of agreement |
effective_date | date | When the contract takes effect |
expiration_date | date | When the contract expires |
auto_renewal | boolean | Whether the contract renews automatically |
governing_law | string | Jurisdiction governing the contract |
termination_notice_days | integer | Required notice period for termination |
key_clauses | multi_select | Which standard clauses are present |
liability_cap | float | Maximum liability amount if specified |
Field Configuration
Set Up Webhooks
Instead of polling, register a webhook to receive a notification when processing finishes.Process a Document
Handle Webhook Events
When processing completes, your server receives a POST request. The payload includes theextraction_id and workflow_id — use the extraction ID to fetch results. See the webhook payload documentation for the full schema.
Example Response
Tips
multi_select returns an array of all matching options. It is ideal for detecting which clauses are present, since a contract can contain many clauses simultaneously.- Webhooks eliminate polling overhead and rate limit consumption. One webhook handles all processing.
booleanfields work well for yes/no contract features (auto-renewal, exclusivity, right of first refusal).integerfor notice periods gives you a number you can use in calendar calculations directly.- For multi-page contracts, processing handles all pages automatically.
Next Steps
Webhooks
Set up and manage webhook subscriptions
Field Types
Learn about multi_select, enum, and other field types
