Klaviyo flow audit
Audit the version that can send
A flow audit answers one question: if someone qualifies today, what will Klaviyo send, skip, or hold? The diagram you remember is not the audit. The audit is the trigger that is receiving people, the filters on that trigger, the status of each message, and a preview of the content those messages render from a real event.
For a metric-triggered flow, start in Analytics, then Metrics. For a list-triggered flow, start on that list’s Members tab and on the form or integration that adds people to it. A flow aimed at a metric that last fired months ago will not send, however finished the copy looks. Klaviyo’s guide to a quiet metric-triggered flow says to open the metric and read the activity feed before you rewrite the emails. Do that first. Rewriting a subject line does not revive a metric the integration no longer sends.
When someone takes the triggering action, Klaviyo checks trigger filters and profile filters. People who fail at entry do not enter and are not scheduled. People who pass are scheduled on the delays you set. Before each later step, profile filters are checked again. Trigger filters on a metric flow are not checked again at send time. An additional filter on a single message applies only to that message. A person who fails a filter is not pulled out of the flow. They move to the next step, and the filter is evaluated again. Some conditions, such as Placed Order zero times since starting this flow, keep failing after the order exists. Others can pass later. Klaviyo leaves the person in the flow so a later step can still qualify.
Status is the usual reason a live flow is silent
Flows do not have a single switch. Draft, manual, and live are the statuses of each message, and the same three words are used when you update the configured actions together. Draft schedules nobody. If you set a live message back to draft, people skip it and continue. Manual holds the send for a person to review. Those recipients still advance, and a later live message can send while the manual one sits in Needs Review. Live sends when the delay elapses.
If every message is draft, nobody enters until at least one message is live or manual. Review and turn on, or Update status, sets configured actions together. Unconfigured actions remain draft even during a bulk update. The change is not applied until you save. An audit that does not open every message card will miss a draft sitting in the middle of a series you believe is live. That draft is also easy to miss in analytics, because people are not scheduled for it and do not appear on its recipient activity.
Read the branch your test profile did not take. A conditional split is two paths, and a message on the other path can be live while you are only previewing the path you personally receive. A flow with one tested profile has not been audited.
Delays, neighboring flows, and the order metric
Read the delays in canvas order. Abandoned checkout is the clearest practice case because Klaviyo’s articles are specific about it. The checkout metric fires for people who buy and people who do not. On current Shopify accounts the metric is Checkout Started. Older articles call it Started Checkout. Use the name in your Metrics list. The profile filter that makes the flow an abandonment flow is Placed Order zero times since starting this flow. The pre-built first delay is 4 hours. Klaviyo’s published range for a first reminder is about 2 to 4 hours, with a second message 20 to 48 hours later. A shorter first delay needs a reason. If the integration syncs on a slow cadence, Klaviyo’s floor for a short delay is 1 hour and 15 minutes, so the purchase can arrive and the filter can skip the buyer.
Then look for a second flow on a neighboring metric. Browse abandonment on Viewed Product, checkout abandonment on the checkout metric, and an Added to Cart flow can all be live. Klaviyo defines them so that each one skips the next step toward purchase: browse skips people who start checkout, and both cart versions skip Placed Order. If your copies do not skip each other, one person gets two reminders for one session. On Shopify, Added to Cart and the other onsite metrics require Track behavioral events. With that setting off, the Added to Cart flow is not a backup for a broken checkout flow. It has no trigger.
Placed Order and Ordered Product are different events and sync seconds apart. Klaviyo’s Shopify reference says a Placed Order flow that excludes Ordered Product since starting the flow skips everyone. In an audit, the trigger and the “already purchased” filter should name the same order metric unless a test profile proves another pairing. This shows up in post-purchase flows as often as in abandonment flows. A winback or a replenishment flow that mixes the two metrics will look filtered and will skip the people you meant to keep.
Smart Sending, consent, and content you have not previewed
Email Smart Sending defaults to 16 hours. SMS and push default to 24 hours. The windows are per channel. Updating the window does not rewrite a countdown already running, and a skip is not sent later when the window expires. During the audit, open the message and see whether the recent-email skip is on, then look at campaigns and other flows that could have written to that person inside the window. A welcome email and an abandoned-cart email on the same afternoon collide here. Klaviyo says not to enable Smart Sending for transactional messages. Marketing flows are the ones where you decide message by message.
Consent follows the channel. An email opt-in does not cover SMS. Klaviyo says SMS lists should stay on double opt-in, and that carriers often require it, particularly for abandoned cart texts. A keyword can override the list’s opt-in settings. Transactional SMS consent is not a marketing subscription. Read the channel on the message card and the list or keyword that granted consent. Do not mark the SMS as fine because the email beside it looks fine.
Dynamic content renders from the event that triggered the flow. For a Shopify checkout email, the repeating table’s row collection is event.extra.line_items, and the button back to the cart is {{ event.extra.checkout_url }}. Klaviyo also documents {{ event.extra.responsive_checkout_url }} and says Shopify currently fills both with the same link. Preview with an event from the account you are auditing. Item tags differ across Klaviyo’s own examples: one article uses {{ event.extra.line_items.0.title }}, another uses {{ event.extra.line_items.0.product.name }}. Paste the tag your preview resolves. If the preview lists no events, the metric has no recent payload. Create one. Do not approve a template you could not render.
Past profiles can send the draft you have not finished
Adding past profiles, formerly called back-population, queues historical people into actions that are already manual or live. Metric flows place them according to when the event happened, which requires at least one time delay. Without a delay the timeline is zero days and the control cannot place anyone throughout the flow. List and segment flows can start people at the beginning or throughout, based on when they joined. Re-entry criteria are not checked for this add. Profiles that already skipped a message are not scheduled for that same message again, but they can be scheduled for a message you added later.
The audit question is whether anyone has used the control, or is about to, while the only reviewed version of a message is still draft. Queueing last year’s checkouts or an entire subscriber list into this week’s copy is how a review becomes a send. Finish the filters and set the messages you intend to send to the status you intend, and leave past profiles alone until that is true. For a welcome series, also remember the default: list-triggered flows do not re-enter, so a person who already received the series will not get it again unless you change that setting. A list-update action elsewhere can still add new people, including onto a double opt-in list, without sending the confirmation.
One pass, then the next client account
Run the same pass on every flow that is live, and on any draft someone expects to turn on this week. Name the trigger and confirm it received a person recently. Read the trigger filters, the profile filters, and any filter on an individual message, and note which of those are checked again before the send. Read every message status, including the split you did not receive. Read every delay in order. Check Smart Sending and, for SMS, the opt-in path. Preview the content against a real event, including the link. Look for another flow that covers the same moment. Check whether past profiles were added.
Write down skips you cannot explain. Failing profile filters on an abandoned cart is often the people who purchased, which is the filter working. A Smart Sending skip is a different outcome. A draft in the middle of the series is a third outcome, and it will not show up as a skip on that message because the message never scheduled them.
An agency audit fails when it happens inside one login and the other clients are assumed to match. Each Klaviyo account has its own metrics, list opt-in settings, and message statuses. KlavyFlow keeps one workspace per client and, after a read-only connection, shows each flow on a day-by-day timeline with the creative beside the delay. Flow performance stays a separate view for 7, 30, or 90 complete account-local days. A missing observation stays unavailable. The timeline does not replace the filter and status checks above. It shows whether the delays and the creative you audited are the ones in the account, without using one client’s campaign totals as a stand-in for another client’s flow. The free flow-audit form saves an email and an optional store URL. It does not send email, and it does not change the Klaviyo account.
14-day trial, then $95/month per client workspace. No payment card required. Or $995/year.