Webhooks vs API Polling: Choosing How Data Moves
Two systems can stay in step in two ways. The source can announce each change as it happens, which is a webhook, or the destination can ask periodically what has changed, which is polling. Vendors present webhooks as the modern answer and polling as the old one. In production, the difference is not modern versus old. It is which failure you would rather design for.
Webhooks are fast and forgetful: they can arrive twice, out of order, or not at all, and you rarely find out which. Polling is dependable and costly: it burns your rate limit asking questions where the answer is usually nothing. Most integrations that survive a few years use both deliberately. This page explains how to decide and what each approach demands of you.
Realistic ROI
Four Questions That Settle the Choice
Answer these per data flow, not per project. A single integration usually needs different answers for different data.
Is anyone waiting for this data
Stock availability during a sale, an order reaching the warehouse, a payment unlocking a booking: these are worth the complexity of event delivery because a customer or a staff member is actively waiting. A nightly general ledger summary, a price list refresh or a reporting extract is not. Applying real time delivery to data nobody is waiting for adds cost and fragility, and it is the most common overreach in integration design.
What happens if one change is missed
If a missed update means a stale field until the next sweep, events alone may be fine. If it means an order never reaches the warehouse or an invoice never posts, then no delivery mechanism should be trusted on its own. High consequence flows need a scheduled sweep or a reconciliation behind the events, because the failure mode of a webhook is silence, and silence looks identical to nothing having happened.
What the vendor limits allow
Polling costs calls, and calls are capped. Polling ten endpoints every minute across a working day is thousands of requests, most returning nothing, and that budget competes with the calls your actual work needs during peak trading. Where a vendor supports change tokens or a modified since filter, polling becomes cheap. Where it does not, frequent polling is often simply unaffordable and events become the only practical option.
Whether you can receive a call from the internet
A webhook requires a publicly reachable endpoint that is always available, verified as genuine, and hardened, because anyone who finds the address can post to it. For a cloud hosted integration layer that is straightforward. For an on premises system behind a corporate firewall it is a security conversation, and outbound polling is frequently the pragmatic answer regardless of what the vendor recommends.
The Six Mechanisms, and What Each Demands
Most real integrations combine three or four of these. The skill is knowing what each one obliges you to build.
Webhooks
The source posts a small message when something happens. You must respond quickly, usually within a few seconds, or the vendor treats it as a failure and retries, so the correct pattern is to verify, queue and acknowledge immediately, then process from the queue. Delivery is typically at least once with no ordering guarantee, so duplicates and out of sequence arrivals are normal operating conditions rather than bugs.
Thin events, then fetch
Treat the webhook as a notification that something changed rather than as the data itself, then call the interface to read the current state of that record. This removes an entire class of problems: stale payloads, out of order updates and partial information. It costs one extra call per event and is almost always worth it, particularly for records that change several times in quick succession.
Delta polling
Ask for everything changed since a stored marker, usually a timestamp or a change token supplied by the vendor. Store the marker only after the batch is successfully processed, and allow a small overlap window because clocks and indexes are not perfectly aligned. Done well this is efficient, restartable and easy to reason about, which is why it remains the workhorse of reliable integration.
Full sweep reconciliation
Periodically compare complete sets rather than changes: every active product, every open order, every customer modified this month. It is expensive, so it runs nightly or weekly and often only on identifiers and key fields. This is the layer that catches what both webhooks and delta polling silently missed, and it is the reason a mature integration can be trusted rather than merely believed.
Scheduled batch and files
A file dropped on a secure server at an agreed time, or a scheduled export from a system that offers nothing else. Unfashionable, entirely reliable, and often the only option for older Australian business systems. It demands its own discipline: an empty file is suspicious rather than normal, a missing file must raise an alarm, and every file needs a checked record count.
Idempotency and ordering
Whichever mechanism you use, the same message will eventually arrive twice, and two updates for the same record will occasionally arrive in the wrong order. Every write needs a stable reference so a repeat updates rather than duplicates, and every record needs a version or modified timestamp so an older update cannot overwrite a newer one. This is not optional detail. It is the difference between an integration and a source of duplicates.
Choosing the Mechanism, Flow by Flow
| Task | Traditional | Designed Properly | Notes |
|---|---|---|---|
| Stock level changes | Hourly full export | Events plus a nightly sweep | Speed matters during trading, and the sweep catches whatever the events missed overnight. |
| New online order | Polled every 15 minutes | Event, then fetch the full order | High consequence, so it needs a scheduled catch up poll behind it as well. |
| Nightly financial summary | Real time posting per order | Scheduled batch after cut off | Nobody is waiting. Batch is cheaper, easier to correct and simpler to reconcile. |
| Price list refresh | Event per price change | Delta poll on a schedule | Bulk changes generate storms of events. Polling absorbs them without drama. |
| Customer record updated | Full sync of all customers | Delta poll with a change marker | Modified since queries are cheap and restartable after any interruption. |
| Legacy system with no interface | Staff export to a spreadsheet | Scheduled file with a record count | File based is legitimate design when the alternative is manual re-keying. |
| Vendor webhook goes quiet | Nobody notices for days | Silence alert plus catch up poll | The absence of events is the hardest failure to see, so monitor for it explicitly. |
| Bulk import by a supplier | Thousands of events at once | Queued, paced, processed in order | Backpressure protects downstream systems from a burst they cannot absorb. |
Where Each Approach Bites
Trusting webhook delivery as if it were guaranteed
Endpoints go down for deployment, networks fail, vendors have incidents, and retry policies expire. When events stop arriving, everything looks calm: no errors, no queue, just quiet. Always pair events with either a periodic catch up poll or a reconciliation that compares record counts, and alert when a flow that normally receives events has received none for longer than usual for that time of day.
Processing inside the webhook response
Vendors expect a fast acknowledgement, often within a few seconds, and will retry if they do not get one, which means slow processing generates duplicate deliveries and can eventually see your endpoint disabled. Verify the signature, put the message on a queue, respond immediately, and do the real work separately. This one pattern prevents most webhook incidents in production.
Unverified endpoints
A webhook address is reachable by anyone who learns it. Without signature verification, an attacker can post fabricated orders, price changes or cancellations directly into your systems. Verify the signature on every request using the vendor’s secret, reject anything unsigned or stale, restrict by source address where the vendor publishes ranges, and treat the payload as untrusted input regardless. Where payloads carry personal information, remember the Privacy Act 1988 and the Australian Privacy Principles apply to what you log as well as what you store.
Polling that re-reads everything, every time
Requesting the full dataset on a schedule works during testing and collapses as data grows, taking your rate limit with it. Use change tokens or modified since filters, keep a marker of the last successful position, and only fall back to a full read as a deliberate reconciliation on a long interval. If a vendor offers no way to ask for changes, that constraint should shape the design rather than be worked around with brute force.
Out of order updates overwriting good data
An update sent at 10:00 can arrive after one sent at 10:01, particularly after a retry. Without a version number or a modified timestamp comparison, the older value wins and the corruption is silent. Compare before writing, discard stale updates, and log when you do so, because a pattern of stale arrivals usually means something upstream is retrying more than you realised.
No way to backfill after an outage
When a receiver has been down for six hours, you need to recover the changes that were missed, and events that have already expired their retries are gone. The recovery path is a poll over the affected window or a targeted reconciliation, and it should be built and tested before you need it. Discovering during an incident that there is no way to catch up is how a two hour outage becomes a fortnight of data cleanup.
How Yes AI Designs This
A mechanism chosen per flow, with reasons
We work through each data flow and recommend events, delta polling, batch or a combination, with the reasoning written down. Where the honest answer is that a nightly file will serve you better than a real time connection, we say so, because that is usually also the cheaper and more robust choice.
Receivers built defensively
Signature verification, immediate acknowledgement, queued processing, backpressure, idempotent writes and version checks are standard in what we build rather than refinements added after the first duplicate order. Payload logging is scoped so support has what it needs without hoarding personal information.
Hosted and monitored by us
Receivers and schedules run on a managed cloud automation layer we operate, with alerting on silence, on queue depth and on failed processing, plus a tested replay path for anything that did not make it through the first time.
Reconciliation behind the speed
For anything that matters, a scheduled comparison of counts and key values between the two systems, so you find out from a report rather than from a customer that something has been quietly missing since Tuesday.
How We Decide and Build
Five steps, applied per flow rather than once for the whole project.
List the flows and their urgency
What moves, in which direction, and whether anybody is waiting for it. Urgency is a business judgement, so it is agreed with you rather than assumed from the technology.
Check what each vendor actually offers
Available events, retry behaviour, signature scheme, change tokens or modified since filters, rate limits, bulk endpoints and file options. Documentation and reality sometimes differ, so we verify.
Choose the mechanism per flow
Events where speed matters, delta polling where it does not, batch where the system is old or the volume is high, and a reconciliation sweep behind anything with consequences.
Build defensively and test the nasty cases
Duplicate delivery, out of order updates, an endpoint outage with backfill, a burst of a thousand events, an empty file and an expired credential are all exercised before go live.
Monitor, including for silence
Alerting on failures, on queue depth and on the absence of expected traffic, with scheduled reconciliation reports so the health of the flow is visible rather than assumed.
Related Reading
SaaS Integration Explained
The six patterns and the decisions behind them.
Custom API Integration
When the connector you need does not exist yet.
Two-Way Data Sync
Bidirectional syncing without the overwrite loops.
Software With No API
The honest ladder when there is no interface at all.
iPaaS in Australia
Where a platform licence earns its keep.
Integration Monitoring
Catching the silence before finance does.
FAQ
Get the Sync Design Right the First Time
Book a call. We map your flows, recommend the right mechanism for each, and give you a priced plan with the reasoning attached. The recommendations are yours either way.
All discussions held in confidence. Australian-based consultants.