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

# Build your first workflow from a template

> Start from a ready-made flow, choose which email account it sends from, save it and turn it on.

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

By the end you'll have a working workflow: built from a ready-made template, its email blocks pointed at the account you want them to send from, saved, and switched on.

<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">Outreach<span className="pl-path__sep">→</span>Workflow Builder</span></div>
  </div>

  <div className="pl-availability__row">
    <div className="pl-availability__label">Your role needs</div>
    <div className="pl-availability__value">Create access to Workflow Builder <code>create-workflows</code>. Admin and Member 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-workflows</code> to add one, <code>update-workflows</code> to change one, on top of the permission above.</div>
  </div>

  <div className="pl-availability__note">Not listed in the sidebar today; reachable from the surfaces that link to it, and by URL. 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>

<Steps>
  <Step title="Open the builder and pick a template">
    Open <UiPath>Outreach → Workflows</UiPath> and press **New workflow**.

    You land on an empty canvas headed "Build your pipeline on a canvas", with a gallery of
    ready-made templates floating over it, split between an **Outbound** tab and an **Inbound**
    tab. Each card carries a name and a short breadcrumb of the steps it strings together.

    Outbound holds **Core Outbound Sequence** (the one this tutorial uses), **AI Research
    Outreach**, **Email + LinkedIn** and **Meeting → Convert**. Inbound holds **Reply Handling**,
    **Hot Lead Alert**, **Website Visitor → Outreach** and **Inbound Lead Capture**. See
    [Workflow templates reference](/en/workflows/templates-reference) for what each one does.
    Below the cards, three quick-start triggers (**New Lead Ready**, **Reply Received** and
    **Meeting Booked**) drop that one trigger onto the empty canvas instead, for building
    something of your own from nothing.

    <Note>
      A template leaves this gallery only when the engine cannot run one of its blocks: a block
      that has not shipped yet, or one that is switched off. A disconnected channel never removes
      a template: **Email + LinkedIn** still shows up with no LinkedIn account connected. What a
      missing connection blocks is activation, not the gallery. See
      [Troubleshooting](#troubleshooting) below.
    </Note>

    <Screenshot id="workflows/build-your-first-workflow--template-gallery" url="/workflows/new" alt="The empty workflow canvas showing the template gallery: an Outbound/Inbound segmented control above a single column of template cards, each with an icon, a name and a short breadcrumb of steps" caption="Core Outbound Sequence is the top card on the Outbound tab. It's the one this tutorial builds from." />
  </Step>

  <Step title="Apply Core Outbound Sequence">
    Click the card and the canvas fills with the whole flow, already laid out and framed to fit
    the window.

    Reading down the main column: **New Lead Ready** starts the run and a short **Wait / Delay**
    holds the lead for a moment. The flow then steps out to the left for a three-block check
    (**If / Else**, **Find Email**, **Verify Email**), which proves the lead has an address worth
    sending to, looks one up if the lead has none, and ends the run through **Stop / Exit** if it
    cannot find or verify one. Back in the column,
    **Send Email** writes and sends the first touch, and a **Change Lead Stage** block right
    after it moves the lead to **Contacted**. From there **Wait for Reply** and **Send Follow-up**
    alternate three times, and one last wait ends the run if nothing ever comes back.

    Every one of those waits has a *Replied* exit, and they all land on the same
    **AI Decision (Branch)** block, which reads the reply and branches into a tailored
    **Send Reply**. The connecting lines are labeled *Interested*, *Objection* and
    *Not interested*. The objection path answers, waits again, and returns to that same decision
    through a **Loop** block capped at a fixed number of rounds, so it cannot cycle forever.

    <Screenshot id="workflows/build-your-first-workflow--applied" url="/workflows/new" alt="The canvas after applying Core Outbound Sequence: a vertical ladder of blocks from New Lead Ready down through three follow-ups, branching right into three labeled reply paths: Interested, Objection, Not interested" caption="The layout re-fits itself the moment a template lands. Nothing here needs manual arranging." />
  </Step>

  <Step title="Choose the email account it sends from">
    Click **Send Email**, or any **Send Follow-up** or **Send Reply** block, and it opens in a
    panel on the right. **Sender** is what decides which mailbox that one block sends from. The
    template leaves every one of them on the automatic option, which rotates across all your
    connected email accounts; pick a named account instead if that block should always send from
    the same mailbox.

    With no email account connected at all, this panel shows a warning rather than an error: the
    workflow still saves and still turns on, and nothing sends until an account exists. See
    [Add senders](/en/email-accounts/add-senders) to connect one.
  </Step>

  <Step title="Save it">
    **Save**, at the right end of the toolbar, stays greyed out until something changes:
    applying a template already counts. Press it, or <Kbd>⌘S</Kbd> / <Kbd>Ctrl+S</Kbd>. Nothing
    in the builder saves on its own.

    The status beside the name field flips from **Unsaved** to **Saved**, and a brand-new
    workflow gets its own URL at that moment. The name starts as **Untitled workflow**; the field
    at the left of the toolbar, just before that status, is where you rename it.
  </Step>

  <Step title="Turn it on">
    A pill in the toolbar reads **Valid** only when the graph has neither errors nor warnings;
    otherwise it counts what it found. Applied and saved with no edits, **Core Outbound Sequence**
    reads *1 warning*: the checker flags any loop it finds in the graph, whether or not a
    **Loop** block bounds it, and this template's objection path is a deliberate one. Nothing
    follows from that. Only errors hold **Activate** back (a tooltip on the disabled button says
    *Fix errors before activating*), and this template, saved with no further edits, has none.

    Press **Activate**. It saves the workflow first, then switches it on: the button becomes
    **Deactivate**, with a small dot confirming it's live.

    <Screenshot id="workflows/build-your-first-workflow--activate" url="/workflows/41" alt="The workflow builder toolbar after saving: an amber 1 warning pill, a Save button greyed out because there's nothing new to save, and an enabled Activate button" caption="The one warning is the bounded objection loop, flagged on principle. It's expected here, and it won't stop the workflow turning on." />
  </Step>
</Steps>

## What happens next

<Check>
  The workflow is live. From now on, each lead that becomes ready for outreach enters it on its
  own and starts down the blocks you just built. Open
  [Workflows](/en/workflows/overview) any time to see it listed as **Active**, with its
  enrollment counts filling in as leads move through it.
</Check>

Follow one lead through what you just built on
[Enrollments and the lead journey](/en/workflows/enrollments-and-lead-journey): where it is
right now, which branch it took, and why.

## Troubleshooting

<AccordionGroup>
  <Accordion title="Activate is greyed out">
    Something in the graph is an error rather than a warning: a required field left empty, a
    block with nothing to send, or a block whose integration is not connected. Click the
    validation pill to open the list. Clicking an entry selects the block it belongs to, and
    the loop warning belongs to the graph as a whole, so its row does nothing. Warnings never
    block activation, only errors do. **Save** and **Activate** are also both inert if your role
    cannot change workflows, and say so on hover.
    [Validate, test with AI and activate](/en/workflows/validate-test-and-activate) covers every
    kind of error and warning this checks for.
  </Accordion>

  <Accordion title="A template I expected is missing from the gallery">
    The gallery hides a template when the engine cannot run one of its blocks: all or nothing,
    because a workflow carrying one unsupported block would fail at activation anyway. It is
    never because a channel is disconnected. **Inbound Lead Capture** is the usual absence: it
    starts from a submitted web form, so it only appears where web forms are switched on.
  </Accordion>

  <Accordion title="I left the builder and lost my changes">
    Nothing saves on its own here. The back arrow at the left of the builder's toolbar checks
    first and offers **Keep editing**, **Discard changes** or **Save and leave**, and closing or
    reloading the tab raises the browser's own warning. Leaving any other way (a sidebar link,
    the browser's back button) takes the unsaved changes with it, so save before you navigate.
  </Accordion>
</AccordionGroup>

## Related

<CardGroup cols={2}>
  <Card title="Workflow templates reference" icon="layers" href="/en/workflows/templates-reference">
    Every ready-made template, what it does, and why one might be missing from your gallery.
  </Card>

  <Card title="The builder: canvas, blocks palette and inspector" icon="layout-grid" href="/en/workflows/canvas-palette-and-inspector">
    Add and connect blocks by hand, and read everything the toolbar and inspector are telling you.
  </Card>

  <Card title="Validate, test with AI and activate" icon="circle-check" href="/en/workflows/validate-test-and-activate">
    Every error and warning the validation pill can show, and what fixes each one.
  </Card>

  <Card title="Enrollments and the lead journey" icon="route" href="/en/workflows/enrollments-and-lead-journey">
    Follow one lead through a workflow: where it is now, which branch it took and why it stopped.
  </Card>
</CardGroup>
