{
  "schema_version": "maestro.linkedin-ad-types.inventory.v1",
  "observed_at": "2026-10-01",
  "authority": {
    "objective_matrix": "https://www.linkedin.com/help/lms/answer/a422880",
    "format_overview": "https://business.linkedin.com/advertise/ads/ads-guide",
    "rule": "The objective matrix establishes documented availability by objective. Dedicated format pages control format-specific requirements. Conflicts and formats omitted from the objective matrix require native confirmation."
  },
  "layers": {
    "creative_format": "The ad unit or promoted LinkedIn object.",
    "delivery_surface": "Where the unit appears: feed, inbox, desktop rail, LinkedIn Audience Network or streaming environment.",
    "capture_or_destination": "What happens after the interaction. Lead Gen Forms are modeled here rather than as a creative format.",
    "measurement": "Delivery, interaction, site, CRM and commercial observations remain separate."
  },
  "objective_matrix": {
    "brand_awareness": ["single_image", "carousel_image", "video", "event", "text", "spotlight", "follower", "document", "article_newsletter", "thought_leader", "conversation"],
    "website_visits": ["single_image", "carousel_image", "video", "event", "text", "spotlight", "message", "conversation", "document"],
    "engagement": ["single_image", "carousel_image", "video", "event", "follower", "document", "article_newsletter", "thought_leader", "conversation"],
    "video_views": ["video"],
    "lead_generation": ["single_image", "carousel_image", "video", "event", "message", "conversation", "document", "article_newsletter"],
    "website_conversions": ["single_image", "carousel_image", "video", "event", "text", "message", "spotlight", "document", "conversation"]
  },
  "documented_conflicts": [
    {
      "id": "CONFLICT-TEXT-ENGAGEMENT",
      "summary": "The current objective matrix omits Text Ads under Engagement, while the dedicated Text Ads Help capture names Engagement.",
      "treatment": "Do not silently merge the lists. Mark account availability Unknown and require a native Campaign Manager check."
    },
    {
      "id": "CONFLICT-OVERVIEW-TEXT",
      "summary": "The current Ads Guide repeats Spotlight copy and specifications under its Text Ads heading.",
      "treatment": "Use the dedicated Text Ads sources for rules and the overview only for inventory context."
    },
    {
      "id": "OMISSION-CTV-OBJECTIVE",
      "summary": "Connected TV appears in the current Ads Guide but not in the captured objective matrix.",
      "treatment": "Keep it in the inventory as a streaming awareness option, but require native objective and account availability confirmation."
    }
  ],
  "formats": [
    {
      "id": "single_image",
      "label": "Single Image Ads",
      "family": "sponsored_content",
      "surfaces": ["feed", "linkedin_audience_network"],
      "device_fit": ["desktop", "mobile"],
      "story_unit": "one image, one message and one primary action",
      "asset_requirements": ["approved_image", "approved_copy"],
      "permission_requirements": [],
      "best_fit_signals": ["one clear claim or offer", "fast visual recognition", "site or form action"],
      "exclude_when": ["the message needs a sequence", "motion is needed to understand the product", "the document itself is the offer"],
      "implementation_route": "/linkedin-ad-specs/",
      "availability_state": "objective_matrix_documented"
    },
    {
      "id": "carousel_image",
      "label": "Carousel Image Ads",
      "family": "sponsored_content",
      "surfaces": ["feed"],
      "device_fit": ["desktop", "mobile"],
      "story_unit": "a swipeable sequence of image cards",
      "asset_requirements": ["ordered_image_sequence", "card_copy"],
      "permission_requirements": [],
      "best_fit_signals": ["ordered process", "several proof points", "multiple products or chapters"],
      "exclude_when": ["one visual carries the whole idea", "the asset is a long-form document", "the sequence cannot survive skipped cards"],
      "implementation_route": "/linkedin-carousel-ads/",
      "availability_state": "objective_matrix_documented"
    },
    {
      "id": "video",
      "label": "Video Ads",
      "family": "sponsored_content",
      "surfaces": ["feed", "linkedin_audience_network"],
      "device_fit": ["desktop", "mobile"],
      "story_unit": "motion, demonstration or spoken explanation",
      "asset_requirements": ["finished_video", "captions_or_on_screen_text"],
      "permission_requirements": [],
      "best_fit_signals": ["the product changes over time", "a person or demonstration carries the proof", "video viewing is the named objective"],
      "exclude_when": ["a static frame explains the complete idea", "no finished video exists", "the reader action depends on scanning a detailed document"],
      "implementation_route": "/linkedin-video-ad-examples/",
      "availability_state": "objective_matrix_documented"
    },
    {
      "id": "event",
      "label": "Event Ads",
      "family": "sponsored_content",
      "surfaces": ["feed"],
      "device_fit": ["desktop", "mobile"],
      "story_unit": "an existing event and its date, speakers and registration action",
      "asset_requirements": ["event_destination", "event_details"],
      "permission_requirements": [],
      "best_fit_signals": ["the event is the offer", "date and speakers matter", "registration is the next action"],
      "exclude_when": ["there is no real event destination", "the offer is evergreen", "the event details are not approved"],
      "implementation_route": "/linkedin-event-ads/",
      "availability_state": "objective_matrix_documented"
    },
    {
      "id": "document",
      "label": "Document Ads",
      "family": "sponsored_content",
      "surfaces": ["feed"],
      "device_fit": ["desktop", "mobile"],
      "story_unit": "a multi-page document previewed in the feed",
      "asset_requirements": ["finished_document", "document_cover"],
      "permission_requirements": [],
      "best_fit_signals": ["the document contains the value", "the reader should preview several pages", "gated or ungated reading is intentional"],
      "exclude_when": ["the document is unfinished", "one image tells the story", "a motion demonstration is essential"],
      "implementation_route": "/linkedin-document-ads/",
      "availability_state": "objective_matrix_documented"
    },
    {
      "id": "thought_leader",
      "label": "Thought Leader Ads",
      "family": "sponsored_content",
      "surfaces": ["feed"],
      "device_fit": ["desktop", "mobile"],
      "story_unit": "an eligible existing post from a named person",
      "asset_requirements": ["eligible_member_post"],
      "permission_requirements": ["author_permission"],
      "best_fit_signals": ["the person's point of view is the creative", "the post already exists", "the sponsor-author relationship can be shown accurately"],
      "exclude_when": ["there is no eligible post", "permission is missing", "the message must come from the company page"],
      "implementation_route": "/linkedin-thought-leader-ads/",
      "availability_state": "objective_matrix_documented"
    },
    {
      "id": "article_newsletter",
      "label": "Article and Newsletter Ads",
      "family": "sponsored_content",
      "surfaces": ["feed"],
      "device_fit": ["desktop", "mobile"],
      "story_unit": "an existing LinkedIn article or newsletter",
      "asset_requirements": ["eligible_article_or_newsletter"],
      "permission_requirements": ["author_or_page_permission"],
      "best_fit_signals": ["native long-form reading is the action", "an eligible issue already exists", "subscriber growth is part of the task"],
      "exclude_when": ["the content lives only off LinkedIn", "there is no eligible article or issue", "the next action is a short direct-response path"],
      "implementation_route": "/linkedin-ad-specs/",
      "availability_state": "objective_matrix_plus_overview_native_confirmation_required"
    },
    {
      "id": "conversation",
      "label": "Conversation Ads",
      "family": "sponsored_messaging",
      "surfaces": ["inbox"],
      "device_fit": ["desktop", "mobile"],
      "story_unit": "a branching message with several reader-selected paths",
      "asset_requirements": ["approved_sender", "branching_message_map"],
      "permission_requirements": ["sender_permission"],
      "best_fit_signals": ["the reader should choose among several next steps", "the branch itself qualifies interest", "several offers need one controlled flow"],
      "exclude_when": ["one action is enough", "no approved sender exists", "the branch map is unfinished"],
      "implementation_route": "/linkedin-conversation-ads/",
      "availability_state": "objective_matrix_documented"
    },
    {
      "id": "message",
      "label": "Message Ads",
      "family": "sponsored_messaging",
      "surfaces": ["inbox"],
      "device_fit": ["desktop", "mobile"],
      "story_unit": "one direct message and one focused action",
      "asset_requirements": ["approved_sender", "approved_message"],
      "permission_requirements": ["sender_permission"],
      "best_fit_signals": ["one direct request", "one destination or form", "the inbox is an intentional delivery surface"],
      "exclude_when": ["the reader needs several branches", "no approved sender exists", "the campaign should feel like feed content"],
      "implementation_route": "/linkedin-conversation-ads/",
      "availability_state": "objective_matrix_documented",
      "route_note": "The linked guide explains Message versus Conversation Ads; do not relabel Message examples as Conversation Ads."
    },
    {
      "id": "spotlight",
      "label": "Spotlight Ads",
      "family": "dynamic_ads",
      "surfaces": ["desktop_rail"],
      "device_fit": ["desktop"],
      "story_unit": "a personalized right-rail offer and call to action",
      "asset_requirements": ["company_logo", "approved_offer", "destination"],
      "permission_requirements": [],
      "best_fit_signals": ["desktop rail is acceptable", "a direct site action is needed", "personalized profile context fits the offer"],
      "exclude_when": ["mobile reach is required", "a detailed story is needed", "personalization does not fit the message"],
      "implementation_route": "/linkedin-spotlight-ads/",
      "availability_state": "objective_matrix_documented"
    },
    {
      "id": "follower",
      "label": "Follower Ads",
      "family": "dynamic_ads",
      "surfaces": ["desktop_rail"],
      "device_fit": ["desktop"],
      "story_unit": "a personalized invitation to follow the company page",
      "asset_requirements": ["active_company_page", "company_logo"],
      "permission_requirements": [],
      "best_fit_signals": ["page follow is the actual action", "desktop rail is acceptable", "future organic reach is the intended next step"],
      "exclude_when": ["the goal is a site conversion", "mobile reach is required", "the company page cannot support the follow action"],
      "implementation_route": "/linkedin-ad-specs/",
      "availability_state": "objective_matrix_plus_overview_native_confirmation_required"
    },
    {
      "id": "text",
      "label": "Text Ads",
      "family": "text_ads",
      "surfaces": ["desktop_rail"],
      "device_fit": ["desktop"],
      "story_unit": "a compact headline, description and destination",
      "asset_requirements": ["square_image", "approved_compact_copy", "destination"],
      "permission_requirements": [],
      "best_fit_signals": ["desktop support is acceptable", "the message fits a compact unit", "a site visit or conversion is the action"],
      "exclude_when": ["mobile reach is required", "the offer needs a demonstration", "the explanation cannot fit a compact message"],
      "implementation_route": "/linkedin-text-ads/",
      "availability_state": "objective_matrix_documented_with_engagement_conflict"
    },
    {
      "id": "connected_tv",
      "label": "Connected TV Ads",
      "family": "streaming_video",
      "surfaces": ["streaming_environment"],
      "device_fit": ["large_screen"],
      "story_unit": "full-screen video outside the LinkedIn feed",
      "asset_requirements": ["ctv_ready_video"],
      "permission_requirements": [],
      "best_fit_signals": ["large-screen awareness is the task", "the campaign can measure an upper-funnel exposure layer", "a finished television-ready video exists"],
      "exclude_when": ["feed placement is required", "the action needs an immediate click path", "objective or account availability has not been checked"],
      "implementation_route": "/linkedin-video-ad-examples/",
      "availability_state": "overview_only_native_confirmation_required"
    }
  ],
  "capture_layers": [
    {
      "id": "lead_gen_form",
      "label": "LinkedIn Lead Gen Form",
      "role": "capture_layer",
      "compatible_format_rule": "Only pair it with a format/objective combination documented as eligible and verified in the target account.",
      "implementation_route": "/linkedin-lead-gen-forms/"
    },
    {"id": "website", "label": "Website destination", "role": "destination"},
    {"id": "event_registration", "label": "Event registration", "role": "destination"},
    {"id": "native_follow", "label": "Company page follow", "role": "native_action"},
    {"id": "inbox_response", "label": "Inbox response or branch", "role": "native_action"}
  ],
  "out_of_scope_inventory": [
    {
      "id": "job_ads",
      "label": "Job Ads",
      "reason": "Current first-party inventory includes hiring formats, but this selector is for B2B marketing and demand generation."
    },
    {
      "id": "click_to_message",
      "label": "Click-to-message Ads",
      "reason": "An adjacent current product documented in the Conversation Ads packet. It is not in the captured objective matrix and needs its own eligibility model before selection."
    }
  ]
}
