Boost Outreach Efficiency with Messaging and Email Automation
Let your users build multi-step sequences across LinkedIn, WhatsApp and email inside your app, with every message sent from their own account.
Key Features of Messaging and Email Automation
Give your app the building blocks of every sequence: messages, emails, LinkedIn InMails and voice notes, invitations with status tracking, and post reactions, on behalf of each authenticated user.
Send Message
Send messages in existing chats or start new conversations on LinkedIn, WhatsApp, Instagram and Telegram. Reply in a chat with one call, or open a new chat by passing the linked account and the attendee ID. Webhooks let your app react to every new message.
Send Email
Send emails from your users' own Gmail, Outlook and IMAP mailboxes. Compose, reply, attach files and update statuses, while real-time sync keeps every mailbox up to date inside your app.
Send InMail
Send InMails from LinkedIn Recruiter, Sales Navigator or standard LinkedIn accounts, to connections and non-connections alike. Check the balance of available InMail credits before each send.
Send LinkedIn Voice Note
Start a new conversation with a voice note from LinkedIn Recruiter or Sales Navigator, and add a personal touch to the first contact. InMail credits stay visible in the same flow.

Send LinkedIn Video Embed
Let your users send autoplay videos in LinkedIn messages. The video plays the moment the message is opened, with no click and no friction, which is ideal for a personal demo.
Send LinkedIn Invitation
When your user is not yet connected with a member, send an invitation with the account_id of the linked account and the provider_id of the member. Track each invitation in real time: accepted, pending or deleted.
Add Reaction on a LinkedIn Post
React to LinkedIn posts or to comments on a post, directly from your app, so your users stay present on the conversations that matter to them.
Every action runs on behalf of the authenticated user, from their own linked account.
How Messaging Features Improve User Engagement in Your App
Messages, emails, LinkedIn InMails, voice notes and invitations run inside your app, so your users engage on every channel from one place.
Send Messages Across Multiple Platforms
Add message sending to your app with the Unipile API. Your users reach each contact on LinkedIn, WhatsApp, Instagram or Telegram, wherever they prefer to talk, with real-time follow-ups and every conversation managed in one place.
AdvantagesSend Email via Multiple Providers
Add email sending to your app, so your users send from the Gmail, Outlook and IMAP mailboxes they already use. Real-time sync and full CRUD operations let them compose, send and organize emails while staying in control of their inbox, through one secure API.
AdvantagesDiversify LinkedIn Messaging with InMail and Voice Notes
Enable your app to send personalized LinkedIn InMails and voice notes, to connections and non-connections alike. Your users engage in a more personal way and track InMail credit usage as they go, all from your application.
AdvantagesAutomate LinkedIn Invitations and Track Connection Status
Let your users send LinkedIn connection invitations from your app and follow the status of each one: accepted, pending or deleted. They see the results in real time and focus on meaningful connections, from a single platform.
AdvantagesUnipile is an independent technical intermediary, not affiliated with, endorsed by, or sponsored by LinkedIn. Each action runs on behalf of the authenticated user.
How to Create a Multi-Channel Sequence
Best practices to build a sequence in your app: compile a list of profiles from a LinkedIn search, then send invitations and messages at a steady pace, within the limits LinkedIn sets. Along the way, a few tips to save time during the integration.
Retrieve a LinkedIn Search from a URL
Origin of the List of Contacts
Every sequence starts with a LinkedIn search. Your users filter and select profiles in the standard LinkedIn search or in Sales Navigator, with filters such as job title, industry or location.
Handling Search URLs
Use the LinkedIn search endpoints to fetch results for your users. Accept a URL copied from LinkedIn, or let users pick parameters in your app's UI. Paginate to get every result, and spread requests over the working day.
Compiling and Managing Results
Handle up to 1,000 profiles per day per account, or 2,500 with Sales Navigator, and spread requests across business hours. LinkedIn also limits invitations to about 200 per week per account: plan each type of sequence (search, invitations or messages) within these limits.
Planning Your Sequence
Once the list is ready, schedule sequences by type, such as searches, invitations with InMail or message templates, and set daily volumes to match. For example, 30 to 50 invitations a day, spread across the day, stay under the weekly invitation limit. When several sequences run, pause or adjust them. Convert public profile IDs to provider IDs before sending invitations.
Read the sequence guideHandling API Errors and Rescheduling
When a call reaches a LinkedIn limit, for example when several sequences of the same user send invitations at the same time, catch the error and reschedule the sequence for the following week. Notify the user of the delay and adjust the plan.
LinkedIn API rate limits explainedThe pace of invitations and messages remains the customer's responsibility, within the limits LinkedIn sets. Unipile acts on behalf of each authenticated user.
Engage with Multi-Channel Sequences
A sequence does not have to rely on LinkedIn invitations alone. Add email and messaging steps so your users reach each contact on the channel they actually answer, and vary how they communicate from one step to the next.
Integrate LinkedIn, WhatsApp, and Other Platforms
Before your app can handle chats and messages, each user links an account of the messaging provider. Unipile offers two connection methods, hosted and custom, and both authenticate the user with the provider through the Unipile API.
Supported authentication features for Messaging
Hosted auth wizard
The quickest way to link accounts: a single API call generates a temporary link that redirects your user to the Unipile hosted auth wizard. The wizard guides them step by step and supports every authentication method of the provider.
Custom authentication
To embed your own authentication form or wizard in your application, choose custom authentication. You design an experience that matches your product exactly.
It is a more advanced approach: your app implements each authentication scenario itself.
Available for:
For Gmail and Outlook, read the email integration guide.
Getting Started with Hosted Auth Method
Six steps to let your users link their accounts, keep an eye on their status and reconnect them when needed.
Email Integration: Unify Gmail, Outlook, and IMAP Providers
Integrate Gmail, Outlook and IMAP-based providers into your application for one unified email experience. Your users send, sync and manage their inbox from your app, and keep full control of their mailboxes.
Supported authentication features for Email
Outlook covers Microsoft 365 and Exchange Online mailboxes.
LinkedIn Integration Focus
Five steps to link LinkedIn accounts in your application with custom authentication, using credentials or cookies, on behalf of each authenticated user.
Step 1: Authenticate to LinkedIn
Two options: the LinkedIn username and password of the user, or the session cookies (li_at) of the browser where the user is signed in. Send them with a POST request or the matching SDK method.Step 2: Handle Checkpoints
After the first authentication, LinkedIn may ask the user to clear a checkpoint, such as 2FA or a phone registration. The API response tells your app which type it is.Step 3: Solve Checkpoints
For each checkpoint type, send the code the user received, for example for 2FA or a one-time password.Step 4: Handle Intent Timeout
If the user takes more than 5 minutes to solve the checkpoint, the account does not connect. Make sure checkpoints are solved within that time.Step 5: Connect Through a Proxy
If needed, link the LinkedIn account through a proxy by adding its settings to the request body.{
"provider": "LINKEDIN",
"username": "sarah@acme.com",
"password": "********"
}
{
"provider": "LINKEDIN",
"access_token": "****************",
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36"
}
Send the user agent of the browser the cookie comes from: it helps prevent the account from disconnecting.
{
"object": "Checkpoint",
"account_id": "098dez89d",
"checkpoint": {
"type": "2FA"
}
}
{
"provider": "LINKEDIN",
"account_id": "098dez89d",
"code": "******"
}
Once the checkpoint is solved, the account is linked and appears as operational in your dashboard.
{
"provider": "LINKEDIN",
"proxy": {
"host": "proxy.acme.com",
"port": 1123,
"username": "proxy_user",
"password": "*******"
},
"username": "sarah@acme.com",
"password": "*******"
}
Google Chrome Extension case
If your app ships a browser extension, it can link the LinkedIn account of the user who installed it, from the session of their own browser. When the account disconnects, the extension provides a fresh session and your app calls the reconnect method, with no action needed from the user.
Steps for LinkedIn cookie synchronization
li_a, li_at, user_agent and the country of the user's ip, with an identifier of the linked account.
2Store it regularly in your backend: internal_user_id, unipile_account_id, unipile_status, date_last_cookie.
3Initial connection: if unipile_account_id is empty, link the account with custom authentication.
4Handle disconnection: when the webhook notifies you, call reconnect with the last stored cookie and the account_id.
5Retry reconnection every hour for 4 hours. If it still fails, email the user to reconnect and check the extension setup.
Unipile is an independent technical intermediary, not affiliated with, endorsed by, or sponsored by LinkedIn. Accounts are linked by their owners and used on their behalf.
How to Get Started with the Unipile API
Three steps take you from an API key to linked accounts, ready to run sequences in your app.
Connect to Unipile Dashboard
Create your app in the Unipile Dashboard and generate your API key.
Let your users authenticate
Gmail, Outlook, LinkedIn, WhatsApp and more, through a hosted login you open with POST /v2/auth/link
Track linked accounts in real time
Accounts appear in your dashboard as soon as they are linked, with their status.
Built-In Security and Compliance
Enterprise-grade protection for your data and workflows Learn more about our security
Messaging and Email Automation FAQ
Answers for product teams adding messaging, email and multi-channel sequences to their app.
Use Unipile's LinkedIn API to send InMails, voice notes and connection invitations from your app, then track the status of each action (accepted, pending, deleted) and the balance of available InMail credits. Every action runs on behalf of the authenticated user, from their own account. Unipile is an independent technical intermediary, not affiliated with, endorsed by, or sponsored by LinkedIn.
Unipile's Messaging API supports LinkedIn, WhatsApp, Instagram and Telegram. Your app manages conversations and sends messages on every channel through a single API.
Your users link their Gmail, Outlook or IMAP mailboxes, then your app uses the Email API to compose, send and organize messages and handle attachments. Every email goes out from the user's own mailbox.
Yes. Our API is designed in line with the Digital Markets Act (DMA). It only enables secure messaging interoperability, and Unipile keeps no independent database of user profiles.
Yes. Always respect Meta's Terms of Service: use the API responsibly, avoid spam and unauthorized automation, and focus on legitimate messaging use cases.
Hosted authentication and custom authentication are available for every provider. Depending on the provider, users also sign in through the Google or Microsoft OAuth screen, or with a username and password (LinkedIn, Instagram, IMAP). Read the account connection guide for details.
Authenticate with the user's LinkedIn username and password, or with the session cookies of their browser. If LinkedIn asks for a checkpoint, such as 2FA, a one-time password or a phone registration, send the code through the API within 5 minutes, otherwise the connection intent expires.
LinkedIn applies its own limits, for example about 200 invitations per week per account, 80 to 100 profile visits a day (up to 150 with Sales Navigator), and InMails based on available credits. Plan sequences within these limits, spread actions over business hours and reschedule when a limit is reached. Email and messaging steps keep a sequence moving in the meantime. The pace of actions remains the customer's responsibility. More in our guide to LinkedIn API rate limits.
Still have questions? Our team is here to help.
Talk to an expert
Instagram