Klaviyo SQL in Composer: 10 Questions to Ask Your Data Before BFCM
Klaviyo added SQL to Composer at K:BOS 2026. Ask your Klaviyo data the right questions before Black Friday and get answers that used to need a data team.
Mark Cijo
Founder, GOSH Digital

Last reviewed: October 13, 2026
On September 9, 2026, at K:BOS in Boston, Klaviyo announced SQL inside the Klaviyo Data Platform, available in Preview inside Composer. You ask a question in plain language, Klaviyo writes the SQL query, runs it against your account data, and returns both the answer and the query itself.
Black Friday is November 27, 2026. Cyber Monday is November 30, 2026.
Before your BFCM traffic arrives, your Klaviyo data can tell you which segments to plan for, which products last year's buyers came back for, and which subscribers are engaged but have never purchased. SQL in Composer gets you those answers without waiting for a data team.
Here are 10 questions to ask your data before Black Friday, what each answer tells you, and how to check Klaviyo's work.
What SQL in Klaviyo Data Platform Actually Does
Klaviyo's announcement described it like this: "A marketer can ask a question in plain language, through Composer, MCP, or another agent, and Klaviyo translates that prompt into a SQL query, runs it against the brand's own data, and returns the answer along with the SQL query that produced it."
SQL is in Preview in Composer as of September 2026. Claude and ChatGPT support is listed as coming soon.
What you can query right now:
- Profiles
- Events
- Segments
- Lists
- Catalogs
Coming soon:
- Forms
- Flows
- Templates
- Custom objects
The feature runs on Klaviyo's existing data. If your event tracking is broken, SQL returns confident wrong answers. If your profile properties are stale, the counts reflect that. The accuracy of the answer depends entirely on the quality of your data going in.
Composer returns the SQL query alongside the answer. This matters because you can verify the logic. If the query includes filters you didn't intend, refine your question. If it's querying the wrong date range, specify the dates explicitly.
SQL in Composer isn't a replacement for Klaviyo's built-in reporting. It's for questions the existing dashboards don't answer. If the metric you need is already on a Klaviyo report page, use that. It's faster.
10 Questions to Ask Before BFCM
These questions size your BFCM audiences, identify repeat-buyer opportunities, and surface engagement patterns you'll use to plan send volume and segment strategy.
1. How many people bought during Cyber Week 2025 and haven't ordered since?
Why it matters: Last year's BFCM buyers who haven't returned are your highest-intent lapsed segment. They bought during a discount window before, they know your brand, and they're proven converters. This count tells you how much volume your winback strategy needs to handle.
How to ask Composer: "How many customers placed an order between November 28 and December 1, 2025, and have not placed an order since December 2, 2025?"
What to check in the query:
- Date range: Confirm the dates match Cyber Week 2025 (Black Friday was November 28, Cyber Monday was December 1, 2025).
- Event filter: Verify it's checking "Placed Order" events, not "Started Checkout" or another event.
- Exclusion logic: The query should exclude anyone with a "Placed Order" event after November 30, 2025.
What the answer tells you: This is your BFCM Lapsed Buyer segment size. If the count is large (thousands), you need a dedicated winback series in the weeks before Black Friday. If it's small (hundreds), fold them into your main BFCM campaign sequence.
Build the segment in Klaviyo after you verify the count: "Placed Order at least once where date is between Nov 28, 2025 and Dec 1, 2025 AND Placed Order zero times since Dec 2, 2025."
Related: Our Klaviyo winback flow guide covers how to structure the series once you've sized the audience.
2. Which products do first-time BFCM buyers come back for within 90 days?
Why it matters: If first-time buyers acquired during BFCM tend to repurchase a specific product category or item within 90 days, that's your post-purchase upsell angle. Knowing the product patterns lets you personalize follow-up flows and allocate inventory for the products most likely to convert repeat buyers.
How to ask Composer: "For customers whose first order was placed during November 28 - December 1, 2025, which products did they purchase in their second order within 90 days?"
What to check in the query:
- First order filter: Confirm the query identifies customers whose earliest "Placed Order" event is in the specified BFCM window.
- Second order window: Verify it's looking for a second "Placed Order" event within 90 days of the first.
- Product data: Check that the query is pulling product names, SKUs, or catalog IDs from the order event properties.
What the answer tells you: If a specific product or category appears repeatedly (e.g., subscription refills, complementary items, or seasonal follow-ups), that's your post-BFCM replenishment offer. If there's no clear pattern, focus on cross-sell based on the original purchase category instead of a universal upsell.
Build a segment for each high-repeat product: "Placed Order at least once where Product Name contains [specific product] since Dec 1, 2025."
3. How many subscribers clicked in the last 60 days and have never placed an order?
Why it matters: These are your engaged non-buyers. They open your emails, they click through, but they haven't converted. During BFCM, this segment deserves a different offer angle than your customer list: think first-order incentives, social proof, or risk-reversal (free returns, guarantees) instead of loyalty rewards.
How to ask Composer: "How many people have clicked an email at least once in the last 60 days and have never placed an order?"
What to check in the query:
- Click event: Verify it's filtering for "Clicked Email" events within the last 60 days.
- Order exclusion: Confirm the query excludes anyone with a "Placed Order" event ever, not just in the last 60 days.
- Suppression: Make sure suppressed profiles aren't included in the count.
What the answer tells you: This is your Engaged Non-Buyer segment size. If it's sizable (10%+ of your active list), create a BFCM campaign sequence specifically for this group with stronger first-order incentives. If it's small, fold them into your main prospecting flow.
Segment logic: "Clicked Email at least once in the last 60 days AND Placed Order zero times."
Related: Our guide to Klaviyo segmentation explains how to structure this and other engagement-based segments.
Need help building your BFCM segments or auditing your Klaviyo data before peak season? We're a Klaviyo Gold Partner and we've driven $70M+ in revenue for eCommerce brands. Our Email & SMS Marketing service includes full account audits, segment strategy, and campaign execution. Book a free strategy call and we'll walk through your data with you.
4. What percentage of your list opened at least once in the last 30 days?
Why it matters: This is your engaged deliverability base. ISPs prioritize senders whose recipients consistently open. If less than 20% of your list opened in the last 30 days, your Black Friday sends will hit the spam folder at higher rates. If more than 40% opened, your deliverability is strong and you can afford slightly higher send frequency during Cyber Week.
How to ask Composer: "What percentage of my email list opened an email at least once in the last 30 days?"
What to check in the query:
- Date range: Confirm it's looking at the last 30 days, not last campaign or last quarter.
- Open event: Verify it's counting "Opened Email" events.
- List definition: Make sure it's comparing opens to your total subscribed list size, not total profiles (which includes suppressed and unsubscribed contacts).
What the answer tells you:
- Under 20% engaged: Suppress unengaged segments before BFCM. Send only to people who opened or clicked in the last 60-90 days. Risking your sender reputation during peak week isn't worth the incremental revenue from dead addresses.
- 20-40% engaged: Standard BFCM frequency is safe. Plan your normal Cyber Week calendar without extra suppression.
- Over 40% engaged: You have room to increase frequency slightly, but don't abuse it. Test an extra send on Thanksgiving or a Sunday preview before Black Friday.
Build an engagement filter for your BFCM campaigns: "Opened Email at least once in the last 60 days OR Clicked Email at least once in the last 90 days."
Related: BFCM deliverability triage guide covers how to adjust send volume based on engagement metrics.
5. How many people added to cart in the last 7 days but didn't complete checkout?
Why it matters: Recent abandoners are hot leads. They're already in buying mode, they've browsed your catalog, and they're familiar with your pricing. During the lead-up to BFCM, this segment should receive teaser emails about upcoming deals, not generic campaign blasts. On Black Friday itself, they get priority for your best offer.
How to ask Composer: "How many people triggered an 'Added to Cart' event in the last 7 days and did not place an order?"
What to check in the query:
- Event filter: Verify it's checking "Added to Cart" events in the last 7 days.
- Order exclusion: Confirm it excludes anyone who completed a "Placed Order" event after their cart add.
- Duplicate handling: Check whether the query counts unique profiles or total cart add events (you want unique profiles).
What the answer tells you: This is your Active Abandonment Pool. If it's large relative to your usual volume, your cart abandonment flow may not be firing properly or your discount threshold might be too high. If it's small, your abandonment strategy is working and these are legitimate holdouts worth targeting with a BFCM teaser.
Segment logic: "Added to Cart at least once in the last 7 days AND Placed Order zero times since [date of earliest cart add]."
6. Which campaign from the last 60 days had the highest revenue per recipient?
Why it matters: Revenue per recipient (RPR) tells you which campaign format, subject line style, or offer angle converts best per person reached, not just total revenue. If a campaign to a small VIP segment had higher RPR than a blast to your full list, that format is worth replicating during BFCM when every send counts.
How to ask Composer: "Which campaign in the last 60 days had the highest revenue per recipient?"
What to check in the query:
- Time window: Confirm it's analyzing campaigns sent in the last 60 days.
- Revenue attribution: Verify the query uses Klaviyo's revenue attribution model (typically attributed revenue within the attribution window, not just placed order totals).
- Recipient count: Make sure it's dividing total revenue by recipients, not by total list size or opens.
What the answer tells you: The winning campaign's structure is your BFCM template: subject line, offer, layout, and CTA. Don't reinvent the wheel during peak week. Clone the high-RPR campaign, update the offer and images, and send it to your best segments first.
Pull the campaign in Klaviyo and review:
- Subject line pattern (discount in subject? urgency language? personalization token?)
- Email layout (single hero image? product grid? text-heavy?)
- Offer structure (percentage off? dollar threshold? bundle?)
- CTA placement (above fold? multiple CTAs?)
Related: Our Klaviyo revenue per recipient guide explains how to interpret and act on RPR data.
7. How many VIP customers (3+ orders or $500+ lifetime spend) are in your active list?
Why it matters: VIPs deserve different treatment during BFCM. They don't need heavy discounts to convert. They're already loyal. Over-discounting to VIPs cannibalizes margin on purchases that would have happened anyway. This count tells you whether you need a separate VIP campaign track with exclusive perks (early access, bonus gifts, free shipping thresholds) instead of the same 30% off everyone else gets.
How to ask Composer: "How many customers have placed 3 or more orders OR have a lifetime value of $500 or more, and are currently subscribed to email?"
What to check in the query:
- Order count: Verify it's counting profiles with 3+ "Placed Order" events.
- Lifetime value: Confirm it's summing order totals correctly and comparing to $500 (or your chosen VIP threshold).
- Email subscription status: Make sure it filters for subscribed profiles only, excluding unsubscribed and suppressed.
What the answer tells you: If VIPs represent 5-10% of your active list, build a dedicated VIP campaign series with early access and premium perks. If they're less than 5%, fold VIP offers into your top-tier segments within the main campaign calendar. If they're more than 15%, consider whether your VIP threshold is too low. You may be giving away margin unnecessarily.
Segment logic: "Placed Order at least 3 times OR Lifetime Value is greater than $500 AND Email is in list [Main List]."
Related: Our Klaviyo VIP flow guide covers how to structure ongoing VIP engagement beyond BFCM.
8. What was your average order value during Cyber Week 2025?
Why it matters: AOV during last year's BFCM sets your baseline for this year's discount strategy. If your average order was $120 and you're planning a "$150+ for 30% off" threshold, you're asking customers to spend 25% more than they did last year, which is unrealistic during a price-sensitive event. Knowing last year's AOV lets you set realistic free shipping thresholds, tiered discounts, and bundle targets.
How to ask Composer: "What was the average order value for orders placed between November 28 and December 1, 2025?"
What to check in the query:
- Date range: Confirm it matches Cyber Week 2025 (November 28 - December 1, 2025).
- Order value calculation: Verify it's averaging the total order value from "Placed Order" events, not just product prices.
- Currency: If you sell in multiple currencies, confirm the query converts to a single currency or filters to your primary market.
What the answer tells you:
- AOV was below your planned free shipping threshold: Lower the threshold or risk killing conversion. Most customers won't pay shipping during BFCM when competitors offer free shipping at lower minimums.
- AOV was close to your threshold: You're in a safe zone. Promote the threshold clearly in every email.
- AOV was well above your threshold: You have room to raise the bar or introduce a second tier (e.g., free shipping at $75, free gift at $150).
Use this number to set your BFCM offer structure. Our Shopify discount strategy guide explains how to build tiered offers that protect margin while incentivizing higher basket sizes.
9. How many people are in segments you built for last year's BFCM but never cleaned up?
Why it matters: Abandoned segments clutter your account, slow down Composer's analysis, and can accidentally receive sends if they're still in campaign target lists. Before BFCM 2026, audit your segment library and archive or delete anything you're not using. This question surfaces segments that have "2025" or "Black Friday 2025" in the name but are still live.
How to ask Composer: "How many segments have '2025' or 'BFCM 2025' in the name?"
What to check in the query:
- Name filter: Verify it's searching segment names for the specified text strings.
- Include archived: Make sure the query distinguishes between active and archived segments (you want to know which ones are still live).
What the answer tells you: If you have more than a handful of old BFCM segments, set aside 30 minutes to review your segment library. Archive anything from 2025 that isn't a year-over-year comparison segment. Delete test segments. Rename anything you're keeping for reference so it's clear it's historical.
Segment hygiene improves Composer's recommendations, speeds up campaign sends, and reduces the risk of targeting the wrong audience during peak week.
10. Which flow has the lowest conversion rate but the highest email send volume?
Why it matters: A flow with high volume but low conversion is either broken (wrong trigger, outdated offer, poor timing) or targeting the wrong audience. During BFCM, every email you send affects your sender reputation. If a flow is mailing thousands of people per week with a 0.1% conversion rate, pause it before Cyber Week or fix it now while there's time.
How to ask Composer: "Which flow has sent the most emails in the last 30 days but has the lowest conversion rate?"
What to check in the query:
- Volume calculation: Verify it's counting total emails sent per flow, not unique recipients (a flow with daily sends will have higher volume than a one-time welcome series).
- Conversion rate: Confirm it's calculating conversion as "Placed Order divided by emails sent" for each flow.
- Time window: Make sure it's analyzing the last 30 days, not all-time (recent performance matters more for BFCM readiness).
What the answer tells you: The flow Composer identifies is your priority fix. Open it in Klaviyo and review:
- Is the trigger still firing correctly? (Check recent flow analytics to confirm sends are happening.)
- Is the offer outdated? (Last year's discount code, expired promotion, wrong pricing?)
- Is the timing wrong? (Sending too soon after the trigger, or so late the customer already bought elsewhere?)
- Is the audience too broad? (Mailing suppressed profiles, customers who already converted, or people who opted out of this category?)
Fix or pause the flow before November 20. Don't let a broken flow burn through your sender reputation during BFCM.
Related: Use our free Klaviyo flow grader to audit all your flows at once and surface performance issues before peak season.
Want a full Klaviyo audit before Black Friday? Our team reviews every segment, flow, and campaign in your account and delivers a prioritized fix list in 48 hours. Get your free Klaviyo audit or book a strategy call to walk through your account with us.
How to Verify Composer's SQL Queries
Composer returns both the answer and the SQL query. Here's how to check whether the query is correct before you trust the result:
1. Read the WHERE clause first
The WHERE clause filters the data. Check:
- Are the dates right? (If you asked for "last 60 days," confirm the date math.)
- Are the event names exact? (Klaviyo events are case-sensitive. "Placed Order" is not the same as "placed order.")
- Are the profile properties spelled correctly? (Typos in property names will return zero results.)
2. Check the GROUP BY and aggregation functions
If you asked "which product sold the most," the query should GROUP BY product name and COUNT or SUM the orders. If it's grouping by profile ID instead, the answer will be wrong.
3. Verify the JOIN logic
If your question involves multiple data types (profiles + events, or campaigns + orders), the query needs to JOIN them correctly. Check that the JOIN conditions make sense. For example, if you're asking about customers who received a campaign and then placed an order, the query should join on profile ID and filter for orders placed after the campaign send date.
4. Test the query on a known subset
If you know the answer for a smaller segment (e.g., "I know we had 50 VIP orders last week"), ask Composer the same question for that subset and see if the count matches your expectation. If it's off, refine your question or report the discrepancy to Klaviyo support.
5. Compare to existing Klaviyo reports when possible
If Klaviyo's built-in campaign or flow reports show a metric (like total revenue or recipient count), ask Composer for the same metric and compare the answers. They should match. If they don't, the SQL query may be filtering data differently than Klaviyo's internal reports.
If a query looks wrong, rephrase your question with more specifics:
- Instead of "How many customers bought last month?" try "How many unique profiles placed an order between October 1 and October 31, 2026?"
- Instead of "Which campaign performed best?" try "Which campaign sent in the last 30 days had the highest revenue per recipient?"
Composer improves when you're explicit about dates, definitions, and calculations.
What SQL in Composer Can't Do Yet
As of October 13, 2026, SQL in Composer is in Preview. Here's what it can't query yet, according to Klaviyo's announcement:
- Forms: You can't ask "How many signups did my popup form generate last week?" (Coming soon.)
- Flows: You can't query flow-level metrics like "Which flow has the highest revenue per email sent?" Flow data is available through Klaviyo's built-in analytics, but SQL access isn't live yet. (Coming soon.)
- Templates: You can't ask "Which email template has been used in the most campaigns?" (Coming soon.)
- Custom objects: If your account uses Klaviyo's custom objects feature to store non-standard data, SQL can't query those yet. (Coming soon.)
For questions about flows or forms, use Klaviyo's existing analytics dashboards until SQL support arrives.
SQL vs Klaviyo's Built-In Reports: When to Use Each
Use Klaviyo's built-in reports when:
- The metric is already on a dashboard (campaign performance, flow revenue, cohort analysis).
- You need a quick check during a campaign send (open rate, click rate, unsubscribe rate are visible in real time).
- You're reviewing time-series data over weeks or months (the analytics UI is built for this).
Use SQL in Composer when:
- Your question doesn't fit an existing report template ("How many people who bought Product A also bought Product B within 30 days?").
- You need to size a custom segment before building it ("How big would my 'clicked 3+ times but never bought' segment be?").
- You want to verify or audit a segment's logic ("Is this segment actually excluding customers who already bought?").
- You're combining multiple filters that Klaviyo's segment builder makes tedious to construct.
Think of SQL in Composer as the power tool for edge cases, not the primary way to check campaign stats. If Klaviyo already built the dashboard for your question, use that.
Your Move Before Black Friday
Black Friday is November 27, 2026. Between October 13 and November 27, 2026, size your segments, fix underperforming flows, and verify your data is clean.
First two weeks (October 13-27, 2026):
- Ask Composer these 10 questions and document the answers.
- Check the SQL queries Composer returns for logic errors.
- Build segments for any audiences where the count was meaningful (lapsed BFCM buyers, engaged non-buyers, recent abandoners).
Mid-October through early November (October 28 - November 10, 2026): 4. Fix or pause any flows Composer identified as high-volume, low-conversion. 5. Audit your segment library and archive anything from 2025. 6. Set your BFCM free shipping thresholds and discount tiers based on last year's AOV.
Final two weeks before BFCM (November 11-26, 2026): 7. Test your segments in a small campaign to confirm they're targeting the right people. 8. Schedule recurring Composer audits (weekly performance summaries, declining campaign alerts). 9. Verify your VIP segment qualifies the right customers and plan their exclusive offer.
SQL in Composer gives you answers you couldn't get without a data analyst. Use it to make better decisions before Black Friday, not to justify the decisions you already made.
We're a Klaviyo Gold Partner. We've driven $70M+ in revenue for eCommerce brands. Our Email & SMS Marketing service includes full account audits, segment strategy, and campaign execution. Book a free strategy call and we'll walk through your Klaviyo data with you.
Related Reads
- K:BOS 2026: What Klaviyo Going Headless Means for BFCM
- Klaviyo Composer Review 2026: What It Does and What It Can't Do Yet
- Klaviyo Segmentation Guide: RFM, Engagement, and Predictive Models
- Klaviyo BFCM Playbook 2026: The Pre-Peak Checklist
SQL in Klaviyo Data Platform was announced September 9, 2026 at K:BOS and is currently in Preview inside Composer. All links to official Klaviyo sources are included inline. This article was last reviewed October 13, 2026.

Written by Mark Cijo
Founder of GOSH Digital. Klaviyo Gold Partner. Helping eCommerce brands grow revenue through data-driven marketing.
Book a free strategy call โ

