Back to resources

How to Prevent Duplicate LinkedIn Outreach Across Campaigns

Match prospects by profile URL, check prior activity, assign one sender and test overlap protection before launching LinkedIn campaigns.

Two LinkedIn outreach campaign lists showing one shared prospect assigned to a single sender

Before either campaign sends, compare its proposed prospects with every active campaign and conversation record, then give each shared prospect one outreach owner. Match by LinkedIn profile URL rather than name alone. If a prospect already has an invitation or conversation in progress, keep that sender responsible unless the team deliberately transfers ownership. Treat any software duplicate check as a backup to this decision—not as proof that different sending accounts cannot contact the same person.

Match prospects before either campaign sends

Put proposed prospects from both campaigns in one working list. For each person, record the profile URL, proposed campaign, sending account and assigned owner. Remove tracking parameters and trailing slashes when comparing URLs; flag uncertain matches for a person to review. Similar names or companies are not enough to establish that two rows are the same person. ZenMode’s API documentation says its lead identity matching collapses URL case, tracking parameters and trailing slashes, but that documented API behavior is not a substitute for checking the audiences your team will actually import.

Check the matched person’s history before deciding which row to keep. ZenMode’s getting-started guide points to contact status on each campaign’s detail page and conversations in the Inbox. Look for a pending invitation, earlier message, reply or active handoff; a conversation matters even if the prospect is absent from the other proposed list. ZenMode also says it resolves contacts from a Sales Navigator search URL to standard LinkedIn profiles before taking action. If your proposed list still contains a Sales Navigator lead URL and another contains a standard profile URL, confirm the identity rather than assuming the strings will match in your worksheet.

Give each overlapping prospect one sender

In a fictional two-sender example, Sender A’s campaign already has a pending invitation to a prospect at https://www.linkedin.com/in/alex-river-example/. Sender B has that same fictional URL on a proposed list for a different campaign. The decision is to leave the existing invitation with A, remove the prospect from B’s proposed list and record A as the outreach owner. The working record should include the profile URL, A’s sending account and campaign, the pending-invitation status, the decision date and who will handle a reply. B should not send a second invitation or message simply because B’s campaign has a different audience or template.

If neither sender has contacted the prospect, choose one owner using the account that should handle the relationship and remove the other row before launch. If both have already contacted the person, stop new outreach from both campaigns while an owner checks the threads and decides whether any reply is appropriate. Do not erase the second activity from the working record: the owner needs that context to avoid an awkward follow-up. If the campaigns represent different clients, resolve who is authorized to contact the prospect before choosing an account.

This overlap check starts after audience selection. If you still need to build a focused search, use the Sales Navigator prospect-list guide, then compare its resulting prospects with existing outreach before sending.

Test duplicate behavior before relying on it

ZenMode supports multiple LinkedIn sending accounts. Its API documentation says a campaign excludes people you have contacted before by default, and while that setting (exclude_previously_messaged) is on, the duplicate check looks across your entire ZenMode account, not just the campaign you are adding to; when it is off, the check covers only that campaign. A blocked addition returns already_exists with a scope value that says which rule applied. That describes API additions, so test the dashboard, CSV or search-import path you actually use, and any separate logins or workspaces, before relying on it.

Run a controlled trial before live outreach. Choose a test profile that is already present in a known campaign, note its profile URL and status, and use the same import method, destination campaign setting and sending-account arrangement you plan to use. Do not start sending to discover whether a duplicate is blocked. ZenMode says Create Campaign saves and auto-starts a campaign if the desktop app is open, so resolve overlap before that launch action; if you cannot stage a trial without sending, keep the manual exclusion rule and ask ZenMode to confirm the behavior for your setup.

What to verify in a controlled overlap trial
Test arrangementResult to inspectDecision
Same sending account, two campaignsWhether the intended import rejects or admits the known profileRemove the overlap manually unless the observed behavior reliably covers this workflow.
Different sending accounts in the same ZenMode loginWhether a record under the first account blocks the proposed addition under the secondKeep one owner and exclude the other row unless cross-account protection is verified.
Separate logins or workspaces, if your team uses themWhether either side can detect the other’s existing recordUse a shared ownership record and pre-send comparison if detection is not verified.

Sources

  1. ZenMode API Documentationzen-mode.io
  2. ZenMode Getting Started Guidezen-mode.io
  3. ZenMode Featureszen-mode.io

Get more leads from LinkedIn, with less effort.

Enter your website, and our software automates a full B2B LinkedIn outreach sequence for you. The perfect business growth tool for GTM professionals, Startups, Agencies and Sales teams. 14-day free trial on Practitioner, Master and Dojo.

Try ZenMode