BigCommerce blocklists below 90% success: keep Sume callbacks quick
BigCommerce blocks a domain for 3 minutes under 90% success in 2 minutes. Ack Sume job webhooks inside its 10s timeout, then queue the work.

Keep both ends of a BigCommerce-to-Sume pipeline fast: acknowledge every webhook with a 2xx immediately and do the work afterwards. BigCommerce stops calling a domain for three minutes once fewer than 90% of its callbacks succeed in a two-minute window, and Sume gives your endpoint only 10 seconds per delivery attempt before it counts as failed and retries.
This post compares the two documented behaviours and gives one rule for the handler that sits between them. The reasoning that goes beyond the docs is labeled as such.
What BigCommerce documents
The BigCommerce webhooks page describes a success-ratio guard on the destination, plus an instruction on how fast to answer.
| Rule | What the page says |
|---|---|
| Success threshold | Below 90% success within a two-minute window |
| Penalty | The destination domain is blocklisted for three minutes (applied per client_id, not the whole domain) |
| Response guidance | Send a 200 success status immediately after receiving the request |
| Payload | Minimal: store_id, producer, scope, a data object with type and id, and a hash for duplicate detection |
What Sume documents for its own callbacks
Sume sends terminal job events (job.completed, job.failed, job.canceled) to a public HTTPS webhook_url. Your endpoint is on the clock the same way.
| Item | Sume behaviour |
|---|---|
| Timeout | 10 seconds per attempt; a slow endpoint uses the budget and Sume retries it |
| Attempts | Up to 10 in total, fixed 30 second spacing, not exponential |
| Redirects | Not followed; a 3xx is not a delivery |
| Recovery | POST /v1/jobs/{job_id}/webhook/redeliver (jobs:write) re-sends the terminal event with a fresh signature and does not use one of the 10 attempts |
How the two interact (reasoning, not a vendor claim)
BigCommerce's guard counts BigCommerce callbacks only, and BigCommerce says blocklisting applies to the specific client_id, not the whole domain. The risk appears when one domain or one worker pool serves both BigCommerce and Sume callbacks. If a Sume callback handler renders, uploads or calls other APIs before it answers, it occupies the same workers that must answer BigCommerce quickly, and a slow worker pool fails both.
A worked illustration: if 100 BigCommerce callbacks arrive in a two-minute window, 11 failures leave 89 successes, which is 89% and below the threshold. 10 failures would sit exactly at 90%, which the page does not describe as below. Sume's retries make this worse, because one slow job callback can spend up to 10 attempts, each tying up a worker for as long as 10 seconds.
A handler that stays out of trouble
- Verify the Sume signature first (HMAC SHA-256 over timestamp.raw_body, 300 second replay window), store the event durably, return 2xx.
- Do rendering, uploads and downstream calls from a queue, not from the request.
- Treat job_id as the idempotency key, because retries and redeliveries carry the same job.
- Give BigCommerce and Sume separate paths, ideally separate worker pools, so one slow tenant cannot sink the other's success ratio.
- Keep polling GET /v1/jobs/{id}/status as a backup. Sume says delivery is an optimisation, never the only recovery path.
If your endpoint was down
After ten refused attempts the delivery has failed but the job has still reached its real terminal state. Call the redeliver endpoint for each job you missed, or read results with the job status and result endpoints. Read the Sume webhooks docs for the signature scheme before you add the handler.
Sources
Related posts
More in Integrations
- Calendly webhook signature t= v1= with 3 minutes vs Sume sume-v1
Calendly sends t=<ts>,v1=<sig> signed over t.body and suggests 3 minutes of tolerance. Sume signs timestamp.body as sume-v1; write a separate check for each.
- No generate_video tool for Sume in ChatGPT or Claude: Write is off
A Sume OAuth session with only mcp:read hides write and paid tools like generate_video. Reconnect with Write on, or use an API key; confirm in tools_list.
- Claude API MCP connector: public server, tool calls only, one toolset
The Claude API MCP connector reaches only public HTTP servers and supports only tool calls. mcp.sume.com fits. Here are the request, beta header and limits.
- Claude's MCP connector is not ZDR-eligible; what that means for Sume
Claude's MCP connector is not ZDR eligible and is unavailable on Bedrock and Google Cloud. For those cases, call Sume's REST API from your own backend.
Written by Sume