What this workflow can change
This guide uses both read and write actions.Before you start
You need:- An MCP-capable AI client connected to
https://linkedinads.hireotto.com/mcp. - A LinkedIn identity with access to the intended Campaign Manager account.
- A role with sufficient write permission. Viewer access is read-only.
- Access to the LinkedIn Page or advertiser identity used by the ad when the workflow requires it.
- An approved objective, audience, budget, schedule, landing page, copy, image, and tracking plan.
- Enough HireOtto credits for validation, image upload, and creation.
List the LinkedIn Ads accounts available to my default HireOtto profile. Refresh access from LinkedIn and include each account name, account ID, status, currency, my role, and whether the connection can write. Do not change anything.
1. Prepare a complete campaign brief
Give the AI client the decisions it cannot safely infer:- Business objective and the one outcome the campaign should optimize for.
- Offer and landing page.
- Campaign group and ad-set names.
- Included and excluded audience logic.
- Daily or total budget, account currency, and schedule.
- Ad format, bid approach, and optimization goal.
- Introductory text, headline, call to action, alt text, and image.
- The LinkedIn Page or advertiser identity that should appear.
- The conversion action and how it will be tested.
- The person who can approve activation.
Turn the campaign brief below into a LinkedIn Ads preflight checklist. Identify every missing or ambiguous decision, but do not invent targeting IDs, budget values, dates, Page identity, tracking status, or approval. Do not create or update anything.
2. Resolve targeting before creation
Use targeting discovery to convert marketer-friendly audience ideas into valid LinkedIn entities. Review every match and keep the exact URNs returned by LinkedIn. Then estimate the combined audience with the intended inclusions and exclusions. Audience size is a delivery guardrail, not a quality score or reach forecast. LinkedIn can round counts, suppress details, and deliver to fewer members than the estimate.Resolve valid LinkedIn targeting entities for the locations, industries, companies, functions, seniorities, and exclusions in the brief below. Show every match and URN, flag ambiguous matches, build the complete inclusion and exclusion criteria, and estimate the combined audience size. Do not create or update a campaign.
languages or interfaceLocales. An explicit interface locale must contain exactly one value and must match the ad-set locale.
3. Reuse or upload an image
For the supported single-image path, the creative needs an image URN whose LinkedIn processing status isAVAILABLE.
Start by listing recent active Media Library assets. Reuse an existing approved asset when possible.
List the 20 most recent active LinkedIn Media Library images for account ACCOUNT_ID. Include each image URN, name, creation time, and processing status. Read only.
Upload the attached LinkedIn ad image to account ACCOUNT_ID, register it in the Media Library, name it ASSET_NAME, and return the image URN and processing status. Do not create a creative, ad set, or campaign.
image/jpeg, image/png, and image/gif are accepted. Do not paste base64 into chat. If an upload times out, list recent assets before retrying so you do not create a duplicate.
4. Choose the hierarchy workflow
Usecreate_linkedin_campaign when you want to validate or create the campaign group, ad set, and optional creatives in order. You can either:
- Reuse an existing campaign group by supplying its ID.
- Create a new campaign group from settings you provide.
create_linkedin_ads_entities when you need to create only one object or recover from a failure after a parent object already exists.
Campaign-group inputs
Ad-set inputs and defaults
An ad set requires a parent campaign group,name, targeting, and at least one budget. For the current image-led path, use SPONSORED_UPDATES with the appropriate standard-update format.
- Dynamic Ads require both daily and total budgets plus an ad format.
- Connected TV requires offsite delivery.
- Lead Generation cannot enable offsite delivery.
- Changing a fixed ad format requires a new ad set.
Single-image creative inputs and defaults
The supported first-class path is a normal single-image Direct Sponsored Content ad.APPLY, DOWNLOAD, VIEW_QUOTE, LEARN_MORE, SIGN_UP, SUBSCRIBE, REGISTER, JOIN, ATTEND, REQUEST_DEMO, SEE_MORE, UNLOCK_FULL_DOCUMENT, BUY_NOW, and SHOP_NOW.
This workflow does not create LinkedIn Lead Gen Forms and does not upload video or document ads. It also does not validate the final visual rendering.
5. Validate the complete hierarchy
Setvalidate_only=true before an unfamiliar create. Validation normalizes the proposed request and checks HireOtto’s supported rules without sending a create request to LinkedIn. For an ad set, it also resolves the supplied targeting URNs. For the first-class image path, it confirms that the image is available.
Validation does not reserve IDs or guarantee that a later write will pass. LinkedIn still checks permissions, Page access, budgets, dates, account state, and lifecycle rules when the real create runs.
Validate a new LinkedIn Ads campaign hierarchy for account ACCOUNT_ID using the approved campaign-group settings, ad-set objective, format, budget, currency, dates, resolved targeting URNs, landing page, available image URN, copy, call to action, and alt text below. Create nothing. Return the normalized configuration, every warning, and a checklist covering account, Page identity, audience size, budget, schedule, destination, creative, and tracking.
- Account ID and currency.
- Campaign-group and ad-set names.
- Objective, format, cost type, bid strategy, and optimization goal.
- Daily and total budget ownership.
- Start and end dates.
- Complete targeting inclusions and exclusions.
- Locale and any explicit interface-language targeting.
- Page identity, image status, destination, CTA, and alt text.
- Draft statuses for every new object.
6. Create the approved objects as drafts
After approval, run the same reviewed configuration withvalidate_only=false and explicitly require draft statuses. The full hierarchy create costs 10 HireOtto credits after success. It can create a new campaign group or reuse an existing one, then create the ad set and creative in order.
Create the validated LinkedIn Ads hierarchy below in account ACCOUNT_ID. Create or reuse the approved campaign group, create the ad set as DRAFT, and create the single-image creative as DRAFT. Do not activate anything. Return every campaign-group, ad-set, creative, and image ID plus any LinkedIn warnings or partial-result details.
7. Inspect the saved hierarchy
A success response is not verification. Read the saved objects back from LinkedIn and compare the live values with the approved configuration.Read back the LinkedIn Ads hierarchy created in account ACCOUNT_ID using campaign-group ID CAMPAIGN_GROUP_ID, ad-set ID AD_SET_ID, and creative ID CREATIVE_ID. Compare every returned status, parent ID, objective, format, budget, currency, schedule, targeting rule, locale, destination, CTA, Page identity, and image reference with the approved configuration. Report mismatches only after showing the live value. Do not change anything.
- The ad renders correctly on the intended Page identity.
- The image crop, headline, introductory text, CTA, and destination are correct.
- The account has no billing, policy, or serving warning.
- The conversion action and Insight Tag plan are appropriate.
Partial creation and recovery
The full hierarchy workflow is not transactional. If an ad set or creative fails, a campaign group or ad set created earlier in the sequence remains in LinkedIn. Do not blindly rerun the full request. That can create duplicate parents.- Save every ID in
partial_result. - Read the live hierarchy.
- Identify the first object that failed.
- Correct and validate only that object.
- Resume with
create_linkedin_ads_entitiesusing the existing parent ID. - Read the new object back.
The LinkedIn Ads hierarchy create returned the partial result below. Read the live hierarchy for account ACCOUNT_ID, preserve every object that already exists, identify the first failed step, and prepare a validate-only request for only that missing child object using the existing parent ID. Do not rerun the full hierarchy and do not create anything yet.
Controlled updates and activation
HireOtto supports selected updates to campaign groups, ad sets, and creatives, plus eligible draft deletion. Keep activation separate from budget, targeting, creative, date, and bid changes so every decision remains reviewable. For targeting, a partial friendly include or exclude map sent through a general ad-set update can replace the existing targeting. Use the additive-exclusion action when you only want to add exclusions. For any broader targeting change, read the complete current criteria, resolve new entities, estimate the revised audience, and review the full diff.Prepare a validate-only activation plan for LinkedIn Ads account ACCOUNT_ID, campaign-group ID CAMPAIGN_GROUP_ID, ad-set ID AD_SET_ID, and creative ID CREATIVE_ID. Read every current status and schedule first, list the exact lifecycle changes required in order, identify any Page, billing, policy, creative, tracking, or stale-date blocker, and make no changes until I approve each exact status transition.
validate_only=true does not override those platform checks.
Common failures
Current limits
- The first-class creation path is a normal single-image Direct Sponsored Content ad.
- Lead Gen Form creation is not supported.
- Image upload does not imply video or document-ad upload support.
- Fixed ad formats cannot be swapped after ad-set creation.
- Campaign Manager remains the final source for rendering, Page identity, policy review, billing, serving warnings, and activation state.
- Image processing, account permissions, lifecycle transitions, and LinkedIn-side validation can still fail after local validation.
- Creating an ad does not prove that the destination or conversion tracking works.
Recommended review checklist
- Correct ad account ID, name, currency, role, and write capability
- Approved objective and campaign hierarchy
- Valid targeting URNs and viable audience estimate
- Correct budget owner, amount, currency, and schedule
- Compatible format, bid strategy, cost type, and optimization goal
- Available image and approved Page identity
- Approved copy, headline, destination, CTA, and alt text
- Every new object created as
DRAFT - Returned IDs saved and live values read back
- Creative previewed in Campaign Manager
- Landing page and tracking tested separately
- Named human approval recorded before activation