<!-- Generated from the canonical OpenPost public page. Do not edit this build artifact. -->

Title: LinkedIn
Description: This page is for operators configuring LinkedIn and users connecting a member profile or Organization Page.
Canonical: https://docs.openpo.st/providers/linkedin
Source: [https://docs.openpo.st/providers/linkedin](https://docs.openpo.st/providers/linkedin)

# LinkedIn

This page is for operators configuring LinkedIn and users connecting a member profile or Organization Page.

LinkedIn uses OAuth 2.0 and has more approval friction than most other providers.

## What you need

- LinkedIn developer app
- `LINKEDIN_CLIENT_ID`
- `LINKEDIN_CLIENT_SECRET`
- Callback URL: `https://your-domain.com/api/v1/accounts/linkedin/callback`

## Personal profiles and Organization Pages

OpenPost always offers the member profile returned by LinkedIn OpenID Connect. Organization Pages are an explicit operator opt-in because LinkedIn gates their permissions behind approved products:

```sh
OPENPOST_DISABLE_LINKEDIN_THREAD_REPLIES=false
OPENPOST_LINKEDIN_ORGANIZATIONS_ENABLED=true
```

If your LinkedIn app cannot obtain the permissions required for comment-style replies, set `OPENPOST_DISABLE_LINKEDIN_THREAD_REPLIES=true`. The legacy `LINKEDIN_DISABLE_THREAD_REPLIES` alias remains supported.

With organizations enabled, the app must be approved for `rw_organization_admin`, `w_organization_social`, and `r_organization_social`. OpenPost lists only Pages for which the member has an approved `ADMINISTRATOR` role. The callback lets the user select their personal profile and several Pages. Each selection becomes a separate OpenPost account, while the shared OAuth token remains encrypted at rest.

Leave `OPENPOST_LINKEDIN_ORGANIZATIONS_ENABLED=false` when the app lacks those products. Personal publishing remains available. If organization discovery fails, OpenPost keeps the personal choice instead of failing the whole connection.

OpenPost defaults `LINKEDIN_API_VERSION` to the previous calendar month to avoid requesting a version LinkedIn has not activated yet. Set it only when your LinkedIn application requires an explicit supported version.

## Threading caveat

LinkedIn thread child posts are implemented as comments on the first post rather than native threaded posts.

Comments and replies is an optional feature per connected LinkedIn account. It starts off for a new account. Enable it after connection or in Account details. OpenPost can list comments, send replies, and delete comments where LinkedIn grants access when enabled. LinkedIn does not support Direct messages in OpenPost, and Grow is not available for LinkedIn. Disabling Comments and replies stops future LinkedIn comment collection and reply actions without deleting stored replies or revoking authorization. Availability depends on provider support, required scopes, and plan access as distinct facts.

## Media caveat

OpenPost uses LinkedIn's Images API for images and Videos API for videos. Video upload initializes with `fileSizeBytes`, uploads all returned byte ranges, and finalizes the upload before creating the post.

## Analytics

Analytics is an optional feature per connected LinkedIn account. It starts off for a new account. Enable it after connection or in Account details. LinkedIn analytics require Community Management API access, so the operator must turn on Organization support and use an approved app. With that access and when enabled:

- personal profiles can return followers plus post impressions, reach, reactions, comments, reposts, saves, and link clicks;
- Organization Pages can return followers plus the post numbers that LinkedIn provides.

The connected account also needs `r_member_profileAnalytics` and `r_member_postAnalytics` for profile analytics or `rw_organization_admin` for Organization Page analytics. Disabling Analytics stops future LinkedIn analytics collection without deleting stored metrics or revoking authorization.

## Common issues

- Insufficient app approval for social actions
- Organization mode enabled before the app has approved organization products
- The LinkedIn member is not an approved Page administrator
- Callback URL mismatch
- Reply permissions missing for thread child posts
