How InMail delivery is verified
When WarmySender sends a LinkedIn InMail on your behalf, every successful send is verified against Unipile's response before any counter or dashboard tile is incremented. This guide explains how that verification works and what you should expect to see on the dashboard.
How it works
LinkedIn InMail is an off-network message that goes through the recipient's LinkedIn inbox even if you're not connected. Unipile is the API gateway WarmySender uses to drive LinkedIn actions, and Unipile's chats.create endpoint is what creates an InMail. On a real send, Unipile returns a chatId — the unique identifier of the InMail thread on LinkedIn's side. WarmySender treats the presence of that chatId as proof of delivery: no chatId means the InMail did not actually queue on LinkedIn, even if Unipile returned an OK status code.
This matters because LinkedIn rejects InMail sends for several legitimate reasons: the recipient might not be eligible (no Open Profile, no Sales Navigator credits, account paused), the daily / weekly cap might be reached, the network might have hiccupped, or the underlying LinkedIn session might need a refresh. In any of these cases, Unipile may report 'success' from a wire-protocol standpoint while the InMail itself was silently dropped. WarmySender's contract with you is that the dashboard counter and the per-account InMails-Sent-Today tile only advance when the chatId proves the message landed.
What you'll see on the dashboard
- InMails Sent — Counts only chatId-verified sends. If you see this counter at zero while your campaign is active, it means we attempted but Unipile didn't acknowledge with a chatId. Check the Account → Health tile for cap exhaustion or eligibility issues, and check the campaign's most-recent skipped events for the specific reason.
- InMail Replies — Counts only inbound messages on a chatId-verified thread. Reply rate is computed against verified sends, not attempted sends — your reply % is honest.
- [InMail] account=X recipient=Y chatId=Z deliveryProven=true|false — A structured server log that ops can grep when investigating a specific user complaint.
What to do if your InMail count looks lower than expected
1. Check the campaign's per-prospect skipped events. If many show 'inmail_no_chatid', the underlying account or eligibility check is failing — review your LinkedIn account's Sales Navigator subscription status, InMail credits remaining, and the recipient's Open Profile flag (if applicable).
2. Check your account's daily InMail cap on the LinkedIn Accounts page. WarmySender ramps InMail caps over the first 4 weeks per Unipile's account-safety guidance.
3. If counts look right but your delivery rate is unusual, contact support — we'll pull the specific chatId trail for your account and confirm what Unipile saw on each attempt.
Why we don't count phantom sends
A platform that counts every attempted send (chatId or not) as a successful send produces an inflated dashboard, an incorrect cost-per-reply ratio, and a false sense of throughput. Worse, when a customer pays for Sales Navigator credits, they're entitled to know which credits were actually consumed and which were silently dropped. We treat InMail sends like financial transactions: no chatId, no count.