Overview
RecordEngine can send an HTTP POST request — a webhook — to an external URL whenever something happens inside the platform. This lets you build live integrations without polling the API. Seven independent webhook channels are available. Each has its own URL and on/off toggle, so you can connect different tools to different events.| Channel | Event | Fires when… |
|---|---|---|
| Documents | document.exported | A document is moved to Export status |
| Contacts | contact.created | A new contact is created |
| Folders | folder.created | A new folder is created |
| Cases | case.created | A new case is opened |
| Notifications | notification.created | An in-app notification is generated |
| Rules | rule.executed | An automation rule fires (success or failure) |
| Audit Log | audit.log | Any action is recorded in the audit trail |
Setup
- Go to Settings → Integrations → Webhooks
- Paste your endpoint URL into the field for the channel you want
- Toggle the channel on
- Click Save
Authentication
If your endpoint requires authentication, select Bearer Token under Webhook Auth and paste your token. RecordEngine will include it as:Offline Mode
If Offline Mode is enabled in Settings, all webhook delivery is suspended regardless of individual channel settings. This is useful during maintenance or initial testing when you don’t want live data flowing out.Payload Reference
All webhooks share a common envelope:Document Webhook — document.exported
Fires when a document is set to Export status. This is the richest payload — it includes all extracted fields, custom fields, line items, and a direct deep-link back to the document in RecordEngine.
doc_url— a direct deep-link that opens the document in RecordEngine. Use this as a clickable link in Feishu Base, Google Sheets, or a Slack notification.custom_fields— a labelled dictionary of all extracted custom fields (e.g."PO Number": "PO-2026-099"). Labels come from the extraction profile, then from contact-level labels, then fall back to generic keys.custom_01throughcustom_20— the same values as flat top-level fields, for tools like Make.com and Google Sheets that can’t easily parse nested JSON.line_items— array of individual line items. Empty array[]if the document has no line items.external_refs— CRM record links if this document has been correlated to Salesforce, HubSpot, Feishu, or Dynamics.
The document webhook only fires when the document status is set to Export — not on upload, processing, or any other status change. This gives you precise control over what flows out. To trigger it, set a document’s status to Export in the workspace, or use a Rules Engine action to do it automatically.
Contact Webhook — contact.created
Fires when a new contact (company or individual) is created in RecordEngine.
Folder Webhook — folder.created
Fires when a new folder is created under a contact.
Case Webhook — case.created
Fires when a new case is opened. Includes contact_name for easy display without a follow-up lookup.
Notification Webhook — notification.created
Fires when an in-app notification is generated — typically by a Rules Engine action or a system event.
Rule Execution Webhook — rule.executed
Fires every time a Rules Engine rule fires, whether it succeeded or failed. Useful for building an automation audit trail.
trigger_type—event(fires on a document status change) orheartbeat(fires on a schedule)success—trueif the action completed without error;falseif it failed (checkerror_message)
Audit Log Webhook — audit.log
Fires for every action recorded in the audit trail — document uploads, status changes, logins, settings changes, and more. Useful for compliance logging in a SIEM or external audit system.
Connecting to Make.com
The most common integration pattern is RecordEngine → Make.com → downstream app (Google Sheets, Feishu Base, Slack, etc.).- In Make.com, create a new scenario and add a Webhooks → Custom webhook trigger module
- Copy the generated webhook URL
- Paste it into the corresponding channel URL in RecordEngine Settings
- Enable the channel and save
- Trigger a test event in RecordEngine (e.g. set a document to Export)
- Make.com will receive the payload and auto-detect the data structure
- Add downstream modules as needed
doc_url field makes a particularly useful column in Feishu Base or Google Sheets — it gives reviewers a one-click link directly to the document without leaving their workflow tool.
Retry Behavior
RecordEngine attempts delivery once with a 30-second timeout. If the endpoint returns HTTP 200, 201, or 204, delivery is considered successful. Any other response code, or a network timeout, is treated as a failure. For document webhooks, a failed delivery means the document will not be marked as synced (synced_at stays null) and the sync loop will retry it on the next 10-second cycle.
For all other webhook types (contacts, folders, cases, etc.), there is no automatic retry — the event fires once at the moment it occurs. If delivery fails, the event is lost. For critical integrations, consider logging all incoming webhooks on the receiving end.
Troubleshooting
Webhook not arriving- Check that the URL is saved correctly in Settings and the channel toggle is on
- Verify Offline Mode is not enabled (Settings → General)
- For document webhooks: confirm the document is actually in Export status, not Approved
- Test your endpoint independently with a tool like webhook.site to confirm it’s reachable
- 401 — your endpoint requires authentication; add a Bearer token in Settings
- 403 — the token is incorrect or the IP is blocked
- 404 — the URL path is wrong; regenerate the webhook URL in your receiving tool
- The receiving server is temporarily down or overloaded; RecordEngine will retry document webhooks automatically
- Check
schema_version— all current payloads are2.0 - For
custom_fields, labels come from the extraction profile assigned to the document. If a document was processed without a profile, labels fall back to generic keys (custom_01,custom_02, etc.) - The flat
custom_01–custom_20fields are always present alongsidecustom_fields— use whichever is easier for your tool to map