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

# Set up the Website Tracker

> Create a tracker, install the script on your site, and turn visiting companies into leads.

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 tracker exists for your domain and its script is live on your site, counting the visits that arrive.

<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>Website Tracking</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 Website Tracking <code>read-website-trackers</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-website-trackers</code> to add one, <code>update-website-trackers</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>

## Before you begin

* Edit access to your website's HTML: installing the script means pasting a few lines into it yourself, or handing them to whoever can.
* The exact domain you want to track. It can't be changed once you save the tracker.

## Steps

<Steps>
  <Step title="Open Website Tracking">
    Go to <UiPath>Integrations → Integrations → Website Tracking</UiPath> and
    choose **New Tracker**. With no trackers yet, that's the one button on the
    empty screen; once you have one, the same button sits both in the banner at
    the top of the page and beside the tracker list further down. Either opens
    the same dialog.
  </Step>

  <Step title="Create the tracker">
    Give it a **Name** to recognize it by, then a **Domain** (1): paste it with
    or without `https://` or `www.`, and both are stripped automatically, along
    with a trailing slash. The dialog then shows you the exact string it will
    save, before you commit to it. Domain is the one field you can't come back
    and change later, which is why the hint underneath says so.

    **Tags** is required too. Pick an existing tag, or (if your role can create
    tags) type a name and create one without leaving the dialog. Every company
    and lead the tracker discovers is tagged with it automatically, so this is
    what ties its findings to whatever else in the workspace reads that tag.

    Three more fields shape what the tracker does with a visit, and none of them
    holds up **Create**. **Country Filter** limits company identification to the
    countries you pick. A visit from anywhere else is still recorded, it just
    skips identification. **Ideal Decision Maker** is free text the AI uses to
    find the right people at each discovered company; the more specific it is,
    the better the matches. **Leads per Company** is a slider for how many
    decision-maker leads to look for at each visiting company. Higher values
    use more credits and give you more contacts.

    <Warning>
      Domain can't be changed once you save. If you need to track a different
      one later, create a new tracker rather than trying to edit this one.
    </Warning>

    Once **Name**, **Domain** and **Tags** are all valid, a green **Ready to
    create** panel appears at the foot of the dialog, naming the tracker, the
    domain it will monitor and how many leads per visiting company it will look
    for. Choose **Create**.

    <Screenshot id="finding-leads/website-tracker-setup--create-modal" url="/website-tracking" alt="The Create New Tracker dialog with Name, Domain, Tags and Ideal Decision Maker filled in, the domain's cannot-be-changed hint under the Domain field, and a green Ready to create summary at the bottom" caption="The summary only appears once the three required fields are valid: a preview of exactly what you're about to save." marks={[{ n: 1, x: 50, y: 40 }]} />
  </Step>

  <Step title="Install the script">
    Saving the tracker opens its **Tracking Script** dialog straight away. You
    don't have to go looking for it. Choose **Copy Script**, then paste the
    snippet inside your site's `<head>` tag, or just before the closing
    `</body>` tag, on every page you want tracked. It loads asynchronously.

    The script is tied to the domain (1) the tracker was created for; installed
    anywhere else, its requests are blocked. Closed the dialog before pasting
    it? Reopen it any time from the **View Script** icon on the tracker's card.
    Each tracker's script is fetched for that tracker alone, so a second tracker
    for another domain comes with a different snippet to install there.

    <Screenshot id="finding-leads/website-tracker-setup--script-modal" url="/website-tracking" alt="The Tracking Script dialog: two install steps above a highlighted script block, a Copy Script button, and a warning naming the exact domain the script is locked to" caption="This is generated per tracker: a second one for another domain gets a script of its own, not a variable inside this one." marks={[{ n: 1, x: 22, y: 20 }]} />
  </Step>

  <Step title="Confirm it's tracking">
    Back on Website Tracking, the tracker now has a row of its own. Four
    counters run across its card: **Today**, **7d**, **Total** and **Cos.**
    (1), and on a tracker nothing has visited yet, all four read zero. At the
    far end sits the switch that turns the tracker on and off, reading
    **Active** or **Inactive** beside it.

    <Screenshot id="finding-leads/website-tracker-setup--tracker-card" url="/website-tracking" frame="bare" alt="An active tracker's card, with its domain, tag, and four counters: Today, 7d, Total and Cos., each showing a different running count" caption="Total counts visits; Cos. counts the distinct companies identified behind them. They are different units, not a whole and a part of it." marks={[{ n: 1, x: 70, y: 60 }]} />
  </Step>
</Steps>

## What happens next

<Check>
  With the script live and the tracker's switch on, its card starts counting on
  its own: **Today** and **7d** move as visits arrive, and **Total** climbs with
  them.
</Check>

Counting visits and identifying the companies behind them are two different
things. While the workspace has no identified-company capacity, the card carries
a **Visits Only Mode** banner and the tracker counts visits without revealing
who made them. [Identified companies, capacity and the tracker
dashboard](/en/finding-leads/website-tracker-identified-companies) covers that
meter and what happens when it runs out.

## Troubleshooting

<AccordionGroup>
  <Accordion title="Create stays disabled">
    Three fields have to be valid first: **Name**, **Domain** and **Tags**. Each
    shows a small check mark once it's correct, and the subtitle under the
    dialog's title counts how many of the three you've completed. A field's
    error text only appears once you've touched that field, so a form you
    haven't filled in at all looks clean while **Create** stays disabled.
  </Accordion>

  <Accordion title="I need to track a different domain">
    You can't on the same tracker. **Domain** is locked the moment you save
    it, and editing an existing tracker only ever offers to change its
    **Name**, **Tags**, **Country Filter**, **Ideal Decision Maker** and
    **Leads per Company**. Create a new tracker for the new domain instead.
  </Accordion>

  <Accordion title="Visits are counting but no companies appear">
    Three things cause this, and each leaves a visit counted with no company to
    show for it. The workspace may have no identified-company capacity, in which
    case the tracker's card says so itself with a **Visits Only Mode** banner:
    see [Identified companies, capacity and the tracker
    dashboard](/en/finding-leads/website-tracker-identified-companies). The
    script may be installed on a domain other than the one the tracker was
    created for, in which case its requests are blocked outright: see [Website
    tracker beacon](/en/developers/website-tracker-beacon) for what the origin
    check does and what its errors mean. Or the visitor's country falls outside
    your **Country Filter**, in which case the visit is recorded but skips
    identification entirely.
  </Accordion>
</AccordionGroup>

## Related

<CardGroup cols={2}>
  <Card title="Identified companies, capacity and the tracker dashboard" icon="gauge" href="/en/finding-leads/website-tracker-identified-companies">
    What the stats, charts and monthly capacity meter count, and what happens when the limit is reached.
  </Card>

  <Card title="Company details and AI Instructions & Context" icon="building" href="/en/leads/company-details-and-ai-context">
    The company record the AI writes from, its employees list, and the per-company rules you can set.
  </Card>

  <Card title="Website tracker beacon" icon="code" href="/en/developers/website-tracker-beacon">
    What the tracking snippet sends, how the origin check works, when a repeat visit is ignored, and what the errors mean.
  </Card>
</CardGroup>
