LINKEDIN EVENT AD BUILD PROMPT — standalone, version 3.0 You are preparing one B2B event promotion handoff. Use only the event facts and evidence pasted after this prompt. Do not assume access to an article, ad account, event platform, CRM or live URL. Do not invent a speaker name, budget, URL, result, deliverable, recording, approval or customer opinion. Current public LinkedIn documentation checked 2026-09-28: Event Ads can promote a LinkedIn Event or an external event without a LinkedIn Event (https://www.linkedin.com/help/lms/answer/a462024/ and https://www.linkedin.com/help/lms/answer/a10264811). Off-platform uses a 16:9 uploaded image at least 480 px wide and an external URL; its mobile editor preview may be generic. The LinkedIn Event design page recommends 4:1 for its native path, while Help allows a replacement image (https://business.linkedin.com/advertise/ads/sponsored-content/event-ads/specs). Only LinkedIn Live has stage-changing ad behavior; non-Live native and external Event Ads remain static (https://www.linkedin.com/help/lms/answer/a6593898). Live needs linked Page ownership, roles and Live access (https://www.linkedin.com/help/lms/answer/a6800629). Without a Live registration form, View Event leads to the Event page and then Attend; with a Live form, form completion gates content. Campaign Manager's Event Registrations can be attributed after a click or view and are not proof of incremental effect, external form completion or attendance (https://www.linkedin.com/help/lms/answer/a6801032). Event type/format and organizer cannot be changed after native Event creation (https://www.linkedin.com/help/lms/answer/a550232/). Refresh these rules and verify the actual account before real launch. Use the complete nested canonical JSON shape below. It is included here so this prompt works by itself. Replace its blank values with supplied facts and receipts while keeping every key. Use null for unknown scalar values, not invented values. The root value is the record itself, with these top-level keys in this order: schema_version, record_id, example_status, judgments, event, campaign, journey, promotion, owners, follow_up, checks, source_refs, evidence_boundary, missing_inputs, next_move. Never place source_refs, evidence_boundary, missing_inputs or next_move inside checks or another object. Every checks. object keeps exactly these fields: applicability, applicable_reason, state, evidence_ref, checked_at, owner_role and history. The exact event.route enum is `live`, `non_live_native`, `off_platform`, or `another_format`; never emit labels such as `linkedin_live`, `linkedin_event`, or `external`. Keep response, completed registration, reporting capability, actual attendance, verified no-show, attendance unknown and CRM next action separate. A pre-event person-level reporting-capability receipt or test submission belongs in journey.reporting_capability.evidence_ref and/or checks.attendance_source_person_level.evidence_ref only. Leave journey.attendance.evidence_ref, journey.verified_no_show.evidence_ref and journey.attendance_unknown.evidence_ref null until actual matching person/event outcome records exist. A capability receipt must never be copied into any observed-outcome evidence_ref, even when launch preflight is ready. If the supplied record copies a preflight receipt into one of these outcome fields, clear that outcome ref and record the rejected state/ref/reason in evidence_boundary.rejected_outcome_refs. On a route switch, preserve prior route-specific journey evidence in evidence_boundary.route_history before reopening it. Each check state is passed, failed, not_checked or not_applicable. Every check keeps applicability, reason, evidence reference, checked time and owner. A passed check needs a cited receipt. Mark irrelevant checks not_applicable with a route-specific reason. Do not mark a check passed from prose alone. event.speaker_approval_state is the present state and must be exactly approved, pending, denied, revoked or unknown. Put dates, conditions and explanations in event.speaker_approval_note. Never infer approved from a sentence in the note. ```json { "schema_version": "maestro.linkedin-event-launch-record.v3", "record_id": null, "example_status": "blank", "judgments": { "format_fit": { "state": "unknown", "reason": "Choose the event action and destination." }, "draft_readiness": { "state": "hold", "reason": "Complete the listed draft facts." }, "local_preflight": { "state": "hold", "reason": "Complete the listed local journey, tracking, asset and receipt checks." }, "launch_readiness": { "state": "hold", "reason": "Complete the listed account, budget, schedule and native checks." }, "measured_outcome": { "state": "unknown", "reason": "Planning and capability receipts do not establish delivered outcomes." } }, "event": { "route": null, "linkedin_page_id": null, "linkedin_ad_account_id": null, "organizer": null, "title": null, "topic": null, "audience": null, "attendee_promise": null, "speaker_name": null, "speaker_approval_state": "unknown", "speaker_approval_note": null, "start_local": null, "end_local": null, "timezone": null, "event_type": null, "location_address": null, "event_format": null, "has_registration_form": null, "live_access": "unknown", "live_preview_choice": null, "stage_copy": { "before": null, "during": null, "after": null, "introductory_text_note": "Optional introductory text does not change automatically." }, "linkedin_event_url": null, "registration_url": null, "registration_system": null, "event_id": null }, "campaign": { "objective": null, "objective_rationale": null, "audience_rule": null, "exclusion_rule": null, "ad_intro_text": null, "image": { "approval": "unknown", "ratio": null, "width_px": null, "asset_ref": null }, "budget": null, "start_utc": null, "end_utc": null, "utm_source": "linkedin", "utm_medium": "paid_social", "utm_campaign": null, "creative_id_parameter": null }, "journey": { "ad_action": { "definition": null, "system": "LinkedIn Campaign Manager", "evidence_ref": null }, "linkedin_response": { "definition": "A LinkedIn Event response or attributed Event Registration is a platform signal; do not equate it with a completed external registration.", "system": "LinkedIn Campaign Manager", "evidence_ref": null }, "completed_registration": { "definition": "A submitted registration form with a confirmation or submission ID.", "system": null, "evidence_ref": null }, "aggregate_viewing": { "definition": "The exact confirmed aggregate viewing measure exposed by Live analytics or another route-specific report; aggregate data cannot establish a named person's attendance.", "system": null, "measure_name": null, "evidence_ref": null }, "reporting_capability": { "definition": "A pre-event test showing whether the platform can report person-level attendance, with source and test receipt. This is capability evidence, never an actual attendee or no-show outcome.", "system": null, "evidence_ref": null }, "attendance": { "definition": "A person-level joined or attended event from a finalized attendance source. Aggregate Live analytics alone do not satisfy this state.", "system": null, "evidence_ref": null }, "verified_no_show": { "definition": "Completed registration plus a finalized attendance record with no join; never infer from a missing or delayed feed.", "system": null, "evidence_ref": null }, "attendance_unknown": { "definition": "Registration exists but attendance feed is absent, late, unmatched or not person-level.", "system": null, "evidence_ref": null }, "crm_next_action": { "definition": "Assigned branch, owner, due date and recorded outcome after consent and eligibility checks.", "system": "CRM", "evidence_ref": null }, "identity_and_deduplication": null, "reporting_cutoff": null, "attribution_limit": "A LinkedIn attributed Event Registration may follow a click or view; it is not proof of incrementality or event-platform completion." }, "promotion": { "early_invitation": { "date": null, "message_job": null, "owner_role": "media_buyer" }, "final_week": { "date": null, "message_job": null, "owner_role": "media_buyer" }, "event_day": { "date": null, "message_job": null, "owner_role": "event_owner" }, "after_event": { "date": null, "message_job": null, "owner_role": "follow_up_owner" } }, "owners": { "event_owner": null, "media_buyer": null, "designer": null, "revops_owner": null, "follow_up_owner": null }, "follow_up": { "attended": { "trigger": "Verified attendance", "action": null, "owner_role": "follow_up_owner", "permission_check": "required" }, "verified_no_show": { "trigger": "Completed registration and finalized no-attendance record", "action": null, "owner_role": "follow_up_owner", "permission_check": "required" }, "non_registrant": { "trigger": "No completed registration; contact permission and audience rule confirmed", "action": null, "owner_role": "follow_up_owner", "permission_check": "required" }, "attendance_unknown": { "trigger": "Attendance feed missing, delayed or unmatched", "action": "Hold attendance-based messages until evidence is reconciled.", "owner_role": "revops_owner", "permission_check": "required" } }, "checks": { "final_url_resolves_to_event": { "applicability": "not_applicable", "applicable_reason": "Not used by the unselected journey.", "state": "not_applicable", "evidence_ref": null, "checked_at": null, "owner_role": "event_owner", "history": [ { "applicability": "route_dependent", "applicable_reason": "Set when the event route is chosen.", "state": "not_checked", "evidence_ref": null, "checked_at": null, "owner_role": "event_owner", "route": null, "invalidated_reason": "Applicability changed on import or edit" } ] }, "native_event_response_test": { "applicability": "not_applicable", "applicable_reason": "Not used by the unselected journey.", "state": "not_applicable", "evidence_ref": null, "checked_at": null, "owner_role": "event_owner", "history": [ { "applicability": "route_dependent", "applicable_reason": "Set when the event route is chosen.", "state": "not_checked", "evidence_ref": null, "checked_at": null, "owner_role": "event_owner", "route": null, "invalidated_reason": "Applicability changed on import or edit" } ] }, "form_confirmation_test": { "applicability": "not_applicable", "applicable_reason": "Not used by the unselected journey.", "state": "not_applicable", "evidence_ref": null, "checked_at": null, "owner_role": "event_owner", "history": [ { "applicability": "route_dependent", "applicable_reason": "Set when the event route is chosen.", "state": "not_checked", "evidence_ref": null, "checked_at": null, "owner_role": "event_owner", "route": null, "invalidated_reason": "Applicability changed on import or edit" } ] }, "event_platform_readback": { "applicability": "not_applicable", "applicable_reason": "Not used by the unselected journey.", "state": "not_applicable", "evidence_ref": null, "checked_at": null, "owner_role": "event_owner", "history": [ { "applicability": "route_dependent", "applicable_reason": "Set when the event route is chosen.", "state": "not_checked", "evidence_ref": null, "checked_at": null, "owner_role": "event_owner", "route": null, "invalidated_reason": "Applicability changed on import or edit" } ] }, "crm_readback": { "applicability": "not_applicable", "applicable_reason": "Not used by the unselected journey.", "state": "not_applicable", "evidence_ref": null, "checked_at": null, "owner_role": "revops_owner", "history": [ { "applicability": "route_dependent", "applicable_reason": "Set when the event route is chosen.", "state": "not_checked", "evidence_ref": null, "checked_at": null, "owner_role": "revops_owner", "route": null, "invalidated_reason": "Applicability changed on import or edit" } ] }, "asset_and_mobile_landing_page": { "applicability": "not_applicable", "applicable_reason": "Not used by the unselected journey.", "state": "not_applicable", "evidence_ref": null, "checked_at": null, "owner_role": "designer", "history": [ { "applicability": "route_dependent", "applicable_reason": "Set when the event route is chosen.", "state": "not_checked", "evidence_ref": null, "checked_at": null, "owner_role": "designer", "route": null, "invalidated_reason": "Applicability changed on import or edit" } ] }, "page_account_roles": { "applicability": "not_applicable", "applicable_reason": "Not used by the unselected journey.", "state": "not_applicable", "evidence_ref": null, "checked_at": null, "owner_role": "media_buyer", "history": [ { "applicability": "route_dependent", "applicable_reason": "Set when the event route is chosen.", "state": "not_checked", "evidence_ref": null, "checked_at": null, "owner_role": "media_buyer", "route": null, "invalidated_reason": "Applicability changed on import or edit" } ] }, "live_access": { "applicability": "not_applicable", "applicable_reason": "Not used by the unselected journey.", "state": "not_applicable", "evidence_ref": null, "checked_at": null, "owner_role": "event_owner", "history": [ { "applicability": "route_dependent", "applicable_reason": "Set when the event route is chosen.", "state": "not_checked", "evidence_ref": null, "checked_at": null, "owner_role": "event_owner", "route": null, "invalidated_reason": "Applicability changed on import or edit" } ] }, "campaign_manager_route_preview": { "applicability": "not_applicable", "applicable_reason": "Not used by the unselected journey.", "state": "not_applicable", "evidence_ref": null, "checked_at": null, "owner_role": "media_buyer", "history": [ { "applicability": "route_dependent", "applicable_reason": "Set when the event route is chosen.", "state": "not_checked", "evidence_ref": null, "checked_at": null, "owner_role": "media_buyer", "route": null, "invalidated_reason": "Applicability changed on import or edit" } ] }, "native_ad_review": { "applicability": "not_applicable", "applicable_reason": "Not used by the unselected journey.", "state": "not_applicable", "evidence_ref": null, "checked_at": null, "owner_role": "media_buyer", "history": [ { "applicability": "route_dependent", "applicable_reason": "Set when the event route is chosen.", "state": "not_checked", "evidence_ref": null, "checked_at": null, "owner_role": "media_buyer", "route": null, "invalidated_reason": "Applicability changed on import or edit" } ] }, "attendance_source_person_level": { "applicability": "not_applicable", "applicable_reason": "Not used by the unselected journey.", "state": "not_applicable", "evidence_ref": null, "checked_at": null, "owner_role": "revops_owner", "history": [ { "applicability": "route_dependent", "applicable_reason": "Set when the event route is chosen.", "state": "not_checked", "evidence_ref": null, "checked_at": null, "owner_role": "revops_owner", "route": null, "invalidated_reason": "Applicability changed on import or edit" } ] } }, "source_refs": [ { "id": "event-specs", "url": "https://www.linkedin.com/help/lms/answer/a462024/", "observed_at": "2026-09-28", "supports": "Event Ad destination and permissions" }, { "id": "off-platform", "url": "https://www.linkedin.com/help/lms/answer/a10264811", "observed_at": "2026-09-28", "supports": "External event route; 16:9 image, minimum 480 px width" }, { "id": "live-guide", "url": "https://www.linkedin.com/help/lms/answer/a6800629", "observed_at": "2026-09-28", "supports": "LinkedIn Live access, Page ownership, schedule and review" }, { "id": "event-faq", "url": "https://www.linkedin.com/help/lms/answer/a6593898", "observed_at": "2026-09-28", "supports": "Live stage behavior and View Event to Attend journey" }, { "id": "reporting", "url": "https://www.linkedin.com/help/lms/answer/a6801032", "observed_at": "2026-09-28", "supports": "Attributed Event Registrations and reporting limits" } ], "evidence_boundary": { "rejected_outcome_refs": [], "route_history": [] }, "missing_inputs": [ { "field": "event.route", "owner_role": "event_owner", "closing_evidence": "Choose Live, non-Live LinkedIn Event or off-platform route." }, { "field": "event.audience", "owner_role": "event_owner", "closing_evidence": "Approved event fact." }, { "field": "event.attendee_promise", "owner_role": "event_owner", "closing_evidence": "Approved event fact." }, { "field": "event.speaker_approval_state", "owner_role": "event_owner", "closing_evidence": "Choose the present approval state: approved, pending, denied, revoked or unknown." }, { "field": "event.start_local", "owner_role": "event_owner", "closing_evidence": "Approved event fact." }, { "field": "event.timezone", "owner_role": "event_owner", "closing_evidence": "Approved event fact." } ], "next_move": "Choose Live, non-Live LinkedIn Event or off-platform route." } ``` Use only these exact judgment states: - format_fit: `fits_live`, `fits_non_live`, `fits_off_platform`, `use_another_route`, or `unknown` - draft_readiness: `provisional_draft_ready` or `hold` - local_preflight: `ready` or `hold` - launch_readiness: `ready` or `hold` - measured_outcome: `measured` or `unknown` Do not substitute passed, pass, approved, complete or ready for a judgment whose enum does not contain that value. Check objects use a separate state enum: `passed`, `failed`, `not_checked`, or `not_applicable`. Return, in order: (1) one-sentence route decision with reason; (2) one provisional ad invitation that contains only approved facts and marks unresolved copy fields in [square brackets]; (3) a promotion sequence before, during and after the event with dates where supplied and owners; (4) the full canonical JSON record inside a valid triple-backtick JSON fence; (5) a short list of the next evidence checks. Before returning the JSON, perform a structural self-check: all 15 root keys are present, event.route is exactly one of `live`, `non_live_native`, `off_platform`, or `another_format`, and every check object has the required shape. Repair any mismatch before answering. Launch readiness also requires named owners, the four promotion calendar dates/message jobs/owner roles, and permitted attended, verified no-show, non-registrant and attendance-unknown follow-up actions. For each source claim, add a URL and observed date in source_refs. If the user supplies no sources, include the dated LinkedIn URLs above and label account behavior unverified. Set format_fit from the event and intended destination alone. Use `fits_live`, `fits_non_live`, `fits_off_platform`, `use_another_route`, or `unknown`. A missing URL, budget or later tracking receipt does not reverse a sound route decision. Draft readiness is `provisional_draft_ready` only when audience, an approved attendee promise (more specific than a topic label), event.speaker_approval_state is exactly `approved`, valid local event date/time and real IANA timezone and route are known; otherwise `hold`. Map conditional approval to `pending`, a denial to `denied`, a withdrawn approval to `revoked`, and unclear evidence to `unknown`; preserve its wording in event.speaker_approval_note. Never derive readiness from the note. A topic alone does not supply the attendee promise. Local preflight is `ready` only when the final HTTPS destination, route-specific approved image asset, audience-facing IANA timezone, all defined campaign UTM source, medium, campaign and creative marker fields, deduplication and reporting cutoff, and every applicable registration check have passed. For Live without a form, the native Event response test replaces the form-confirmation test; mark the form check not_applicable with a reason. For non-Live native with an onward external form, the form-confirmation test remains applicable and a failed form holds local and launch readiness. Launch readiness is `ready` only after valid Page and account IDs, available objective, positive approved budget with no negative sign, calendar-valid ISO UTC start/end in order, destination/mobile path, tracking read-back, native preview and ad review have passed; otherwise `hold`. A passed receipt requires a non-placeholder reference, calendar-valid UTC checked time and owner. N/A, pending, unknown, dummy and similar placeholders are not receipts. Measured outcome stays `unknown` before real campaign and event evidence. Do not call a draft or local preflight a live campaign. For a LinkedIn Live route, ask whether there is a form. Explain View Event → Attend when there is no form; explain form completion and access when there is one. Check Page owner, Live access and stage behavior. Record the exact aggregate viewing measure that the confirmed Live report exposes in journey.aggregate_viewing. Aggregate viewing cannot establish a named person's attendance. A named attended/no-show branch requires a finalized person-level attendance source; otherwise attendance stays unknown. For non-Live native, keep ad behavior static. For off-platform, do not require a LinkedIn Event; name the external registration form, confirmation, event-platform record, CRM match and 16:9 asset. State that an ad response or attributed registration is not automatically a completed registration. Verified no-show needs both a completed registration and finalized attendance evidence; absent or late attendance is unknown. Branch attendee, verified no-show and non-registrant follow-up only when the record and contact permission support it. Missing-input behavior: derive missing_inputs afresh from the final route and supplied values. Remove resolved and route-inapplicable requests; add exact newly required paths with owner and closing evidence. When draft readiness is hold, include only unresolved draft fields, local-preflight fields and applicable local-check receipts. Do not include Page/account IDs, objective, budget, UTC campaign schedule, promotion calendar, named owners, follow-up actions or account-only checks in missing_inputs until draft readiness is provisional_draft_ready. These deferred fields remain null or unverified in the canonical record. For each still-open prior request, preserve its valid owner_role, exact closing_evidence and context; do not replace an assigned ticket with a generic request. Keep each unknown value null and each applicable unresolved check not_checked, except an actually failed test, which remains failed. If a route changes, snapshot the previous route before mutating event.route and archive every invalidated check's prior route, applicability, reason, state, reference, time and owner, including applicable-to-applicable checks and prior not_applicable states. Archive route-specific journey evidence in evidence_boundary.route_history before clearing it. Preserve supplied route-independent title, topic, audience, promise, organizer, presenter and schedule. Normalize event_format, has_registration_form, live_access, stage_copy, registration system, ad action, completed-registration definition and incompatible destination fields for the new route. Reopen receipts after a route or reviewed destination, asset, schedule or copy edit. On an off-platform to Live-without-form switch, `native_event_response_test` becomes applicable/not_checked and its old not_applicable state goes to history, while `form_confirmation_test` becomes not_applicable. Draft readiness has exactly two allowed states: `hold` and `provisional_draft_ready`; never output `ready` for this judgment. If the user requests fabricated proof, refuse that claim and continue with the factual planning record. PASTE EVENT FACTS, SOURCE LINKS, AND TEST RECEIPTS BELOW: