Skip to content

Account safety

LinkedIn restricts accounts that behave like bots. A customer's account is the asset, so Outvoy protects it before it optimizes for speed. These rules are enforced by the engine, not left to the agent.

Automating LinkedIn goes against LinkedIn's User Agreement, and any automation carries a risk of the account being restricted. The defaults below reduce that risk; nothing removes it. By connecting an account you accept it. See the terms.

Limits and ceilings

Every LinkedIn sender starts with conservative defaults. You can change them per sender, up to hard ceilings the API refuses to exceed (422). Above the risky value restrictions become noticeably more likely, and the console flags it.

LimitFieldDefaultRisky aboveHard ceiling
Invitations per daydailyInvites202540
Invitations per 7 daysweeklyInvites100120200
Messages per daydailyMessages5080150
Profile visits per daydailyProfileViews6080150
Post likes per daydailyPostLikes3050100

Daily limits reset at midnight in the sender's timezone; the weekly invitation limit counts the last 7 days, as LinkedIn does. Messages count campaign messages and inbox replies alike. Each sender shows limits, today's effectiveLimits (warm-up applied) and usage.

Change a sender's limits (any subset; the rest keep their value)
curl -X PATCH https://api.getoutvoy.com/v1/senders/snd_0yUkG9TD \
  -H "Authorization: Bearer $OUTVOY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "limits": { "dailyInvites": 25 } }'

Warm-up

A newly connected sender starts at 30% of its limits and ramps linearly to 100% over 14 days; each cap is rounded down, and never below 1 unless you set it to 0. With the defaults, that's 6 invitations on day one and 20 from day fourteen. Turn it off with PATCH /v1/senders/{senderId} and { "warmupEnabled": false } for accounts that already do outreach every day.

Working hours and pacing

  • By default a sender acts Monday to Friday, 09:00–18:00, in Europe/Madrid. Set its own schedule: an IANA timezone, days as ISO weekdays (1 = Monday … 7 = Sunday) and start/end as HH:mm.
  • At most one action per sender at a time.
  • A gap of 2–6 minutes after each action that reached LinkedIn before the sender acts again.
  • When a campaign uses several senders, leads are spread round-robin across them and each one keeps its own limits.
Working hours (replaces the whole schedule)
curl -X PATCH https://api.getoutvoy.com/v1/senders/snd_0yUkG9TD \
  -H "Authorization: Bearer $OUTVOY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "schedule": { "timezone": "Europe/Berlin", "days": [1, 2, 3, 4, 5], "start": "08:30", "end": "17:30" } }'

When an action can't run now, it moves to the sender's next possible slot and the lead's enrollment says why in waitingReason, for example: “Next: send invite — sender's daily invite cap reached (20/20), next slot Tue 09:00 Europe/Madrid”.

What pauses a sender

CauseWhat happensEvent
LinkedIn reports a limitThe sender stays active but rests until the next local midnight (or later if LinkedIn says so); pausedUntil says when. Then it acts again on its own.sender.paused (reason linkedin_limit, until), then sender.resumed (reason hold_expired)
The session breaks (sign-out, checkpoint)Status needs_reconnect: nothing runs until the owner reconnects through the hosted page (POST /v1/senders/connect-link with reconnectSenderId).sender.needs_reconnect (reason session_expired)
LinkedIn restricts the accountStatus restricted: nothing runs until you act.sender.needs_reconnect (reason account_restricted)
You pause itOnly an active sender can be paused; nothing runs until you resume it.sender.paused (reason paused_by_user), sender.resumed (reason resumed_by_user)
Your plan allows fewer LinkedIn sendersThe newest extra senders are paused (“Paused: your plan allows N LinkedIn senders”), never deleted or disconnected. They can't be resumed or used for search until the plan has room (402).sender.paused (reason plan_limit)

A temporary LinkedIn error is retried after 2 and then 4 minutes; a third failure ends that lead's sequence with linkedin_error.

Rules every campaign keeps

  • A reply stops that lead's sequence immediately, wherever it is.
  • Nobody is messaged unless they are a 1st-degree connection of the sender: a message step needs an invite step before it, or a connected_only campaign.
  • At most one invite step per campaign. An invitation nobody accepted is withdrawn after the campaign's acceptanceWindowDays (1–30, default 14), and the lead completes with not_accepted.
  • Nobody is enrolled who is blocklisted or already live in another running or paused campaign of the workspace. The blocklist is checked again before every visible action, so blocking someone after launch ends their sequence (failed, stopReason blocklisted).
  • Invitation notes over 300 rendered characters, messages over 8,000, or texts with a missing variable are caught in preview and never sent.
  • With settings.secondChance, another sender of the pool may invite someone who hasn't accepted — each sender within its own limits, working hours and warm-up, and never after the acceptance window (counted from the first invitation) has closed. Every other invitation is withdrawn as soon as they accept one, and all of them when the window ends, even if the lead's sequence ended meanwhile.
  • Someone already connected is never invited. By default (ifAlreadyConnected: "continue") the sequence goes on without the invitation; skip_lead ends their sequence with nothing sent (already_connected).

Responsible use

Limits protect the account; how you use it protects the people on the other end. The acceptable use rules are part of the terms. In practice:

  • Only connect LinkedIn accounts you own or are authorized to use, and keep each one's activity close to what its owner would do by hand.
  • Write to people about their professional role, say who you are and why you're writing, and stop when they ask. Add them to the blocklist so no campaign reaches them again.
  • Have a lawful basis for the people you import, tell them where you got their data when the law requires it, and never target children or sensitive personal data.
  • Rehearse with sandbox senders and preview before an agent launches anything real.

Rehearse in the sandbox

Sandbox senders simulate LinkedIn and never touch a real account. They run the same engine on a compressed clock (a simulated day per real minute: step delays and the acceptance window shrink the same way), with the ceilings as their limits, no warm-up, no working hours and no pacing gap. They still take one action at a time (the engine looks for due work every 5 seconds), so a small campaign shows invitations, acceptances, messages and replies within minutes.