Home/Email Deliverability/Inbox Placement/Email Delivery vs Inbox Placement

Email delivery vs inbox placement: what delivered means, and what changes when an agent reads it

Delivered means the recipient's mail server accepted the message, not that it reached the inbox. An AI agent has to read that answer from delivery events, not from the accepted response the API sends back.

VerifiedBy Kam Low, Co-founder and CTO·Updated

What is email delivery?

Email delivery is the recipient's mail server accepting a message. It has to happen before the inbox, but it is not the inbox, so what people call inbox delivery is really two steps: delivery, then placement.

An email API returns an accepted response as soon as it takes the message, and an AI agent working in Claude, ChatGPT or Cursor tends to treat that response as the end of the job. Delivery is decided later, by the receiving server, and the agent only learns the result if it reads the delivery events.

From "sent" to seen
Your app
Submission serverAccepts
this is what "sent" means
Everything a sender
cannot see
authentication checks
reputation
content filtering
Receiving serverDelivers or bounces
Inbox
Spam folder
Accepted means the submission server took it. The receiving server then delivers or bounces it, and the sender sees that as an event. Placement is the part the sender cannot see.

What changes when an AI agent sends and reads "delivered"

A person who sends one email can check the inbox. An agent that sends from application code, over MCP or through the REST email API checks the response it got back, and that response is the first of three answers that arrive at different times:

Accepted, delivered and bounced: three answers from two servers
StateWho decidesWhen it arrivesWhere the agent reads it
AcceptedThe sending APIAt once, before any receiving server has seen the messageThe send response
DeliveredThe recipient's mail serverLaterA delivery event
BouncedThe recipient's mail serverAt once or after retriesA bounce event

A hard bounce means the address will not take mail, and a soft bounce can still end as a delivery or a hard bounce. The difference is set out in soft bounce vs hard bounce.

So an agent that has to report whether an email was delivered needs the delivery events, which reach the app through email webhooks, not the send response.

The second change is retries. When the API is slow to accept and the call times out, the easy move for an agent is to send again. nitro_send_message sends one transactional email now and takes an idempotency_key that is reused only for an exact retry, so a retried call after a timeout does not become a second email.

Delivery is not the inbox

A message is delivered when the receiving server accepts it. That server can then place it in the inbox, in spam, or in promotions. So a high delivery rate is necessary but not sufficient. Where it lands is inbox placement, and that is a separate question. Deliverability covers both steps, getting accepted and landing in the inbox, as set out in what email deliverability means. The email deliverability hub works through the layers that decide it.

Because the receiving server's acceptance says nothing about the folder, you need a second measurement. An inbox test seeds real mailboxes and reports where the message actually landed, and a sender score gives the reputation reading behind that result. The inbox placement guide covers how to measure placement once delivery is confirmed.

A delivered count also says nothing about whether anyone reads the mail. George Hartley, Co-founder of Nitrosend, puts the cost plainly: "The more unopened emails that you leave in inboxes, the worse your deliverability is."

Sunset contacts on engagement, not on bounces. Zero bounces is not proof the reader is there, because an old address can keep receiving mail after its owner has moved on. That is the rule in his Email Marketing Bible.

What breaks delivery entirely

Before placement is even in play, delivery itself can fail:

  • A hard bounce for a bad address, which shows up in the bounce rate.
  • A blacklist block on the sending domain or IP.
  • An authentication failure that gets the message rejected.

Those are delivery failures, not placement problems, and each one arrives as a bounce rather than as a message in the spam folder.

How Nitrosend handles delivery

Getting a message delivered should not depend on remembering a checklist every time. Nitrosend gives an agent three delivery checks as tools it can call:

  • nitro_manage_domains adds, verifies and diagnoses customer sending domains, so a domain problem can be found before a send fails on it.
  • nitro_get_status reports account readiness and the sender identity.
  • nitro_get_insights returns email analytics with trends, benchmarks and recommendations, which shows how delivery and bounces are trending across sends.

That matters most for transactional email, where a failed receipt is a support ticket rather than a missed open. Sends from code through the transactional email API and sends from an agent use the same account, so the same sending domain and the same delivery events apply to both.

Worked example: an agent confirms a password-reset email was delivered

The prompt: "A customer says they never got the reset email. Find out what happened to it."

Before. Left unguided, an agent finds the API's accepted response from the original send call, replies that the reset went out, and triggers another one. If the address was wrong or the domain was failing authentication, the second reset stops in the same place as the first.

After. With the Nitrosend MCP tools, the agent checks each place a reset email can stop:

  1. The app looks up the delivery or bounce event its webhook stored for the original reset, which shows whether the recipient's server accepted it, refused it, or has not answered yet.
  2. nitro_get_status confirms the account is ready and shows which sender identity the reset went out from.
  3. nitro_manage_domains diagnoses the sending domain, which catches a verification record that no longer matches.
  4. nitro_manage_audience looks up the customer's contact record and its subscription state.
  5. The agent reports what it found to the person who asked. A person corrects the DNS record, or confirms the address with the customer.
  6. nitro_review_delivery runs a read-only readiness review of the reset email, and the person checks it before anything is resent. It approves nothing and sends nothing.
  7. The app resends through nitro_send_message with a new idempotency_key, because the resend is a new message, not a retry of the old one.
  8. The delivery event for the new reset arrives through the webhook, and only then does the agent tell the customer it was delivered.
  9. nitro_get_insights pulls the email analytics for that sender, to see whether bounces rose around the time of the first reset.

The difference in one line: before, the agent reports "sent" and the customer still has no email. After, it reports what it checked and what was fixed, then confirms delivery from the server's answer.

Where it goes wrong when an agent treats accepted as delivered

  • Closing the case on the send response. The agent marks a support case solved because the API accepted the message. That is the API's answer, not the recipient server's. The receiving server can still refuse it after that, and nobody reads the bounce.
  • Two reset links from one timeout. A slow API accept times out, the agent retries without the same idempotency_key, and the customer gets two password-reset emails with different links.
  • Resending into a hard bounce. An agent that never reads bounce events keeps sending to an address the server already refused, and every hard bounce counts against the sending domain.
  • Checking once and stopping. An agent that checks right after the send sees no bounce and closes the case. A soft bounce can still turn into a hard bounce later. The webhook event arrives either way.
  • Reading zero bounces as success. A clean report of delivered mail does not show that anyone opened it, and unopened mail left in inboxes weighs on deliverability over time.

FAQ

Does an accepted response from an email API mean the email was delivered?

No. An accepted response means the sending API took the message. Delivered means the recipient's mail server accepted it, which happens later and reaches the app as a delivery event, usually through a webhook. Of the three answers (accepted, delivered, bounced), only the last two come from the receiving server, so an agent reports delivered only after that event.

What is inbox delivery?

Inbox delivery is a loose term that blends two separate steps. Delivery is the recipient's mail server accepting the message. Inbox placement is which of three places it then lands in: the inbox, spam or promotions. A message can be delivered and still miss the inbox, so a sender has to measure both steps, not one.

What's the difference between email delivery and inbox placement?

Email delivery is the recipient's mail server accepting the message. Inbox placement is where that server puts the accepted message, out of three places: the inbox, spam or promotions. Mail can be delivered and still sit in spam, which is why a high delivery rate is necessary but not sufficient, and why placement needs its own inbox test.

What does email delivery refer to?

Email delivery refers to the recipient's mail server accepting a message. It is one of three answers a sender gets: accepted by the sending API, delivered by the receiving server, or bounced when that server refuses it. Delivery has to happen before the inbox, but it does not mean the message reached the inbox.

Go deeper

Send your first email free.

Simple pricing. Unlimited contacts.

Every plan includes full stack emailing: Flows, Newsletter Campaigns and Transactional Email, plus our NitroWheel LLM and all agent integrations (Claude, ChatGPT, Codex, Cursor and others). Pay for what you send, not who you store.

Choose your billing interval

Every paid plan includes 3 agent inboxes and no Nitrosend footer.

Starter

For your first email program.

$16USD / month

$192 billed yearly.

20,000 emails / month

Choose Starter
  • 5 brands · 3 seats
  • 5 custom sending domains
  • 500 email verifications/month
  • $1.50 / 1,000 extra emails

Pro

For a growing audience.

$40USD / month

$480 billed yearly.

60,000 emails / month

Choose Pro
  • 10 brands · 5 seats
  • 10 custom sending domains
  • 1,000 email verifications/month
  • $1.20 / 1,000 extra emails

Growth

For teams and agencies.

$120USD / month

$1,440 billed yearly.

200,000 emails / month

Choose Growth
  • Unlimited brands · 10 seats
  • 25 custom sending domains
  • 2,500 email verifications/month
  • $0.90 / 1,000 extra emails

Scale

For high-volume sending.

$240USD / month

$2,880 billed yearly.

500,000 emails / month

Choose Scale
  • Unlimited brands · 20 seats
  • 100 custom sending domains
  • 5,000 email verifications/month
  • $0.70 / 1,000 extra emails
Enterprise

Hey, big sender.

Sending 500,000+ emails a month? Get a custom plan designed for you, with volume email pricing and capacity that fits your business.

Start free. No card needed.

5,000 emails to start, then 500 emails every month. No expiry on your starter emails.

Start free

Daily allowances depend on your plan and sender standing. Strong list, domain and delivery evidence can raise standing, including on day one. Trusted receives the full plan allowance; available email credits, safety checks and delivery pacing still apply.

Free forever. No credit card required. See full comparison →