How Agencies Run Linkedin and X Watchlists for Multiple Clients

It's Monday morning, and the shared #signals channel in your agency Slack is a mess. Client A's champion just posted about a budget review. Client B's prospect liked a competitor's launch. Both land in the same thread, and the AE covering Client B replies to the wrong deal. Or worse, someone on your team followed those prospects from the agency Linkedin account last quarter, and a few of them blocked you.

Sales and GTM agencies hit this pattern the moment they watch Linkedin and X activity for more than one customer. The signals are useful, but mixing them across clients is not.

I work on MultiFollow, so keep that in mind as you read. We built an anonymous watchlist for Linkedin and X (Twitter) accounts. You add the people and companies each client cares about. We alert you when they post, comment, or (on Linkedin people) like something, usually within a couple of seconds. Nobody on the list is notified, because we never follow or connect. This post walks through how agencies keep those alerts separated by client, load each client's list from a CSV, share access with the right roles, and pick a plan that fits.

When you're running watchlists for several customers, two things break first. Delivery mixes Client A and Client B into one Slack webhook or one Clay table, so your delivery lead spends time sorting who owns which alert. And manually following prospects from an agency account works until Linkedin throttles you, or until a prospect notices and wonders why a random agency is in their network. What you need instead is a setup where each client's trackers land in that client's channel, the list loads from one file per client, and your ops person isn't the only one who can invite an AE.

Give each client their own Slack channel

Account-level Slack and API webhooks exist, and they receive every tracker on the team. That's fine for a single in-house sales team, but for an agency it mixes the clients.

Each tracker can also carry its own Slack webhook URL and API webhook URL. You set those on create, on edit, in the bulk CSV, through the API, or through MCP. When a tracker has its own URL, that URL wins. The alert goes there, and the account-level webhook is not called for that tracker. Trackers without a per-tracker URL keep using the account-level ones.

Our docs recommend this exact pattern for agencies: each customer of your agency gets its own Slack channel. The same idea works for Clay. Prospect tables for Client A get one webhook, competitor tables for Client B get another.

For each client, create a Slack channel (or ask them for one in their workspace), add an Incoming Webhook for that channel, and store the URL next to the client's tracker list. When you create or import those trackers, paste that Slack URL on every row. Do the same with a Clay or n8n webhook if the client wants rows in their stack instead of Slack, or as well as Slack.

On paid plans that include webhooks, alerts usually land within a couple of seconds, and up to about a minute when things are congested. We check every second. Email still works on every plan if you want a backup, but agencies almost always want Slack or an API webhook so the signal reaches the person running that account.

One API webhook looks like this when a tracked Linkedin person posts. The example comes from our notification docs.

{
  "platform": "linkedin",
  "profile_url": "https://www.linkedin.com/in/erikatrautman/",
  "query": "URL: https://www.linkedin.com/in/erikatrautman/. Track posts. Track comments. Track likes.",
  "datetime": "2025-01-19T05:52:00Z",
  "link": "https://www.linkedin.com/posts/erikatrautman_vice-president-strategy-and-business-operations-activity-7272270503808000000-OxBb",
  "content": "I've got two more great leadership positions I'm filling! I am so inspired by the vision and the culture here at Sprout. So come join me to transform how companies leverage social media to connect with their customers.",
  "activity_type": "post"
}

activity_type is post, comment, or like. Likes arrive with empty content, so if a client's flow filters on keywords in the text, leave likes off for that tracker. For the full destination walkthrough across Slack, Clay, n8n, and Zapier, see how to route MultiFollow alerts.

Load each client's list from a CSV

Once routing is clear, the next bottleneck is creating trackers one by one. An agency with three clients and twenty people per client shouldn't click Create sixty times.

Bulk CSV import is on Business and above. The file needs two columns: platform (linkedin or twitter) and profile url (the header includes the space). X rows still use twitter as the platform value. Optional columns set posts, comments, and likes, included and excluded keywords (up to 10 each, 2 to 200 characters), plus a per-row api webhook url and slack webhook url. Max file size is 10 MB.

A two-client import might look like this. Client A's Slack webhook goes on their rows, and Client B's goes on theirs.

platform,profile url,track posts,track comments,track likes,message included keywords,message excluded keywords,slack webhook url
linkedin,https://www.linkedin.com/in/client-a-champion/,true,true,true,,,https://hooks.slack.com/services/CLIENT_A/...
linkedin,https://www.linkedin.com/in/client-a-buyer/,true,true,false,"pricing,budget,RFP",webinar,https://hooks.slack.com/services/CLIENT_A/...
linkedin,https://www.linkedin.com/company/client-a-competitor/,true,false,false,"launch,pricing",,https://hooks.slack.com/services/CLIENT_A/...
linkedin,https://www.linkedin.com/in/client-b-champion/,true,true,false,,,https://hooks.slack.com/services/CLIENT_B/...
twitter,https://x.com/client-b-prospect,true,true,false,,,https://hooks.slack.com/services/CLIENT_B/...

A few column choices matter for agencies. Keep likes off for most people. They have no text, so keywords can't quiet them, and a long list will flood the client's channel. Turn likes on only for the few people whose likes the AE would act on. On Linkedin company and showcase pages, set comments and likes to false. Those pages only alert on posts. On X we track posts and replies, not likes (private since 2024).

If you want the column map and the mistakes that make a row fail, the bulk CSV import guide covers it end to end.

Team roles and plan sizing

Agencies also need more than one login. Team management is on Business and above. You set up the organization first (name, address), then invite people by email.

There are three roles. Admin handles billing, the team, creating and deleting alerts, and notifications. Manager does team, alerts, and notifications, but not billing. Reader only gets notifications. In practice, the person who owns the MultiFollow subscription is Admin, the ops lead who loads CSVs and sets webhooks is Manager, and the AEs who only need Client A's channel can stay as Reader, or just live in Slack and never log in.

Invite by the email they'll use to accept. Pending invites can have their role changed or deleted before they join. When someone leaves the agency, remove them from the team so they stop seeing alerts. Readers don't create trackers, which is usually what you want. The people closest to the client see the Slack channel. The people who maintain the watchlist keep the dashboard.

Plans are priced by how many Linkedin and X accounts you track, not by credits. Slack, API webhooks, bulk CSV, and team features start on Business. These are the limits on our pricing page as of October 2026.

Plan Price Linkedin X Slack, API webhooks, bulk CSV, team
Free $0 1 2 No
Essential $19/mo 5 10 No
Business $79/mo 25 50 Yes
Enterprise $199/mo 100 200 Yes
Agency (Multi-Client) Custom Custom Custom Yes (multi-client management, advanced support)

Free and Essential only deliver email, so they won't do per-client Slack routing. Use Free to pilot one Linkedin person and two X accounts for a single client, prove that a real post or comment lands, then move up. Business covers 25 Linkedin and 50 X trackers with Slack, webhooks, CSV, and team seats, which is enough for a few small client lists if you're careful. Enterprise jumps to 100 Linkedin and 200 X. Business support is listed as basic on the homepage, while Enterprise and Agency list advanced.

When the roster won't fit, or when you need multi-client management beyond a single Business or Enterprise seat, that's the Agency plan. Pricing and tracker volumes are custom. Talk to us about how many clients and trackers you're running.

Linkedin is usually the limit you hit first. If three clients each want 40 Linkedin people, you're past Business and looking at Enterprise or Agency, unless you rotate the list to open deals and renewals.

What it won't do for a client

A few limits show up in every agency kickoff, so I'll say them once.

We don't track job changes. If a client's champion moves companies, we won't flag the title change. You'll only see it if they post or comment about it and your keywords match. Keep a job-change tool or CRM enrichment for that part of the retainer.

Linkedin company and showcase pages only alert on posts. Comments and likes need a Linkedin person tracker. On X we track posts and replies, not likes. And Free and Essential have no Slack or API webhooks, so any agency routing setup needs Business or above.

We also don't do open keyword listening across the web. If a client wants alerts whenever anyone mentions their brand on Reddit or Facebook, that's a different product (KWatch.io), because MultiFollow only watches the accounts on a list.

Start with one client, then split the rest

Pick the client you'd least like to mix with the others. Create their Slack channel (or get their webhook), add one high-value Linkedin person on the MultiFollow free plan (1 Linkedin and 2 X, email only, no card), and wait for a real post or comment. When that lands, upgrade to Business, import that client's CSV with the per-row Slack webhook filled in, invite your ops lead as Manager, and only then add the next client with a different webhook. When the roster outgrows Business or Enterprise, ask us about Agency.

Julien, Product Manager at MultiFollow