EN
Messaging & email automation

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.

7-day free trial, no credit card.
Your CRM
WhatsAppGmailOutlook
4 accounts linked
SBSarah Brown
Sequences3
Contacts187
Replies12
CTO sequence, London187 contacts from a LinkedIn search Running
Start sequence
LinkedIn invitationRight awaySent
LinkedIn messageAfter 1 daySent
Email follow-upAfter 3 daysSending
WhatsApp reminderAfter 2 daysScheduled
Add a step
Send a message
Send an InMail
Send a voice note
React to a post
WhatsAppSend a message
GmailSend an email
OutlookSend an email
IMAPSend an email
Reply received, sequence stoppedmessage_received
Key features

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.

MOMichel OpraMichel OpraNexaTechWhatsAppInstagramTelegram
Thanks for the details. Can we talk on Thursday? Sure, Thursday 10:00 works for me. message_received
WhatsAppInstagramTelegramMessaging

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.

POST/v2/{account_id}/chats/{chat_id}/messages/send
POST/v2/{account_id}/chats/send
Send messages guide
Fromsarah@acme.com
Tomichel@nexatech.com
SubjectProposal for NexaTech
proposal.pdfSend
DeliveredOpenedReplied
GmailOutlookIMAPEmail

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.

POST/v2/{account_id}/emails/send
GET/v2/{account_id}/emails
Send email guide
InMail credits38 / 50
EGElena GarciaElena GarciaCFO, ElevateInMail
Your Q4 pipeline review: open to a short call next week?
LinkedIn

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.

POST/v2/{account_id}/chats/send
GET/v2/{account_id}/linkedin/inmail-credits
SRSofia RiveraSofia RiveraNew conversation
0:24
Voice note, Sales NavigatorSent
LinkedIn

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.

POST/v2/{account_id}/chats/send
Start a new chat reference
Sarah Brown recording a personalized video demo0:48
Plays as soon as it is opened
LinkedIn

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.

VHVictor HarrisVictor HarrisSales Manager, ZephyrPending
DMDaniel MartinezDaniel MartinezHead of Sales, QuarkAccepted
GLGabriel LopezGabriel LopezCOO, VortexDeleted
LinkedIn

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.

POST/v2/{account_id}/users/me/relation-requests
MOMichel OpraMichel OpraHead of Operations at NexaTech
We just opened our Austin office. Proud of a team that keeps operations simple while we grow.
Like Love Insightful
LinkedIn

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.

User engagement

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.

Advantages
One API for every messaging platform, less development time and complexity Scheduled follow-ups for consistent communication A unified interface to manage and track conversations on all channels
Your App
Inbox5
Opportunities
MOMichel OpraMichel OpraOK, perfect. Talk soon.NexaTechResponsive
SRSofia RiveraSofia RiveraHi Sarah, I just saw your message.SynthexWhatsAppInterested
DMDaniel MartinezDaniel MartinezThanks for the proposal.OrbixProposal
GLGabriel LopezGabriel LopezIt will be a great yes.VortexInstagramResponsive
EGElena GarciaElena GarciaDear Sarah, see you on Monday.QuarkTelegramInterested
MOMichel Opra
Message sent Michel Opra, 3:09 PM Thank you! I sent you the contract.
GLGabriel Lopez
Message sentWhatsApp Gabriel Lopez, 3:12 PM Hi Gabriel, OK, sounds great.

Send 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.

Advantages
Gmail, Outlook and IMAP through a single integration Email steps in sequences, with real-time inbox management Higher productivity with every email handled in one place
Email accounts
Add provider
Total emails sent117,523 GmailOutlookIMAP
GmailGmailGoogle Workspace74,321Emails1,198Users
OutlookOutlookMicrosoft 36543,202Emails991Users
GmailFollow-up to Michel Opra, sent from Sarah's Gmail DeliveredOpened

Diversify 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.

Advantages
Personalized InMails to members outside the network Voice notes for more personal, engaging communication Real-time tracking of the InMail credit balance
MOMichel OpraMichel OpraHead of Operations, NexaTech
Via
SBSarah BrownSarah BrownYesterday, 05:09 PM Hi Michel, let's connect and explore how we can work together on your Q4 roadmap. InMail sent, 10 credits left SBSarah BrownSarah BrownToday, 01:01 PM Here is a quick voice note with more details. Looking forward to your thoughts!
0:43
Reply to Michel via LinkedIn

Automate 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.

Advantages
Invitations sent as sequence steps, from each user's own account Real-time invitation status for timely follow-up Simple management of each user's connections within your app
Your App
Search: 183 profiles found 153 New21 Pending9 Deleted
ContactCompanyStatus
DMDaniel MartinezDaniel MartinezOrbixDeleted
MOMichel OpraMichel OpraNexaTechPending
SRSofia RiveraSofia RiveraSynthexPending
GLGabriel LopezGabriel LopezVortexNew
NDNatalia DiazNatalia DiazNovaNew
Add invitations to the sequence

Unipile is an independent technical intermediary, not affiliated with, endorsed by, or sponsored by LinkedIn. Each action runs on behalf of the authenticated user.

Guide

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.

1Build the contact list

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.

POST/v2/{account_id}/linkedin/search/people
POST/v2/{account_id}/linkedin/sales-navigator/search/people
"CTO london" | Search
linkedin.com/search/results/people/?keywords=CTO%20londonURL copied
Your App
https://www.linkedin.com/search/results/people/?keywords=CTO%20londonURL pasted
Lead search187 resultsCreate a sequence
NameCompanyRole
RFRobert FoxRobert FoxCureCorpCTO
JCJulia ChenJulia ChenHealthCoCTO
LMLucas MeyerLucas MeyerVitalPathCTO
ARAnna RossiAnna RossiMediLifeCTO
OWOscar WardOscar WardHealthNetCTO
2Plan the sequence

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 guide
Your App
Plan a sequence
Sequences time tableToday, Monday 10-10GmailWhatsApp
SearchSales NavigatorCEO, LondonCompletedLimit 1,000
SearchRecruiterSales Rep, MicrosoftPendingLimit 1,000
InvitationsWith InMailCTO sequencePendingLimit 80
MessagesTemplate 1Accepted invitationsPendingLimit 150
3Handle limits

Handling 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 explained
Error status
3 limits reached
Search, Sales Navigator1,000 per dayLimit reached at 2:40 PMRescheduledNext date 11-10
Invitations200 per weekLimit reached on ThursdayRescheduledNext date 18-10
Messages150 per dayLimit reached at 5:10 PMRescheduledNext date 12-10
Sarah was notified: her invitation sequence resumes next week.

The pace of invitations and messages remains the customer's responsibility, within the limits LinkedIn sets. Unipile acts on behalf of each authenticated user.

Your App
GmailOutlookWhatsApp
Sequence 1Outlook
Sequence 2GmailWhatsApp
RunningStep 1 of 4
Day 1PendingSendingSent
LinkedIn invitation request Hi Michel, I enjoyed your post on data platforms. Happy to connect.
Gmail
Day 3PendingSendingSent
Email from Sarah's Gmail Subject: A shorter path for NexaTech's data team
WhatsApp
Day 5PendingSendingSent
WhatsApp message Hi Michel, did you get a chance to read my email?
Day 7PendingSendingSent
LinkedIn message Thanks for connecting, Michel. Would a short call next week work?
48Sent
0Opened
0Replied
139Pending
Multichannel

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.

LinkedIn GmailGmail OutlookOutlook WhatsAppWhatsApp
Each step sent from the user's own linked account Replies detected through webhooks, so the sequence stops in time
Link accounts

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

FeatureWhatsAppWhatsAppLinkedInInstagramInstagramTelegramTelegram
Hosted Authentication
Custom Authentication
QR Code Scanning
Authentication with username / password
2FA with SMS
2FA with Authentication App
2FA with In-App Validation
One-Time Password
SupportedNot available for this provider
Quickest

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.

Sign in to LinkedIn
Choose a method CredentialsCookies Email Password Use a proxy CancelLog in
Choose another type of account
POST/v2/auth/link
Hosted auth wizard guide
Advanced

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.

QR code scanning Two-factor authentication (2FA) One-time password (OTP)

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.

1Add a "Connect an account" buttonWhen a user clicks it, call the Hosted Auth API to generate a unique link and redirect the user to it.POST /v2/auth/link
2Store linked accountsCreate a table for linked accounts, with fields such as:id | user_id | account_type | account_id | status | last_update | created_on
3Receive the connection callbackSet up a backend endpoint called when a user links an account, and store the account_id next to your internal user_id.
4Show the connection statusBuild a page that displays each account's status, with a "Reconnect" button that calls the Hosted Auth API with the reconnect parameter.
5Subscribe to status changesCreate a webhook to be notified whenever an account status changes.POST /v2/webhooks/endpoints/
6Handle critical statusesProcess the webhook in your backend and update the status. For critical statuses such as CREDENTIALS, ask the user to reconnect by email or in your UI.
Email providers

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.

GmailGmail OutlookOutlook IMAPIMAP
Google and Microsoft accounts link through their own OAuth consent screen IMAP servers link with a username and password

Supported authentication features for Email

FeatureGmailGoogleOutlookMicrosoftIMAPIMAP
Hosted Authentication
Custom Authentication
Authentication with OAuth Provider Screen
Authentication with username / password

Outlook covers Microsoft 365 and Exchange Online mailboxes.

LinkedIn custom authentication

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.

1

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.
2

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.
3

Step 3: Solve Checkpoints

For each checkpoint type, send the code the user received, for example for 2FA or a one-time password.
4

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.
5

Step 5: Connect Through a Proxy

If needed, link the LinkedIn account through a proxy by adding its settings to the request body.
credentials.jsonRequest body
{
  "provider": "LINKEDIN",
  "username": "sarah@acme.com",
  "password": "********"
}
cookies.jsonRequest body
{
  "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.

checkpoint-response.jsonResponse
{
  "object": "Checkpoint",
  "account_id": "098dez89d",
  "checkpoint": {
    "type": "2FA"
  }
}
2FAOne-time passwordIn-app validationPhone registration
solve-checkpoint.jsonRequest body
{
  "provider": "LINKEDIN",
  "account_id": "098dez89d",
  "code": "******"
}

Once the checkpoint is solved, the account is linked and appears as operational in your dashboard.

Checkpoint pendingWaiting for the user
04:06 0 min5 min limit Past 5 minutes, the connection intent expires and the user starts again.
LinkedIn integration guide
connect-with-proxy.jsonRequest body
{
  "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

1Collect data: 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.
Your browser extensionSession of the signed-in user
Secure relay
UnipileUnipile APIAccount linked or reconnectedOperational
Webhook
Your CRMStatus updated, sequences resume

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.

Get started

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.

1

Connect to Unipile Dashboard

Create your app in the Unipile Dashboard and generate your API key.

2

Let your users authenticate

Gmail, Outlook, LinkedIn, WhatsApp and more, through a hosted login you open with POST /v2/auth/link

3

Track linked accounts in real time

Accounts appear in your dashboard as soon as they are linked, with their status.

Secure OAuth or credential-based login Supports multiple providers per user
Unipile/ Acme / Sequences
Accounts Webhooks API keys Settings
AccountsLink account
4 operational1 to reconnect
AccountIDStatus
Sarah Brownacc_7Hq2LmOperational
WhatsAppSarah Brownacc_3Kd9WpOperational
GmailSarah Brownacc_9Tx4RbOperational
OutlookTom Kelleracc_5Nv1QeOperational
Google CalendarTom Kelleracc_2Gy8ZcReconnect
6000+ Companies Innovating with Unipile
Trusted by industry leaders
1 API
Streamline operations for all major communication channels
2 Days
Achieve live integration quickly with minimal setup
30%
Reduction in maintenance efforts and resources

Built-In Security and Compliance

Enterprise-grade protection for your data and workflows Learn more about our security
SOC 2 Type II
SOC 2 Type II
Certified
Independently audited security controls ensuring data protection and operational integrity.
GDPR
GDPR
Compliant
Full compliance with European data protection regulations for user privacy.
99.9%
Platform Uptime over the last 24 months
24/7
Global Support with high-performance API

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