Unified.to
All articles

How to Set Up LinkedIn Webhooks with Unified


February 14, 2026

LinkedIn's Organization Social Action Notifications let you receive real-time updates when people interact with your company page -- likes, comments, shares, and mentions. With Unified, you can subscribe to these events through the same webhook API you use for every other integration, so there's no need to learn LinkedIn's proprietary webhook protocol.

What You'll Need

Before starting, review the Getting Started with Unified article if you haven't already. You'll also need:

  • A LinkedIn developer app (see setup instructions below)
  • A LinkedIn connection created through Unified's embedded auth flow
  • A publicly accessible URL to receive webhook events

Setting Up Your LinkedIn Developer App

Before you can receive webhook events, you need a LinkedIn app configured with the right products and permissions.

Creating the App

  1. Go to linkedin.com/developers/appsand click Create App
  2. Fill in the required fields:
    • App name: Your application's name
    • LinkedIn Page: Select the LinkedIn company page you want to monitor (you must be an admin of the page)
    • App logo: Upload a logo for your app
  3. Accept the legal terms and click Create app

Requesting API Products

LinkedIn gates webhook access behind specific API products. From your app's settings page:

  1. Navigate to the Products tab
  2. Request access to Community Management API -- this grants the r_organization_social scope needed for social action notifications
  3. If you also want to send messages, request LinkedIn Marketing API Partner Program for the w_messages scope

Product approvals can take a few business days. You can check the status on the Products tab.

Configuring OAuth Scopes

Once your products are approved:

  1. Go to the Auth tab in your app settings
  2. Under OAuth 2.0 scopes, verify that r_organization_social is listed
  3. Copy your Client ID and Client Secret -- you'll need these when creating a connection in Unified
  4. Under Authorized redirect URLs, add your Unified OAuth callback URL

Verifying Your Company Page

LinkedIn requires that your developer app is associated with a verified company page:

  1. Go to the Settings tab in your app
  2. Under App Settings, confirm the correct LinkedIn Page is linked
  3. A page admin must verify the app -- click Generate URL next to the verification prompt and share it with a page admin if needed

Once the page is verified and the products are approved, your app is ready to receive social action notifications.

Creating a Webhook for LinkedIn Events

You can create a webhook subscription through the API or the Unified dashboard. The webhook will listen for messaging_event objects with the created event, which is how LinkedIn's social action notifications are surfaced.

Via the API

`import { UnifiedTo } from '@unified-api/typescript-sdk';

const sdk = new UnifiedTo({ security: { jwt: process.env.UNIFIED_API_KEY!, }, });

const webhook = await sdk.unified.createUnifiedWebhook({ webhook: { hookUrl: 'https://your-app.com/webhooks/linkedin', connectionId: process.env.LINKEDIN_CONNECTION_ID!, objectType: 'messaging_event', event: 'created', }, });

console.log('Webhook created:', webhook.webhook?.id);`

Via the Dashboard

  1. Open app.unified.to and navigate to your workspace
  2. Go to Webhooks and click Create Webhook
  3. Select your LinkedIn connection
  4. Set the object type to messaging_event and the event to created
  5. Enter your webhook URL and save

Once the webhook is active, Unified registers your endpoint with LinkedIn's event subscription API using the organization URN from your connection.

Receiving Events

When someone interacts with your LinkedIn company page, Unified converts the raw LinkedIn notification into a standard MessagingEvent object and POSTs it to your hook_url. Here's what that looks like:

`import express from 'express';

const app = express(); app.use(express.json());

app.post('/webhooks/linkedin', (req, res) => { const event = req.body;

switch (event.type) {
    case 'MESSAGE_RECEIVED':
        // Someone commented on a company post, shared it, or edited/deleted a comment
        console.log('Comment or share from:', event.user?.id);
        console.log('On organization:', event.channel?.id);
        break;

    case 'REACTION_ADDED':
        // Someone liked a company post
        console.log('Like from:', event.user?.id);
        break;

    case 'APP_MENTION':
        // Your company was mentioned in a share
        console.log('Mentioned by:', event.user?.id);
        break;
}

res.sendStatus(200);

});`

Event Type Mapping

LinkedIn's social action types are mapped to Unified's standard MessagingEventtypes:

  • COMMENT and ADMIN_COMMENTbecome MESSAGE_RECEIVED -- a new comment was posted on your organization's content
  • LIKE becomes REACTION_ADDED -- someone liked your organization's post
  • SHARE becomes MESSAGE_RECEIVED -- someone shared your organization's content
  • SHARE_MENTION becomes APP_MENTION -- your organization was mentioned in a share
  • COMMENT_EDIT and COMMENT_DELETE become MESSAGE_RECEIVED -- an existing comment was modified or removed

Each event includes the channel field set to your organization's ID, the userfield with the actor's person ID, and a created_at timestamp. The original LinkedIn payload is always available in the raw field if you need additional detail.

Sending Messages Alongside Webhooks

While webhooks cover inbound events, you can also send outbound messages through LinkedIn's Messages API using the same connection. This is useful for responding to engagement by reaching out to the people interacting with your content.

const message = await sdk.messaging.createMessagingMessage({ messagingMessage: { message: 'Thanks for engaging with our content!', destinationMembers: [ { userId: 'urn:li:person:ABC123' }, ], }, connectionId: process.env.LINKEDIN_CONNECTION_ID!, });

Note that LinkedIn's Messages API requires partner-level access with the w_messages scope. Message creation supports new conversations (via destinationMembers) or replies to existing threads (via channelId).

Troubleshooting

Webhook not receiving events? LinkedIn requires the r_organization_socialOAuth scope, which is granted through the Community Management API product. Verify your app has this product approved on the LinkedIn Developer Portal, and that your connection has the scope by checking the connection details in the Unified dashboard.

Events arriving for the wrong organization? The webhook subscription is tied to the organization_id stored in your connection metadata, which is set during the initial OAuth flow. If you manage multiple LinkedIn organizations, create separate connections for each one.

LinkedIn Page not verified? Your developer app must be associated with a verified company page. Go to your app's Settings tab on the LinkedIn Developer Portal and complete the page verification process. A page admin must approve the association.

With just a few lines of code, you're now receiving real-time LinkedIn engagement data through the same webhook infrastructure you use for Slack, Discord, and every other messaging integration on Unified. No custom protocol handling required.

All articles