Freshdesk Trigger Webhook: 1000 calls an hour and Sume bulk runs
Freshdesk automations cap webhook calls at 1000 an hour and retry failures every 30 minutes. Here is how a relay maps ticket bursts onto Sume bulk runs.

A Freshdesk automation rule can call a webhook, but it is a poor place to start paid media runs directly: Freshdesk limits webhook requests to 1000 calls an hour and retries failures on its own. The steadier design sends the rule to a small relay that groups tickets and calls Sume's POST /v1/formats/{handle}/{slug}/bulk-runs, which takes 1 to 100 items and a concurrency window of 1 to 16.
This post covers what Freshdesk's page says about the Trigger Webhook action and what each limit means when the target is a Format run that takes minutes and spends money.
What Freshdesk documents
Freshdesk's page on webhooks in automation rules lists the GET, POST, PUT, PATCH and DELETE methods, JSON, XML or XML-encoded content, a Simple option that sends ticket properties, and an Advanced option for custom requests with placeholders (read 2026-10-10). Custom headers use the form X-Sample-CustomHeader1: VALUE.
The same page says a webhook is limited to 1000 calls in an hour, that calls past the limit are buffered until the next hour, that 200 to 299 is success and 300 to 399 is a redirect, and that other codes are retried once every 30 minutes for a total of 48 calls. Account administrators get an email when a call fails.
| Topic | Freshdesk | Sume |
|---|---|---|
| Volume | 1000 calls an hour, extra calls buffered | Bulk queue: 1 to 100 items per create, concurrency 1 to 16 |
| Success | 200 to 299 | 202 for a new run or queue; 200 for an idempotent replay |
| Failure retry | Every 30 minutes, 48 calls in total | 429 and 503 are retryable with the same Idempotency-Key |
| Duplicates | Not addressed on the page | Same key and body returns the original; different body is 409 idempotency_conflict |
| Completion signal | None; the call ends at the response | Per-item communication.webhook_url; the queue itself has no webhook |
Why a relay beats a direct call
A direct call from the rule makes Freshdesk the retry engine. A failed call is repeated every 30 minutes up to 48 times, which is a day of retries. A temporary 503 from any hop could therefore start the same run more than once unless the request carries a stable Idempotency-Key. Whether a rule can put a ticket placeholder into a custom header value is not stated on the page I read, so do not depend on it.
A relay you control fixes this. It answers Freshdesk with a 2xx immediately, derives the key from the ticket id and a version, and owns the retries to Sume. It can also hold your Sume key, so the key does not sit inside a Freshdesk rule.
Batch with a bulk queue
When a rule fires for many tickets at once, collect them for a short window and create one queue. Each item is the same body as a single run, with its own instruction, input, output_schema, spend cap and communication.webhook_url. Keep a map from item index to ticket id, because items[i].index is the position you submitted.
Know what the queue does not do. It has no webhook, so completion arrives per item or by polling GET /v1/format-run-queues/{id} with backoff. Status completed means every item is terminal, not that every item succeeded, so branch on counts.failed. A used queue Idempotency-Key returns 202 with the old queue, so mint a new key for each batch.
Close the loop on the ticket
Each child run is an ordinary Format run. When its webhook arrives, verify the signature, dedupe on request_id, branch on outcome, and post the media URL to the ticket with your own Freshdesk call. If an item failed to start, it keeps its index with run_id: null and an error, and the rest of the queue continues.
Set generation_spend_cap_usd on every item. A queue of 100 items multiplies whatever one item can spend, and the platform maximum of $500 applies per run, not per batch.
Sources
Related posts
More in Integrations
- Grafana alert webhook with HMAC to a Sume run: incident explainer
Grafana's webhook contact point can sign alerts with HMAC over timestamp:body. Verify it, then start a Sume Format run per firing alert with a stable key.
- Jotform webhook rawRequest and a 30 s timeout: start a Sume run
Jotform posts submissions as form data with a rawRequest field and a 30 s timeout. Answer fast, start a Sume Format run, and let a webhook return the result.
- Render deploy hook returns 202: start a Sume run after a deploy
Render deploy hooks return 200 when a deploy starts and 202 when queued. Call one, then start a Sume Format run for the release only once it ships.
- SendGrid ECDSA event webhook vs a Sume HMAC verifier: two checks
SendGrid signs event webhooks with ECDSA, while Sume uses HMAC SHA256. Here is why one verifier will not cover both and how to start a Sume run from an event.
Written by Sume