FACEBOOK WEBINAR AD BUILD PROMPT — standalone v1 Use only the campaign record and facts pasted below. Do not assume the article, Meta account, event platform, CRM or landing page is accessible. Do not invent a date, speaker credential, customer result, capacity limit, privacy approval, route test, recording or performance result. Public examples show creative choices, not proof of their outcomes. Return one complete canonical JSON record with schema_version `maestro.facebook-webinar-campaign.v1` in a JSON code fence. Preserve every supplied identifier, owner, source reference, pending value and useful open request. The JSON must be the record itself, not a wrapper. Use the blank shape below for every key: ```json { "schema_version": "maestro.facebook-webinar-campaign.v1", "record_id": null, "fixture_status": "blank", "route": { "choice": null, "reason": null, "website": { "final_url": null, "landing_promise": null }, "instant_form": { "page_id": null, "form_id": null, "privacy_url": null, "privacy_approval_state": "unknown", "crm_destination": null, "event_registration_join_key": null } }, "event": { "organizer": null, "event_id": null, "title": null, "audience": null, "teaching_promise": null, "takeaways": [ null, null, null ], "speaker_name": null, "speaker_role": null, "speaker_approval_state": "unknown", "start_local": null, "end_local": null, "timezone": null, "registration_cutoff_local": null, "capacity_limit": null, "replay_decision": "unknown", "replay_url": null, "replay_approval_state": "unknown" }, "campaign": { "meta_page_id": null, "ad_account_id": null, "objective": null, "campaign_id": null, "ad_set_id": null, "ad_id": null, "utm_source": "facebook", "utm_medium": "paid_social", "utm_campaign": null, "utm_content_rule": null, "start_utc": null, "end_utc": null, "budget": null, "measured_results": null }, "creative_phases": { "cold": { "date": null, "eligible_audience": null, "message_job": null, "copy": null, "asset_ref": null, "cta": null, "destination": null, "stop_condition": null, "owner_role": "media_buyer" }, "warm": { "date": null, "eligible_audience": null, "message_job": null, "copy": null, "asset_ref": null, "cta": null, "destination": null, "stop_condition": null, "owner_role": "media_buyer" }, "final_call": { "date": null, "eligible_audience": null, "message_job": null, "copy": null, "asset_ref": null, "cta": null, "destination": null, "stop_condition": null, "owner_role": "media_buyer" }, "replay_or_recap": { "date": null, "eligible_audience": null, "message_job": null, "copy": null, "asset_ref": null, "cta": null, "destination": null, "stop_condition": null, "owner_role": "media_buyer" } }, "audiences": { "cold": { "source": null, "permission_basis": null }, "warm": { "source": null, "permission_basis": null }, "final_call": { "source": null, "permission_basis": null }, "replay_or_recap": { "source": null, "permission_basis": null }, "confirmed_registrant_suppression": { "source_system": null, "event_id": null, "permission_basis": null, "update_cadence": null, "last_successful_sync": null, "owner_role": "revops_owner", "account_control_readback": null }, "reminder_eligibility": { "source": null, "channel": null, "permission_basis": null } }, "measurement": { "join_key_rule": null, "reconciliation_cutoff": null, "attendance_export": { "source": null, "event_id": null, "complete": null, "declared_window": null, "checked_at": null, "evidence_ref": null }, "states": { "clicked": { "campaign_id": null, "ad_id": null, "captured_at": null, "evidence_ref": null }, "submitted": { "source_id": null, "submitted_at": null, "evidence_ref": null }, "registered": { "event_id": null, "registration_id": null, "person_key": null, "confirmed_at": null, "evidence_ref": null }, "attended": { "attendance_row_id": null, "joined_at": null, "evidence_ref": null }, "verified_no_show": { "classification_at": null, "evidence_ref": null }, "attendance_unknown": { "reason": "Attendance source is not complete and linked, or classification proof is absent.", "next_check_at": null, "owner_role": "revops_owner" }, "crm_next_action": { "contact_id": null, "action": null, "at": null, "owner_role": null, "evidence_ref": null } } }, "follow_up": { "attended": { "trigger": "Verified attended state", "action": null, "permission_check": null, "owner_role": "follow_up_owner" }, "verified_no_show": { "trigger": "Verified no-show state only", "action": null, "permission_check": null, "owner_role": "follow_up_owner", "send_state": "hold" }, "non_registrant": { "trigger": "No confirmed registration after source reconciliation", "action": null, "permission_check": null, "owner_role": "follow_up_owner" }, "attendance_unknown": { "trigger": "Registered but attendance unresolved", "action": "Hold attendance-based messages; reconcile source.", "permission_check": "Do not send no-show message", "owner_role": "revops_owner", "send_state": "hold_for_reconciliation" } }, "owners": { "event_owner": null, "media_buyer": null, "revops_owner": null, "follow_up_owner": null }, "checks": { "destination_mobile_and_confirmation": { "state": "not_checked", "evidence_ref": null, "checked_at": null, "owner_role": "event_owner", "notes": null }, "instant_form_privacy_and_delivery": { "state": "not_checked", "evidence_ref": null, "checked_at": null, "owner_role": "event_owner", "notes": null }, "event_registration_join": { "state": "not_checked", "evidence_ref": null, "checked_at": null, "owner_role": "revops_owner", "notes": null }, "suppression_permission_and_sync": { "state": "not_checked", "evidence_ref": null, "checked_at": null, "owner_role": "revops_owner", "notes": null }, "account_objective_and_audience_preview": { "state": "not_checked", "evidence_ref": null, "checked_at": null, "owner_role": "media_buyer", "notes": null }, "tracking_readback": { "state": "not_checked", "evidence_ref": null, "checked_at": null, "owner_role": "revops_owner", "notes": null }, "creative_and_final_call_review": { "state": "not_checked", "evidence_ref": null, "checked_at": null, "owner_role": "media_buyer", "notes": null } }, "judgments": { "route_fit": { "state": "unknown", "reason": "Choose website or Instant Form." }, "draft_readiness": { "state": "hold", "reason": "Resolve the listed draft facts before writing final copy." }, "launch_readiness": { "state": "hold", "reason": "Complete the listed account, route, suppression and delivery checks." }, "measured_outcome": { "state": "unknown", "reason": "A plan or test cannot establish actual campaign results." }, "attendance_classification": { "state": "unknown", "reason": "Attendance source is not complete and linked, or classification proof is absent." } }, "missing_inputs": [ { "field": "route.choice", "owner_role": "event_owner", "closing_evidence": "Choose website or instant_form registration." }, { "field": "event.audience", "owner_role": "event_owner", "closing_evidence": "Name the exact B2B attendee audience." }, { "field": "event.teaching_promise", "owner_role": "event_owner", "closing_evidence": "Approve a concrete teaching promise." }, { "field": "event.speaker_name", "owner_role": "event_owner", "closing_evidence": "Verify the named speaker." }, { "field": "event.speaker_role", "owner_role": "event_owner", "closing_evidence": "Verify the speaker role before using it in an ad." }, { "field": "event.speaker_approval_state", "owner_role": "event_owner", "closing_evidence": "Set explicit speaker approval state to approved." }, { "field": "event.start_local", "owner_role": "event_owner", "closing_evidence": "Confirm calendar-valid local event start." }, { "field": "event.end_local", "owner_role": "event_owner", "closing_evidence": "Confirm calendar-valid local end after start." }, { "field": "event.timezone", "owner_role": "event_owner", "closing_evidence": "Confirm a real IANA time zone." }, { "field": "event.takeaways.0", "owner_role": "event_owner", "closing_evidence": "Approve this concrete takeaway." }, { "field": "event.takeaways.1", "owner_role": "event_owner", "closing_evidence": "Approve this concrete takeaway." }, { "field": "event.takeaways.2", "owner_role": "event_owner", "closing_evidence": "Approve this concrete takeaway." } ], "next_move": "Choose website or instant_form registration.", "source_refs": [ { "url": "https://www.facebook.com/business/help/744354708981227", "observed_at": "2026-09-29", "supports": "Custom Audience source families" }, { "url": "https://www.facebook.com/business/help/900802126698360", "observed_at": "2026-09-29", "supports": "Lead-form engagement audiences; not external registration" }, { "url": "https://www.facebook.com/business/help/938372127764391", "observed_at": "2026-09-29", "supports": "Advantage+ audience controls; check actual account preview" } ], "evidence_boundary": { "fictional": false, "actual_campaign_delivery": false, "actual_event_outcomes": false, "note": "A planning record or preflight test is not a campaign result or person-level attendance." } } ``` Choose `website` when the event platform registration, calendar and attendance path belongs on the owned page; choose `instant_form` only when native fields, approved privacy, CRM delivery, event-platform registration and join instructions can be tested. A Meta form submission is a lead, not an event registration. Do not merge click, submitted, registered, attended, verified no-show, attendance Unknown or CRM action. Keep event ID, Meta campaign/ad IDs, UTM values, source/form/lead ID, event registration ID, CRM ID, join key, timestamps and reconciliation cutoff separately. Suppress confirmed registrants from acquisition only after current permitted event-specific source and actual account-control readback. A form opener is not a confirmed registrant. Keep reminder eligibility separate. Draft readiness is `provisional_draft_ready` only if route, audience, concrete teaching promise, three approved takeaways, approved named speaker and role, valid local event start/end and real IANA zone are present. Otherwise hold and ask for exact draft fields. Launch readiness remains `hold` until the selected route, actual mobile destination or Instant Form privacy/CRM/event join, confirmed-registration suppression, available objective, budget, tracking, phase/owner plan and applicable checks have real read-back receipts. A fictional URL or written plan is not a passed check. When draft is hold, request draft and immediate route facts first; defer account-stage asks. Preserve a still-open request's valid owner, exact closing evidence and context; drop only resolved or inapplicable requests. Write cold, warm and final-call ad copy using the same verified promise. State urgency only from the actual cutoff; never invent a seat limit. Replay copy is conditional on a produced, accessible and approved recording, or a separately approved real recap. If replay is pending, keep replay_or_recap copy and destination null, but retain the conditional phase and its owner/stop rule. Keep measured_results null and measured_outcome unknown until actual delivery results exist. Never copy a preflight or report-capability receipt into person-level outcomes. For a registered person, label attendance `verified_no_show` only after an event-specific complete export for a declared window and UTC cutoff, an export check at or after that cutoff, approved join key, and explicit no-match evidence classified at or after cutoff. If the export is incomplete, early, delayed, unrelated, test-only, contains only post-cutoff rows or cannot be joined, attendance is `unknown`, verified_no_show evidence is null and its send_state is hold. An absent row is not a no-show. Leave actual attendance refs null before the event. Return: (1) route and separate Draft, Launch, measured-outcome and attendance judgments; (2) a table for all four phases with audience, copy, destination, stop condition and owner; (3) registration, suppression and attendance handoff; (4) exact missing_inputs with owner and closing evidence; (5) the canonical JSON record; (6) one next move. Do not claim any check passed merely because a fixture describes how it should work. PASTE THE WEBINAR FACTS OR CANONICAL RECORD BELOW: