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.
- 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.
SnitcherClaude runs the rest autonomously
- 1
AI removes customers and competitors.
SnitcherSnitcher
Your own domains, existing customers, competitors and infrastructure providers come off the list on domain, before anything is spent.
- 2
AI labels each company's CRM status.
FolkFolk
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
AI skips companies already contacted.
LemlistLemlist
A company already in one of your campaigns is set aside, so nobody hears from you twice.
- 4
AI keeps visits with real intent.check
A homepage-only visit with no time on the page is logged and stopped, not enriched.
- only when the visit shows real intent
- 5
AI names the right person to contact.
LinkedInLinkedIn
The page they read sets the role to look for, and one named person comes back with the reason they fit.
- 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.
- 7
AI logs every company, posts one recap.
SlackSlack
Every company lands in one table with its verdict, and one short message brings back the returning deals and the drafted notes.
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 tracking | Visitor identification | This process | |
|---|---|---|---|
| What it answers | How many visits, from where, to which pages | Which companies those visits came from | What to do about each company, if anything |
| What it knows about the visitor | Anonymous sessions | The company, the pages it read, how often | The company's CRM status, whether it is already in a campaign, and what it read |
| Its output | Counts and reports | A list of companies | One verdict per company, a named contact for the few with real intent, and a drafted note |
| Who acts on it | Marketing | Whoever opens the tool | A 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
Related processes
Processes that share tools with this one. The shared tools are lit.
Social listening to qualified leads
Every morning, competitor-post engagers and companies reading your site are matched to the CRM, qualified on your ICP, ranked by intent and handed to their rep.
- Shares
- Snitcher, LinkedIn, Slack
Daily schedule7 steps →
Run LinkedIn outreach at a safe pace
Small sending slots through the day, a daily budget that climbs one step only while the account stays healthy, and every send stopped at the first warning.
- Shares
- LinkedIn, Lemlist, Slack
Daily schedule in short slots7 steps →
Find buyers engaging with competitors
Everyone who engages with a competitor's posts gets found, scored against your ICP, enriched, and staged for outreach with a human approving the list.
- Shares
- Lemlist, Slack
Weekly schedule5 steps →