> ## Documentation Index
> Fetch the complete documentation index at: https://help.pipelime.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Scheduled, draft and failed messages

> What each status chip on a row means and which actions it offers: cancel, retry, send now, unschedule, edit.

export const Screenshot = ({id, alt, caption, frame = 'browser', url, marks = [], lang = 'en', workspace = 'northwind-outbound'}) => {
  const src = `/images/screenshots/${lang}/${id}.png`;
  const chrome = url ? `app.pipelime.ai/${workspace}${url}` : 'app.pipelime.ai';
  return <figure className={`pl-shot pl-shot--${frame} not-prose`}>
      <div className="pl-shot__frame">
        {frame !== 'bare' && <div className="pl-shot__bar">
            <span className="pl-shot__dots">
              <span className="pl-shot__dot" />
              <span className="pl-shot__dot" />
              <span className="pl-shot__dot" />
            </span>
            <span className="pl-shot__url">{chrome}</span>
          </div>}
        <div className="pl-shot__media">
          <img src={src} alt={alt} loading="lazy" />
          {marks.map(mark => <span key={mark.n} className="pl-shot__mark" style={{
    left: `${mark.x}%`,
    top: `${mark.y}%`
  }} aria-hidden="true">
              {mark.n}
            </span>)}
        </div>
      </div>
      {caption && <figcaption className="pl-shot__caption">{caption}</figcaption>}
    </figure>;
};

A message that has not gone out yet, and one that failed on the way, both sit in **Sent** with a status chip on their row, and that chip is where you act on it.

<div className="pl-availability">
  <div className="pl-availability__row">
    <div className="pl-availability__label">Where</div>
    <div className="pl-availability__value"><span className="pl-path">Communication<span className="pl-path__sep">→</span>Inbox</span></div>
  </div>

  <div className="pl-availability__row">
    <div className="pl-availability__label">Your role needs</div>
    <div className="pl-availability__value">Read access to Inbox <code>read-messages</code>. Admin, Member and Viewer have it by default.</div>
  </div>

  <div className="pl-availability__row">
    <div className="pl-availability__label">To create or change</div>
    <div className="pl-availability__value"><code>create-messages</code> to add one, <code>update-messages</code> to change one, on top of the permission above.</div>
  </div>

  <div className="pl-availability__note">If you cannot find this in your sidebar, your workspace may have a custom menu configuration. Contact support and we will check it for you.</div>
</div>

A message has one of five statuses: draft, scheduled, pending, sent and error. Anything already sent carries no chip in the list, so the four you see there are the ones that still need something. **Draft** and **Scheduled** mean the message is waiting, **Pending** means it is going out right now, and a red **Error** means it failed.

<Screenshot id="inbox/scheduled-drafts-and-message-statuses--status-chips" url="/inbox" alt="The Sent tab with a Draft row and a Scheduled row, each carrying its status chip on the second line and dimmed compared to the sent messages around them" caption="Draft and scheduled rows sit dimmed in the list until you hover them." />

## How it behaves

### Draft: written, with no send time

A draft is a reply that exists but has no time to go out. Nothing sends it on its own.

Three things produce one. The workspace setting **Disable Automatic Replies** holds the AI's answers as drafts instead of scheduling them, so the AI still reads inbound mail and updates the lead but never sends. A workflow's **Send Reply** block does the same on its own leads when "Save as draft for manual review" is on. And taking a scheduled message off the schedule with **Save as draft** turns that message into one.

**Disable Automatic Replies** covers answers to a person. When the inbound message was itself automatic (an out-of-office notice, a bounce, an autoresponder), the answer is scheduled as usual, because that answer is what keeps the campaign moving.

The chip says **Draft** and carries no time, because there is nothing to count down to. Click it for **Send now**, **Edit** and **Delete**.

### Scheduled: queued for a time

A scheduled message has a time to go out. When the AI answers an inbound reply it sets that time a short way ahead, using the workspace's reply delay. Hover the chip for the exact date and time. The label itself counts down instead, reading something like "Scheduled · in 3 hours".

We pick the message up at that time and start sending it. One thing holds it back: if the lead has set an out-of-office that has not expired yet, the send time is pushed to after they are back rather than the message going out. So a scheduled reply to someone on holiday waits for them.

Once the send time has passed the chip reads **Sending now…** instead of counting down. That is the row telling you the time has come and gone. The message is still scheduled until the send actually starts, which is why a row pushed past an out-of-office can read **Sending now…** for a moment and then show a fresh countdown. The list polls itself while a row is in that state, so the chip changes without you reloading the page.

Click the chip for the same menu as a draft, plus one more option: **Save as draft**, which clears the send time and turns it into a plain draft.

### Pending: the send has started

**Pending** means the message has been handed over to be sent. A scheduled message reaches it at its send time, and **Send now** and a retry both put a message straight into it.

There is nothing to edit at this point. Click the chip and the menu holds a single button, "Cancel sending".

### Error: the send failed

A message that could not be sent carries a red **Error** chip. Hover it and the tooltip explains why: the specific reason if we recorded one, or "Sending failed" if we did not.

A small retry icon sits on the chip itself, not behind a menu. Click it and the message goes back to **Pending** with no confirmation step. One kind of failure is refused, and the icon is there to click either way: if the send timed out, the message may already have reached the recipient, so we block the retry and you get an error instead. Sending it again would be the second copy.

You often will not have to. A sweep picks up recent failures and re-sends them for you a limited number of times, so an **Error** chip can clear on its own. It leaves alone the two kinds that must never be repeated: a send that timed out, and one the recipient's server refused outright. When the automatic attempts run out, the tooltip starts with "Automatic retries exhausted".

### Delete removes the message

**Delete** in a draft or scheduled message's menu, and "Cancel sending" in a pending one's, are the same action. The message is deleted, not parked, and there is no undo. You get a "Message deleted" toast either way.

The trash icon that slides in when you hover a row is a different control. It takes the message out of the list without deleting it.

### Who can do any of this

Reading the inbox is enough to see every chip. Every action behind one, send now, edit, save as draft, delete, cancel sending and retry, needs permission to update messages (`update-messages`). Admin and Member hold it by default. Viewer does not, so a viewer reads the chips and can act on none of them.

Two of the chips hide their control without it: the **Pending** chip's popover comes up empty, and the **Error** chip loses its retry icon. The **Draft** and **Scheduled** menus are not hidden, so their buttons are still there to click and the request is refused when it reaches us, leaving you an error instead.

### Editing the body before it goes

Only a draft or a scheduled message can be edited. Choosing **Edit** opens a dialog titled "Edit draft reply" or "Edit scheduled reply", captioned "Editing as HTML" or "Editing as plain text" depending on how the message was written, with the body in a rich-text editor or a plain text box to match.

<Screenshot id="inbox/scheduled-drafts-and-message-statuses--edit-schedule" url="/inbox" alt="The Edit scheduled reply dialog open with the reply in a plain text box, captioned Editing as plain text, and Cancel, Save & send now, and Save buttons across the bottom" caption="This reply was written as plain text, so the dialog opens a plain text box rather than the rich-text editor." />

**Save** stores the new wording and changes nothing else: the message keeps its send time, or stays a draft. "Save & send now" stores the edit and sends the message straight away instead, whether it started as a draft or a scheduled message. Sending it this way is a manual override, so it does not wait for a lead's out-of-office the way the schedule does.

Both buttons stay disabled while the body is empty, and **Save** alone stays disabled until you have actually changed something.

### The same chip and menu on an open thread

Open a thread instead of acting from the list and every message inside it carries its own chip: a plain **Sent** or **Received** chip on anything already delivered, and the same **Draft**, **Scheduled**, **Pending** or **Error** chip, with the same menu, on anything that is not. On a narrow screen the chip only appears on the message you have open, not on the collapsed ones above it.

### These chips are always in English

**Draft**, **Scheduled**, **Sending now…**, **Pending**, **Error**, the plain **Sent** and **Received** chips inside a thread, the buttons behind all of them and the whole edit dialog are shown in English, whatever language the rest of the app is set to.

## Limits

| Status    | What the chip says                                                                | What the chip offers                                       |
| --------- | --------------------------------------------------------------------------------- | ---------------------------------------------------------- |
| Draft     | **Draft**, with no time                                                           | **Send now**, **Edit**, **Delete**                         |
| Scheduled | **Scheduled** counting down, then **Sending now…**                                | **Send now**, **Edit**, **Save as draft**, **Delete**      |
| Pending   | **Pending**                                                                       | "Cancel sending"                                           |
| Error     | **Error**, with the failure reason on hover                                       | A retry icon on the chip. A send that timed out is refused |
| Sent      | No chip in the list. Inside an open thread, a plain **Sent** or **Received** chip | Nothing                                                    |

Every action in the last column needs `update-messages`. Editing is possible on a draft and a scheduled message only.

## Related

<CardGroup cols={2}>
  <Card title="Inbox overview" icon="inbox" href="/en/inbox/overview">
    The Inbox and Sent tabs, the thread list and the reading pane.
  </Card>

  <Card title="Compose a new email to a lead" icon="mail" href="/en/inbox/compose-a-new-email">
    Start a thread from the inbox compose button, picking the sending account and the lead.
  </Card>

  <Card title="Resting days, sending windows and deferrals" icon="calendar" href="/en/email-accounts/resting-days-and-schedule">
    The other reasons a send waits, on a healthy account that is not paused.
  </Card>
</CardGroup>
