Documentation

LinkedIn

Connect LinkedIn for organisation page posting, ad campaigns, and lead form ingestion.

The LinkedIn integration covers organisation page posting (company posts and articles), Sponsored Content ad campaigns through LinkedIn Marketing API, and lead form ingestion from LinkedIn Lead Gen Forms. The connector uses LinkedIn's OAuth 2.0 flow.

Connect LinkedIn

Vendor segment in the universal OAuth flow is linkedin.

const { authUrl } = await fetch('/api/upstream/call/linkedin-provider/get-auth-url', {
  method: 'POST',
  headers: { orgid: ORG_ID, Authorization: `Bearer ${jwt}` },
  body: JSON.stringify({
    scopes: [
      'r_liteprofile',
      'r_emailaddress',
      'w_member_social',
      'rw_organization_admin',
      'r_organization_social',
      'w_organization_social',
      'r_ads',
      'rw_ads',
      'r_ads_reporting',
      'r_organization_admin',
    ],
    returnUrl: 'https://admin.example/integrations',
  }),
}).then(r => r.json());

Ad-related scopes (r_ads, rw_ads, r_ads_reporting) require LinkedIn Marketing Developer Platform access — apply for this in the LinkedIn Developer portal. Without it, posts and basic profile work but ads do not.

Page posting

await fetch('/api/upstream/call/linkedin-provider/post-to-organization', {
  method: 'POST',
  headers: { orgid: ORG_ID, Authorization: `Bearer ${jwt}` },
  body: JSON.stringify({
    organizationId: 'urn:li:organization:1234567',
    text: 'We are hiring engineers — apply at https://example.com/careers',
    image: 'https://cdn.../hiring.jpg',
    visibility: 'PUBLIC',
  }),
});

Multiple organisations can be managed under one LinkedIn user account. The integration record stores the list; the call body picks which organisation to post as.

The Marketing module's campaigns push to LinkedIn through this connector when channels includes linkedin.

Ads

LinkedIn Ads (Sponsored Content, Sponsored InMail, Dynamic Ads) route through the Ads module. The connector wraps LinkedIn Marketing API operations: campaign group create, campaign create, creative upload, launch, pause, metrics fetch.

LinkedIn ads operate at three levels (account → campaign group → campaign → creative); the connector flattens this into the Ads module's campaign-and-creative model.

Lead Gen Forms

LinkedIn Lead Gen Forms post submissions via webhook:

POST/connect/webhook/linkedinNo auth

The connector verifies the webhook signature, fetches the lead details from the LinkedIn API (the webhook only carries the lead ID), and creates a CRM lead with the form fields mapped.

Configure the webhook URL in your LinkedIn app settings: https://api.appmint.io/connect/webhook/linkedin?orgid=<your-org>

Field mapping is per lead form — set up in the platform's admin UI under Integrations → LinkedIn → Lead Forms.

Engagement sync

The Sync module's LinkedIn job polls comment and reaction events on the org's posts and writes them to the social activity store. Engagement on Sponsored Content also comes through this path so the CRM has unified per-contact engagement across organic and paid touches.

Token expiry

LinkedIn access tokens last 60 days; refresh tokens are issued only with r_organization_admin and similar scopes. For scopes without refresh tokens, the user has to reconnect every 60 days. The connector emails the admin a few days before expiry.

Common quirks

  • Personal vs organisation postingw_member_social posts as the connected person; w_organization_social posts as the organisation page. Almost always you want the latter for marketing.
  • Image hosting — LinkedIn doesn't host images directly. The connector uploads the image to LinkedIn's media-asset endpoint first, then references the asset URN in the post.
  • Rate limits — LinkedIn's per-app rate limits are tighter than other platforms. The connector backs off on 429 responses; bulk posts should pace through the Marketing module rather than calling Upstream in tight loops.

LinkedIn Marketing API access requires application review. Until approved, the integration works for organic page posting but ads-related calls return 403. Apply via the LinkedIn Developer portal under "Marketing Developer Platform".