← All guides
Guides · Infrastructure

Why Polling the Inbox Is Dead: Webhook Email Tracking for AI SDRs

Every automated outreach system eventually faces the same question: how do you know when a prospect replied? There are two answers, polling and webhooks. The one you choose quietly decides whether your reply data can be trusted at all.

What polling actually costs you

Polling is the obvious first build: a job wakes up every few minutes, asks the mailbox "anything new?", and compares the answer with last time. It works in the demo. Then three costs arrive:

How webhook email tracking works

A webhook flips the direction: the mail service pings you the moment something happens, instead of you checking on a timer. With webhook email tracking, the mailbox provider (through an email API such as Nylas) pushes an event to your endpoint the moment something happens: message received, message opened, bounce, thread updated. Your system reacts in seconds and does zero idle work. Best of all, a broken pipeline is visibly broken, because the provider's delivery dashboard shows failed webhooks.

PollingWebhooks
Reply latency0 to poll-interval (unbounded in practice)Seconds
Idle costContinuous API callsZero
Failure visibilitySilent: dead poller = quiet inboxLoud: delivery failures are logged by the provider
OrderingBatch diffs, order reconstructedEvent-at-a-time with provider timestamps

What production-grade means

Webhooks are better, not magically safe. A webhook endpoint that powers real reply tracking infrastructure needs four properties. These are also the questions to ask any vendor:

  1. Signature verification, fail-closed. Every payload carries a signature, a tamper-proof stamp made with a secret only the two servers share, and the endpoint checks it (an HMAC check) before trusting a word. Missing secret? Reject everything. An endpoint that skips this check lets strangers write into your data.
  2. Idempotency in the schema. Idempotent means handling the same event twice changes nothing. Providers retry deliveries. Record a reply by writing the inbound message's ID onto the send it answers. The second delivery of the same event then does nothing, by design rather than by hoping.
  3. First-event-wins semantics. "Opened" is one timestamp, set once. Five opens is still one opened email; curiosity metrics can count separately, but headlines never double-count.
  4. Header-based matching. Every email carries a hidden ID in its headers. Match replies by those thread and Message-ID references first, then fall back to the newest unanswered send to that exact address. Never match on subject lines alone: "Re: Quick question" matches half the internet.

Rule of thumb: if a reply-tracking pipeline cannot explain which outbound send a reply belongs to (every time, on retry, across a shared team account), it's a dashboard, not infrastructure.

Why this matters more with AI in the loop

Automated sales outreach raises the stakes on all of this. A human SDR who missed a reply sends an awkward follow-up. An agent that missed a reply sends the next three touches in the sequence to someone who already said yes. Reply state is the agent's brake line. It has to be real-time (webhooks), tied to the right send (header matching), and free of double counts (idempotent schema). Otherwise the automation is driving without brakes.

Build vs. buy

Ervona ships this pipeline as a product: an AI SDR whose reply tracking is webhook-driven, signature-verified, and idempotent by schema, with replies counted per mailbox and per profile. You work the list; the plumbing is done.

Start free at ervona.ai

Go deeper: The architecture behind the modern AI SDR · How to build an AI SDR workflow