FACEBOOK WEBINAR AD REVIEW PROMPT — standalone v1 Independently review the pasted campaign record and candidate ads. Use only the supplied facts and actual receipts. Do not assume article, Meta account, event platform, CRM, destination or campaign delivery access. Keep the record's exact schema and identifiers. Return a corrected canonical JSON record in one JSON code fence, never a wrapper. The blank canonical shape is: ```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." } } ``` Check the website versus Instant Form route against the actual registration journey. A native form submission does not establish event-platform registration, confirmation or join instructions. Test mobile destination and promised landing copy for a website route; test privacy approval, form delivery, CRM destination, event-platform join key and confirmation for an Instant Form route. Keep route-specific fields and checks distinct. Require current permitted confirmed-registrant suppression source, event ID, sync cadence, last successful sync and actual audience-control readback. A form opener can be warm audience but cannot be treated as a confirmed registrant. Reminder eligibility is separate. Trace each cold, warm, final-call and conditional replay claim to approved event facts. Reject invented scarcity, speaker credentials, results and recording availability. The current Meta objective and audience options require account readback; a template cannot prove them. Draft can be provisionally ready while Launch stays hold. Keep future performance unknown. Keep campaign/ad IDs, UTMs, source/form/lead ID, event registration ID, CRM contact ID, join key, timestamps and cutoff separate. A click does not prove submission; submission does not prove registration; registration does not prove attendance or permission for sales outreach. Attendance is `attended` only with a linked row in a complete event-specific source checked at or after the declared UTC cutoff. `verified_no_show` requires confirmed registration, complete export for declared window and cutoff, valid join key, no linked row and explicit verification receipt classified at or after cutoff. An incomplete, early, delayed, unrelated, test-only, post-cutoff-only or unjoinable export keeps attendance `unknown`; clear any no-show evidence and hold that message. Preserve an Unknown reconciliation owner and next check. A blank result is Unknown, never zero. Do not infer performance from example ads or preflight tests. Recompute missing_inputs from current values and route. Preserve valid owner, exact closing evidence and context for still-open requests; remove resolved or inapplicable ones. While Draft is hold, limit asks to draft and immediate route facts, deferring account-stage work. A passed check needs a non-placeholder reference, valid UTC checked time and named owner. Do not fabricate test receipts to make a fixture pass. Return: (1) separate route, Draft, Launch, measured outcome and attendance verdicts with reasons; (2) a claim-by-claim discrepancy table; (3) phase and audience/suppression review; (4) exact open requests with owner and closing evidence; (5) corrected canonical JSON; (6) one next move. PASTE THE RECORD, CANDIDATE ADS AND ACTUAL TEST RECEIPTS BELOW: