Klaviyo to Power BI: synthetic campaign reporting example Prepared 17 October 2026 by Turing BI https://turingbi.com/insights/connect-klaviyo-to-power-bi PURPOSE AND LIMITS All records and identifiers are invented teaching data. The CSV is a normalised staging extract, not a Klaviyo API response. Its arithmetic has been independently checked. The request template and DAX have not been executed against a private Klaviyo account or in Power BI Desktop/Service. No PBIX is included. FILES campaign-values.csv: two fictional email campaign messages. measures.dax: create each definition as a separate Power BI measure. expected-results.csv: control values at Decimal precision and display formats. REPORT BASIS One synthetic account, two messages, email only, one assumed Placed Order metric. Reporting dates: 1 to 30 September 2026, account-local calendar dates. Account timezone: Europe/London. Source values are assumed GBP. The retrieved_at timestamp is illustrative, not evidence of a live extraction. Klaviyo's currency setting alone does not convert source amounts into GBP. Delivered means received email count. clicks_unique is unique within each message. conversions counts attributed Placed Order events here, not unique customers. conversion_value is their attributed value, not store net sales, profit or lift. IMPORT Power BI Desktop: Get data > Text/CSV > campaign-values.csv > Transform Data. Name the query KlaviyoCampaigns. Set identifiers, channel, currency, timezone, window strings and retrieval timestamp to Text. Set delivered, clicks_unique and conversions to Whole Number. Set conversion_value to Fixed Decimal Number. Close & Apply. Add measures separately from measures.dax. Use cards for totals and a table grouped by campaign_message_id. Format Email Click Rate as a percentage with two decimals. Format monetary measures as GBP with two decimals. Counts use whole numbers. CONTROL RESULTS Delivered Emails: 1500. Message Unique Clicks: 80. Attributed Orders: 25. Attributed Order Value: GBP 1700.00. Email Click Rate: 5.33% after rounding. Attributed Value per Delivery: GBP 1.13. Attributed Value per Order: GBP 68.00. The row click rates are 4% and 8%; averaging them to 6% gives the wrong weighting. Summed per-message unique clicks do not establish distinct people across messages. Do not calculate Klaviyo conversion rate from total conversion events; that rate uses conversion_uniques, which this teaching extract does not include. SNAPSHOT AND SOURCE CONTROLS Load one current snapshot per account, campaign, campaign message, send channel, conversion metric and report window. Replace/upsert repeat extractions of the same window at that grain; do not append them or sum overlapping reporting windows. Keep audit history separately. Record attribution settings, currency/value semantics and retrieval time in a live build. Preserve report window/timezone semantics when reconciling. Keep attributed performance separate from total Shopify order revenue. Check API coverage and Power BI Service refresh before relying on a build. Keep private API keys server-side; this pack contains no account credentials.