MARKETING · MARKETING
Campaign groups, campaigns, creatives, lead forms and reporting for their own ads.
Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.
Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.
Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.
Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.
linkedin_ads_activate_campaignWRITEDESTRUCTIVE — SPENDS MONEY. Set a campaign to ACTIVE. From this call onwards LinkedIn serves its ads and charges the ad account up to the campaign's daily and total budgets, without asking again. Read those two numbers with get_campaign first: they are what this call authorises. The campaign's group must also be ACTIVE for anything to deliver. Reversible with pause_campaign; money already spent is not refunded.
linkedin_ads_activate_campaign_groupWRITEDESTRUCTIVE — SPENDS MONEY. Set a campaign group to ACTIVE so every active campaign inside it starts delivering and charging the ad account. The group's total budget is the ceiling; read it with get_campaign_group before calling this, because that number is what you are authorising. Reversible with pause_campaign_group, but money already spent is not refunded.
linkedin_ads_activate_creativeWRITEDESTRUCTIVE — SPENDS MONEY. Mark a creative ACTIVE so LinkedIn serves it. Once its campaign and campaign group are also ACTIVE this ad starts costing the account money, bounded only by the campaign's budgets. LinkedIn's own creative review still applies. Reversible with pause_creative; spend is not refunded.
linkedin_ads_add_ad_account_userWRITEDESTRUCTIVE — give a LinkedIn member a role on an ad account. This is an access-control change, not a data change: the person can afterwards spend from the account through Campaign Manager, with no further involvement from Agentic Fabriq and no Agentic Fabriq audit row behind anything they do. ACCOUNT_BILLING_ADMIN cannot be granted through Agentic Fabriq at all — an account has exactly one and that is the person LinkedIn invoices. Reversible with remove_ad_account_user.
linkedin_ads_add_companies_to_dmp_segmentWRITEAdd companies to a COMPANY-type matched audience, by LinkedIn organization URN, name, website or email domain. Company data is not personal data, so unlike the people equivalent nothing here is hashed. Reversible with remove_companies_from_dmp_segment.
linkedin_ads_add_users_to_dmp_segmentWRITEAdd people to a matched audience by hashed identifier. THIS SENDS PERSONAL DATA ABOUT THE CUSTOMER'S OWN CONTACTS TO LINKEDIN. Identifiers must already be hashed: Agentic Fabriq accepts only SHA256_EMAIL (64 hex characters), SHA512_EMAIL (128) and GOOGLE_AID, and verifies the hash shape before anything is sent, because LinkedIn's own rule is that raw email addresses must never appear in this field. Lowercase and trim an address before hashing it or it will not match. Up to 5,000 people per call. Reversible with remove_users_from_dmp_segment.
linkedin_ads_archive_campaignWRITEDESTRUCTIVE — archive a campaign. It stops delivering and leaves the default Campaign Manager view. Reversible with unarchive_campaign, which returns it to DRAFT rather than to ACTIVE, so archiving and unarchiving a live campaign does not resume it.
linkedin_ads_archive_campaign_groupWRITEDESTRUCTIVE — archive a campaign group. It stops delivering and disappears from the default Campaign Manager view. Reversible with unarchive_campaign_group, which returns it to DRAFT — not to ACTIVE, so archiving a live group and unarchiving it does NOT resume delivery on its own.
linkedin_ads_archive_creativeWRITEDESTRUCTIVE — archive a creative so it stops serving and leaves the default view. Reversible with unarchive_creative, which returns it to DRAFT rather than to ACTIVE.
linkedin_ads_associate_conversion_with_campaignWRITEAttach a conversion rule to a campaign so LinkedIn attributes that outcome to it. Changes what is measured, not what is spent. Reversible with remove_conversion_from_campaign.
linkedin_ads_browse_targeting_entitiesREADList the values available inside one targeting facet — every seniority, every industry, every country. Returns each value's URN and display name; the URN is what update_campaign_targeting needs. Use typeahead_targeting_entities instead for large facets such as job titles or companies, where browsing is impractical.
linkedin_ads_cancel_ad_accountWRITEDESTRUCTIVE — cancel an entire ad account. Every campaign under it stops delivering immediately, across every campaign group. This is the widest blast radius in the LinkedIn Ads catalog: it does not affect one campaign, it stops the account. Reversible with reactivate_ad_account, but delivery lost while cancelled is not recovered and any pacing LinkedIn had learned is reset.
linkedin_ads_create_ad_accountWRITECreate a LinkedIn ad account. Created in DRAFT — an account cannot serve or spend until a person adds a billing method in Campaign Manager, which no API can do. Set test=true for a sandbox account whose ads are never served and never billed; that flag is fixed for the account's whole life and cannot be changed later. On a Development-tier app LinkedIn allows exactly one API-created account and it must be a test account; real accounts must be made in Campaign Manager until the app reaches Standard tier.
linkedin_ads_create_ad_target_templateWRITESave a targeting definition as a reusable template on an ad account. Additive and spends nothing — a template is not attached to any campaign until someone uses it.
linkedin_ads_create_campaignWRITECreate a campaign inside a campaign group. ALWAYS CREATED IN DRAFT — a new campaign can never deliver or spend on the call that made it, and no argument changes that. Agentic Fabriq REQUIRES a daily budget or a total budget, and REQUIRES an end date, even though LinkedIn will accept a campaign with neither: those are the caps that bound what this campaign can ever cost. A campaign with no ceiling is not expressible through this tool.
linkedin_ads_create_campaign_groupWRITECreate a campaign group. ALWAYS CREATED IN DRAFT — nothing under a draft group can deliver or spend, and there is no argument that changes that; activation is a separate, separately granted action. A total budget and an end date are both REQUIRED by Agentic Fabriq even though LinkedIn allows a group with neither: those two values are the ceiling that makes everything under this group bounded, and a group without them can spend without limit until a person notices.
linkedin_ads_create_conversionWRITECreate a conversion rule on an ad account so LinkedIn can attribute outcomes to advertising. Additive and spends nothing; it does not change any campaign's delivery until it is associated with one. Note that MARKETING_QUALIFIED_LEAD and SALES_QUALIFIED_LEAD can no longer be created, on any LinkedIn version from 202408.
linkedin_ads_create_creativeWRITECreate a creative — one ad — inside a campaign, from a post that already exists. ALWAYS CREATED IN DRAFT: it cannot serve or spend on the call that made it, and no argument changes that. LinkedIn also reviews every creative before it can serve, so activating one does not necessarily start delivery immediately.
linkedin_ads_create_dmp_segmentWRITECreate an empty matched audience on an ad account. Additive and spends nothing; it holds no members until add_users_to_dmp_segment or add_companies_to_dmp_segment is called, and cannot be targeted until LinkedIn matches enough of them.
linkedin_ads_create_dmp_segment_destinationWRITEPublish a matched audience to an additional LinkedIn destination so campaigns there can target it. Additive; spends nothing on its own.
linkedin_ads_create_insight_tagWRITECreate a LinkedIn Insight Tag on an ad account. Additive and spends nothing — the tag does nothing until someone installs the snippet on a website, which no API can do.
linkedin_ads_create_lead_formWRITECreate a lead gen form on an ad account. The form is what collects real people's names, email addresses and phone numbers when they respond to an ad, so what you put in `questions` decides what personal data the customer will be collecting and becoming responsible for. LinkedIn requires a privacy policy URL. Creating a form spends nothing and collects nothing until it is attached to a live campaign.
linkedin_ads_delete_ad_target_templateWRITEDESTRUCTIVE — delete a saved audience template. Campaigns already using its targeting keep running unchanged; what is lost is the reusable definition, and LinkedIn publishes no undelete. The inverse is create_ad_target_template, so read the template with get_ad_target_template first if you may want it back.
linkedin_ads_delete_conversionWRITEDESTRUCTIVE — delete a conversion rule. Every campaign using it stops attributing outcomes, and the historical figures that referenced it become unreadable in reporting. Consider disabling it with update_conversion instead, which is reversible; deletion is not. The inverse is create_conversion, but a recreated rule is a new rule and does not inherit history.
linkedin_ads_delete_dmp_segmentWRITEDESTRUCTIVE — permanently delete a matched audience and the whole member list inside it. Any live campaign targeting it loses that audience, which can leave the campaign targeting nothing and silently stop delivery. UNRECOVERABLE IN A WAY MOST DELETES ARE NOT: LinkedIn publishes no endpoint that reads a segment's members back, so the list cannot be exported first and cannot be rebuilt from LinkedIn — only from whatever produced it originally.
linkedin_ads_delete_draft_campaignWRITEDESTRUCTIVE — permanently delete a campaign that has never run. Agentic Fabriq reads it first and refuses unless its status is DRAFT, so a campaign that has delivered or spent cannot be deleted through this tool; archive it instead, which is reversible. Unrecoverable, and it takes the campaign's targeting and creatives with it.
linkedin_ads_delete_draft_campaign_groupWRITEDESTRUCTIVE — permanently delete a campaign group that has never run. Agentic Fabriq reads it first and refuses unless its status is DRAFT, so a group that has delivered or spent can never be deleted through this tool; archive it instead, which is reversible. Unrecoverable.
linkedin_ads_delete_draft_creativeWRITEDESTRUCTIVE — permanently delete a creative that has never served. Agentic Fabriq reads it first and refuses unless its intended status is DRAFT, so an ad that has run cannot be deleted through this tool; archive it instead. The underlying post is not deleted.
linkedin_ads_delete_lead_notificationWRITEDESTRUCTIVE — delete a lead notification webhook so LinkedIn stops pushing new leads to it. Whatever system was receiving those leads stops receiving them, silently, and Agentic Fabriq cannot recreate it — creating a webhook is deliberately not offered. This ships because stopping an unwanted flow of personal data to a third party is a capability worth having even when starting one is not: read the list first with list_lead_notifications.
linkedin_ads_delete_test_ad_accountWRITEDESTRUCTIVE — permanently delete a TEST ad account and everything in it. Agentic Fabriq reads the account first and refuses unless LinkedIn reports `test: true`, so a real, billed account can never be deleted through this tool however it is called; cancel it instead. Unrecoverable — LinkedIn publishes no undelete.
linkedin_ads_get_ad_accountREADRead one ad account: name, currency, type, status, serving statuses and whether it is a test account. `test: true` means nothing it contains is ever served to a real member and nothing is ever billed.
linkedin_ads_get_ad_account_userREADRead one person's role on one ad account. Person id is the identifier inside urn:li:person:… as returned by list_ad_account_users.
linkedin_ads_get_ad_analyticsREADPerformance figures — impressions, clicks, spend, conversions and about 119 other metrics — broken down by ONE dimension. This is the tool that answers "what did we get for the money". IMPORTANT: LinkedIn does not paginate this endpoint at all and caps a response at 15,000 rows; narrow the date range or the entity list rather than looking for a next page, because the `paging` block in the response is meaningless here. Name only the metrics you need in `fields` — the quota is 45 million metric values per five minutes across the whole app, and asking for every field is how it is exhausted.
linkedin_ads_get_ad_segmentREADRead one ad segment's definition, source and status.
linkedin_ads_get_ad_statisticsREADThe same performance figures as get_ad_analytics, broken down by UP TO THREE dimensions at once — spend by campaign by device by country in one call. Same caps: no pagination, 15,000 rows, and the 45-million-metric-value quota, which multi-pivot queries exhaust far faster because rows multiply. Name your metrics in `fields`.
linkedin_ads_get_ad_supply_forecastREADAsk LinkedIn how much inventory a targeting definition can actually deliver — how many impressions are available to buy. Changes nothing and costs nothing. Use it when a campaign is underdelivering to tell 'the audience is too small' from 'the bid is too low'.
linkedin_ads_get_ad_target_templateREADRead one saved audience template's full targeting definition.
linkedin_ads_get_attributed_revenue_metricsREADRevenue LinkedIn attributes to advertising, for accounts with revenue attribution configured. Answers "did this pay for itself" rather than "how many clicks". Empty results usually mean attribution has not been set up in Campaign Manager, not that there was no revenue.
linkedin_ads_get_audience_countREADEstimate how many LinkedIn members a targeting definition reaches, WITHOUT creating or changing anything. Run this before update_campaign_targeting: LinkedIn refuses to deliver to an audience below its minimum size, and an audience that is far too large spends the budget on people who will never convert. This tool costs nothing and changes nothing.
linkedin_ads_get_budget_pricingREADLinkedIn's own suggested bid range and minimum budget for a given targeting definition and campaign type. Read this BEFORE set_campaign_bid: it is the difference between a bid chosen from the auction's actual clearing range and one the model invented. Changes nothing and costs nothing.
linkedin_ads_get_campaignREADRead one campaign in full: status, budgets, bid, cost type, objective, optimization target, run schedule and the whole targetingCriteria tree.
linkedin_ads_get_campaign_groupREADRead one campaign group: status, total budget, run schedule, objective and backfilled flag.
linkedin_ads_get_conversionREADRead one conversion rule: name, type, attribution windows and whether it is enabled.
linkedin_ads_get_creativeREADRead one creative: its intended status, LinkedIn's review status, the campaign it belongs to and the content reference it serves. Any signed media download URL in the response is withheld — use LinkedIn Campaign Manager to view the asset itself.
linkedin_ads_get_dmp_segmentREADRead one matched audience: name, type, source, status and how many members LinkedIn was able to match. A segment below LinkedIn's minimum match size cannot be targeted.
linkedin_ads_get_dmp_segment_list_uploadREADRead one CSV upload's status, row counts and any per-row errors LinkedIn reported.
linkedin_ads_get_insight_tagREADRead one Insight Tag's configuration and status.
linkedin_ads_get_lead_formREADRead one lead gen form: its headline, description, privacy policy link, consent checkboxes and every question with its id and predefined field. Form definition only, no leads.
linkedin_ads_get_lead_form_responseREADRead one lead submission. RETURNS THE PERSONAL DATA OF A REAL PERSON — name, email address, phone number, employer and job title in plaintext, depending on the form's questions, plus their LinkedIn person URN and their answers to any consent checkboxes. Agentic Fabriq stores none of it and logs none of it.
linkedin_ads_get_my_ad_account_accessREADShow which ad accounts THIS connection's LinkedIn member can reach and at what role. Run this first when anything answers 403: a member with only the VIEWER role cannot write even when rw_ads was granted, and on a Development-tier app an account that is not allowlisted in the LinkedIn developer portal is unreachable no matter what role the member holds. This tool tells the two apart.
linkedin_ads_list_ad_account_usersREADList the people who hold a role on one ad account, with each person's URN and role. Use it before changing anyone's access: there is exactly one ACCOUNT_BILLING_ADMIN per account and that is the person LinkedIn bills.
linkedin_ads_list_ad_accountsREADList the LinkedIn ad accounts this connection's member can reach, with id, name, currency, type and status. START HERE: every other LinkedIn Ads tool needs an account id and nothing else hands one over. Returns only accounts where the authorizing member holds an ad-account role — if it comes back empty the member has no seat, not a broken connection.
linkedin_ads_list_ad_segmentsREADList the ad segments on one or more ad accounts — LinkedIn's account-level view of every audience available for targeting, including retargeting segments that no DMP upload created.
linkedin_ads_list_ad_target_templatesREADList the saved audience templates on an ad account. A template is a reusable targeting definition a marketer has already agreed to; reusing one is safer than composing targeting from scratch.
linkedin_ads_list_campaign_conversionsREADShow which conversion rules are attached to which campaigns. A campaign with no conversion rule reports clicks and nothing about outcomes, which is the usual reason a report looks empty.
linkedin_ads_list_campaign_groupsREADList the campaign groups in one ad account with their status, total budget and run schedule. A campaign group is the budget and scheduling envelope around a set of campaigns; its id is required to create a campaign.
linkedin_ads_list_campaignsREADList the campaigns in one ad account with status, type, daily and total budget, bid, run schedule and campaign group. This is the tool to run before anything that spends: it shows what is already ACTIVE and what each one is allowed to cost.
linkedin_ads_list_conversionsREADList the conversion rules on an ad account — the definitions of what counts as a lead, a purchase or a signup. Returns rule metadata only; no personal data and no user identifiers.
linkedin_ads_list_country_groupsREADList LinkedIn's country groupings, used when targeting whole regions rather than individual countries.
linkedin_ads_list_creativesREADList the creatives (individual ads) in an ad account, optionally narrowed to particular campaigns. Returns each creative's id, intended status, review status and the post or content it serves.
linkedin_ads_list_dmp_segment_destinationsREADList where a matched audience is published — which LinkedIn surfaces may use it.
linkedin_ads_list_dmp_segment_list_uploadsREADList the CSV uploads made into a matched audience, with each one's status and match counts. The diagnostic for "the audience looks too small": it shows how many rows LinkedIn actually matched.
linkedin_ads_list_dmp_segmentsREADList the matched audiences (DMP segments) on an ad account, with each one's id, name, type, status and approximate size. The id is what campaign targeting needs. Member lists themselves cannot be read back — LinkedIn publishes no endpoint that returns them.
linkedin_ads_list_insight_tag_domainsREADList the website domains an ad account's Insight Tag has been seen firing on. The quickest way to confirm a tag is actually installed where someone thinks it is.
linkedin_ads_list_insight_tagsREADList the LinkedIn Insight Tags on an ad account — the browser tags that make website conversion tracking and website retargeting work. If conversion reporting is empty, check here first.
linkedin_ads_list_lead_form_responsesREADRead the actual leads submitted through an ad account's lead gen forms. THIS RETURNS THE PERSONAL DATA OF REAL PEOPLE — third parties, not the account holder. Depending on the form's questions the answers include full name, personal and work email address, phone number, employer, job title and LinkedIn profile link, all in plaintext and all prefilled from the member's own LinkedIn profile. The response also identifies each submitter by person URN. Answers are keyed by question id: join them against linkedin_ads_get_lead_form to know which field is which. Agentic Fabriq stores none of this and logs none of it, but whatever receives the result becomes responsible for it — LinkedIn's terms require deletion on the member's request.
linkedin_ads_list_lead_formsREADList the lead gen forms owned by an ad account, with each form's id, name, headline and the questions it asks. Form DEFINITIONS only — no leads and no personal data. You need the question list from here to make sense of the answers list_lead_form_responses returns, which are keyed by question id.
linkedin_ads_list_lead_notificationsREADList the webhooks configured to push new leads out of LinkedIn to another system, with the id of each. Agentic Fabriq cannot create one — a caller-chosen destination that fires forever with no Agentic Fabriq action row behind it is exactly what the action catalog exists to prevent — but it can show you the ones that exist, and delete_lead_notification can stop one.
linkedin_ads_list_similar_targeting_entitiesREADAsk LinkedIn for targeting values similar to ones you already have — the way to widen an audience that is too small without guessing. Pair it with get_audience_count to see what the widening actually buys.
linkedin_ads_list_targeting_facetsREADList every dimension LinkedIn can target on — locations, industries, seniorities, job titles, skills, company size and the rest — with the facet URN each one uses. This is the discovery step: a facet URN is what browse_targeting_entities needs, and nothing else hands one over.
linkedin_ads_pause_campaignWRITEDESTRUCTIVE — stop a campaign delivering. Spending stops immediately, which is the safe direction for money and the dangerous direction for a live campaign: a launch nobody knows was paused simply stops working, and LinkedIn does not restore the pacing it had learned when it is resumed. The inverse, activate_campaign, is one call away.
linkedin_ads_pause_campaign_groupWRITEDESTRUCTIVE — stop every campaign in this group from delivering. This is the safe direction for money and the dangerous direction for a live marketing programme: pausing a group mid-flight ends delivery for a launch nobody else knows was stopped, and LinkedIn does not restore lost pacing when it is resumed. No confirmation token, because the inverse (activate_campaign_group) is one call away and stopping spend is never the irreversible direction.
linkedin_ads_pause_creativeWRITEDESTRUCTIVE — stop serving one ad. Its campaign keeps delivering through whatever other creatives it has; pausing the last active creative on a campaign stops that campaign delivering entirely while leaving it reading ACTIVE, which is easy to misread. The inverse is activate_creative.
linkedin_ads_reactivate_ad_accountWRITEDESTRUCTIVE — return a cancelled ad account to ACTIVE. This is the inverse of cancel_ad_account and it is dangerous in the opposite direction: every campaign that was ACTIVE before the cancellation resumes delivering and resumes spending money, all at once, without any further call. Check what is under the account with list_campaigns first.
linkedin_ads_remove_ad_account_userWRITEDESTRUCTIVE — remove a person's role on an ad account. They lose access to it in Campaign Manager immediately. If the person is the only remaining manager the account can be left unmanageable, and LinkedIn does not warn first — check with list_ad_account_users. Reversible with add_ad_account_user, which is the inverse.
linkedin_ads_remove_companies_from_dmp_segmentWRITEDESTRUCTIVE — remove companies from a matched audience. Shrinking it below LinkedIn's minimum match size makes it untargetable and stops delivery on campaigns using it. The inverse is add_companies_to_dmp_segment.
linkedin_ads_remove_conversion_from_campaignWRITEDESTRUCTIVE — detach a conversion rule from a campaign. The campaign keeps delivering and keeps spending; it simply stops attributing that outcome, so the campaign looks like it stopped working when what stopped was the measurement. The inverse is associate_conversion_with_campaign.
linkedin_ads_remove_users_from_dmp_segmentWRITEDESTRUCTIVE — remove people from a matched audience by hashed identifier. Shrinking a segment below LinkedIn's minimum match size makes it untargetable, which stops delivery on every campaign using it. The inverse is add_users_to_dmp_segment — but LinkedIn publishes no way to read a segment's members, so you can only put back identifiers you still hold yourself.
linkedin_ads_resolve_targeting_urnsREADTurn targeting URNs back into human-readable names. Use it to explain an existing campaign's targeting tree, which get_campaign returns as bare URNs that mean nothing on their own.
linkedin_ads_send_conversion_eventsWRITESend offline or server-side conversion events to LinkedIn so they can be attributed to advertising. THIS SENDS PERSONAL DATA ABOUT THE CUSTOMER'S OWN USERS TO LINKEDIN, and it cannot be taken back once sent. Identifiers must already be hashed — Agentic Fabriq accepts only SHA256_EMAIL (64 hex characters) and LinkedIn's first-party tracking UUID, verifies the hash shape before sending, and refuses plaintext IP addresses outright. Up to 5,000 events per call; LinkedIn allows 600 calls a minute and 500,000 a day per member.
linkedin_ads_set_campaign_bidWRITEDESTRUCTIVE — set the bid, the price this campaign is willing to pay per click, impression or view. Raising it does not raise the budget ceiling, but it spends the same budget faster and at a worse unit price; lowering it too far can stop the campaign winning any auctions at all, which looks like an outage. linkedin_ads_get_budget_pricing returns LinkedIn's own suggested range for the campaign's targeting. Its own inverse.
linkedin_ads_set_campaign_daily_budgetWRITEDESTRUCTIVE — set the most this campaign may spend in a single day. RAISING IT AUTHORISES REAL SPEND, every day, until someone changes it back: the difference is not a one-off, it recurs. LinkedIn may also overdeliver a daily budget by up to 20% on any given day and settle over the campaign's life. This action is its own inverse — call it again with the previous figure.
linkedin_ads_set_campaign_group_total_budgetWRITEDESTRUCTIVE — set the total amount of money this campaign group may ever spend. RAISING IT AUTHORISES REAL SPEND: the difference between the old and new figure is money that can leave the customer's account, and LinkedIn will spend it without asking again. Lowering it below what has already been spent stops delivery. This action is its own inverse — call it again with the previous figure to put the ceiling back.
linkedin_ads_set_campaign_run_scheduleWRITEDESTRUCTIVE — change when a campaign runs. Pushing the end date out authorises more days of spend; pulling it in stops delivery early. Agentic Fabriq requires an end date, so this action cannot be used to remove one and make the campaign open-ended. Its own inverse.
linkedin_ads_set_campaign_total_budgetWRITEDESTRUCTIVE — set the most this campaign may ever spend across its whole life. RAISING IT AUTHORISES REAL SPEND up to the new figure. Lowering it below what has already been spent stops delivery immediately. This action is its own inverse.
linkedin_ads_typeahead_targeting_entitiesREADSearch for targeting values by name inside one facet — the way to resolve "Chief Marketing Officer" or "Acme Corp" into the URN targeting actually uses. Facets like job titles, skills and companies have far too many values to browse.
linkedin_ads_unarchive_campaignWRITEBring an archived campaign back as a DRAFT. The inverse of archive_campaign. Nothing delivers or spends until activate_campaign is called, which is a separate grant.
linkedin_ads_unarchive_campaign_groupWRITEBring an archived campaign group back as a DRAFT. The inverse of archive_campaign_group. It does not resume delivery — nothing spends until activate_campaign_group is called, which is a separate grant.
linkedin_ads_unarchive_creativeWRITEBring an archived creative back as a DRAFT. The inverse of archive_creative. It does not resume serving — activate_creative is a separate grant.
linkedin_ads_update_ad_accountWRITEChange an ad account's name or its owning organization. Sends a Rest.li $set patch, so a field you do not name is left exactly as it was — this cannot null anything. Status is deliberately not settable here; use cancel_ad_account or reactivate_ad_account, which are granted separately.
linkedin_ads_update_ad_account_user_roleWRITEDESTRUCTIVE — change what a person may do on an ad account. Narrowing a role can lock a colleague out of live campaigns mid-flight; widening one hands over the ability to spend. ACCOUNT_BILLING_ADMIN is not settable through Agentic Fabriq.
linkedin_ads_update_campaignWRITEChange a campaign's name, objective or optimization target. A $set patch, so nothing you do not name is touched — unlike a PUT, this cannot silently null a field. Budget, bid, schedule, targeting and status are each their own separately granted action because each of them changes what the campaign costs.
linkedin_ads_update_campaign_groupWRITEChange a campaign group's name or objective. A $set patch, so nothing you do not name changes. Budget, schedule and status are each their own action because each one moves money.
linkedin_ads_update_campaign_targetingWRITEDESTRUCTIVE — REPLACE a campaign's whole audience definition. This is not a merge: the include and exclude sets you pass become the entire targeting, and anything you leave out is dropped. On a live campaign it redirects the remaining budget at a different audience immediately, so a mistake here spends real money on the wrong people — the budget still caps the amount, but not who sees it. Check the result with linkedin_ads_get_audience_count first, and read the existing tree with get_campaign so you can put it back. No confirmation token: the budget ceiling still bounds the loss, which is what separates this from the budget actions.
linkedin_ads_update_conversionWRITERename a conversion rule, change its attribution windows, or enable and disable it. A $set patch, so nothing you do not name changes. Disabling a rule stops future attribution but does not delete history.
linkedin_ads_update_creativeWRITEPoint a creative at a different piece of content. A $set patch, so nothing else about the creative changes. Changing the content of a creative that is already serving sends it back through LinkedIn's review, so delivery pauses until it is approved again. Intended status is not settable here — use activate_creative or pause_creative.
linkedin_ads_update_dmp_segmentWRITERename a matched audience. A $set patch; its members are not touched and no campaign using it is affected.
linkedin_ads_update_lead_formWRITEChange a lead gen form's name, headline, description or privacy policy link. A $set patch, so nothing you do not name changes. LinkedIn versions forms: editing one that is live creates a new version, and responses already collected stay attached to the version that collected them.
Put LinkedIn Ads behind one governed endpoint.
Same permissions, same audit trail, whatever else you connect next.