LinkedIn Ads
Connect LinkedIn Ads to build and edit campaigns and ads, target and size audiences, pull performance and revenue reporting, manage matched audiences, track conversions, and collect leads.
You end up pasting the Client ID and Client Secret of a LinkedIn developer app that has been approved for the Advertising API product.
App review before this connector works
LinkedIn must approve your app for the Advertising API (Marketing Developer Platform) before ad account and ad reporting scopes are granted, and a second support-ticket review is needed to move from Development to Standard tier.
- Typical wait
- not published by LinkedIn; developers commonly report several days to a few weeks for Advertising API access and weeks to a few months for Standard tier or the restricted products
- Cost
- Free
- Blocked until approved
- Until Advertising API access is approved your app cannot be granted r_ads, rw_ads or r_ads_reporting, so no campaign data, no ad analytics and no campaign management calls work at all — OAuth will simply refuse to issue those scopes. On the Development tier that follows approval, reading is unlimited for ad accounts you administer but you may create only one test ad account via the API and edit at most five ad accounts; unlimited creation/editing needs Standard tier.
- Works meanwhile
- You can create the app in the LinkedIn Developer Portal and get client id/secret instantly, run OAuth with the self-serve Sign In with LinkedIn / Share on LinkedIn products, and build against the versioned API docs. Real ad data requires the approval.
Where to apply: linkedin.com/developers/apps > your app > Products tab > apply for the Advertising API, then complete the access form. Standard tier is requested afterwards via a support ticket on the LinkedIn Developer Support Portal (linkedin.com/help/linkedin/ask/dsapi), and LinkedIn asks for a video demonstrating how your platform creates, edits or optimises LinkedIn campaigns. Lead Sync, Conversions, Events Management and Matched Audiences each have their own separate access request.
- Your developer app must be created against a LinkedIn Page and verified by a super admin of that Page; product access requests are not reviewed until that association is in place.
- Use a verified business email on your company domain — personal email addresses fail vetting.
- Advertising API approval is a prerequisite for Matched Audiences, Audience Insights and Media Planning; you cannot apply for those first.
- Audience Insights and Media Planning are restricted programmes judged on partnership fit with no fixed timeline, and the Company Intelligence API is closed to new applicants entirely.
- The authenticated member still needs the right Campaign Manager role (ACCOUNT_BILLING_ADMIN, ACCOUNT_MANAGER, CAMPAIGN_MANAGER or CREATIVE_MANAGER) on each ad account — approval alone does not grant data access.
- On Development tier, a 403 when creating or updating an ad account usually means the ad account was never added to the app under Products > View Ad Accounts.
- Two-legged/client-credentials auth is not available for any marketing scope — every call needs a member token, so unattended jobs need a refresh-token strategy.
- LinkedIn sunsets each Marketing API version roughly a year after release — version 202508 was sunset on 17 August 2026 — so an integration left alone breaks on a schedule, and you must pin and periodically bump the version header.
- Setup time
- 15 min, plus LinkedIn's review of the Advertising API request
- Auth
- OAuth authorization
- API base URL
- https://api.linkedin.com/rest
- Rate limits
- LinkedIn throttles per application and per member on a rolling 24-hour window, with limits varying by endpoint and access tier. Usage is visible under App analytics in the Developer Portal.
Before you begin
- A LinkedIn Page you are a Super admin of. The Developer Portal will not let you create or verify an app without one
- A LinkedIn member account with an ad account role of ACCOUNT_BILLING_ADMIN, ACCOUNT_MANAGER, CAMPAIGN_MANAGER or CREATIVE_MANAGER in Campaign Manager
- Approval for the Advertising API product, requested from the app's Products tab. Every new app starts on the Development tier
- For sponsored or organic posting, the Community Management API product on the same app
- Development tier allows edits to only 5 ad accounts. Standard tier is a separate support-ticket request
Get your credentials
Create a developer app tied to your LinkedIn Page
Open the Developer Portal and choose My apps → Create app. Enter the app name, paste your company's LinkedIn Page URL, add a privacy policy URL and a logo, tick the Legal agreement box, then click Create app.
Verify the app from your LinkedIn Page
Open the app's Settings tab and click Verify next to the LinkedIn Page. Copy the generated verification URL, open it while signed in as a Super admin of that Page, then click I'm done.
PopMCP Ads Connector
App ID 12345678 · Created 4 Mar 2026
| Company | Status | |
|---|---|---|
| Northwind Tradinglinkedin.com/company/northwind | Unverified | Verify |
Send the link to a Page Super admin if that is not you. It expires.
Request the Advertising API product
Open the Products tab and click Request access on Advertising API, then complete the access form. Add Community Management API if PopMCP should publish sponsored or organic posts, and Lead Sync API for lead gen forms.
Products
Add the APIs this app is allowed to call.
| Product | Tier | Status | |
|---|---|---|---|
| Advertising APICampaigns, creatives, reporting | Development | Not requested | Request access |
| Community Management APIPage posts and engagement | Development | Not requested | Request access |
| Lead Sync APILead gen form responses | Development | Not requested | Request access |
| Sign In with LinkedIn using OpenID ConnectOpen permission | Standard | Added |
Development tier gives unlimited reads and edits on up to five ad accounts.
Add the PopMCP callback URL
On the Auth tab, click the pencil next to OAuth 2.0 settings → Authorized redirect URLs for your app and use Add redirect URL to paste the callback URL from the PopMCP connect screen. Click Update.
OAuth 2.0 settings
Redirect URLs LinkedIn will return the authorization code to.
The field does not autosave. Click Update before leaving the tab.
Copy the Client ID and Client Secret
Still on the Auth tab, copy Client ID and Primary Client Secret from the Application credentials card into the matching PopMCP fields. Scroll down to OAuth 2.0 scopes and check that r_ads, rw_ads and r_ads_reporting are listed.
Auth
Credentials and the permissions this app has been granted.
- Client ID
- 86xk****q2vt
- Primary Client Secret
- WPL_AP1.****.7Qd3
- Secret created
- 4 Mar 2026
| OAuth 2.0 scopes | Product | Status |
|---|---|---|
| r_ads | Advertising API | Granted |
| rw_ads | Advertising API | Granted |
| r_ads_reporting | Advertising API | Granted |
| w_organization_social | Community Management API | In review |
The secret is shown in full on this card. Treat it like a password.
Connect in PopMCP
Open your workspace, choose LinkedIn Ads in the marketplace, and fill in the connect dialog:
| Field | What to enter |
|---|---|
| Client IDtext | LinkedIn Developer Portal → My apps → your app → Auth → Application credentials. The app needs the Advertising API product (and the Community Management API product if you want to publish sponsored posts). Add the callback URL above to the app's Authorized redirect URLs first. |
| Client Secretsecret | Same Auth tab as the Client ID. Stored encrypted, used server-side only, and never sent to the browser or to any tool.Encrypted with AES-256-GCM on save and never shown again. |
https://app.popmcp.com/api/providers/linkedin-ads/callbackIn the LinkedIn Developer Portal → My apps → your app → Auth, add this exact URL under 'Authorized redirect URLs for your app' and save. LinkedIn compares it character for character, so authorization fails until it matches.
PopMCP verifies the credential against LinkedIn Ads immediately. On success the connection flips to Verified and its MCP tools are provisioned.
Permissions PopMCP requests
These are the scopes sent to LinkedIn Ads at authorization time.
| Scope | Why PopMCP asks for it |
|---|---|
| r_ads | Lists the ad accounts, campaign groups, campaigns and creatives the signed-in member can see. |
| rw_ads | Creates and edits campaigns, ad groups and creatives. Only works on ad accounts where the member holds a billing admin, account manager, campaign manager or creative manager role. |
| r_ads_reporting | Pulls the analytics finder reports: impressions, clicks, spend and conversions. |
| r_basicprofile | Identifies the connecting member so PopMCP can resolve which ad accounts they administer. |
| r_organization_admin | Reads the LinkedIn Pages behind the ad accounts, plus follower and visitor analytics. |
| rw_organization_admin | Manages Page settings. Comes with the Community Management API product. |
| r_organization_social | Reads organic Page posts and their engagement, needed to sponsor an existing post. |
| w_organization_social | Publishes posts as the Page, the basis of Thought Leader and sponsored content. |
| w_member_social | Publishes on the connecting member's behalf. |
| rw_conversions | Creates conversion rules and uploads offline conversion events. Comes with the Conversions API product. |
| r_marketing_leadgen_automation | Reads lead gen form responses. Comes with the Lead Sync API product. |
| r_events | Reads the organization's LinkedIn events so event ads and event leads work. |
| rw_events | Creates and edits LinkedIn events. Comes with the Events Management API product. |
Verify it worked
PopMCP shows the LinkedIn Ads connector as Connected, with your LinkedIn member name and a picker listing the nine-digit ad accounts you administer in Campaign Manager.
Troubleshooting
The connect popup dies with "unauthorized_scope_error"
Why: The app has not been approved for a product that grants one of the requested scopes. Usually the Advertising API is still in review, or Community Management was never requested.
Fix: Open the app's Auth tab and compare the OAuth 2.0 scopes list against the scopes PopMCP asks for. Request the missing product on the Products tab and reconnect once it flips to Added.
401 "Redirect_uri doesn't match"
Why: The callback URL in the app's Auth tab differs from the one PopMCP sends. Often a trailing slash, http instead of https, or a URL typed but never saved with Update.
Fix: Re-copy the callback URL from the PopMCP connect screen, paste it verbatim into Authorized redirect URLs, then click Update.
Reads work but any campaign edit returns a 403 or ACL error
Why: Development tier allows edits on only five ad accounts, and only accounts explicitly mapped to the app.
Fix: In the Developer Portal open Products → View Ad Accounts → Add Ad Account and paste the nine-digit ID from Campaign Manager. For unlimited accounts, raise a Standard tier request on the Developer Support Portal with a video of your workflow.
The connection stops working after about two months
Why: LinkedIn access tokens live 60 days. Refresh tokens are only issued to apps that have programmatic refresh enabled.
Fix: Reconnect the connector in PopMCP. For unattended refresh, ask LinkedIn Developer Support to enable programmatic refresh tokens for the app.
The Products tab shows nothing to request
Why: The app is not verified against its LinkedIn Page.
Fix: Open the Settings tab, click Verify, open the generated URL as a Page Super admin, and confirm.
The app cannot be created because no Page is available
Why: LinkedIn will not issue Advertising API access to an app with no LinkedIn Page behind it, and you must be a Super admin of that Page.
Fix: Create or claim the LinkedIn Page first, give yourself the Super admin role on it, then return to My apps → Create app.