Skip to content

Webhooks · Integrations · Los Angeles

Webhook integrations built to retry, dedupe and recover

The paid order still reaches Zoho Books when the network hiccups. And it reaches it once.

A webhook is a message one system sends to another the moment something happens: an order is paid, a contract is signed, a ticket is escalated. We design and build the receivers for those messages, check every signature, queue each event, retry with backoff when the far side is down, skip the duplicates and post the result into Zoho CRM, Zoho Books, Zoho Desk or your own app. Our team is led from Glendale, in the Los Angeles area, and works for companies across the US.

  • Signature checked before anything runs
  • Backoff retries plus a dead-letter queue
  • Repeat deliveries ignored by event ID
Zoho Advanced PartnerEvents delivered into Zoho
You’ll talk to our senior team, not a call center.300+ projects · serving US clients since 2025

01When a webhook is the right tool

Do you need a webhook, or something slower and simpler?

Webhooks shine when a change in one system should show up in another within seconds and the sender already offers them. They are the wrong tool for moving years of history, for systems that never send events, and for jobs a ready-made connector already handles. We sort every request into one of these rows before quoting.

Money moved and someone needs to know now

A paid order, a failed card or a refund posted to Zoho Books and flagged in Zoho CRM before the account manager opens their laptop.

Webhook

You poll an API every few minutes and burn credits

Asking “anything new?” on a timer eats Zoho API credits and still arrives late. Letting the sender push changes cuts both problems.

Webhook

A Zoho record change should start work elsewhere

A deal marked won kicks off provisioning in your app, or an escalated ticket in Zoho Desk pages the on-call engineer.

Webhook

Loading five years of history

Back-filling old records is a batch job over the API with checkpoints. Events only describe what happens from today on.

Batch import

The other system can’t send events at all

Older ERPs and some databases have no webhook feature. A scheduled data sync that reads changes on a timer is the honest answer there.

Scheduled sync

Two common apps, one simple hand-off

If Zoho Flow already has a connector for both apps and the volume is modest, a custom receiver is money you don’t need to spend.

Connector

02Webhook development services

What we build around your webhooks

Receiving a POST request is the easy ten percent. The work that keeps records correct is everything around it: knowing which events matter, proving who sent them, surviving outages and being able to replay a bad afternoon. Here is how we split that work for US teams.

01

Event map

A short document listing every event you subscribe to, the fields you actually use, and the Zoho record each one creates or changes. It becomes part of the BRD.

02

Receivers that answer fast

The endpoint verifies the signature or shared secret, stores the raw payload, replies 200 within milliseconds and leaves the slow work to a background worker.

03

Retries, backoff and a dead-letter queue

When Zoho or your app is down, the worker waits longer between each try, honors Retry-After headers and parks events that never succeed where a person can replay them.

04

Idempotency and ordering

Each event ID is recorded once, so a repeat delivery changes nothing. Where order matters, we compare timestamps or versions so an old update never overwrites a newer one.

05

Alerts, logs and a replay button

Failures post to a Zoho Cliq channel or email, every delivery is searchable by ID, and a nightly count compares both systems so silent gaps get caught the same day.

06

Rescue of an existing setup

Records showing up twice, or not at all? We read the delivery history, find where events are lost or doubled, and fix the receiver before adding anything new.

03Incident replay

One paid order, three failed tries, one payment in Zoho Books

This sample shows why the queue exists. The gaps between rows grow the way the retry waits grow. Read it as the delivery log your team would open the next morning, if anyone needed to open it at all.

  1. 200

    The store says order #4471 is paid

    An orders/paid event for $386.40 reaches the receiver. The HMAC signature checks out, the raw JSON is saved with its event ID, and the store gets its 200 in 38 ms.

  2. 503

    First try to post the payment fails

    The worker calls the Zoho Books API to record the customer payment against the invoice. The call comes back with a temporary 503. Nothing is written, nothing is lost: the event is still in the queue.

  3. 503waited 5 s

    Retry 1, same answer

    Five seconds later the worker tries again. Still unavailable. The next wait doubles twice to 20 seconds, with a little random jitter so the backlog of other events doesn’t retry in lockstep.

  4. 429waited 21 s

    Retry 2: back up, but busy

    The API is answering again, and a rush of queued events hits its rate limit. The response carries a Retry-After of 60 seconds, so the worker obeys it and does not try sooner.

  5. 201waited 60 s

    Retry 3 lands

    The payment is recorded on INV-10582 in Zoho Books, the invoice flips to Paid, and the event is marked done with the Zoho payment ID next to it. About ninety seconds from sale to books.

    Payment recorded · INV-10582 · $386.40
  6. 200duplicate

    The same event arrives a second time

    Senders deliver at least once, never exactly once. The receiver finds the event ID in its log, answers 200 so the store stops resending, and does nothing else. No second payment.

  7. ✓nightly

    The nightly count agrees

    A reconciliation job compares the day’s paid orders in the store with payments in Zoho Books: 212 and 212. Nothing parked in the dead-letter queue, nothing to replay.

Sample event, order numbers, times and amounts. Without the queue, this payment would have vanished at 2:07 PM; without the ID check, it would have been booked twice at 2:09.

04Try it · sample outage

How long should a webhook keep retrying?

Pick a retry strategy and an outage length. The track shows when each attempt fires on a log time scale, which ones hit the outage and whether the event gets through before the attempts run out. The lower chart shows what 400 queued events do to the receiver the moment it comes back.

Retry strategy

Time before the first retry.

Longest single wait
Receiver is down for
Result
Delivered
Delivered after
1 h 4 min
Attempts used
8 of 9
Calls during outage
7

400 queued events hitting the receiver as it comes back

Sample model. The first attempt fires at zero, the outage starts at zero, and every attempt before it ends fails. Real senders publish their own schedules: Stripe, Shopify and Zoho each retry differently, so our receivers never assume the sender will try again and run their own queue instead.

05Webhooks and Zoho

How do webhooks get in and out of Zoho?

Both directions work. Zoho CRM, Zoho Books and Zoho Desk can send webhooks when a record changes, and Zoho Flow or a small Catalyst function can receive them from anyone else. Pick a direction to see the patterns we set up most.

store eventZoho Flow webhook trigger

Low volume, standard apps: Zoho Flow

Zoho Flow gives you a webhook URL as a trigger. A form tool, a store or a booking app posts to it, and the flow creates or updates records in Zoho CRM or Zoho Desk. Quick to build; we add a filter step so junk payloads stop early.

payment eventCatalyst function + queue

Money and volume: a coded receiver

Payments, refunds and anything you can’t afford to double go to a function on Zoho Catalyst that checks signatures, stores the event and posts to Zoho Books through the API with retries and an ID check.

06Webhook costs

What does a webhook integration cost to run?

There is no price tag on a webhook itself. Sending them is normally part of the plan you already pay for at Shopify, Stripe or Zoho. The running cost sits in four places on the receiving side, and which one dominates depends on where we host the receiver and how many events you get.

  1. Where the receiver livesZoho Flow plans are sized by how many tasks the flows run each month. Zoho Catalyst and AWS Lambda bill for actual usage, so a quiet month costs very little.
  2. Zoho API callsEvery record the worker writes uses Zoho API credits, and the daily allowance depends on your Zoho edition and license count. Retries count too, which is one more reason to cap them.
  3. Queue and storageKeeping raw events for replay and audit needs a little database or object storage. We agree how many days of payloads to keep, and delete the rest on a schedule.
  4. Logs and alertsDelivery logs and failure alerts are cheap at small volumes and worth watching above a few hundred thousand events a month.

Our fee works differently from those meters: the event map, receiver, retry rules and reconciliation check are written into a BRD, given one fixed price, and signed before we register the first endpoint. Hosting and API usage are billed to you by Zoho or AWS directly, with nothing added. The first call is free. See Zoho Flow and AWS Lambda for current US list prices of the two most common hosts.

07Webhook questions

Webhook integration questions we hear from US teams

Retries, duplicates, signatures and where Zoho fits. If records are already going missing, bring a few event IDs to the call and we’ll trace them with you.

What is a webhook?

A webhook is an HTTP request that one system sends to a URL you choose as soon as something happens, such as an order being paid or a deal being won. Instead of your software asking for updates on a timer, the sender pushes each event to you with the details in the request body, usually as JSON.

Webhook vs API: what is the difference?

An API is something you call when you want data. A webhook is the sender calling you when data changes. Most integrations use both: the webhook says that order 4471 was paid, and the receiver then calls the Zoho Books API to record the payment. Webhooks remove the need to poll for changes.

What happens if our server is down when a webhook is sent?

Most senders retry for a while on their own schedule, then give up, and some disable the endpoint after repeated failures. That is why we answer quickly, store every event in a queue we control, and run our own retries with backoff. Events that still fail go to a dead-letter queue for replay.

What is exponential backoff for webhook retries?

Exponential backoff means each retry waits longer than the last, often doubling: 5 seconds, then 10, 20, 40 and so on up to a cap. It gives a struggling system room to recover instead of hammering it. Adding random jitter spreads out retries so hundreds of queued events do not all arrive in the same second.

How do you stop webhooks from creating duplicate records in Zoho?

Senders deliver at least once, so the same event can arrive twice. We record each event ID when it is first processed and skip any repeat. For updates we also compare timestamps or version numbers, so an older event arriving late cannot overwrite newer data in Zoho CRM or Zoho Books.

How do you verify that a webhook is genuine?

Many senders sign each request. Stripe sends a Stripe-Signature header and Shopify sends an X-Shopify-Hmac-Sha256 header, both computed with a secret only you and the sender know. Our receivers recompute the signature over the raw body and reject anything that does not match. For senders without signing, we use a secret token in a header.

Does Zoho CRM support webhooks?

Yes. In Zoho CRM you create a webhook under the automation settings and attach it to a workflow rule, so it fires when records are created, edited or meet a condition. It can send chosen record fields to your URL. Zoho Books and Zoho Desk offer webhooks too, and Zoho Flow can receive webhooks from other apps.

Where should our webhook receiver be hosted?

For a few event types at modest volume, a Zoho Flow webhook trigger is usually enough. For payments, high volume or custom logic, we host the receiver as a function on Zoho Catalyst or on AWS with API Gateway, SQS and Lambda. The choice depends on volume, where your team already works and who maintains it.

Can you fix a webhook integration someone else built?

Yes. Inherited receivers are a big share of our webhook work. We start with the delivery history and a count of records on both sides to find where events are dropped or doubled. Then we add the missing pieces, usually a queue, an event ID check and alerts, and replay what was lost where the sender allows it.

How do you price webhook integration work?

The first call costs nothing. After it, we write the event map, receiver design, retry rules and checks into a BRD with a fixed price and a delivery schedule, and you sign before we build. Larger setups, or ones already losing data, may need a short paid review first, priced up front.

08How a webhook project starts

We list the events before we write the receiver

Four steps take you from “orders sometimes don’t reach Zoho” to a signed plan. One or two event types can usually be scoped on the call itself; a setup with many senders, or one already losing data, may need a short paid review that we price before it starts.

Webhook work happens over screen share and shared logs, so location rarely matters; teams in Southern California can also have us in the room for the kickoff.

  1. Discovery callWhich systems send events today, what breaks and which Zoho apps should react
  2. Event mapEach event, its fields and the Zoho record it touches, checked by the person who owns that data
  3. Failure planRetry limits, dead-letter handling, alerts and who replays a parked event
  4. BRD sign-off Our promiseReceivers, rules and checks in writing, at a fixed price

Once signed, the build follows our usual scheduled delivery. See how we work →

09Let’s talk

Tell us what you’re building. We’ll map the fix.

Book a free consultation with Elite Tech Global. We review your Zoho, AWS, Shopify or WordPress setup, show where AI / SI agents can save time, and agree the next step. If we work together, every requirement and a fixed price go into a signed BRD before the build starts.

Real people, one team. Led by co-founders Ikramul Karim and Khris Kakosimidi, and a 40+ member team across Zoho, AWS and AI.

Get your free consultation

Tell us a little and we’ll reply with next steps.

What can we help with?

No spam. We use your details to reply about your project, and send occasional updates only if you tick the box above. See our Privacy Policy.