Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/content/docs/crowdin/project-management/webhooks.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,8 @@ In the **Calls History** section, you can view the list of calls of all the conf

## Failing Webhooks

Crowdin sends each event to your webhook URL once, so an event that fails isn't sent again.

Webhooks that fail 100 or more times in the last 24 hours with response codes in the 4xx or 5xx ranges are automatically disabled.

### Disabled Webhooks
Expand Down
20 changes: 16 additions & 4 deletions src/content/docs/developer/capabilities/webhooks.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -61,10 +61,6 @@ import groupDeleted from '/src/assets/code/webhooks/group.deleted.json?raw';

You can add webhooks to build integrations with the third-party services or with your backend. After you configure a webhook for the project, Crowdin will start sending POST or GET requests with data to the webhook URL via HTTP.

<Aside title="Response timeout">
Your endpoint should return a `2XX` response within **30 seconds**. If processing takes longer, handle it asynchronously.
</Aside>

## Configuring Webhooks

Webhook integration can be implemented at different levels, including Project, Account, or Organization level.
Expand Down Expand Up @@ -93,6 +89,22 @@ Depending on your approach to webhooks management, you might need to add dedicat
Read more about [IP Addresses](/developer/ip-addresses/#webhooks-ai-providers-and-mt-engines).
</ReadMore>

## Delivery

Crowdin sends each queued event to your endpoint once. A delivery counts as successful when your endpoint responds with a `2XX` status before the request times out. Any other response, a timeout, or a connection error is recorded as a failed call, and Crowdin doesn't send that event again. If the webhook has **Batch webhooks** enabled, Crowdin combines several events into one request with an `events` array, and the response applies to every event in that request.

<Aside title="Response timeout">
Your endpoint should return a `2XX` response within **30 seconds**. If processing takes longer, handle it asynchronously.
</Aside>

Treat every request as the only notification you'll get for an event. Respond first, do the processing afterward, and use the API to catch up on anything your service missed while it was unavailable.

Each request names the event in the `event` field and carries the payload of the object it describes. If your service needs to recognize a request it has already handled, build an idempotency key from these values, for example the event name plus the object ID and its timestamp.

<ReadMore>
Read more about Failing Webhooks in [Crowdin](/webhooks/#failing-webhooks) and [Crowdin Enterprise](/enterprise/webhooks/#failing-webhooks).
</ReadMore>

## Events

You can configure webhooks for different events that occur in the project, account, or organization.
Expand Down
2 changes: 2 additions & 0 deletions src/content/docs/enterprise/project-management/webhooks.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,8 @@ Alternatively, you can review the full list of sent webhooks in the **Tools > We

## Failing Webhooks

Crowdin Enterprise sends each event to your webhook URL once, so an event that fails isn't sent again.

Webhooks that fail 100 or more times in the last 24 hours with response codes in the 4xx or 5xx ranges are automatically disabled.

### Disabled Webhooks
Expand Down
Loading