# LinkedIn setup for PopMCP

You end up pasting the Client ID and Primary Client Secret from the Auth tab of your app in the LinkedIn Developer Portal, plus the list of API products that app has been granted.

- Auth: OAuth authorization
- Setup time: 15 min for a self-serve app, days to weeks if you need the Community Management or Advertising API
- API base URL: https://api.linkedin.com/rest
- Credentials screen: https://www.linkedin.com/developers/apps
- Provider docs: https://learn.microsoft.com/en-us/linkedin/shared/authentication/authorization-code-flow

## Approval required before this works

LinkedIn reviews and vets your app for the Community Management API before it can touch organization Pages or member post/profile analytics, and requires a second Standard-tier review before production volumes; only Sign In with LinkedIn and posting to the signed-in member's own feed are self-serve.

- Typical wait: not published by LinkedIn; developers commonly report several days to a few weeks for Development tier and weeks to a few months for Standard tier
- Cost: Free
- Blocked until approved: Without Community Management approval you cannot read or post on a company Page (r_organization_social, w_organization_social, rw_organization_admin), read Page followers or social actions, or read member post/profile analytics (r_member_postAnalytics, r_member_profileAnalytics). On Development tier the app is capped at 500 API calls per 24h per app and 100 per member per 24h, BATCH_GET is blocked entirely and social-action webhooks are disabled — so it is a build-and-test tier, not production.
- Works meanwhile: Yes. Create the app, get client id/secret instantly, and add the self-serve products 'Sign In with LinkedIn using OpenID Connect' and 'Share on LinkedIn' — those are granted immediately and let you run the full OAuth flow, read the member's basic profile and email, and publish/update/delete posts on the signed-in member's own feed via w_member_social.

## Before you begin

- A LinkedIn member account that is a Super admin of the LinkedIn Page the app will be associated with
- A LinkedIn Page to associate the app with, created first if you do not already have one
- A Super admin of that Page available to open the verification link LinkedIn generates
- Self-serve products only cover Sign In with LinkedIn using OpenID Connect and Share on LinkedIn, which posts to a personal profile
- Posting to a Company Page requires the Community Management API, an approved product that asks for a registered company, a verified Page and a screencast of your integration
- Ad campaign tools require Advertising API approval through the LinkedIn Marketing Partner process

## Get your credentials

### 1. Create the app against a LinkedIn Page

Go to linkedin.com/developers/apps and click Create app. Enter the App name, pick the LinkedIn Page that owns it, add a Privacy policy URL and a square logo, tick the API Terms of Use box and click Create app.

Screen: https://www.linkedin.com/developers/apps/new

### 2. Verify the app with a Page admin

Open the Settings tab and click Verify next to the associated Page. Send the generated link to a Super admin of that Page, who opens it and confirms.

Screen: https://www.linkedin.com/developers/apps

### 3. Request the API products you need

Open the Products tab and click Request access on each product you need. Sign In with LinkedIn using OpenID Connect and Share on LinkedIn are granted straight away, and Community Management API and Advertising API go into review.

Screen: https://www.linkedin.com/developers/apps

### 4. Add the PopMCP callback as an authorized redirect URL

Open the Auth tab, click the pencil icon on OAuth 2.0 settings, then click Add redirect URL. Paste the callback from the PopMCP connect screen and click Update.

Screen: https://www.linkedin.com/developers/apps

### 5. Copy the Client ID and Primary Client Secret

Still on the Auth tab, find Application credentials and copy the Client ID. Click Show on the Primary Client Secret, click Copy, and paste both into PopMCP along with your granted products.

Screen: https://www.linkedin.com/developers/apps

## Fields PopMCP asks for

- Client ID (clientId) [required]: Your LinkedIn app's "Client ID" from linkedin.com/developers/apps → Auth. Add the callback URL above to that app's "Authorized redirect URLs for your app" first.
- Client Secret (clientSecret) [required]: The app's Primary Client Secret (same Auth tab). Stored encrypted; used server-side only and never shown again.
- API products your app has (products): share, community, advertising

## Callback URL to register

https://app.popmcp.com/api/providers/linkedin/callback

## Verify

PopMCP shows the LinkedIn connector as Connected with your member name, and the Company Page appears in the account picker if the Community Management API was granted. Access tokens last 60 days, so the connector shows a refresh date roughly two months out.

## Troubleshooting

### 401 with "Redirect_uri doesn't match"

Cause: The callback PopMCP sends is not one of the Authorized redirect URLs on the Auth tab.

Fix: Paste the exact callback from PopMCP into Auth, OAuth 2.0 settings, then Update. LinkedIn drops query strings, so do not add one.

### 401 "Invalid scope" on the authorization request

Cause: PopMCP is asking for a scope your app has not been granted, usually an organization or ads scope.

Fix: Check the scopes listed under OAuth 2.0 scopes on the Auth tab, request the matching product on the Products tab, and reconnect once it is approved.

### The Products tab shows everything as unavailable

Cause: The app's LinkedIn Page association has not been verified.

Fix: Open Settings, click Verify, then have a Super admin of the Page open the generated link.

### Newly granted product does not show its scopes

Cause: The Auth tab caches the scope list from the previous page load.

Fix: Reload the app page after the product moves to Added.

### Posting to a Company Page returns 403 ACCESS_DENIED

Cause: Only Share on LinkedIn is granted, which covers the personal profile. Company Page publishing needs w_organization_social.

Fix: Request the Community Management API on the Products tab and reconnect after approval.

### Connection stops working after about two months

Cause: LinkedIn access tokens expire in 60 days and programmatic refresh tokens are enabled only for selected partners.

Fix: Reconnect the connector in PopMCP to re-run the consent flow.

---

Source: https://www.docs.popmcp.com/docs/integrations/linkedin/