Why my LinkedIn campaign sometimes sends outside my chosen hours (and how we fix it)
WarmySender's 4 pillars — cold emailing, email warmup, LinkedIn outreach, and multichannel — all respect a campaign's sending window. This guide explains how the LinkedIn sending window works, why a small subset of LinkedIn campaigns occasionally queued sends outside the chosen hours before April 27, 2026, and how that issue is now resolved.
What the sending window is:
Every campaign has four schedule controls:
• Start hour — the earliest time of day (in your campaign's timezone) when sends are allowed (e.g., 9 AM)
• End hour — the latest time of day when sends are allowed (e.g., 5 PM)
• Schedule days — which days of the week sending is allowed (e.g., Mon/Tue/Wed/Thu/Fri)
• Timezone — the IANA timezone (e.g., Asia/Kolkata, Europe/London, America/New_York) used to interpret the start/end hours
For example, a campaign set to 'Mon-Fri 9 AM to 5 PM Asia/Kolkata' will only send between 9 and 5 IST on weekdays. Outside those hours, the scheduler holds the job and clamps it forward to the next valid moment within the window.
Why sending only inside the window matters:
LinkedIn's automation-detection systems weigh many signals. One of them is the time-of-day pattern of your account's activity. Per Unipile's published guidance (https://developer.unipile.com/docs/how-to-create-outreach-sequence), invitations and messages should be 'distributed on working days' at 'random intervals' — and Unipile assumes that 'working days' implies normal business hours. A connection request that fires at 4 AM looks unmistakably automated, even if the daily/weekly cap is respected. Sending strictly inside the user-configured window is therefore not just a UX preference — it is part of staying invisible to LinkedIn's automation detection.
The issue we found and fixed on April 27, 2026:
WarmySender's scheduler runs both email and LinkedIn jobs through a single unified engine. The email branch of that engine has always called a function called `clampToSendingWindow` that re-aligns any job whose computed run-time falls outside the user's window. The LinkedIn branch was supposed to call the same function. Due to a copy-paste omission when the unified engine was first built, the LinkedIn branch only enforced the day-of-week (e.g., 'don't send on Saturday') but skipped the hour-clamp ('don't send before 9 AM or after 5 PM').
The practical impact:
In the seven days leading up to the fix, roughly 134 LinkedIn jobs across the entire platform (about 0.6% of total LinkedIn jobs) queued at hours outside their campaign's chosen window. Most of these were a few hours off — a 5 PM cutoff that became a 6 PM send, or a 9 AM start that was nudged back to 8 AM by random jitter. The legacy LinkedIn-only scheduler enforced the window correctly, so older campaigns were unaffected. Campaigns sending within strict, narrow windows (e.g., London 10 AM-4 PM) were affected the most.
The fix:
The LinkedIn branch of the unified scheduler now calls `clampToSendingWindow` immediately before every job is queued, identical to the email branch. We added a regression test that asserts every queued LinkedIn job's run-time falls within the campaign's window. No backfill is needed — historical sends already happened — but every send going forward will be inside your chosen hours.
How to verify your campaign respects your window:
- Open your campaign in the LinkedIn dashboard.
- Look at the schedule pill on the campaign card — it shows your active days and window in your timezone (e.g., 'Mon Tue Wed Thu Fri 9-17 IST').
- Look at the 'next scheduled send' indicator on the campaign card. It should always show a time inside your window.
- If you want to spot-check historical sends, open the campaign analytics tab and review the timestamps in the recent activity log.
What to do if you notice a send outside your window:
It is very unlikely after April 27 — the regression test runs on every deploy. But if you do notice an out-of-window send, please email [email protected] with the campaign name, the date and time of the send, and the configured window. We will investigate the specific row.
Account safety always wins:
Clamping a send forward into the window can never accelerate it. The scheduler only ever defers a job, never advances it past its earliest legal time. So this fix slightly reduces total daily volume on the affected campaigns; nothing about it increases LinkedIn API call volume. That is consistent with WarmySender's account-safety-first philosophy: every change must either reduce risk or keep it constant.
For the full LinkedIn safety model — invites, messages, InMails, profile views, ramp curves, and per-account caps — see the 'How LinkedIn account safety limits work' guide below.