> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://support.contracthero.com/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# Webhooks: send real-time ContractHero events to your systems


## What's in it for you

If you want contract data in other systems — Salesforce, HubSpot, Slack, BigQuery, n8n — the alternatives are waiting for manual exports or polling the ContractHero API every minute. Webhooks invert that: ContractHero reaches out on its own the moment something happens. You drop the polling load and react in real time, typically within seconds of the event.

## Prerequisites

* Webhooks are available from the **Professional** plan upwards.
* You need a **reachable HTTPS endpoint** that accepts POST requests with a JSON body.
* The **owner** role in ContractHero, with access to **Settings → Integrations**.

## How it works

**1. Open the webhook area**

Go to **Settings → Integrations** („Einstellungen → Integrationen").


![](https://storage.crisp.chat/users/helpdesk/website/-/1/2/5/2/12522a019f980500/screenshot-2026-06-15-at-17452_1kt3pjh.png)


Switch to the **Webhooks** tab. If you haven't configured any yet, you'll see the note “no webhooks added" („Keine Webhooks hinzugefügt").


![](https://storage.crisp.chat/users/helpdesk/website/-/1/2/5/2/12522a019f980500/screenshot-2026-06-15-at-17455_ba1mfu.png)


**2. Create a webhook**

Click **“+ Add webhook”** („+ Webhook hinzufügen") in the top right.


![](https://storage.crisp.chat/users/helpdesk/website/-/1/2/5/2/12522a019f980500/screenshot-2026-06-15-at-17455_fz899m.png)



The configuration dialog has three parts:

* **Webhook name** — an internal label that helps you find it again later (“Slack alerts Legal", for instance).
* **URL** — the HTTPS endpoint that should receive the events, in the form https://hooks.your-endpoint.com/updates. Use **“test URL”** („URL testen") to check that ContractHero can reach it.
* **Events** („Ereignisse") — tick the events that should fire this webhook (full list below).


![](https://storage.crisp.chat/users/helpdesk/website/-/1/2/5/2/12522a019f980500/screenshot-2026-06-15-at-17472_1rh4mtb.png)


**3. Pick your events**

Subscribe to events one by one, or use the header checkbox to take them all. Currently available:

| Event | Fires when |
| ---- |
| `contract.created` | A contract is created — includes the full contract data, the source (upload, XML import, email), the creator and a timestamp. |
| `contract.edited` | A contract is edited — includes field-level changes, who edited it (for AI edits: `ContractHero KI`) and a timestamp. |
| `member_invitation.created` | Someone is invited to an organisation — includes the org name, who invited them, the email address, the role and a timestamp. |
| `member_invitation.accepted` | An invitation is accepted. |
| `reminder.created` | A task is created. |
| `reminder.updated` | A task is updated. |
| `reminder.due_date_reached` | A task reaches its due date. |
| `reminder.sent` | A reminder for a task goes out. |
| `summary.update` | A scheduled summary is sent (the monthly status report, for example). |

**4. Save and go live**

After saving, the webhook appears in the **Webhooks** list. From that moment on, ContractHero sends a **POST request with a JSON body** to your endpoint for every subscribed event.


![](https://storage.crisp.chat/users/helpdesk/website/-/1/2/5/2/12522a019f980500/screenshot-2026-06-15-at-17484_1kzbem9.png)

**5. On your side: receiving the requests**

Your endpoint should:

* Speak **HTTPS** (not HTTP).
* Answer the POST **quickly with an HTTP 2xx**, ideally in under five seconds, so ContractHero doesn't fall into a retry.
* Read the event type out of the payload — the schema varies by event.
* Process the payload asynchronously where needed (queue, worker) so the HTTP response isn't blocked.

## Common questions

**Which plans include webhooks?**
**Professional** and above (Professional, Enterprise).

**Are webhooks inbound or outbound?**
**Outbound.** ContractHero sends HTTP POST requests to your endpoint when events happen. Writing *into* ContractHero from an external system goes through the REST API, not webhooks.

**How quickly are events delivered?**
Usually within a few seconds of the triggering event. Under load spikes, or if your endpoint is slow to answer, it can take longer.

**What happens if my endpoint is briefly unreachable?**
ContractHero retries delivery automatically. The number and frequency of retries can vary by event, so your endpoint should process **idempotently** — the same webhook may arrive twice without causing a double effect.

**How do I secure the endpoint?**
HTTPS at minimum, plus an internal secret in the payload or the URL path. If you want signature verification, talk to us and we'll look at it case by case.

**How much data is transferred?**
For `contract.created` and `contract.edited`, the payload carries the **full contract data** as of the event, including field-level changes on edits. Task events carry the task metadata.

**Can I filter events — only one category, say?**
Today you select the **event type** per webhook. Filtering by category, team or other contract fields has to happen on your side. Ask us if server-side filtering would make sense for your use case.

**Can I run several webhooks in parallel?**
Yes. Create as many as you like — typically one per target system (Salesforce, Slack, your own tool).

**How do I test that my endpoint responds correctly?**
The configuration dialog has a **test URL** button. ContractHero sends a test request so you can see immediately whether your endpoint is reachable and answering properly.

**Can webhooks be fired retroactively for older events?**
No — webhooks only send from the moment they're activated. To move existing data into a target system, use the export or the REST API.

## Good to know

* **Idempotent processing is mandatory.** Network trouble can cause the same webhook to be delivered more than once. Store event IDs and check before processing.
* **Fast 2xx, asynchronous logic.** Write the payload into a queue immediately and answer ContractHero with 200 OK. Long synchronous processing leads to timeouts and retries.
* **HTTPS is not negotiable.** ContractHero only accepts HTTPS endpoints. Self-signed certificates can cause problems — use a common CA (Let's Encrypt and similar).
* **Give webhooks telling names.** “Salesforce contract creation" or “Slack Legal — deadlines reached" can be found again later. “Webhook 3" cannot.
* **n8n, Make and Zapier are ideal first targets.** If you don't want to build a server, these no-code platforms hand you a ready-made HTTPS URL to paste in here.
* **We help with the setup.** If the endpoint configuration is unfamiliar territory, we'll walk through it with you in an onboarding session — usually about an hour.

## Related articles

* [How can task automations be set up and managed?](https://support.contracthero.com/en-us/article/how-can-task-automations-be-set-up-and-managed-129a18q/)
* [What tools are available for task management?](https://support.contracthero.com/en-us/article/what-tools-are-available-for-task-management-hp5fgj/)
* [How are notifications configured and managed?](https://support.contracthero.com/en-us/article/how-are-notifications-configured-and-managed-g3sag5/)