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

# Connect a LinkedIn account

> Sign in with your LinkedIn credentials, clear the security checkpoint LinkedIn asks for, and reconnect when the session drops.

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

By the end of this page a LinkedIn account is connected and ready to send, past whatever checkpoint LinkedIn raises along the way, and you know how to bring it back if the connection later drops.

<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">Integrations<span className="pl-path__sep">→</span>Integrations<span className="pl-path__sep">→</span>LinkedIn Accounts</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 LinkedIn Accounts <code>read-linkedin-accounts</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-linkedin-accounts</code> to add one, <code>update-linkedin-accounts</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 LinkedIn accounts.</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

* LinkedIn accounts belong to the workspace you're viewing. Switch first if you want to connect one somewhere else.
* You sign in with the profile's own LinkedIn email and password. There is no redirect to LinkedIn and no app to authorize.
* Reconnecting a dropped account (and pausing, resuming or syncing one) all need `update-linkedin-accounts` on top of the read access above.

## Steps

<Steps>
  <Step title="Open the connect dialog">
    Go to <UiPath>Integrations → Integrations → LinkedIn Accounts</UiPath> and choose **Connect Account**:
    at the top of the page if you already have accounts connected, or in the middle of the screen if this is
    the first one. If your plan's LinkedIn seats are all in use, the button is greyed out instead; see
    Troubleshooting below.
  </Step>

  <Step title="Sign in with your LinkedIn credentials">
    Enter the LinkedIn email and password for the profile you want to connect, and optionally pick a **Tag**
    so you can filter and organize this account alongside your other connections. The password is not stored
    on our servers. It goes to our messaging provider, which uses it to sign in to LinkedIn as you. Submit
    with **Connect LinkedIn Account**.

    <Screenshot id="channels/connect-linkedin-account--credentials" frame="bare" alt="The Connect LinkedIn Account dialog on its Sign In step, with empty email and password fields, an optional Tag picker, and the security notice below them" caption="Nothing leaves the browser until you submit. The fields are only filled in locally until then." />
  </Step>

  <Step title="Clear the checkpoint LinkedIn raises">
    Submitting always lands you on a connecting screen first: the account row is created straight away and
    the sign-in itself runs in the background, so the dialog waits and asks for its result every few seconds.
    You can't close the dialog while it does. If nothing comes back after a few minutes it gives up with
    "Connection timed out. Please try again."

    Once LinkedIn answers, either the connection is through and the dialog moves on to Configure, or LinkedIn
    raises one of five checkpoints:

    * **One-Time Password**: a 6-digit code LinkedIn sends to your email or phone.
    * **Two-Factor Authentication**: a 6-digit code from your authenticator app.
    * **Approve on LinkedIn App**: open the LinkedIn app on your phone and approve the sign-in request there.
      Nothing to type; the dialog keeps checking until LinkedIn says you approved it.
    * **Resolving CAPTCHA**: nothing to type either. This one is resolved automatically, behind a spinner.
    * **Phone Verification**: a phone number, entered with its international prefix.

    Every checkpoint runs against a countdown, and the ones you type into also count your attempts.
    Clearing one can raise another: an emailed code followed by an authenticator code is a normal sequence,
    and each new checkpoint restarts the countdown and the attempt count.

    <Screenshot id="channels/connect-linkedin-account--checkpoint" frame="bare" alt="The One-Time Password checkpoint screen with six empty digit boxes and a circular countdown timer" caption="A representative example: LinkedIn raises this challenge against a real account in real time, so it can't be captured live." />

    <Note>
      LinkedIn decides which of the five checkpoints to raise, and when. This image shows the One-Time
      Password one; the other four look different but sit at the same point in the flow.
    </Note>
  </Step>

  <Step title="Set action limits and a schedule">
    Once the sign-in is through, the dialog shows the account type LinkedIn reports (LinkedIn Basic,
    LinkedIn Premium, Sales Navigator or LinkedIn Recruiter) and four cards of daily and weekly limits:
    **Connection Requests**, **Messages**, **InMail** and **Profile Views**. Each starts pre-filled with a
    recommended value and carries a hard maximum for that account type; a number above it is rejected, both
    by the form and by the save. On a Basic account InMail is **Not available on Basic**, fixed at zero and
    greyed out.
    Below the cards, **Delay Between Actions** spaces out individual actions, and **Schedule** sets the hours
    the account may act in: Monday to Friday, a morning and an afternoon block, in the timezone your browser
    is in at the moment you connect.

    Adjust any of it now, or come back to it later through the account's own **Edit** action on the list.
    Then choose **Save & Finish** to close the dialog.

    <Note>
      The account is already connected by this point. Closing the dialog instead of saving leaves it
      connected and running on the same default limits and the same Monday-to-Friday schedule, but only
      saving refreshes the list behind the dialog, so on that path you may have to reload the page before the
      new row appears.
    </Note>
  </Step>

  <Step title="Reconnect if the connection drops">
    An account whose session drops shows status **Error**, with the reason on the chip's tooltip, and its row
    grows a **Reconnect** icon. The icon needs `update-linkedin-accounts`, and it only appears on an account
    that reached our messaging provider at least once. A sign-in that never got that far cannot be
    re-authenticated at all, and has to be deleted and connected again.

    Choose **Reconnect**, type the account's **LinkedIn password** again, and submit. If LinkedIn challenges
    the sign-in, the dialog switches to the same six digit boxes as the checkpoint step above and asks you to
    enter the code; for an approval on your phone, it shows those boxes together with the line "Approve the
    sign-in request in the LinkedIn app on your phone."

    Reconnecting keeps the exact same provider account, so its whole message history stays intact, and it
    doesn't use up another seat.

    <Screenshot id="channels/connect-linkedin-account--reconnect" frame="bare" alt="The Reconnect account dialog, with a LinkedIn password field, a Cancel and a Reconnect button, and a note that conversations and history are kept" caption="Reconnecting re-authenticates the same account. It never creates a new one." />

    <Note>
      A representative example: reproducing the underlying error state needs a genuinely dropped session,
      which can't be seeded.
    </Note>
  </Step>
</Steps>

## What happens next

<Check>
  The dialog closes and the new account is in the list, with an **Active** status chip.
</Check>

<Screenshot id="channels/connect-linkedin-account--accounts-list" url="/linkedin-accounts" alt="The LinkedIn Accounts list with one connected account named Dana Okafor, its Today's Usage counters at zero, an empty Schedule column and an Active status chip" caption="The counters under Today's Usage restart each day, so a fresh connection reads zero against each daily limit." />

The name, profile picture, headline and account type are read from LinkedIn as the connection lands, so a row
can look sparse for a moment and then fill in. That read is also what settles the account type: if it comes
back as something better than Basic, every limit still sitting at its Basic default moves up to the higher
type's recommended value, and anything you changed yourself is left alone.

A brand-new account doesn't start sending at the limits you just set. It ramps up gradually instead, and
while it does, the row carries a chip saying it's sending at a percentage of its configured limits: see
[LinkedIn action limits, schedule and ramp-up](/en/channels/linkedin-limits-and-ramp-up) for how that works.
Separately, an account without many LinkedIn connections gets a **Low connections** chip: outreach to new
leads pauses until the network grows, while replies keep sending.

## Troubleshooting

<AccordionGroup>
  <Accordion title="Connect Account is greyed out">
    Your plan includes a limited number of LinkedIn seats and they are all in use. Hovering the button shows
    why: "You have reached your LinkedIn account limit. Upgrade your plan to connect more." Deleting an
    account you no longer use frees its seat, since a deleted account is disconnected and archived rather
    than counted.
  </Accordion>

  <Accordion title="The checkpoint expired, or the code was rejected too many times">
    Both are final for that attempt: the dialog tells you to close it and try again, and there is no way to
    resume the same sign-in. What it doesn't say is that the attempt left a row behind: the account is
    created the moment you submit your credentials, and it stays in the list showing **Connecting...** or
    **Error**.

    So starting over is two moves, not one. Delete that row first, then choose **Connect Account** again.
    Connecting a second time with the same email while the first row is still there is refused with "A
    LinkedIn account with this email already exists in this workspace."
  </Accordion>

  <Accordion title="No Reconnect icon on a row that needs it">
    Two things hide it. It needs `update-linkedin-accounts`. Without that permission the row's Pause,
    Resume, Reconnect and Sync actions are not drawn at all, leaving **Edit**, and **Delete** if your role
    has that one. And it only appears on an account that reached our messaging provider before dropping; one
    that failed on its very first sign-in has nothing to re-authenticate, so delete it and connect again. See
    [How your channel credentials are handled](/en/channels/security-of-connected-accounts) for what happens
    to the account on the provider's side when you do.
  </Accordion>
</AccordionGroup>

## Related

<CardGroup cols={2}>
  <Card title="LinkedIn action limits, schedule and ramp-up" icon="gauge" href="/en/channels/linkedin-limits-and-ramp-up">
    What each action limit means, and how a new account ramps up to it.
  </Card>

  <Card title="LinkedIn Chat" icon="messages-square" href="/en/channels/linkedin-chat">
    Read and answer the conversations a connected account starts.
  </Card>

  <Card title="How your channel credentials are handled" icon="shield-check" href="/en/channels/security-of-connected-accounts">
    What happens to the password you type into this dialog, and how to disconnect.
  </Card>

  <Card title="Agent settings reference" icon="sliders-horizontal" href="/en/ai-agents/agent-settings-reference">
    Point an AI agent at a connected account once it's ready.
  </Card>
</CardGroup>
