# Tell an auto-reply from a real answer

Every message you receive carries a category — human, out\_of\_office, auto\_reply and six more — and an autoresponder that sets no header is still caught. A delivery report naming your own mail comes back as email.bounced on it, not as a reply.

[Get started](/signup)
[Documentation](https://docs.aiinbx.com/guides/receiving#categories)

Example: four messages come back to one send. A delivery report from Mail Delivery Subsystem arrives as email.bounced on the message that was sent, permanent: true, not as a reply. Priya Nair's 'Automatic reply: Spring price list' is out\_of\_office. Meridian Foods Support's '\[Case #88213\] We've received your email' is auto\_reply. Tomás Ortega writes 'Out next week. Can you hold the old rate till I'm back?' and is human — a person mentioning an absence is still a person.

Four messages back from one send. The helpdesk acknowledgement sets no automatic header and is still auto\_reply; Tomás mentions he is away and is still a person.

Bounces

## A bounce about your send is not a reply

A delivery report naming a message you sent through us becomes email.bounced on that email. A bounce that shows the address is dead suppresses it. That holds in a connected Gmail or Outlook inbox too, where reports otherwise sit among the replies.

[Bounces](/features/suppressions)

Headers that mislead

## A header filter gets it wrong both ways

Plenty of autoresponders set no automatic header at all, and Exchange can put X-Auto-Response-Suppress on ordinary mail to ask the other side not to auto-reply. Filter on headers and the first passes for a person while the second is filed as a robot. In AI Inbx the acknowledgement arrives as auto\_reply and Tomás as human.

[Headers that mislead](https://docs.aiinbx.com/guides/receiving#categories)

Two messages a header filter gets backwards. Meridian Foods Support's acknowledgement sets no Auto-Submitted or Precedence header, so a filter calls it a person; AI Inbx files it auto\_reply. Tomás Ortega's reply from Outlook carries X-Auto-Response-Suppress: All, so a filter calls it automatic; AI Inbx files it human.

Out-of-office

## Read when they are back, and who covers

An out-of-office that says its sender can't be reached carries unavailable: why, the day they're back, and the addresses it names instead, each taken from the reply's own text. Hold the sequence until back\_on, or write to the colleague it named.

[Out-of-office](https://docs.aiinbx.com/guides/receiving#what-automated-mail-asks-for)

Example: Priya Nair's out-of-office reads 'I'm out of the office until 14 April with limited access to email. For orders, please write to Daniel Okafor at daniel.okafor@harvestline.com.' The email arrives with category out\_of\_office and unavailable: reason absent, back\_on 2027-04-15 (the next working day after the last day away), contacts daniel.okafor@harvestline.com.

Categories

## Nine answers to “who sent this?”

Only one of them is a reply. An out-of-office and an acknowledgement are not the same event, and a sequence, a helpdesk or a CRM should each treat them differently. For what a sequence does with them, see [cold outreach](/use-cases/cold-outreach); for how an answer finds its conversation, see [threading](/features/threading).

-   human: A person wrote it, in their own words. Stop the follow-ups and hand it to whoever answers.
-   out\_of\_office: An away or vacation autoreply. The person exists and is away. Hold the next step until unavailable.back\_on; nobody has answered.
-   auto\_reply: Any other automatic response: a ticket acknowledgement, an unmonitored inbox. The address is live and a machine said so. Never answer it with a machine. unavailable says whether the person left or nobody reads it.
-   bounce: A delivery failure that arrived as mail and matched no message you sent. Look before acting: a report about your own send arrives as email.bounced instead.
-   verification: A confirmation code, magic link or password reset. Hand verification.code or verification.link to whatever signed up, or drop it.
-   transactional: Receipts, invoices, account notices. File it; it is not a reply to your campaign.
-   notification: Alerts and system mail. File it.
-   marketing: Bulk or promotional mail, cold pitches included. Keep it out of reply counts.
-   spam: Junk, scams or phishing, or failed the receiving side's spam check. Do not act on the content.

In your handler

## Route on the category, not the subject line

Step 1, email.received: one switch, before anything else runs.

```
if (event.type === "email.received") {
  switch (event.data.category) {
    case "human":
      return inbox.assign(event.data.thread_id)
    case "out_of_office":
      return sequences.hold(event.data.from, event.data.unavailable?.back_on)
    case "auto_reply":
      return // a machine acknowledged; nobody has answered yet
    default:
      return triage.queue(event.data.email_id)
  }
}
```

Step 2, email.bounced: a report about mail you sent.

```
if (event.type === "email.bounced") {
  const dead = event.data.bounces?.filter((b) => b.suppressed) ?? []
  await contacts.markUndeliverable(dead.map((b) => b.address))
}
```

Step 3, emails.retrieve: every header, for a rule of your own.

```
const email = await aiinbx.emails.retrieve(event.data.email_id)

const submitted = email.headers.find(
  (header) => header.name.toLowerCase() === "auto-submitted"
)
```

## Questions

### How do I detect an auto-reply email?

Check the headers first: Auto-Submitted with any value but no (RFC 3834), X-Autoreply, X-Autorespond and Precedence: auto\_reply all mark an automatic response. Some autoresponders set none of them, which is why subject keyword lists exist, and those misfire on people. With AI Inbx you don't have to: each inbound message arrives with a category, autoresponders that set no header included.

### Does X-Auto-Response-Suppress mean an email is an auto-reply?

No. Microsoft Exchange uses it to ask the receiving side not to send automatic replies back; it says nothing about whether the message carrying it was automatic. Filtering on it files real answers as robots, and AI Inbx's category doesn't fall for it.

### What is the difference between a bounce and an auto-reply?

A bounce says your message was not delivered: the address does not exist, or the mailbox is full. An auto-reply says it was delivered and the other side answered automatically. A bounce about mail you sent through AI Inbx arrives as email.bounced, with permanent set for a hard bounce; an auto-reply arrives as email.received with the category out\_of\_office or auto\_reply.

### Should out-of-office replies count as replies?

Not towards reply rates or lead status: nobody has read your message yet. They do tell you the address is live and that the person is away, so hold the sequence rather than ending it. out\_of\_office is kept apart from auto\_reply, so you can pause for one and ignore the other.

### Can I get the return date and the stand-in out of an out-of-office?

Yes. An out\_of\_office or auto\_reply email that says its sender can't be reached carries unavailable: reason (absent, left or unmonitored), back\_on, the first day back when the reply names one, and contacts, the addresses it says to write to instead. Every contact is an address written in the reply and back\_on comes from a day it names, so neither is made up; when the reply names none, they are null or empty. A ticket acknowledgement or a thank-you has no unavailable.

### What if someone replies asking to be removed?

That is a real reply, so it arrives as human. When the sender also asks not to be written to again, the address is suppressed on the list the answered send named, or on the \* list when it named none or nothing was sent in that conversation, and email.unsubscribed arrives with the source reply.

### Does it work for mail in a connected Gmail or Outlook inbox?

Yes. Mail synced from a connected mailbox is classified the same way as mail received on a domain, and arrives with the same category. Mail Gmail or Outlook filed as spam or junk is not synced at all.

### Can the category be wrong?

Yes. Some mail is a judgement call, and category is null when a message could not be classified at all. Treat human as one input: pair it with sender checks, a reply limit per conversation and a person to hand off to, most of all before an agent answers on its own.

Keep reading

## More on building with email

-   [Email reply parserParse every email reply down to what the sender wrote: quoted text and repeated signatures removed, answers typed inside the quote kept where they were.ThreadingMailboxes](/solutions/email-reply-parser)
-   [Inbound email APIReceive email in your app over an API. Point an MX record at AI Inbx or connect Gmail and Outlook, and every message arrives as a signed, parsed JSON webhook.ThreadingAttachmentsMailboxesWildcard domains](/solutions/inbound-email-api)
-   [Email open trackingTrack email opens and clicks per domain or per send. Apple privacy prefetches and security scanner clicks arrive flagged as bots, each with its reason.Threading](/solutions/email-open-tracking)

-   [MailboxesGmail and Outlook, same everything.](/features/mailboxes)
-   [SuppressionsUnsubscribes honoured on every send.](/features/suppressions)

[All solutions](/solutions)

## Give your product an inbox. The hard parts are already handled.

[Get started](/signup)
