> ## 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.

# WhatsApp Chat

> Work two-way WhatsApp conversations with leads that have a phone number, from one list.

export const Kbd = ({children}) => <kbd className="pl-kbd">{children}</kbd>;

export const UiPath = ({children}) => {
  const parts = String(children).split(/\s*(?:→|>)\s*/).filter(Boolean);
  return <span className="pl-path">
      {parts.map((part, index) => <span key={`${index}-${part}`}>
          {index > 0 && <span className="pl-path__sep">→</span>}
          {part}
        </span>)}
    </span>;
};

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>;
};

Answer your leads on WhatsApp from one screen: every lead with a phone number on the left, and the thread of whichever one you pick on the right.

<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>WhatsApp Chat</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 WhatsApp Chat <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__row">
    <div className="pl-availability__label">Your plan</div>
    <div className="pl-availability__value">Needs at least one seat for WhatsApp numbers.</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>

## Before you begin

* A WhatsApp number connected in this workspace and Active. Without one, this whole screen (list and thread together) is replaced by a prompt to connect or reconnect a number. See [Connect a WhatsApp number](/en/channels/connect-whatsapp).
* At least one lead with a phone number. A lead with none never appears here, so there is nothing to open. See [Get a phone number for a lead](/en/leads/get-a-phone-number).
* Retrying a failed message needs `update-messages` on top of the access above.

## Steps

<Steps>
  <Step title="Open the list">
    Go to <UiPath>Communication → WhatsApp Chat</UiPath>. The left panel lists only leads with a phone
    number. No search or filter widens that. It is always ordered by the most recent WhatsApp activity on
    each conversation, and **Search leads...** narrows it by name.

    With no phone-having lead to show at all, both sides read **No leads with a phone number yet**.
    Otherwise, until you pick a lead the right-hand side reads **Select a conversation**.
  </Step>

  <Step title="Open a conversation and reply">
    Select a lead. The thread opens on the right, and anything unread on it is marked read straight away,
    before you type. A lead you have never exchanged a WhatsApp message with reads
    **No WhatsApp messages yet — say hello!** instead of a history.

    Type into **Type a message...** and press <Kbd>Enter</Kbd> to send, <Kbd>Shift</Kbd> + <Kbd>Enter</Kbd>
    for a new line. The thread is not only what you type: messages your agents and workflows sent this lead
    from a connected number sit in the same timeline, and one parked for later sits there dimmed, marked with
    when it is due.

    <Screenshot id="channels/whatsapp-chat--conversation" url="/whatsapp-chat" alt="The WhatsApp Chat list on the left with one lead showing an unread badge, and an open thread on the right with a back-and-forth of sent and received messages" caption="A representative example. No seeded workspace has WhatsApp message history on file." />
  </Step>

  <Step title="Choose which number is talking">
    A number selector appears in the thread header only when the workspace has more than one Active WhatsApp
    number. On a thread with no messages yet it decides which number the first one goes out from; the moment
    the thread has any message on it the selector is disabled, so the number that opened a conversation is
    the one that stays on it. On a thread that already exists, the header preselects the number the
    conversation is already running on.
  </Step>

  <Step title="Stop your agents while you take over">
    The thread header carries a control whose tooltip reads **Disable automation**. It stops agents and
    workflows messaging this lead while you handle the conversation by hand. Selecting it opens a menu:
    **Disable automation for this lead**, and, when the lead belongs to a company, the same for every lead at
    that company.
  </Step>

  <Step title="Filter and catch up">
    **Unread only** narrows the list to conversations with something unread. Once nothing is left in it, the
    list shows **You're all caught up** and a **Show all conversations** button that drops the filter.
    **Mark all read** sits above the list whenever anything in the workspace is unread, and clears every
    unread WhatsApp conversation in the workspace at once, not just the page you are looking at. To put one
    conversation back, each row has a hover control that marks that lead read or unread on its own.
  </Step>
</Steps>

## What happens next

<Check>
  Your message appears in the thread straight away marked **Sending...**, and settles into a normal sent
  bubble once it goes out.
</Check>

A send that comes back failed shows **Failed** where the time would be; hover it for the reason, and use the
retry arrow beside it (its tooltip reads **Retry**) to send the same text again without retyping it. The
retry arrow is only there if your role can change messages.

The list and the open thread both poll on their own, so an incoming reply surfaces in both without a refresh.
There is no refresh button to look for.

## Troubleshooting

<AccordionGroup>
  <Accordion title="Your WhatsApp number is disconnected">
    A number is linked to this workspace, but none of them is Active right now, so nothing can be sent or
    received and the chat is replaced by this screen. Pausing counts: a paused number is not Active either,
    so pausing your only number lands you here. Select **Manage accounts** to reconnect or resume it: see
    [Your WhatsApp number is disconnected](/en/troubleshooting/whatsapp-number-disconnected) for how to tell
    a real drop apart from a number that is warming up or out of budget for the day.

    <Screenshot id="channels/whatsapp-chat--disconnected" url="/whatsapp-chat" alt="The WhatsApp Chat screen replaced by a warning that every connected number is disconnected, with a Manage accounts button" caption="A representative example. No seeded workspace has a WhatsApp number connected and then dropped." />
  </Accordion>

  <Accordion title="A lead I expect isn't in the list">
    This screen only ever shows leads with a phone number, so a missing lead almost always just doesn't have
    one yet. It is not a problem with the chat.
    [Get a phone number for a lead](/en/leads/get-a-phone-number) first, and they appear here on their own.
  </Accordion>

  <Accordion title="The screen offers to connect WhatsApp instead of showing the chat">
    No WhatsApp number has ever been linked to this workspace, so there is nothing to read or send from.
    That is a different screen from the disconnected one above: it reads
    **Chat with your leads on WhatsApp** and its button is **Connect WhatsApp**.
    [Connect a WhatsApp number](/en/channels/connect-whatsapp) and the chat replaces it.
  </Accordion>
</AccordionGroup>

## Related

<CardGroup cols={2}>
  <Card title="Connect a WhatsApp number" icon="link" href="/en/channels/connect-whatsapp">
    Link a phone with a QR code or a pairing code, then set its message and new-chat limits.
  </Card>

  <Card title="WhatsApp limits and warm-up" icon="gauge" href="/en/channels/whatsapp-limits-and-new-chats">
    Why a number can still send messages but refuses to open a new conversation, and how the first days are paced.
  </Card>

  <Card title="Get a phone number for a lead" icon="phone" href="/en/leads/get-a-phone-number">
    Reveal a lead's phone number so you have something to message them on.
  </Card>
</CardGroup>
