About LinkedIn
LinkedIn is a professional network with REST APIs covering member profiles, organization (Company) pages, advertising, and Matched Audiences. Serval connects through a bring-your-own-app model: your team registers its own app in the LinkedIn Developer portal and supplies that app’s Client ID and Primary Client Secret in Serval’s Connect modal. Because Serval does not own a shared LinkedIn app, your team controls exactly which LinkedIn products, permissions, and rate-limit budget the connection uses. Workflow requests go only to LinkedIn’s official API host (api.linkedin.com). Authentication: Bring-your-own LinkedIn app using the OAuth 2.0 authorization code flow. You pick which permissions to request, register Serval’s redirect URL on your app, and enter your Client ID and Primary Client Secret. Data sync: On demand only - there is no background sync. Workflows call the LinkedIn REST API at run time, and Serval injects and automatically refreshes the access token for you (LinkedIn access tokens last about 60 days by default; refresh tokens, where available, about 365 days).What the LinkedIn integration enables
Get your credentials
You need your own LinkedIn OAuth app with the right products approved, its scopes enabled, and Serval’s redirect URL registered. Everything happens in the LinkedIn Developer portal.Create (or open) your LinkedIn app
Request the products you need
Approve the OAuth scopes
Register Serval's redirect URL
Copy your credentials
Connect in Serval
The Connect modal has two steps: Permissions, then Connect.Step 1: Permissions - choose what Serval requests
Step 2: Connect - register the redirect URL
Enter your connection details
- Connection name (required) - a Serval-side label only. Helper text: “The name that will identify this connection in Serval. We recommend using your LinkedIn app name.” LinkedIn does not expose your app’s display name to Serval, so you choose it.
- Client ID (required) - from your LinkedIn app’s Auth tab.
- Primary Client Secret (required, hidden password field) - from your LinkedIn app’s Auth tab.
Authorize on LinkedIn
Verifying the connection
The LinkedIn integration ships three health checks:- Test LinkedIn Connection - verifies Serval can authenticate by fetching the connected member’s basic profile.
- Success: “Successfully connected to LinkedIn as [name]”
- Failure: “Unable to connect to LinkedIn. Verify your OAuth credentials are valid, the app has the r_basicprofile scope approved, and the token has not been revoked.”
- Get 1st-degree Connection Count - verifies the Connection insights permission by fetching the member’s total 1st-degree connections.
- Success: “Authenticated member has [number] 1st-degree connection(s).” or, when LinkedIn omits the count, “API access verified but LinkedIn did not return a connection count. The scope is approved but the member may not have any connections exposed.”
- Product-gating failure: “Your LinkedIn app has the r_1st_connections_size scope approved, but the /v2/connections endpoint requires the app to also be enrolled in the LinkedIn Marketing Developer Platform program. Apply for the program from your LinkedIn app’s Products tab - once approved, this check will pass without needing to reconnect.”
- Generic failure: “Unable to fetch connection count. Verify your LinkedIn app has the r_1st_connections_size scope approved on the Auth tab.”
- List Administered Organizations - verifies the organization-admin permission by listing organizations the member administers.
- Success: “Found [number] administered organization(s).” or, with zero results, “API access verified but this member does not administer any organizations.”
- Failure: “Unable to list organizations. Verify your LinkedIn app has the r_organization_admin or rw_organization_admin scope approved.”
Gotchas and troubleshooting
A permission is approved but calls still fail with a 403
A permission is approved but calls still fail with a 403
Invalid or expired OAuth state / OAuth session expired
Invalid or expired OAuth state / OAuth session expired
LinkedIn shows an invalid_client error
LinkedIn shows an invalid_client error
Token refresh stopped working after rotating the client secret
Token refresh stopped working after rotating the client secret
Advertising API: Development vs Standard tier
Advertising API: Development vs Standard tier
Older ad-account lookups no longer work
Older ad-account lookups no longer work
Matched Audiences quirks
Matched Audiences quirks
Need help? Contact support@serval.com for assistance with your LinkedIn integration.

