Plays · No. 2
Visitor ID to Slack.
Know which companies are on your pricing page, and get the right rep a message about it inside the hour. No new SDR, no new tool your reps have to open. The signal shows up where they already are.
The play
Somebody at a company you'd love to sell to just read your pricing page twice. Right now that fact lives in an analytics dashboard nobody checks, as an anonymous session. Visitor identification tools turn that session into a company name, and sometimes a person. That part is a product you buy. The play is what happens next: getting the name to the one rep who should act on it, with enough context to act, before lunch.
Most teams that buy a visitor ID tool stop at the dashboard. The dashboard is where leads go to die. The version that creates pipeline is a Slack message that says who, from where, what they looked at, and a button to claim it.
Who it's for
- You get at least a few hundred website visits a week. Below that the signal is too thin to route.
- You have a pricing page, a demo page, or a product page that means "I'm shopping" when someone reads it.
- Your reps live in Slack. If they don't, swap the last step for email or a CRM task; the rest holds.
- You have a named-account list or territories, so "the right rep" is a rule, not a judgment call.
For one client this was the first signal I wired into what became their AI SDR. The AI SDR came later. The Slack message came first, and it was the piece reps asked about when it went quiet.
The build
Stack
| Identify | RB2B (free tier, US person-level), or Warmly, Vector, Leadfeeder, Clearbit Reveal for company-level. Whichever you pick, you need a webhook or a Slack output. |
| Filter and route | A Google Sheet for the rules, and n8n (free, self-hosted) or Zapier or Clay to run them. The mock below runs the rules in 30 lines of Python so you can read them. |
| Enrich | Clay if you have it. Apollo's free API if you don't. Skip it entirely for version one. |
| Notify | A Slack incoming webhook. Free, five minutes to set up, no app approval. |
- Put the identification script on the site. Every tool gives you one tag. Put it on the whole site, not just the pricing page; you filter later, and you want the full session path.
- Define "intent" as a list of URLs. Pricing, demo, integrations, a specific product page. Two or more intent pages in one session, or the pricing page alone, counts. The homepage never counts.
- Define "fit" in a spreadsheet. Headcount range, industries, countries, and a list of domains to always ignore (your own, competitors, agencies, universities). Keep it in a sheet so sales can edit it without you.
- Write the routing rule in order. If the company has an owner in the CRM, that rep. Else, if a territory matches, that rep. Else, round robin across the SDRs. Write the fallback first; it's the one that fires most.
- Design the Slack message before you wire anything. Company, how we know (person or company level), pages viewed with timestamps, headcount and industry, CRM status, and the rep it's routed to. Two buttons: Claim, and Not a fit. Post it to a channel the rep is in, and tag them.
- Wire it with a webhook chain. Visitor ID tool fires a webhook on a session end; n8n catches it, runs the filter against the sheet, looks up the CRM owner, picks the rep, posts to Slack. Thirty minutes in n8n once the rules exist.
- Suppress repeats. One message per company per 7 days unless a new person shows up. Without this, the channel is noise in a week and reps mute it. This is the step everyone skips.
- Log every message to the sheet. Company, rep, timestamp, and whether it was claimed. In 30 days you'll know your claim rate and which pages predict a meeting.
The mock
Same made-up company as Play 1: Zebrawood, scheduling software for multi-location businesses. Below is a week of fake visitor sessions run through the real rules. The sessions, the rules, and the script are in the folder; the Slack message is what the script prints.
The routing rules (from the sheet)
| Rule | Condition | Result |
|---|---|---|
| Ignore | Domain in the ignore list, or headcount under 10, or outside US and Canada | Drop silently |
| Intent | Visited /pricing, or two or more of /demo, /integrations, /product/* | Continue, else drop |
| Owner | Company has an owner in the CRM | Route to owner |
| Territory | State is in a rep's territory | Route to that rep |
| Fallback | Nothing matched | Round robin across SDRs |
| Repeat | Same company messaged in the last 7 days and no new person | Drop |
What the rep sees
Out of 38 fake sessions in the sample week, the rules produced 8 messages. Ten dropped as no intent, eight as ignored domains (your own staff and a competitor poking around), six as no fit, six as repeats. About one in five sessions becoming a message is the high end of right. If it's more than a quarter, your intent rule is too loose.
The files:
- sessions.csv, a week of fake visits
- rules.csv, the ignore list, territories, and CRM owners
- route.py, the routing logic, prints the Slack messages
python3 route.py
# 38 sessions, 8 messages
# dropped: 10 no intent, 8 ignored domain, 6 no fit, 6 repeat
-> @marcus Cobblestone Freight & Co. /pricing, /demo, /about
who: company-level (IP match) | freight brokerage, 95 employees, TX | routed by territory: TX
-> @priya Marigold Dental Partners /product/calendar, /demo
who: Office Manager, person-level | dental group, 180 employees, GA | routed by CRM owner
...
What breaks
The channel gets muted. Every team that skips the repeat suppression ends up here within two weeks. One message per company per week, and a Snooze button, are the whole fix.
Company-level ID is wrong about 10 to 20 percent of the time. IP-to-company lookups misfire on VPNs, shared offices, and ISPs. The message says how the company was identified, and a "Not a fit" click feeds the ignore list, so the tool gets quieter and more accurate every week.
The rep claims it and does nothing. Claim writes to the log sheet with a timestamp. A weekly summary of claimed-but-untouched signals, sent to the sales lead, fixes this faster than any process doc.
Legal. Person-level identification is a US-only product for a reason, and your privacy policy needs to say you use it. Company-level is fine almost everywhere. Ask whoever handles your privacy page before turning on person-level.
Copy it
Take the three files, replace the fake sessions with a webhook from your visitor ID tool, put the rules in a sheet, and move the Python into n8n or Zapier. If you want the version with Clay enrichment and the claim-rate report, that's the AI SDR install, where this is the first of the four signals.
One play like this, every week.
The email gets the build files and the mock before they go on the site. No pitch in it.
Get the weekly play →