Five new audits: the conversion events, the send calendar, the preference centre, the Liquid branches and the email your recipients actually receive
Five tools for the checks that are tedious enough to skip and expensive enough to regret. Ask Claude whether every campaign in your Braze workspace is measuring a conversion event that exists and fires — most workspaces have at least one that does not. Read your send calendar on the workspace's own clock and find the send scheduled inside quiet hours. Lint every preference centre against the 2024 Gmail and Yahoo bulk-sender rules, including the live page a subscriber lands on. Resolve every branch of a templated email and find the arm that no recipient will ever be shown. And emit the email as Gmail actually assembles it, so the render gate measures the delivered document rather than the one you wrote.
What shipped
•Conversion events, audited across the workspace. Every conversion behaviour on every campaign is checked — not the first one — against the events that exist and against whether they have fired at all. An event absent from the workspace is a FAIL with the campaign named, never a silent skip, and a conversion window shorter than your own send cadence is flagged. If the read is capped or the key is rejected, the tool says so rather than reporting a clean workspace.
•The send calendar, on the workspace's clock. A 10:00 send in a +10:00 workspace is 10:00, not midnight — the quiet-hours check now runs against the local hour the send was scheduled for, and the calendar states the timezone it used. A schedule that spreads delivery over a window has no single moment, so quiet hours abstains on it instead of inventing one. Untagged broadcasts are flagged, and an empty schedule reports 'nothing scheduled', never 'calendar clean'.
•Preference centres, linted against the bulk-sender rules. Markup, consent options, the confirmation page and — where a test profile is supplied — the live page a subscriber actually lands on. A page behind a password fails Gmail and Yahoo one-click unsubscribe, and that verdict now counts toward the centre's result instead of being fetched, found failing, and dropped.
•Liquid branch coverage. orbit_liquid_state_matrix resolves a templated email across every state its personalisation can be in and reports the arm that no state reaches — the copy nobody will ever be sent. It models the unset attribute properly: an empty value is an ordinary state most of a real list is in, not an edge case, and it used to take the first arm of every branch.
•The email your recipients receive, not the one you wrote. orbit_client_sim emits the document as each client assembles it and hands it to the render gate. Two transport facts no source-reading check can see: Gmail's style sanitiser is block-atomic, so one unsupported at-rule deletes the entire head stylesheet — and MJML merges every mj-style into one block, so that is the whole stylesheet — and ESP CSS inliners hoist a table out of any anchor wrapping it, leaving a button that looks right and does nothing.
•A new skill, liquid-branch-coverage, for the protocol around it, plus the design-system and cohort widgets. A retention period that has not finished is now drawn as a window still open rather than as a churn cliff, and a translucent brand colour is reported as unmeasured rather than measured as though it were solid.