The moment a named account lands on your pricing page, the right rep should see it in the channel they already have open. For most B2B teams, that channel is Microsoft Teams — not a dashboard nobody checks until Friday.
Leadpipe identifies anonymous B2B website visitors down to the person: verified name, work email, job title, company, and LinkedIn, matched deterministically against Leadpipe’s own identity graph. Route those identifications into Teams and your reps act while the visitor is still on the site — not 48 hours later from a report.
One important 2026 wrinkle before you start: Microsoft is retiring the old Office 365 “Incoming Webhook” connectors inside Teams. The supported path now is Workflows (Power Automate). This guide covers the modern Workflows setup, the legacy connector for teams that still have one, channel routing that keeps a Teams alert channel useful, and how to design an alert a rep can actually act on.
If your team lives in Slack instead, use the companion Leadpipe + Slack visitor alerts guide — the concepts are the same, the plumbing is different.
Three ways to get Leadpipe alerts into Teams
Leadpipe fires a webhook every time it identifies a visitor. Teams can receive that webhook three ways, and the right one depends on how much control you want and whether your tenant still has the old connectors enabled.
| Method | Status in 2026 | Setup effort | Card format | Best for |
|---|---|---|---|---|
| Workflows (Power Automate) | Supported, recommended | 15 min | Adaptive Card | Most teams |
| Legacy Incoming Webhook connector | Deprecated, being retired | 10 min | MessageCard (legacy) | Tenants that still have it |
| Middleware / API | Fully supported | Dev required | Adaptive Card, full control | High volume, custom routing |
The Workflows path is where Microsoft is investing, so build there unless you have a reason not to. The middleware path — a small service that catches the Leadpipe webhook and posts to Teams — gives you the most control over filtering and routing, the same way the direct approach does in the Slack guide.
In one sentence: If you are setting up Teams alerts fresh in 2026, use a Power Automate Workflow, not the old Incoming Webhook connector — the connector is on its way out.
Set up a Teams alert with Workflows (Power Automate)
This is the modern, supported route and it takes about fifteen minutes. No code.
Step 1: Create the flow from the built-in template
- In Teams, go to the channel where alerts should land. Click the ⋯ menu → Workflows.
- Search for and select “Post to a channel when a webhook request is received.”
- Confirm the team and channel.
- Power Automate generates an HTTP POST URL. Copy it. This is your Teams webhook endpoint.
Step 2: Point Leadpipe at the URL
- In Leadpipe, open Settings → Integrations → Webhooks.
- Paste the Power Automate URL.
- Set the trigger to First match so you get one alert per identified visitor, not one per pageview.
- Send a test event and confirm a card appears in the channel.
Step 3: Map the visitor fields into an Adaptive Card
The default template posts raw JSON, which is unreadable. Replace the “Post card in a chat or channel” action’s body with an Adaptive Card that maps Leadpipe’s fields to a scannable layout. A compact version:
{
"type": "AdaptiveCard",
"version": "1.4",
"body": [
{
"type": "TextBlock",
"text": "New visitor identified",
"weight": "Bolder",
"size": "Medium"
},
{
"type": "FactSet",
"facts": [
{ "title": "Name", "value": "@{triggerBody()?['first_name']} @{triggerBody()?['last_name']}" },
{ "title": "Title", "value": "@{triggerBody()?['job_title']}" },
{ "title": "Company", "value": "@{triggerBody()?['company_name']}" },
{ "title": "Email", "value": "@{triggerBody()?['email']}" },
{ "title": "Page", "value": "@{triggerBody()?['page_url']}" },
{ "title": "Time on page", "value": "@{triggerBody()?['visit_duration']}s" }
]
}
],
"actions": [
{
"type": "Action.OpenUrl",
"title": "View LinkedIn",
"url": "@{triggerBody()?['linkedin_url']}"
}
]
}
Adaptive Cards are the Teams equivalent of Slack’s Block Kit. FactSet gives you a clean two-column label/value layout, and Action.OpenUrl turns the LinkedIn profile into a one-click button so a rep never leaves Teams to start researching.
If your tenant still has the old Incoming Webhook connector, the setup is similar but you post a legacy MessageCard payload instead of an Adaptive Card, and each connector is bound to one channel. It works today, but plan the migration to Workflows — do not build anything new on it.
Try Leadpipe free with 500 leads →
What a good visitor alert actually contains
A Teams alert that just says “someone visited your site” is worse than useless — it trains reps to ignore the channel. A good alert answers, in one glance, who, where they work, what they looked at, and whether they matter. Because Leadpipe matches person-level for US traffic, you can populate real names rather than just a company logo.
The fields worth putting on the card:
- Person and title. First name, last name, job title. This is what tells a rep whether it is a buyer, a champion, or an intern.
- Company and domain. So the rep can pull CRM history and check ownership before reaching out.
- The page they hit. A pricing or demo page is a different conversation than a careers page. See what to do when someone visits your pricing page for the follow-up play.
- Time on page and full journey. Duration plus the sequence of pages viewed is your cheapest intent signal.
- LinkedIn URL. One button, one click, straight into research.
- Location. Filter out geographies you do not sell into before the alert ever fires.
Because matches are deterministic — Leadpipe returns a verified person or nothing, independently tested at about 82% accuracy — an alert you receive is one a rep can act on without second-guessing whether the name is a statistical guess. That trust is what keeps the channel alive. If reps learn the alerts are usually right, they respond; if half are wrong, they mute. This is the practical payoff of deterministic over probabilistic matching.
In one sentence: An alert reps trust contains a real person, their title, the page they viewed, and a one-click LinkedIn button — not just a company name and a timestamp.
Channel routing: one team, many signals
The mistake almost everyone makes is dumping every identification into a single channel. Within a week it is noise, and the channel gets muted. Route alerts by intent and ownership instead.
In Teams, routing works a little differently than in Slack. Each Workflow posts to one channel, so you either build a separate flow per channel or use a Switch/Condition step inside one flow to branch to different channels. For most teams, one flow with a condition block is cleanest.
| Channel | What lands here | Who watches it |
|---|---|---|
| Hot Leads | Pricing, demo, or contact-page visits; long sessions | SDRs, AEs |
| Target Accounts | Visits from named accounts on your list | ABM team, named AEs |
| All ICP Visitors | Business-email visitors matching your ICP | SDRs |
| Marketing | Blog and top-of-funnel readers | Demand gen |
| Daily Digest | A once-a-day summary channel | Leadership, RevOps |
For the Target Accounts channel specifically, pair this with tracking when target accounts visit your site so the flow only pings when a domain from your named list shows up — that channel should be quiet and high-signal by design.
Filter by ICP and page so the channel stays alive
Filtering is the difference between a channel reps check and one they mute. In the Workflows path, add a Condition step between the webhook trigger and the “Post card” action. Only alerts that pass the condition post.
A sensible baseline condition for a sales channel:
- Business email only.
emaildoes not containgmail.com,yahoo.com,hotmail.com,outlook.com. Personal-email visitors are rarely buyers. - Minimum engagement.
visit_durationgreater than 30 seconds. Below ~10 seconds is usually a bot or a bounce. - ICP job title.
job_titlecontains one of VP, Director, Head, Chief, Founder, Owner, Manager.
For a dedicated hot-leads channel, tighten it:
- High-intent page.
page_urlcontains/pricing,/demo, or/contact. - Longer session.
visit_durationgreater than 60 seconds.
Two honest caveats worth building around:
- Person-level is a US phenomenon. Leadpipe resolves named individuals for US B2B traffic. Outside the US — the EU, UK, and elsewhere — coverage is lower and often company-level rather than person-level. Do not build a filter that expects a
first_nameon every European visit; branch on company there, and keep regional privacy rules front of mind. - Aim for 5 to 15 quality alerts a day in a sales channel. Fewer and reps stop looking; more and they mute. Tune the thresholds until you hit that band.
If you want branching logic more sophisticated than a single Teams condition — enrichment, scoring, multi-tool fan-out — route the Leadpipe webhook through an automation layer first. The Make.com, n8n, and Zapier recipes all forward a clean, filtered payload into Teams, and the visitor identification API gives developers full control.
Teams vs Slack: which alert setup fits your team
Both work. The choice usually comes down to where your reps already live and how much you want to invest in card design.
| Factor | Microsoft Teams | Slack |
|---|---|---|
| Modern setup path | Workflows (Power Automate) | Incoming Webhook or Zapier |
| Rich card format | Adaptive Cards | Block Kit |
| Routing model | One flow per channel, or Switch step | Zapier Paths or per-channel webhook |
| Legacy risk | Old connectors being retired | Stable |
| Best fit | Microsoft 365 shops | Slack-first orgs |
There is no accuracy or coverage difference between the two — the identifications are identical; only the delivery surface changes. Pick the one your reps have open all day.
Whichever surface you choose, the alert is only as good as the response behind it. Give hot-lead alerts an SLA — first rep to reply in the thread owns the follow-up — and write the visitor to your CRM in parallel so the record exists before the rep opens the notification. The SDR playbook for identified visitors covers what happens after the ping.
FAQ
How fast do Microsoft Teams visitor alerts fire after identification?
Through a Power Automate Workflow, cards typically post within a minute or two of Leadpipe identifying the visitor. A middleware or API setup is faster still, usually a few seconds, because there is no orchestration layer in between. Either is quick enough to reach a rep while the visitor is still on the site, since high-intent sessions usually run several minutes.
Do I need a paid Power Automate plan for Teams webhook alerts?
The “Post to a channel when a webhook request is received” template runs on the Workflows capability included with most Microsoft 365 business plans, and it covers standard visitor-alert volume. If you add heavy branching, premium connectors, or very high run counts, check whether your tenant’s Power Automate licensing needs an upgrade. The Leadpipe side — the webhook that sends the data — is included in your plan.
Should I still use the Teams Incoming Webhook connector?
Only if your tenant already has one and you need something running today. Microsoft is retiring the legacy Office 365 connectors, so do not build new alerting on them. Set new integrations up as Workflows, and migrate any existing connector-based alerts before the retirement date on your tenant.
Can I route different visitors to different Teams channels?
Yes. Use a Switch or Condition step inside one Workflow to branch — pricing and demo visitors to a hot-leads channel, named accounts to a target-accounts channel, everything else to a general channel. For more complex routing, catch the Leadpipe webhook in Make or n8n first and post to Teams from there.
Will Teams alerts show a person’s name for non-US visitors?
For US B2B traffic, yes — Leadpipe resolves named, person-level contacts. Outside the US, coverage is lower and often company-level, so build your card and filters to handle a missing person name gracefully and lead with company context there.
Start routing identified visitors into Teams today
The setup is fifteen minutes: create a Workflow, paste the URL into Leadpipe, map the fields into an Adaptive Card, and add a condition so only ICP-fit, high-intent visits reach the channel. From there your reps see named accounts the moment they engage, act while the buying window is open, and stop relying on a dashboard nobody opens.
Connect it to your Salesforce or CRM in parallel and every alert also leaves a record — so follow-up is one click, not a data-entry chore. See the product overview for how identification works under the hood.
Try Leadpipe free — 500 identified leads, no credit card required.
Related Articles
- Leadpipe + Slack: Real-Time Visitor Alerts
- What to Do When Someone Visits Your Pricing Page
- Track When Target Accounts Visit Your Site
- Automate Visitor Follow-Up with Leadpipe and Make.com
- Leadpipe + n8n Automation
- Leadpipe + Zapier: Automation Recipes
- Leadpipe + Salesforce Integration Guide
- Deterministic vs Probabilistic Matching Explained
- The SDR Playbook for Identified Website Visitors
- Visitor Identification API: Developer Guide




