LinkedIn is the channel we get asked about most by mid-market broker agencies. Producers want to send connection requests + InMails + DMs from their own personal LinkedIn account as part of the same multi-channel cadence as email, SMS, and voice.
Round 12 progress: the dispatch layer is now wired through Unipile (a third-party LinkedIn-API gateway that doesn't require LinkedIn Marketing partner status). When `UNIPILE_API_KEY` + `UNIPILE_ACCOUNT_ID` are both set in environment, channel=`linkedin` flips from log-only to real send via `lib/outbound/linkedin-unipile.ts`. The hooks are: `sendLinkedInMessage()` for 1st-degree DMs and `sendLinkedInConnection()` for new-connection invites.
Honest scope today: the brokers table doesn't yet carry a `linkedinUrl` column, so until that field is captured during contact import, dispatch falls back to log-only with a `skippedDispatch: recipient.linkedinUrl missing` reason. Adding `linkedinUrl` to the contact-import flow is the next product step. Once both pieces land — env config + linkedinUrl on the recipient — the channel goes live without further code changes elsewhere.