Skip to content
← Processes

Turn website visitors into outreach

Website visitor tracking that ends in outreach: each company is checked against your CRM, and the few with real intent get a named contact and a drafted note.

Snitcher→Folk→Lemlist→LinkedIn→Slack
Starts
Company visit identified
Steps
7
Checks and gates
2
A person decides
Never, runs alone

Trigger · Event

Company visit identified

A visiting company is identified along with the pages it opened and how long it stayed, and a twice-daily sweep picks up the window.

Snitcher

Claude runs the rest autonomously

  1. 1

    AI removes customers and competitors.

    Snitcher

    Snitcher

    Your own domains, existing customers, competitors and infrastructure providers come off the list on domain, before anything is spent.

  2. 2

    AI labels each company's CRM status.

    Folk

    Folk

    Each company gets its lane from the CRM — customer, live deal, dead lead or no record — and the CRM itself is never written to.

  3. 3

    AI skips companies already contacted.

    Lemlist

    Lemlist

    A company already in one of your campaigns is set aside, so nobody hears from you twice.

  4. 4

    AI keeps visits with real intent.check

    A homepage-only visit with no time on the page is logged and stopped, not enriched.

  5. only when the visit shows real intent
  6. 5

    AI names the right person to contact.

    LinkedIn

    LinkedIn

    The page they read sets the role to look for, and one named person comes back with the reason they fit.

  7. 6

    AI drafts a note about that page.

    A note under 300 characters that opens on what the page covers, not on the visit itself.

  8. 7

    AI logs every company, posts one recap.

    Slack

    Slack

    Every company lands in one table with its verdict, and one short message brings back the returning deals and the drafted notes.

  9. Result · Every identified company lands in one table with its verdict and its evidence, and the handful worth answering come back as a named person and a drafted note a human only has to send.

Most of the companies that read your site never fill in a form. B2B website visitor identification puts a company name on those visits, but a name alone tells nobody what to do next, and a channel that lists every visiting company stops being read within a week. The useful version makes one decision per company and interrupts a person only when there is something to act on.

Everything that decision needs already sits in your tools. The visitor tool knows which company came, which pages it opened and how long it stayed. The CRM knows whether that company is a customer, a live deal or a lead that went quiet. Your outreach tool knows who is already in a campaign. What is missing is the order in which to read them, so the expensive half, a people search and a person's attention, is spent only where it can pay off.

What you get

Every identified company lands in one table with its verdict and its evidence, and the handful worth answering come back as a named person and a drafted note a human only has to send.

From an identified visit to a verdict

Twice a day the run takes a window of visits from Snitcher in one call, which already carries the pages visited, session count, time on site, location, industry and technologies. It follows pagination to the end, because a requested page size is sometimes silently capped, and it re-runs an empty window against a known-good one before reporting that nobody visited.

The free checks come first, in order. Your own domains, test traffic, customers, competitors, ISPs, hosting providers and mobile carriers come off the list, matched on domain because display names collide. A single pageview from a known datacentre region is the cloud provider, whatever household name owns it. Each remaining company is then matched against your customer and prospect groups in Folk, pulled once per run and confirmed on the record's URL. The process reads the CRM and never writes to it.

Live deals, returning leads and companies already contacted

The CRM status decides what happens next. A customer or a won deal is recorded and stops there. A company in a live deal that is re-reading your pricing or comparison pages is the most valuable line in the whole run, since it is a buying signal aimed at a specific person, so the recap names the deal owner and quotes the page, and the owner takes it from there. A dead lead or a company with no record continues, and a lead that went quiet and came back is labelled as previously lost so nobody re-pitches it blind.

Companies already in a campaign are set aside next. The agent reads the campaign tables in Lemlist once, reduces every address to its domain, and matches in memory. It also states what that check cannot see: contacts added by network invitation carry no email and are invisible to a domain match, and any large list outside the campaign tables is either scanned or declared unscanned.

Reading intent from the pages they visited

A visit to the homepage alone, or to any single page with no dwell time, carries no page signal. It is recorded and nothing more is spent, since there is nothing to write a grounded note about. This behavioural gate is what keeps the run cheap, and it comes before any firmographic judgment. The visitor tool's fit score stays on the row as a note and a tiebreak, never as a gate: the deepest reader in a window is regularly scored a poor fit, and a perfectly scored company regularly spends zero seconds on the page. A company that fits none of the buyer profiles your campaigns are built around is recorded as out of lane.

Then the page decides who to look for on LinkedIn. A specific process or use-case page points to whoever owns that job. The integrations page points to RevOps, the head of operations, or the CTO in a team under 20. Pricing read first or alone points to the budget holder, and a competitor comparison to whoever runs the evaluation. Help and documentation pages mean the company is already using the product, which makes it a customer success conversation. One person is picked, role first and location closest to the session's city, with searches spaced out one company at a time so the network seat is not degraded.

A drafted note and one recap

The note is under 300 characters, and its first clause names what the company was reading: the page is the event, and the company description is background. It never says "I saw you on our website". That line is true and reads as surveillance, while someone who read a page on dead pipeline recognises their own problem in a sentence about dead pipeline. The run does not send. The profile is captured so sending is one click, and a person sends it.

Every company, including every excluded and stopped one with its reason, is written to one table in a single batched call, keyed on domain so the next run updates instead of duplicating. Then one message goes to Slack. Only two things get detail there: a live deal that came back to the site, and a note waiting to be sent. Everything else collapses to a single counts line, with a warning line added only when something was capped, skipped or degraded.

Website visitor tracking, identification and this process

"Website visitor tracking" covers three different jobs, and the process sits at the end of the third.

Analytics trackingVisitor identificationThis process
What it answersHow many visits, from where, to which pagesWhich companies those visits came fromWhat to do about each company, if anything
What it knows about the visitorAnonymous sessionsThe company, the pages it read, how oftenThe company's CRM status, whether it is already in a campaign, and what it read
Its outputCounts and reportsA list of companiesOne verdict per company, a named contact for the few with real intent, and a drafted note
Who acts on itMarketingWhoever opens the toolA person sends the note; the run never sends

The identification step in this process comes from Snitcher. The rest of the run exists because a list of visiting companies, read alone, still leaves the decision about who to contact to someone with no time for it.

The prompt

The real prompt behind the steps above, detailed enough that an agent with the same tools can run it as written. The Run buttons copy the full version, which also carries the steps for connecting those tools.

# Turn the companies reading your site into grounded outreach

You have access to a website visitor identification tool, your CRM, your
outreach tool's campaign records, a professional network search, and your
team's messaging tool. Run this over the **[last 24 hours]** of visits.


## 1. Identify every company that visited

- Ask for the identified companies of the window in **one call**. The
  payload already carries the pages visited, session count, total time
  on site, location, industry, technologies and the company's social
  profiles — do not make a second per-company call to fetch a visit's
  detail you were already handed. The only reason to open a single
  session is a form submission, whose values live nowhere else.
- **Keep the filter conditions flat.** A nested condition group is
  rejected outright rather than ignored.
- **A zero result is a suspected filter bug, not a quiet day.** An
  hours-based window can come back empty over exactly the period a
  day-based window returns a full list — no error, just an empty array.
  Ask in days. If a window returns nothing, re-run it with a
  known-good window before you report that nobody visited.
- **Do not trust one page of results.** A requested page size is
  sometimes ignored and silently capped smaller. Follow the pagination
  cursor to the end and check the returned count against the total.

## 2. Remove customers and competitors

Record the verdict and stop. Nothing further is spent on these:

- Your own domains, your test and staging traffic, and anyone already
  tagged as a customer or a competitor. **Match on domain, never on
  display name** — display names collide and are edited by hand.
- ISPs, hosting providers, and mobile carriers.
- **Watch the city, not just the company.** A one-pageview visit from
  a known datacentre region is the cloud provider, not the household
  name that owns it. That trap fires on the largest, most exciting
  company name you will see all week.

## 3. Label each company's CRM status

Pull your customer and prospect groups **once** and match in memory,
rather than one lookup per company. Confirm each match on the record's
URL field, not on the name alone. Then read the status the CRM already
carries — this process never writes to the CRM, it reports what is
there:

- Already a customer, or a won deal → record it, recap it, stop.
- A live deal — meeting booked, qualifying, negotiating, in follow-up →
  **this is the highest-value line in the whole run.** A company
  re-reading your pricing or comparison pages while a deal is open is
  a buying signal aimed at a specific person. Name the deal owner on
  the line and quote the page. Then stop: the owner works it, not this
  process.
- A dead lead, or no record at all → continue. A company reading the
  site months after going quiet is a **new** signal, not a closed
  one. Say on the line that it was previously lost, so nobody
  re-pitches it blind.

## 4. Skip companies already contacted

- **Build a domain index once per run, then match in memory.** Do not
  query per company.
- Expect the enrolment endpoint to be the wrong tool for this: it
  often returns campaign and status fields but **no recipient**, and
  where it does accept a recipient filter that filter is an exact
  email match, not a substring — so it cannot answer "anyone at this
  domain". Read the campaign **tables** instead, reduce every address
  to its domain, and use that set.
- **State the limits of the check rather than implying it was
  complete.** Rows added by network invitation carry no email address
  and are invisible to a domain check by construction. Any large
  non-campaign list you did not scan is a gap too. Either scan it and
  say so, or skip it and say so.

## 5. Keep visits with real intent

A company whose only page is the homepage — or any single page with
no dwell time — is **no page signal**. Record it, recap it, spend
nothing more on it. There is nothing to write a grounded note about,
and an ungrounded note is worse than no note at all.

This behavioural gate, not a firmographic score, is what keeps the run
cheap. **Never gate on a vendor's fit score.** Score the company on
what it *is* and what it *read*, using industry, description,
technologies and keywords as evidence, and keep the vendor's own tier
on the row as a note and a tiebreak. Firmographics before behaviour
puts them in the wrong order: the deepest reader in a window is
regularly scored a poor firmographic fit, and a perfectly-scored
company regularly spends zero seconds on the page.

A company that fits none of your lanes is **out of lane** — record it
with the one-line reason and stop. Your lanes: **[fill in — the two
to four buyer profiles your campaigns are actually built around]**.

## 6. Name the right person to contact

**The page they read decides the role you search for**, not a generic
title list:

| They read | Search for |
|---|---|
| A specific process or use-case page | whoever owns that job — the function named on the page |
| The integrations page | RevOps, Head of Ops, or the CTO in a team under 20 |
| Pricing, first or alone | the budget holder — a founder, or the VP of that function |
| A competitor comparison | whoever runs the evaluation, usually Head of GTM or Ops |
| The help or docs pages | they are already using it — this is Customer Success, not sales |

- Pick **one** person: role fits the page, location closest to the
  session's own city. Write one sentence naming both. A company where
  you cannot write that sentence is **no person**, not a guess.
- The visitor tool's own contact list is usually free — call it, and
  expect it to be empty. **Never call its email-reveal operation**: it
  spends a credit and permanently un-hides the address, and you do
  not need an address to send a network invitation.
- **One search per company, spaced.** A burst degrades the network
  seat and then disconnects it. On a rate-limit response, read the
  delay the API actually returns rather than assuming it is short,
  mark the remainder `no person`, and say so in the recap.

## 7. Draft a note about that page, not the company

Under 300 characters, and **the first clause names what they were
reading**. The company description is background; the page is the
event.

| Signal | The angle |
|---|---|
| A specific process page | Name that job back to them. They came for one outcome — say you have it running, not that you are a platform. |
| Integrations plus their detected stack | You already know what they run. Name the two integrations that matter to them, by name. |
| Pricing early or alone | They are qualifying, not browsing. Short and price-honest; do not open with product. |
| A competitor comparison | Mid-evaluation. One differentiator, no pitch, offer to answer the comparison question directly. |
| Help or docs | Already trying to make it work. Offer help — selling here reads as tone-deaf. |
| Several pages in one session | They are mapping the surface. Ask which of the two they read most is the live problem. |

**Never write "I saw you on our website".** It is true, it is legal,
and it reads as surveillance. Say the thing the page is *about* —
someone who read a page on dead pipeline recognises their own problem
in a sentence about dead pipeline without being told they were
watched.

Skip anyone you are already connected to or have already invited.
Capture the profile URL and provider id now so sending later is one
click.

**The run does not send.** Not "sends carefully" — does not send. The
row lands as a draft and a person sends it.

## 8. Log every company, post one recap

- Write **every** company to your table in one batched call, keyed on
  domain so the next run upserts rather than duplicates. That includes
  every excluded and every stopped company, with its reason. The table
  is the full record.
- Then post **one** message, at the end. Only two things get detail:
  a live deal that came back to the site, and a note waiting to be
  sent. Everything else collapses to a single counts line — the
  detail is already in the table, and repeating it is what makes a
  recap go unread.
- Print no section with a zero count. Add a single warning line
  **only** when something was capped, skipped or degraded — an
  unchecked outreach source, a list you did not scan, a seat that was
  down, a suspicious zero.

## Output

Report: the window and how many companies were identified; the live
deals that returned, with the page and the owner; each drafted note
with its person and the page it answers; then one counts line for
excluded, customers, already in sequence, no page signal, out of
lane, and no person found. A recap that reads clean when the run was
partial is a failure. So is one nobody reads.

Why run it with Tulina

A prompt helps one person. A process moves a team.

Pasted into a chat, the prompt above works once, for whoever pasted it. In Tulina, "Turn website visitors into outreach" becomes a process the team shares, that keeps its history, runs on its own, and stays inside the same security perimeter as the tools it calls.

  • The whole team works on the same one

    PersonalTeamOrganisation

    A process lives where it belongs: yours, your team's or the whole organisation's. Whoever runs it can improve it, and everyone starts from the best version instead of explaining the job again.

  • Every edit is a version

    v1v2v3

    Each change is a new version with the previous one kept, so a bad edit is undone by restoring an earlier one. Every run records the version it followed, and what a run teaches goes back into the process.

  • It runs without you

    schedulewebhookon demand

    A hosted agent runs the process on Tulina's own infrastructure, on a schedule or when an event arrives, and keeps going when you close the chat. Nothing to host. Every run is tracked to its outcome.

  • Inside the same security perimeter

    vaultrolesrun log

    Credentials stay in the vault, never in the prompt. Roles decide who may run what, every call is logged, and a step a person has to approve waits for that person.

Questions about website visitor identification

This process sweeps a window of visits twice a day instead of firing on each visit, and each window deliberately overlaps the previous one so nothing falls between two runs. That overlap is free, because the table is keyed on the company's domain and a company only re-enters the recap once its visit is newer than the one already recorded against it. Sweeping is also what lets the CRM and campaign checks index everything once per run instead of once per company.

Company-level identification resolves an IP address to an organisation; it does not name the individual who visited. That is a different thing from tracking a person, and it is why this process searches a professional network for the right role rather than trying to match the actual visitor. Check your own obligations for the regions you operate in — and note that the process reads the page they landed on rather than announcing that you watched them, which is the part recipients react badly to.

No. Most identified companies are not worth a person's attention, and a channel that fires on all of them stops being read within a week. Six of the seven verdicts here end the row quietly in a table. Only a live deal returning to the site and a note that is ready to send interrupt anybody.

Customers, live deals and companies already in a campaign are handled first, then it looks at what the company read. A homepage-only visit with no time on the page ends the row. The visitor tool's fit score is firmographic and computed before anyone reads anything, so it is kept as evidence and a tiebreak and never used as a gate. A company that spends forty pageviews across your comparison, pricing and help pages has told you more than its headcount band ever will.

It can find the right role, not the actual visitor, since identification stops at the company. The page they read decides who to search for, so pricing points to the budget holder, a comparison page to whoever runs the evaluation, and help pages to customer success. One person is picked on role and on location closest to the session's city, and a company where nobody fits is recorded as having no person.

No. It drafts, records the profile so sending is one click, and stops. The note is under 300 characters and opens on the page the company read, so the person sending it can tell in one glance whether the ground is real.

Processes that share tools with this one. The shared tools are lit.

See Tulina in a 30-minute demo.

Book a demo