> ## Documentation Index
> Fetch the complete documentation index at: https://docs.consile.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# LinkedIn Ads

> Analyze and manage your LinkedIn ads from your AI: reporting, audiences and conversions, plus creating and managing campaigns behind guardrails.

*[Læs siden på dansk](https://docs.consile.ai/connectors/linkedin-ads.md)*

The LinkedIn Ads connector gives your AI access to your LinkedIn advertising via
the LinkedIn Marketing API: ad accounts, campaign groups, campaigns, ads,
performance reports (analytics, demographics, ROAS), audiences/targeting and
conversion tracking. The tools for the company page, organic content and your
own profile are not available yet. Your AI can read ad accounts, campaigns
and reporting, and it can also create and manage campaigns for you behind
guardrails. You approve the Consile app with your LinkedIn login, and your AI
never sees the access token itself.

> **Access**
>
> Read + guardrailed write

> **Authentication**
>
> LinkedIn login (OAuth)

> **Hosting**
>
> Hosted in the EU · Frankfurt

* **Price:** 399 DKK/month excl. VAT. No lock-in,
  cancel at any time. The price covers 1 user and 1 connected LinkedIn login
  (agreement). Each extra user and each extra agreement costs 199.50 DKK/month excl.
  VAT. In EUR the price is €49/month excl. VAT and €24.50 per extra user or
  agreement. Also included in [the Consile Studio membership](https://docs.consile.ai/en/portal/membership.md) and
  [the free edition](https://docs.consile.ai/en/portal/free-edition.md). See [Pricing](https://docs.consile.ai/en/portal/pricing.md).
* **Endpoint:** `https://mcp.consile.ai/linkedin-ads/mcp` (your own named connector in Claude).

> [!NOTE]
>
> **Multiple LinkedIn logins and ad accounts.** The portal calls each connection to
> the system an agreement. One agreement gives access to all the ad accounts that the
> LinkedIn user you approve with has access to. Without a lock, your AI chooses the account
> per question. You need one more agreement if your accounts sit under
> different LinkedIn users, or if each ad account should have its own
> connection, locked to exactly that account (see the section on locking below). An
> administrator opens LinkedIn Ads in the [portal](https://app.consile.ai) and clicks
> **Add agreement** on the **Connections** card. An extra agreement costs 199.50
> DKK/month excl. VAT. Then click **Connect** next to the new agreement, and log in
> with the LinkedIn user the agreement should use. Each agreement gets its own address, for example
> `https://mcp.consile.ai/linkedin-ads-2/mcp`, which you add as a separate
> connector in your AI. Under
> [the Consile Studio membership](https://docs.consile.ai/en/portal/membership.md#one-more-agreement-in-a-system)
> there is no button to add an agreement, so write to
> [support@consile.dk](mailto:support@consile.dk) instead. See
> [Connect LinkedIn Ads](https://docs.consile.ai/en/connect/connect-linkedin-ads.md#multiple-linkedin-logins-and-ad-accounts).

> [!WARNING]
>
> This connector can write: create and edit campaigns and change status and
> budget. Writing is protected by built-in guardrails: new campaigns
> and campaign groups are created as drafts by default, and activating, changing
> budget or bid and archiving require your confirmation. Some changes happen
> without confirmation, for example name and targeting (see below). See
> [Actions & guardrails](https://docs.consile.ai/en/essentials/actions-and-guardrails.md) before you use
> the write tools.

## Prerequisites

**1. Connector bought**

An administrator buys LinkedIn Ads in the [portal](https://app.consile.ai). See
[Buy a connector](https://docs.consile.ai/en/portal/buy-a-connector.md).

**2. Access for your user**

Whoever buys the connector gets access automatically. Other users in your
Consile account must be given access by an administrator under **Team** (choose
**All tools** or **Custom** next to LinkedIn Ads on the person's
page). The first user is included in the price. Each extra user costs
199.50 DKK/month excl. VAT and
is billed pro rata from the day access is given. The access applies to all
your LinkedIn agreements. A user without access can still see the tools in their
AI, but every call is refused with a message to ask an administrator for
access. If you have [the Consile Studio membership](https://docs.consile.ai/en/portal/membership.md), an
administrator instead gives one membership licence per person, and it also covers
LinkedIn Ads. See [Team](https://docs.consile.ai/en/portal/team.md).

**3. Your AI connected**

See [Connect Claude](https://docs.consile.ai/en/connect/connect-claude.md) or
[Connect ChatGPT](https://docs.consile.ai/en/connect/connect-chatgpt.md).

**4. LinkedIn approved**

Log in with your LinkedIn account and approve the Consile app, so your AI gets access
to exactly the ad accounts you yourself have access to. See
[Connect LinkedIn Ads](https://docs.consile.ai/en/connect/connect-linkedin-ads.md).

> [!NOTE]
>
> **The access is renewed automatically**, so you normally do not have to reconnect. If
> access is refused or expires, for example because you revoke it yourself, or
> because LinkedIn asks you to approve again, your AI gets a message that LinkedIn
> Ads must be connected again. Then an administrator reconnects in the portal. See
> [Connect LinkedIn Ads](https://docs.consile.ai/en/connect/connect-linkedin-ads.md#the-access-is-renewed-automatically).

## What can it do? (tools)

You do not need to know the tool names. You ask in natural language, and your AI picks
the right tool itself and calls it for you. The tools are called
`linkedin-ads__<tool>` (for example `linkedin-ads__list_campaigns`) when your AI calls them;
below, the bare names are shown for readability.

The connector provides 64 tools: 45 read-only (pure reading) and 19
write tools, of which 11 are for ad management and 8 for organic content. 42 of
them can be used today. The other 22 (the 8 for organic content and 14
read tools for the Company Page, posts and your own profile) are not available
yet and are marked in the tables below.

### Read (read-only)

**Ad accounts & structure**

| Tool | What it does |
| - | - |
| `list_ad_accounts` | All ad accounts you have access to, + your role on each |
| `search_ad_accounts` | Search/list accounts with details (currency, status, type) |
| `get_ad_account` | One ad account (currency, status, type, serving status) |
| `list_ad_account_users` | Users and roles on an account (who has access) |
| `list_campaign_groups` | Campaign groups under an account (the budget/status container) |
| `get_campaign_group` | One campaign group (budgets, schedule, objective) |
| `list_campaigns` | Campaigns in an account (status, type, budget, bid, targeting) |
| `get_campaign` | One campaign with full targeting, budgets and bids |
| `list_creatives` | Ads (creatives) under an account |
| `get_creative` | One ad (status, content) |
| `get_ad_preview` | Preview an ad in a placement (as in Campaign Manager) |

**Reporting & analytics**

| Tool | What it does |
| - | - |
| `get_ad_analytics` | Performance grouped on one dimension (campaign/ad/account…) over a period |
| `get_ad_statistics` | Multidimensional report (up to three pivots at once) |
| `get_ad_demographics` | Who saw/engaged: industry, title, seniority, country and more |
| `get_attributed_revenue` | CRM-attributed revenue and ROAS (requires a connected CRM) |
| `get_budget_pricing` | Suggested/min/max bids + daily budget limits (forecast, no spend) |
| `forecast_ad_supply` | Forecast of impressions/clicks/spend/reach for a hypothetical setup |
| `get_organization_page_statistics` | The company page's views/clicks (lifetime, broken down by facets). Not available yet |
| `get_organization_follower_statistics` | Follower demographics for the company page. Not available yet |
| `get_organization_share_statistics` | Organic engagement on the page's posts (views, likes, comments). Not available yet |

**Audiences & targeting**

| Tool | What it does |
| - | - |
| `get_audience_count` | Estimate reach for a targeting definition (checks the minimum of 300 members) |
| `list_targeting_facets` | Catalogue of targeting categories (industries, titles, locations…) |
| `list_targeting_entities` | All values for a closed facet (for example seniorities, job functions) |
| `typeahead_targeting_entities` | Free-text search for targeting URNs (geo/skills/companies/titles) |
| `similar_targeting_entities` | Lookalike entities based on seed URNs (audience expansion) |
| `resolve_targeting_urns` | Translate URNs into readable names (for example geo → "Copenhagen") |

**Conversions & Insight Tag**

| Tool | What it does |
| - | - |
| `list_conversion_rules` | All conversion rules for an account |
| `get_conversion_rule` | One conversion rule (type, attribution windows, value) |
| `get_insight_tag` | The account's Insight Tag + tracking snippet |
| `list_insight_tag_domains` | Domains that fire the Insight Tag (verify the installation) |
| `list_campaign_conversions` | Which campaigns attribute which conversions |

**Lead forms (structure only)**

| Tool | What it does |
| - | - |
| `list_lead_forms` | Lead form definitions for an account (structure, no lead data) |
| `get_lead_form` | One lead form (questions, hidden fields, consents) |

**Company page (organic content: reading, not available yet)**

| Tool | What it does |
| - | - |
| `list_administered_organizations` | Company pages you administer (the entry point for choosing a page). Not available yet |
| `get_organization` | Full company profile (name, website, industries, locations). Not available yet |
| `find_organization_by_vanity_name` | Look up a company via its URL slug. Not available yet |
| `get_organization_follower_count` | Total number of followers. Not available yet |
| `list_organization_posts` | The page's organic posts (the content feed). Not available yet |
| `get_post` | One post (text, author, visibility, content). Not available yet |
| `get_post_social_metadata` | Reactions + comment summary for a post. Not available yet |
| `list_post_comments` | Comments on a post. Not available yet |
| `list_post_reactions` | Reactions to a post/a comment. Not available yet |

**My profile & advanced**

| Tool | What it does |
| - | - |
| `get_my_profile` | The connected user's own profile (name, headline). Not available yet |
| `get_my_connections_count` | Number of 1st-degree connections (only the number). Not available yet |
| `query` | Advanced reading of ad data that the other tools do not cover; can only read |

### Write (with guardrail)

The write tools are protected by a built-in barrier:

* **Draft by default:** new campaigns and campaign groups are created as drafts
  (`DRAFT`), unless you ask for something else. They do not serve and spend no money
  until you activate them. Creating as a draft happens immediately, even if you
  specify a budget.
* **Confirmation:** activating (status → `ACTIVE`), changing budget or bid and
  archiving require `confirm: true`. Without confirmation you only get a
  preview of exactly what the tool would do, and nothing is sent to
  LinkedIn.
* **Without confirmation:** name, end date and targeting can be changed immediately, even
  on an active campaign.

Read the whole model in [Actions & guardrails](https://docs.consile.ai/en/essentials/actions-and-guardrails.md).

**Ad management (works today)**

| Tool | What it does | Requires `confirm` |
| - | - | - |
| `create_campaign_group` | Create a campaign group (draft by default) | For `ACTIVE` or `ARCHIVED` |
| `update_campaign_group` | Edit name, end date or total budget on a group | For a budget change |
| `set_campaign_group_status` | Set group to DRAFT/ACTIVE/PAUSED/ARCHIVED | For `ACTIVE` or `ARCHIVED` |
| `create_campaign` | Create a campaign (draft by default) | For `ACTIVE` or `ARCHIVED` |
| `update_campaign` | Edit name/budgets/bid/targeting | For a budget/bid change |
| `set_campaign_status` | Set campaign to DRAFT/ACTIVE/PAUSED/ARCHIVED | For `ACTIVE` or `ARCHIVED` |
| `set_creative_status` | Set ad to DRAFT/ACTIVE/PAUSED/ARCHIVED | For `ACTIVE` or `ARCHIVED` |
| `create_conversion_rule` | Create a conversion rule (measurement, no spend) | No |
| `update_conversion_rule` | Edit a conversion rule's name/value/state | No |
| `associate_campaign_conversion` | Link a conversion rule to a campaign | No |
| `remove_campaign_conversion` | Remove a conversion rule from a campaign | Yes (destructive) |

On a connection that is locked to one ad account, `update_conversion_rule`,
`associate_campaign_conversion` and `remove_campaign_conversion` are hidden. See the section
on locking below.

> [!NOTE]
>
> Setting the status to `PAUSED` works immediately and requires no confirmation.
> It stops serving and spend. It is going live (`ACTIVE`), changing budget
> or bid and archiving (`ARCHIVED`) that require `confirm: true`.

**Organic content (not available yet)**

| Tool | What it does |
| - | - |
| `create_organization_post` | Publish a post as the company page (draft by default) |
| `create_member_post` | Publish a post in your own user's name (draft by default) |
| `update_post` | Edit text or publish a draft |
| `delete_post` | Delete a post (irreversible) |
| `create_comment` | Comment on a post (as page or user) |
| `delete_comment` | Delete a comment (your own, or moderate others') |
| `create_reaction` | React to a post (LIKE/PRAISE/…) |
| `delete_reaction` | Remove a reaction |

The organic tools have the same guardrail: new posts are created as drafts
(`DRAFT`), and publishing public content (a published post, a comment
or a reaction), changing the text of a post and deleting require
`confirm: true`. The only exception is removing a reaction
(`delete_reaction`), which happens without confirmation.

## Try asking

> **Performance & reporting**
>
> > *"How have our LinkedIn campaigns performed over the last 30 days: impressions, clicks and spend per campaign?"*
>
> > *"Which job titles and industries engage most with our ads?"*

> **Audiences & targeting**
>
> > *"How large an audience do we reach with decision-makers in the software industry in Denmark?"*
>
> > *"Find targeting URNs for 'machine learning' and similar skills."*

> **Create & manage**
>
> > *"Create a new campaign group as a draft with a total budget of 5,000 DKK."* (created immediately as a draft; it spends no money until you activate it, and activating requires confirmation)
>
> > *"Pause campaign 12345."* (works immediately, pausing requires no confirmation)
>
> > *"Activate campaign 12345."* (you first get a preview and must confirm before the campaign goes live)

> [!TIP]
>
> A preview only exists for actions that require confirmation:
> activating, changing budget or bid, archiving and removing a
> conversion rule from a campaign. If your AI creates a campaign or
> campaign group as a draft, or changes name, end date or targeting, it
> happens immediately. If you want to see that kind of change first, ask your AI to
> describe what it is going to do before it calls the tool.

## Lock to one company

A LinkedIn login can reach several ad accounts. An administrator can lock an agreement
to one ad account, so every call on that agreement keeps to it. The lock is
optional. Without a lock, the connection works as before.

On a locked connection:

* `list_ad_accounts` and `search_ad_accounts` only show the locked ad account.
* Tools that take an ad account (`adAccountId`) must be given the locked one. If your AI names
  another account, the call is refused, and your AI is told which account
  the connection is locked to.
* In the `get_ad_analytics`, `get_ad_statistics` and `get_ad_demographics` reports,
  Consile itself inserts the locked account when your AI does not name an account. A
  report that also names other accounts is refused. The reports cannot be
  limited to specific campaigns or campaign groups, and they always show the
  default figures. If your AI wants the figures per campaign, it breaks the report down by
  campaign.
* `get_attributed_revenue` always shows the default figures, and `get_budget_pricing`
  does not use `matchType` and `targetingCriteria`.
* The audience and targeting tools work as before.
* 28 tools cannot be limited to one ad account. They are hidden, so your AI does not
  see them and cannot call them.

Eight of the hidden tools work today on a connection without a lock:

| Hidden tool | What it does |
| - | - |
| `get_ad_preview` | Preview an ad |
| `get_conversion_rule` | One conversion rule. `list_conversion_rules` still works |
| `list_campaign_conversions` | Which campaigns attribute which conversions |
| `get_lead_form` | One lead form. `list_lead_forms` still works |
| `query` | Advanced reading of ad data |
| `update_conversion_rule` | Edit a conversion rule |
| `associate_campaign_conversion` | Link a conversion rule to a campaign |
| `remove_campaign_conversion` | Remove a conversion rule from a campaign |

The other 20 hidden tools are not available yet anyway:
`list_administered_organizations`, `get_organization`,
`find_organization_by_vanity_name`, `get_organization_follower_count`,
`get_organization_page_statistics`, `get_organization_follower_statistics`,
`get_organization_share_statistics`, `list_organization_posts`, `get_post`,
`get_post_social_metadata`, `list_post_comments`, `list_post_reactions`,
`create_organization_post`, `create_member_post`, `update_post`, `delete_post`,
`create_comment`, `delete_comment`, `create_reaction` and `delete_reaction`.

There are 36 tools left. 34 of them can be used today, including 8 of the 11 for
ad management. `get_my_profile` and `get_my_connections_count` are still not
available.

If an administrator connects the agreement again with **Reconnect** or a link from your
AI, all calls are refused until an administrator has chosen the ad account again.
If an administrator disconnects, the lock disappears. An ad account can only
be locked on one agreement at a time. How to lock, and what else happens:
[Lock a connection to one company](https://docs.consile.ai/en/portal/company-lock.md).

## Limitations

* **Read + guardrailed write:** the connector can both read and write. Writing is
  protected by drafts by default and by confirmation. See
  [Actions & guardrails](https://docs.consile.ai/en/essentials/actions-and-guardrails.md).
* **No fixed access levels:** LinkedIn Ads does not have the **Read
  only** level. A user with **All tools** under **Team** gets all the
  tools the organization has switched on, including the write tools. If a
  user should only have some of them, for example only the read tools, an administrator chooses
  **Custom**. See [Custom access](https://docs.consile.ai/en/portal/team.md#custom-access).
* **Company Page, organic content and your profile are not available yet:** the
  22 tools marked in the tables above can neither fetch
  nor change anything at LinkedIn yet, and your AI gets an error if it tries.
  The ad, reporting, targeting, conversion and
  lead form tools work today.
* **No new ads:** the connector cannot create ads (creatives) or
  upload images and video. Create the ad itself in Campaign Manager. Your AI can
  then pause, activate or archive it.
* **No campaign deletion:** campaigns and campaign groups can only be archived
  (requires confirmation), not deleted.
* **Language and country on new campaigns:** without another choice, a campaign is created with
  country `US` and language `en`. When you create Danish campaigns, ask your AI for
  `DK` and `da`, for example.
* **Changing name and targeting requires no confirmation:** when a campaign is
  edited, only budget and bid require confirmation. Changed targeting on an
  active campaign takes effect immediately.
* **Lead data not included:** the connector can read the structure of lead forms,
  but not the submitted leads.
* **Errors from LinkedIn are not shown verbatim:** if LinkedIn refuses a call, for example because of
  an invalid argument, your AI only gets the message `Tool invocation failed.` without
  LinkedIn's explanation. If access has expired or been revoked, your AI instead gets
  a message that LinkedIn Ads must be connected again. If all calls fail,
  including `list_ad_accounts`, an administrator must connect LinkedIn Ads again in
  the portal.
* **Access is renewed automatically:** Consile renews the LinkedIn access automatically.
  If you revoke access at LinkedIn, an administrator must reconnect in
  the portal. If the agreement is locked, the ad account must be chosen again afterwards.

Is something not working as expected? See [Troubleshooting](https://docs.consile.ai/en/troubleshooting.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.