Chapter 08

Troubleshooting & Prevention

---

Last updated 8 August 2026

---

Microsoft 365: warnings and sending suspension

Why Microsoft flags your account

When you first connect Leadmeister to a Microsoft 365 mailbox and begin sending outreach emails, your mailbox has no established reputation for bulk outbound volume. Microsoft's Exchange Online Protection (EOP) and Defender systems treat sudden spikes in outbound message volume as a signal of a compromised or spamming account. This can trigger warnings, rate limiting, or full outbound sending suspension — even when the emails are legitimate.

This is not a Leadmeister problem specifically. It affects any tool that sends email at volume through a personal or business M365 mailbox that has historically been low-volume.

Gradual volume build-up — the most important prevention step

The single most effective way to avoid Defender blocks is to ramp up sending volume slowly. Starting at high limits the moment you connect your mailbox is the most common cause of suspension.

Recommended ramp schedule:

  • Week 1: 10–20 emails per day
  • Week 2: 30–50 emails per day
  • Week 3: 75–100 emails per day
  • Week 4 onwards: increase by 25–30% per week until you reach your target volume

You control the daily email limit in Leadmeister under Settings → Email. Start low and increase gradually. Microsoft's sending reputation builds over 4–6 weeks of consistent, engaged sending.

Recommended Microsoft 365 Defender policy settings

Your IT administrator can configure outbound spam policies to give you more headroom and ensure you receive a warning before any suspension occurs, rather than being blocked silently.

  1. Sign in to [Microsoft 365 Defender](https://security.microsoft.com)
  2. Go to Email & Collaboration → Policies & Rules → Threat Policies → Anti-spam
  3. Click "Anti-spam outbound policy (Default)" or create a custom outbound policy for your sending mailbox
  4. Under "Automatic forwarding", set to Automatic — system controlled
  5. Under "Notifications", enable "Notify these users and groups if a sender is blocked for sending outbound spam" and enter your admin email address. This ensures you get an alert before suspension rather than discovering it after a run stalls.
  6. Set "External message limit" to match your intended daily send volume (e.g. 500). The default is often 500/day but confirm it matches your plan's limits.
  7. Save the policy

Full guidance from Microsoft: [Configure outbound spam filter policies](https://learn.microsoft.com/en-us/defender-office-365/anti-spam-outbound-policy-configure)

How to unblock a restricted sender

If your mailbox has been suspended from sending, Microsoft places it in the "Restricted entities" list. You must manually remove it before sending resumes — Leadmeister cannot do this automatically.

  1. Go to Microsoft 365 Defender → Email & Collaboration → Review → Restricted entities
  2. Find the blocked mailbox address in the list
  3. Select it and click "Unblock"
  4. Confirm the action. Sending should resume within 1 hour.
  5. Reduce your daily send limit in Leadmeister before restarting to avoid immediate re-suspension

Direct link: [security.microsoft.com/restrictedentities](https://security.microsoft.com/restrictedentities)

Microsoft documentation: [Remove blocked users from the Restricted entities page](https://learn.microsoft.com/en-us/defender-office-365/removing-user-from-restricted-users-portal-after-spam)

Additional prevention measures

  • Use a dedicated sending mailbox (e.g. outreach@yourcompany.com) rather than your primary inbox. This isolates any reputation impact from your main business email.
  • Ensure your domain has SPF, DKIM, and DMARC records configured correctly. Emails sent without these records are far more likely to be flagged. Check with your IT team or use [mail-tester.com](https://mail-tester.com) to verify.
  • Monitor your Microsoft 365 admin centre ([admin.microsoft.com](https://admin.microsoft.com)) regularly for any alerts under Health → Message centre.

---

LinkedIn: why connection requests take so long

LinkedIn connection requests from a Leadmeister run are not sent all at once. They are deliberately paced with a random 7–12 minute gap between each request, and only during business hours (Monday–Friday, 9am–5pm in your local timezone).

This pacing is intentional. LinkedIn's systems actively monitor accounts for automated or bulk behaviour. An account that sends 50 connection requests in an hour looks very different — and far more suspicious — than one that sends the same 50 requests spread across several working days at human-like intervals. Pacing is the primary defence against LinkedIn restricting or permanently suspending your account's ability to send invitations.

What this means in practice:

  • A run targeting 20 leads with LinkedIn connections will take roughly 2.5–4 hours of sending time, spread across working days
  • If you start a run late in the afternoon, some connections may not go out until the next business day
  • The run status will show as "In progress" while connections are queued — this is normal
  • You can see the estimated completion time and next scheduled send in the run detail view

---

Why a run might fail or stall without an error message

Leadmeister processes each lead as an independent background job. If a job encounters an ambiguous response from LinkedIn or Microsoft — not a clear error, but not a clear success either — the system cannot always distinguish between "the action worked" and "the action was silently rejected".

LinkedIn in particular does not always return a clear failure code. A connection request can be:

  • Accepted immediately and queued for delivery
  • Silently dropped by LinkedIn's anti-spam filters without any error code returned
  • Quietly rate-limited so the request never registers

In these cases Leadmeister records the attempt as sent (because the API call succeeded technically) but the connection never appears in the recipient's inbox. There is currently no way for Leadmeister to detect this after the fact. This is a limitation of LinkedIn's API, not the platform.

If you notice a run completing but fewer connections appearing in LinkedIn than expected, it is likely some requests were silently dropped. Reducing your weekly connection limit and spreading requests across more days reduces the likelihood of this happening.

---

LinkedIn account restrictions and blocking

LinkedIn actively enforces limits on automated outreach. If their systems detect behaviour that looks automated or exceeds their internal thresholds — which LinkedIn does not publish — they can restrict your account in several ways:

  • Temporary invitation sending limit — you see "You've reached the weekly invitation limit." This typically lifts after 7 days.
  • Silent CAPTCHA — LinkedIn presents a CAPTCHA behind the scenes that the API cannot solve. The connection request appears to succeed but is never delivered.
  • Account review — LinkedIn may ask you to verify your identity or phone number before restoring full sending.
  • Permanent invitation restriction — in severe cases, the ability to send connection requests is removed permanently from the account.

Signs that your account may be restricted:

  • Connection request counts on your LinkedIn profile stop increasing even though Leadmeister shows runs completing
  • Pending invitations sent counter in LinkedIn stays at zero
  • You receive an email from LinkedIn about "unusual activity"

If you suspect a restriction, check your LinkedIn account directly before starting another run. Continuing to send while restricted consumes your weekly quota and can worsen the restriction.

How to reduce restriction risk

  • Keep connection requests below 100 per week. LinkedIn doesn't publish exact limits; 50–80 per week is the widely-cited safe estimate from the automation community, not an official figure.
  • Only connect with people who are likely to accept. Low acceptance rates signal spam-like behaviour to LinkedIn.
  • Ensure your LinkedIn profile looks complete and genuine — a sparse profile attracts more scrutiny for connection requests.
  • Do not run Leadmeister LinkedIn outreach at the same time as other LinkedIn automation tools on the same account.

---

Why you cannot send a follow-up message with every connection request

LinkedIn's API supports sending a short personalised note (up to approximately 300 characters) with a connection request. Leadmeister uses this for AI-personalised connection notes.

However, longer follow-up messages — the kind you might write manually after connecting — can only be sent once the connection is accepted. LinkedIn does not provide an API endpoint to send a full InMail-style message at the point of sending a connection request.

This is a LinkedIn platform restriction, not a Leadmeister limitation. It applies to all third-party tools that use the LinkedIn API.

How Leadmeister handles this:

  • The AI-personalised connection note (short, ~2–3 sentences) is sent with the request
  • Once a connection is accepted and LinkedIn notifies Leadmeister, a follow-up message can be queued automatically (depending on your run configuration)
  • If you want to send a longer initial message immediately, you would need to do this manually through LinkedIn's native interface

---

Common error messages

Authentication / sessions

#### "Clerk: Handshake token verification failed"

Backend couldn't verify your session JWT. Usually means the Clerk instance on the frontend doesn't match the Clerk instance on the backend (dev vs. production key mix-up, or a stale browser cookie).

Fix:

  1. Clear site data (F12 → Application → Clear storage → Clear site data)
  2. Sign in again
  3. If it persists, contact support — the deployment's Clerk keys likely need realigning

#### "Authentication required" (401)

No active session. Sign in again. Sessions auto-refresh, so seeing this after being signed in usually means the cookie was cleared or the session expired.

#### "Your seat has been suspended by your organisation admin" (403 SEAT_SUSPENDED)

An org admin has paused your seat. Read-only access remains but you can't take any actions. Contact your admin.

Connections

#### "Connect Zoho CRM first" / "No CRM connected"

You're trying to use a feature that needs a CRM. Go to Connections and connect Zoho, Pipedrive, or HubSpot.

#### "Token expired — please reconnect"

The OAuth token for a provider has expired. Open Connections, click Disconnect then Connect on the affected provider.

#### "No Zoho views available. Please connect Zoho CRM first."

The backend couldn't list your Zoho views. Check:

  1. Zoho connection is green on the Connections page
  2. You have at least one custom view defined on the Leads module in Zoho
  3. If Zoho is connected but still no views, try disconnecting and reconnecting

#### "Failed to start [CRM] connection — no redirect URL returned"

The OAuth handshake with the CRM failed before the redirect URL was generated. Usually a misconfigured redirect URI in the CRM app registration. Contact support if this persists.

#### "Push to CRM failed"

Common causes by provider:

  • Zoho: expired token (reconnect), or a field value that doesn't match Zoho's field type (e.g. full ISO timestamp in a date field)
  • Pipedrive: scope mismatch on the Pipedrive app (contacts:write needed) — reconnect after confirming scopes in your Pipedrive Marketplace settings
  • HubSpot: industry value not in HubSpot's enum (silently skipped), or a custom property (like linkedin_url) not created on your portal

Runs and outreach

#### "No Zoho views specified"

The run tried to start but no views are selected in Run Setup. Pick at least one view.

#### "Email usage limit reached (X/Y)"

You've hit your daily email cap for your plan. Either wait until tomorrow (daily reset) or upgrade your plan.

#### "LinkedIn usage limit reached"

You've hit your weekly LinkedIn connection cap. This resets on Monday. You can adjust your weekly limit in Settings → LinkedIn.

#### "Microsoft 365 token expired mid-run"

The run errored partway through because your M365 session died. Reconnect Microsoft 365 on the Connections page; the already-processed leads aren't retried automatically.

#### "Run was cancelled before pickup"

You cancelled a queued run before the worker started processing it. Safe — nothing was sent.

#### "Too recent" (lead skipped)

The lead already received outreach in the last 14 days. Skipped to avoid repeat contact. If this is wrong, reset Last_Outreach_Date on the lead record in Zoho.

#### "Lead has replied" (skipped)

The lead's email thread has an Incoming direction marker in Zoho — they've replied and shouldn't be emailed again.

Prospecting

#### "You've used all N prospect searches on your plan this month"

Monthly searches quota exhausted. Upgrade plan or wait for next month.

#### "No results"

Search returned zero companies. Loosen filters — start with fewer constraints and narrow progressively.

Billing

#### "Stripe rejected the plan change"

The admin tried to change a member's plan but Stripe returned an error. Common causes: no active Stripe subscription, a plan without a stripePriceId configured, or the payment method on file failed.

#### "An invitation already exists for this email"

You tried to invite someone who's already in the pending invitations list. Cancel the existing invite first or ask the invitee to check their spam for the original email.

#### "You can't remove yourself from your own organisation"

Admins can't delete their own membership. Transfer ownership first.

Generic

#### "Failed to save"

Settings PATCH failed. Usually a validation error (e.g. exceeded max reference URLs for your plan). Try adjusting the value and saving again.

#### "Something went wrong"

Generic fallback. Usually transient — retry generally works. If it persists, contact support.

---

Contacting support

If an issue can't be resolved through the steps above, reach the Leadmeister team via:

  • Email: support@leadmeister.ai — for general questions, billing, or anything that needs a human
  • Contact form: available via the Contact button in the left sidebar (signed-in users) or the Contact link in the site footer

Include as much context as possible: what page you were on, what you clicked, the exact error message or behaviour, and (if relevant) your run ID from the Dashboard.