[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"navigation":3,"blog":100,"/blog":113},[4,23,48,68],{"title":5,"path":6,"stem":7,"children":8,"icon":22},"Getting Started","/docs/getting-started","1.docs/1.getting-started/1.index",[9,12,17],{"title":10,"path":6,"stem":7,"icon":11},"Introduction","i-lucide-house",{"title":13,"path":14,"stem":15,"icon":16},"Creating an Account","/docs/getting-started/installation","1.docs/1.getting-started/2.installation","i-lucide-user-plus",{"title":18,"path":19,"stem":20,"icon":21},"Quick Start","/docs/getting-started/usage","1.docs/1.getting-started/3.usage","i-lucide-rocket",false,{"title":24,"path":25,"stem":26,"children":27,"page":22},"Data Sources","/docs/data-sources","1.docs/2.data-sources",[28,33,38,43],{"title":29,"path":30,"stem":31,"icon":32},"Manual Data","/docs/data-sources/manual-data","1.docs/2.data-sources/1.manual-data","i-lucide-file-text",{"title":34,"path":35,"stem":36,"icon":37},"API Sources","/docs/data-sources/api-sources","1.docs/2.data-sources/2.api-sources","i-lucide-globe",{"title":39,"path":40,"stem":41,"icon":42},"Managing Sources","/docs/data-sources/managing-sources","1.docs/2.data-sources/3.managing-sources","i-lucide-settings",{"title":44,"path":45,"stem":46,"icon":47},"Inbound API","/docs/data-sources/inbound-api","1.docs/2.data-sources/4.inbound-api","i-lucide-webhook",{"title":49,"path":50,"stem":51,"children":52,"page":22},"Visualization","/docs/visualization","1.docs/3.visualization",[53,58,63],{"title":54,"path":55,"stem":56,"icon":57},"Charts","/docs/visualization/charts","1.docs/3.visualization/1.charts","i-lucide-chart-line",{"title":59,"path":60,"stem":61,"icon":62},"Combined Views","/docs/visualization/combined-views","1.docs/3.visualization/2.combined-views","i-lucide-layers",{"title":64,"path":65,"stem":66,"icon":67},"Correlations","/docs/visualization/correlations","1.docs/3.visualization/3.correlations","i-lucide-git-compare",{"title":69,"path":70,"stem":71,"children":72,"icon":79},"Projections","/docs/projections","1.docs/4.projections/1.index",[73,75,80,85,90,95],{"title":69,"path":70,"stem":71,"icon":74},"i-lucide-chart-spline",{"title":76,"path":77,"stem":78,"icon":79},"Linear trend projection","/docs/projections/linear","1.docs/4.projections/2.linear","i-lucide-trending-up",{"title":81,"path":82,"stem":83,"icon":84},"Moving average projection","/docs/projections/moving-average","1.docs/4.projections/3.moving-average","i-lucide-activity",{"title":86,"path":87,"stem":88,"icon":89},"Exponential smoothing projection","/docs/projections/exponential-smoothing","1.docs/4.projections/4.exponential-smoothing","i-lucide-waves",{"title":91,"path":92,"stem":93,"icon":94},"Logarithmic projection","/docs/projections/logarithmic","1.docs/4.projections/5.logarithmic","i-lucide-log-in",{"title":96,"path":97,"stem":98,"icon":99},"Growth rate (CAGR) projection","/docs/projections/growth-rate","1.docs/4.projections/6.growth-rate","i-lucide-percent",{"id":101,"title":102,"body":103,"description":104,"extension":105,"meta":106,"navigation":107,"path":109,"seo":110,"stem":111,"__hash__":112},"blog/3.blog.yml","Blog",null,"Practical guides for founders and growth teams on KPI tracking, connecting business tools, and finding the metrics that drive growth.","yml",{},{"icon":108},"i-lucide-newspaper","/blog",{"title":102,"description":104},"3.blog","mSOmP1oEVSZRqgJw-Jf4KRfBSb83OT-WZ2u4-hvhdkA",[114,251,543,820,1052,1272,1452,1667,1961,2220,2736,3029,3194,3530,3750,4012,4286,4719,5013,5309,5569,5773,6015,6144,6302,6485,6719],{"id":115,"title":116,"authors":117,"badge":123,"body":125,"date":240,"description":241,"extension":242,"image":243,"meta":245,"navigation":246,"path":247,"seo":248,"stem":249,"__hash__":250},"posts/3.blog/1.why-combine-your-business-metrics.md","Why You Need to Combine Your Business Metrics in One Place",[118],{"name":119,"to":120,"avatar":121},"Oliver Melin","https://valoks.com",{"src":122},"https://valoks.com/assets/images/team/oliver.webp",{"label":124},"Strategy",{"type":126,"value":127,"toc":231},"minimark",[128,133,137,140,144,147,150,153,176,180,183,186,190,193,219,222,225,228],[129,130,132],"h2",{"id":131},"the-problem-with-siloed-data","The Problem With Siloed Data",[134,135,136],"p",{},"If you're running a SaaS business, you probably check Stripe for revenue, Google Search Console for organic traffic, a spreadsheet for customer feedback scores, and maybe another tool for ad spend. Each of these tools does its job well in isolation, but none of them shows you the full picture.",[134,138,139],{},"The reality is that your business metrics don't exist in isolation. Your marketing spend impacts your traffic, your traffic impacts your signups, and your signups impact your revenue. When these numbers live in separate dashboards, the connections between them stay invisible.",[129,141,143],{"id":142},"what-you-miss-when-metrics-are-scattered","What You Miss When Metrics Are Scattered",[134,145,146],{},"Consider a scenario: your MRR dropped 8% last month. You check Stripe and see higher churn. But why? Without overlaying your other data, you might never realize that a Google algorithm update tanked your organic traffic two weeks earlier, which reduced new signups, which meant your churn rate outpaced your acquisition rate.",[134,148,149],{},"These kinds of cause-and-effect chains are only visible when you can see multiple metrics side by side on the same timeline.",[134,151,152],{},"Common blind spots include:",[154,155,156,164,170],"ul",{},[157,158,159,163],"li",{},[160,161,162],"strong",{},"Delayed effects"," - A marketing campaign might take 2-3 weeks to show up in revenue numbers. Without overlapping timelines, you might attribute the growth to something else entirely.",[157,165,166,169],{},[160,167,168],{},"Inverse correlations"," - Sometimes one metric rising causes another to fall. For example, aggressive discounting might boost signups but tank average revenue per user.",[157,171,172,175],{},[160,173,174],{},"Seasonal patterns"," - Individual metrics might look alarming in isolation, but when compared to the same period last year across multiple data points, the picture becomes clear.",[129,177,179],{"id":178},"the-power-of-unified-visualization","The Power of Unified Visualization",[134,181,182],{},"When you bring your metrics together on a single chart, patterns emerge immediately. TotalKPI normalizes different scales (revenue in dollars, traffic in thousands, conversion rates in percentages) to a 0-100% range so you can spot trends at a glance.",[134,184,185],{},"This normalization is key. You can't meaningfully compare a line showing $50,000 MRR with a line showing 150,000 monthly pageviews on the same axis. But when both are normalized, you can instantly see whether they're moving in the same direction, diverging, or if one leads the other by a few days.",[129,187,189],{"id":188},"how-totalkpi-helps","How TotalKPI Helps",[134,191,192],{},"TotalKPI was built specifically for this problem. You can pull data from CSV files, connect APIs with automatic polling, or use pre-built integrations with Stripe and Google Search Console. All your metrics land in one workspace where you can:",[154,194,195,201,207,213],{},[157,196,197,200],{},[160,198,199],{},"Create combined views"," to overlay any set of metrics on a single chart",[157,202,203,206],{},[160,204,205],{},"Calculate correlation coefficients"," automatically to quantify relationships between your KPIs",[157,208,209,212],{},[160,210,211],{},"Organize by project and page"," to keep different business areas cleanly separated",[157,214,215,218],{},[160,216,217],{},"Track trends over time"," with interactive charts that let you hover over any data point for exact values",[129,220,5],{"id":221},"getting-started",[134,223,224],{},"The fastest way to see the value is to start with two metrics you suspect are related. Import your monthly revenue data from a CSV and connect your Google Search Console traffic. Create a combined view and see how the lines move together.",[134,226,227],{},"Most users have an \"aha moment\" within the first five minutes when they see a pattern they never noticed before.",[134,229,230],{},"Stop switching between tabs. Start seeing the connections.",{"title":232,"searchDepth":233,"depth":233,"links":234},"",2,[235,236,237,238,239],{"id":131,"depth":233,"text":132},{"id":142,"depth":233,"text":143},{"id":178,"depth":233,"text":179},{"id":188,"depth":233,"text":189},{"id":221,"depth":233,"text":5},"2026-02-10T00:00:00.000Z","Scattered data across tools like Stripe, Google Search Console, and spreadsheets hides the full picture. Learn why combining your metrics unlocks better decisions.","md",{"src":244},"https://images.unsplash.com/photo-1551288049-bebda4e38f71?w=640&h=360&fit=crop",{},true,"/blog/why-combine-your-business-metrics",{"title":116,"description":241},"3.blog/1.why-combine-your-business-metrics","4ifot4OX9d9Du5c-4EkEPsCmV9FTXVPN8yx3rHxwbj4",{"id":252,"title":253,"authors":254,"badge":259,"body":261,"date":534,"description":535,"extension":242,"image":536,"meta":538,"navigation":246,"path":539,"seo":540,"stem":541,"__hash__":542},"posts/3.blog/10.databox-alternative-for-startups.md","Looking for a Databox Alternative? Here's Why Founders Are Switching",[255],{"name":256,"to":120,"avatar":257},"Frej Nielsen",{"src":258},"https://valoks.com/assets/images/team/frej.webp",{"label":260},"Comparison",{"type":126,"value":262,"toc":519},[263,275,279,282,285,289,292,295,298,302,305,310,313,317,320,324,327,331,429,433,436,453,457,460,480,484,487,490,493,497,508],[264,265,266],"callout",{},[134,267,268,269,274],{},"Looking for a quick feature-by-feature comparison? See our ",[270,271,273],"a",{"href":272},"/compare/databox","dedicated TotalKPI vs Databox comparison page",".",[129,276,278],{"id":277},"what-databox-does-well","What Databox Does Well",[134,280,281],{},"Databox has earned its reputation as one of the best KPI dashboard tools for startups. It connects to 70+ data sources, has a solid mobile app, and makes it easy to create widget-based dashboards that show your key metrics at a glance. The goal tracking and benchmark features are genuinely useful for teams that want to measure performance against targets.",[134,283,284],{},"If you need a TV dashboard for the office or a quick daily check on individual KPIs, Databox handles that well.",[129,286,288],{"id":287},"where-databox-falls-short","Where Databox Falls Short",[134,290,291],{},"The fundamental limitation of Databox is that it displays metrics in widgets. Each widget shows one number, one trend line, or one comparison. Metrics are shown side by side, not combined.",[134,293,294],{},"This matters because the most valuable business insights come from understanding how metrics relate to each other. Does your organic traffic actually drive revenue? Is there a lag between your email campaigns and new signups? Which marketing channel correlates most strongly with conversions?",[134,296,297],{},"Databox can't answer these questions because it doesn't overlay data from different sources on the same chart. You see that revenue went up and traffic went up, but you can't see whether they moved together, in what order, or with what delay.",[129,299,301],{"id":300},"what-totalkpi-does-differently","What TotalKPI Does Differently",[134,303,304],{},"TotalKPI is built around a single core idea: overlay metrics from different sources on the same time-series chart. Instead of widgets showing isolated numbers, you get combined views where multiple data series are plotted on the same axis with automatic normalization.",[306,307,309],"h3",{"id":308},"automatic-normalization","Automatic Normalization",[134,311,312],{},"When you combine Stripe revenue ($45,000 MRR) with Google Search Console clicks (150,000/month) on the same chart, TotalKPI automatically normalizes both to a 0-100% scale. The shapes of the curves become directly comparable, regardless of units.",[306,314,316],{"id":315},"pearson-correlation","Pearson Correlation",[134,318,319],{},"Every combined view calculates the Pearson correlation coefficient between your metrics. You don't need to export data to a spreadsheet or run formulas. The correlation appears automatically, telling you whether two metrics move together (positive), move apart (negative), or have no relationship (near zero).",[306,321,323],{"id":322},"time-series-focus","Time-Series Focus",[134,325,326],{},"TotalKPI is built for time-series data. Every data point has a timestamp. Every chart shows change over time. This makes it ideal for spotting trends, lags, and seasonal patterns that widget-based dashboards miss entirely.",[129,328,330],{"id":329},"price-comparison","Price Comparison",[332,333,334,351],"table",{},[335,336,337],"thead",{},[338,339,340,345,348],"tr",{},[341,342,344],"th",{"align":343},"left","Feature",[341,346,347],{"align":343},"Databox",[341,349,350],{"align":343},"TotalKPI",[352,353,354,366,377,388,398,409,419],"tbody",{},[338,355,356,360,363],{},[357,358,359],"td",{"align":343},"Starting price",[357,361,362],{"align":343},"Free (very limited), then $59/mo",[357,364,365],{"align":343},"$9/mo",[338,367,368,371,374],{},[357,369,370],{"align":343},"Data source limit",[357,372,373],{"align":343},"3 on free, varies by plan",[357,375,376],{"align":343},"10 on Starter, 1,000 on Growth",[338,378,379,382,385],{},[357,380,381],{"align":343},"Combined/overlay charts",[357,383,384],{"align":343},"No",[357,386,387],{"align":343},"Yes (core feature)",[338,389,390,393,395],{},[357,391,392],{"align":343},"Correlation detection",[357,394,384],{"align":343},[357,396,397],{"align":343},"Automatic Pearson coefficient",[338,399,400,403,406],{},[357,401,402],{"align":343},"CSV import",[357,404,405],{"align":343},"Limited",[357,407,408],{"align":343},"Full support with flexible parsing",[338,410,411,414,416],{},[357,412,413],{"align":343},"Webhook/inbound API",[357,415,384],{"align":343},[357,417,418],{"align":343},"Yes, push data from any system",[338,420,421,424,426],{},[357,422,423],{"align":343},"Auto-normalization",[357,425,384],{"align":343},[357,427,428],{"align":343},"Yes, 0-100% scale",[129,430,432],{"id":431},"when-to-choose-databox","When to Choose Databox",[134,434,435],{},"Databox is the better choice if:",[154,437,438,441,444,447,450],{},[157,439,440],{},"You need a TV dashboard for an office or team room",[157,442,443],{},"You want pre-built widget templates with minimal setup",[157,445,446],{},"Your primary need is displaying individual KPIs for team visibility",[157,448,449],{},"You need goal tracking with automated alerts",[157,451,452],{},"You have a large team that needs mobile access to KPI snapshots",[129,454,456],{"id":455},"when-to-choose-totalkpi","When to Choose TotalKPI",[134,458,459],{},"TotalKPI is the better choice if:",[154,461,462,465,468,471,474,477],{},[157,463,464],{},"You want to understand how your metrics relate to each other",[157,466,467],{},"You need to overlay data from different tools on the same chart",[157,469,470],{},"You want automatic correlation detection without spreadsheet work",[157,472,473],{},"You're a solopreneur or small team that needs insights, not just displays",[157,475,476],{},"You want to connect custom APIs or push data via webhooks",[157,478,479],{},"Price matters and you want more for less",[129,481,483],{"id":482},"the-core-difference","The Core Difference",[134,485,486],{},"Databox answers the question: \"What are my numbers right now?\"",[134,488,489],{},"TotalKPI answers the question: \"What's actually driving my numbers?\"",[134,491,492],{},"Both are valid questions. But if you're making decisions about where to invest your time and money, understanding the relationships between your metrics is more valuable than seeing them individually.",[129,494,496],{"id":495},"try-totalkpi","Try TotalKPI",[134,498,499,507],{},[160,500,501],{},[270,502,506],{"href":503,"rel":504},"https://totalkpi.com/signup",[505],"nofollow","Start a free trial"," to connect your data sources and see your first cross-source correlation. No credit card required.",[134,509,510,511,518],{},"Or ",[160,512,513],{},[270,514,517],{"href":515,"rel":516},"https://totalkpi.com/demo/project/my-saas-metrics/overview",[505],"explore the live demo"," to see overlay charts in action.",{"title":232,"searchDepth":233,"depth":233,"links":520},[521,522,523,529,530,531,532,533],{"id":277,"depth":233,"text":278},{"id":287,"depth":233,"text":288},{"id":300,"depth":233,"text":301,"children":524},[525,527,528],{"id":308,"depth":526,"text":309},3,{"id":315,"depth":526,"text":316},{"id":322,"depth":526,"text":323},{"id":329,"depth":233,"text":330},{"id":431,"depth":233,"text":432},{"id":455,"depth":233,"text":456},{"id":482,"depth":233,"text":483},{"id":495,"depth":233,"text":496},"2026-03-25T00:00:00.000Z","Databox shows your metrics side by side. TotalKPI overlays them on one chart so you can see correlations. Here's how they compare for startup founders.",{"src":537},"https://images.unsplash.com/photo-1460925895917-afdab827c52f?w=640&h=360&fit=crop",{},"/blog/databox-alternative-for-startups",{"title":253,"description":535},"3.blog/10.databox-alternative-for-startups","jE6j3p1PiYSNAfJIMzArQfngTU32rq9FpHnc309wdHo",{"id":544,"title":545,"authors":546,"badge":549,"body":550,"date":811,"description":812,"extension":242,"image":813,"meta":815,"navigation":246,"path":816,"seo":817,"stem":818,"__hash__":819},"posts/3.blog/11.geckoboard-alternative-overlay-metrics.md","Geckoboard Alternative: Overlay Metrics Instead of Just Displaying Them",[547],{"name":119,"to":120,"avatar":548},{"src":122},{"label":260},{"type":126,"value":551,"toc":797},[552,560,564,567,570,574,577,580,583,587,590,593,597,600,604,607,611,614,618,621,625,725,729,743,747,763,767,770,785,788],[264,553,554],{},[134,555,268,556,274],{},[270,557,559],{"href":558},"/compare/geckoboard","dedicated TotalKPI vs Geckoboard comparison page",[129,561,563],{"id":562},"what-geckoboard-excels-at","What Geckoboard Excels At",[134,565,566],{},"Geckoboard has been a go-to TV dashboard tool for years. It connects to popular data sources, looks clean on a wall-mounted screen, and makes it easy to display real-time KPIs for team visibility. If your goal is to keep metrics visible to a team in an office, Geckoboard does that job well.",[134,568,569],{},"The setup is straightforward, the widget library covers common use cases, and the design is polished enough for client-facing displays.",[129,571,573],{"id":572},"the-widget-limitation","The Widget Limitation",[134,575,576],{},"Geckoboard's fundamental design is widget-based. Each widget shows one metric: a number, a sparkline, a gauge, or a leaderboard. Metrics are displayed side by side in a grid layout.",[134,578,579],{},"This design works for \"what are our numbers right now?\" but breaks down for \"how do our numbers relate to each other?\" You can see that your MRR is $45K and your organic traffic is 150K sessions, but you can't overlay them on the same chart to see whether they move together.",[134,581,582],{},"For a founder trying to understand what actually drives their business, this is a critical gap. The relationship between metrics is where the insights live.",[129,584,586],{"id":585},"the-price-gap","The Price Gap",[134,588,589],{},"Geckoboard's pricing has been a consistent pain point in user reviews. Plans start at $149/month for 5 dashboards and scale to $699/month for 30 dashboards. For a solo founder or small team tracking metrics from a handful of tools, that's a significant investment for what amounts to a display tool.",[134,591,592],{},"Per-dashboard pricing also creates a perverse incentive: you end up cramming metrics onto fewer dashboards to save money, which defeats the purpose of clear organization.",[129,594,596],{"id":595},"how-totalkpi-fills-the-gap","How TotalKPI Fills the Gap",[134,598,599],{},"TotalKPI takes a fundamentally different approach. Instead of widgets showing isolated metrics, it renders time-series charts where multiple data sources are overlaid on the same axis.",[306,601,603],{"id":602},"combined-views-with-auto-normalization","Combined Views with Auto-Normalization",[134,605,606],{},"Select any combination of data sources and TotalKPI plots them together. Revenue in dollars, traffic in sessions, conversion in percentages: all normalized to a 0-100% scale so the curves are directly comparable. The patterns between your metrics become immediately visible.",[306,608,610],{"id":609},"automatic-correlation-detection","Automatic Correlation Detection",[134,612,613],{},"Every combined view calculates the Pearson correlation coefficient. You know instantly whether two metrics move together, move apart, or have no relationship. No spreadsheet formulas, no data exports.",[306,615,617],{"id":616},"flat-affordable-pricing","Flat, Affordable Pricing",[134,619,620],{},"TotalKPI starts at $9/month with 10 data sources and 5 combined views. The Growth plan at $19/month includes 1,000 data sources and 100 combined views. No per-dashboard pricing. No surprises.",[129,622,624],{"id":623},"side-by-side-comparison","Side-by-Side Comparison",[332,626,627,638],{},[335,628,629],{},[338,630,631,633,636],{},[341,632,344],{"align":343},[341,634,635],{"align":343},"Geckoboard",[341,637,350],{"align":343},[352,639,640,649,658,667,676,686,697,706,714],{},[338,641,642,644,647],{},[357,643,359],{"align":343},[357,645,646],{"align":343},"$149/mo (5 dashboards)",[357,648,365],{"align":343},[338,650,651,654,656],{},[357,652,653],{"align":343},"Metric overlay charts",[357,655,384],{"align":343},[357,657,387],{"align":343},[338,659,660,662,664],{},[357,661,392],{"align":343},[357,663,384],{"align":343},[357,665,666],{"align":343},"Automatic",[338,668,669,671,673],{},[357,670,423],{"align":343},[357,672,384],{"align":343},[357,674,675],{"align":343},"Yes (0-100% scale)",[338,677,678,681,684],{},[357,679,680],{"align":343},"TV dashboard mode",[357,682,683],{"align":343},"Yes",[357,685,384],{"align":343},[338,687,688,691,694],{},[357,689,690],{"align":343},"Widget templates",[357,692,693],{"align":343},"Extensive library",[357,695,696],{"align":343},"N/A (chart-focused)",[338,698,699,701,703],{},[357,700,402],{"align":343},[357,702,405],{"align":343},[357,704,705],{"align":343},"Full support",[338,707,708,710,712],{},[357,709,413],{"align":343},[357,711,384],{"align":343},[357,713,683],{"align":343},[338,715,716,719,722],{},[357,717,718],{"align":343},"Mobile support",[357,720,721],{"align":343},"Dashboard viewing",[357,723,724],{"align":343},"Responsive charts",[129,726,728],{"id":727},"when-geckoboard-is-the-better-choice","When Geckoboard Is the Better Choice",[154,730,731,734,737,740],{},[157,732,733],{},"You need a TV dashboard for office display",[157,735,736],{},"Your team needs a quick visual overview on a shared screen",[157,738,739],{},"You want pre-built widget templates with minimal configuration",[157,741,742],{},"Client-facing displays are a primary use case",[129,744,746],{"id":745},"when-totalkpi-is-the-better-choice","When TotalKPI Is the Better Choice",[154,748,749,751,754,757,760],{},[157,750,464],{},[157,752,753],{},"You need cross-source overlay charts with correlation analysis",[157,755,756],{},"You're a solopreneur or small team that needs insights on a budget",[157,758,759],{},"You want to connect any JSON API or push data via webhooks",[157,761,762],{},"Price is a factor ($9/mo vs $149/mo+)",[129,764,766],{"id":765},"making-the-switch","Making the Switch",[134,768,769],{},"If you're currently using Geckoboard and want to try TotalKPI:",[771,772,773,776,779,782],"ol",{},[157,774,775],{},"Export your key metrics as CSVs from the original data sources",[157,777,778],{},"Import them into TotalKPI",[157,780,781],{},"Create combined views to overlay related metrics",[157,783,784],{},"Set up API polling for the data you want to keep live",[134,786,787],{},"The entire migration typically takes under 30 minutes for a handful of data sources.",[134,789,790,796],{},[160,791,792],{},[270,793,795],{"href":503,"rel":794},[505],"Start your free trial"," to see your metrics overlaid for the first time. No credit card required.",{"title":232,"searchDepth":233,"depth":233,"links":798},[799,800,801,802,807,808,809,810],{"id":562,"depth":233,"text":563},{"id":572,"depth":233,"text":573},{"id":585,"depth":233,"text":586},{"id":595,"depth":233,"text":596,"children":803},[804,805,806],{"id":602,"depth":526,"text":603},{"id":609,"depth":526,"text":610},{"id":616,"depth":526,"text":617},{"id":623,"depth":233,"text":624},{"id":727,"depth":233,"text":728},{"id":745,"depth":233,"text":746},{"id":765,"depth":233,"text":766},"2026-03-30T00:00:00.000Z","Geckoboard is great for TV dashboards but can't show you how metrics relate. Here's a lightweight alternative that overlays data from different tools on one chart.",{"src":814},"https://images.unsplash.com/photo-1639322537228-f710d846310a?w=640&h=360&fit=crop",{},"/blog/geckoboard-alternative-overlay-metrics",{"title":545,"description":812},"3.blog/11.geckoboard-alternative-overlay-metrics","1vN04XBA7_tMgooRaHv39EG49cvqUDMPV207WMCDr8g",{"id":821,"title":822,"authors":823,"badge":826,"body":827,"date":1043,"description":1044,"extension":242,"image":1045,"meta":1047,"navigation":246,"path":1048,"seo":1049,"stem":1050,"__hash__":1051},"posts/3.blog/12.startup-kpi-dashboard-guide.md","The Startup KPI Dashboard You Actually Need (It's Not What You Think)",[824],{"name":119,"to":120,"avatar":825},{"src":122},{"label":124},{"type":126,"value":828,"toc":1023},[829,833,836,839,843,846,860,863,867,870,874,877,881,884,888,891,895,898,902,905,909,913,916,920,923,927,930,950,954,957,960,971,975,978,989,992,996,999,1002,1006,1014],[129,830,832],{"id":831},"the-vanity-dashboard-trap","The Vanity Dashboard Trap",[134,834,835],{},"Most startup dashboards look impressive and tell you nothing. Sixty widgets showing MRR, ARR, total users, page views, social media followers, and dozens of other numbers arranged in a colorful grid. It looks like you're on top of things. You check it every morning. And then you make decisions based on gut feeling anyway.",[134,837,838],{},"The problem isn't the metrics themselves. It's that a grid of isolated numbers doesn't answer the question that actually matters: what's driving what?",[129,840,842],{"id":841},"what-a-useful-dashboard-actually-shows","What a Useful Dashboard Actually Shows",[134,844,845],{},"A useful startup dashboard doesn't just display numbers. It reveals relationships. It answers questions like:",[154,847,848,851,854,857],{},[157,849,850],{},"When I publish more blog posts, does trial signup rate actually increase?",[157,852,853],{},"How long after a traffic spike does revenue move?",[157,855,856],{},"Which acquisition channel has the strongest correlation with paying customers?",[157,858,859],{},"Does my support ticket volume predict churn before it shows up in MRR?",[134,861,862],{},"These are cross-metric questions. You can only answer them by overlaying data from different sources on the same chart and looking for patterns.",[129,864,866],{"id":865},"the-5-metrics-every-startup-should-overlay","The 5 Metrics Every Startup Should Overlay",[134,868,869],{},"You don't need fifty metrics. You need five, overlaid correctly.",[306,871,873],{"id":872},"_1-mrr-monthly-recurring-revenue","1. MRR (Monthly Recurring Revenue)",[134,875,876],{},"This is your anchor metric. Everything else gets measured against it. Import from Stripe or your billing system.",[306,878,880],{"id":879},"_2-new-signups-or-trial-starts","2. New Signups or Trial Starts",[134,882,883],{},"Your acquisition metric. How many new people are entering the funnel? Import from your app's analytics or CRM.",[306,885,887],{"id":886},"_3-organic-traffic","3. Organic Traffic",[134,889,890],{},"Your long-term growth metric. How many people are finding you through search? Import from Google Search Console or Google Analytics.",[306,892,894],{"id":893},"_4-churn-rate","4. Churn Rate",[134,896,897],{},"Your retention metric. What percentage of customers are leaving? Import from Stripe or calculate from your billing data.",[306,899,901],{"id":900},"_5-one-channel-specific-metric","5. One Channel-Specific Metric",[134,903,904],{},"Pick the marketing channel you invest the most in and track its primary metric. Ad spend if you run paid campaigns. Email subscriber count if you rely on email. Social media traffic if that's your channel.",[129,906,908],{"id":907},"how-to-set-it-up","How to Set It Up",[306,910,912],{"id":911},"step-1-create-a-project-for-your-startup","Step 1: Create a Project for Your Startup",[134,914,915],{},"In TotalKPI, create a project named after your product. Create a page called \"Growth Dashboard.\"",[306,917,919],{"id":918},"step-2-add-each-metric-as-a-data-source","Step 2: Add Each Metric as a Data Source",[134,921,922],{},"Import each of your five metrics. Use CSV for historical data, API polling for live connections, or webhooks for custom data.",[306,924,926],{"id":925},"step-3-create-combined-views","Step 3: Create Combined Views",[134,928,929],{},"This is where the value appears. Create these combined views:",[154,931,932,938,944],{},[157,933,934,937],{},[160,935,936],{},"Revenue vs Traffic:"," Overlay MRR with organic traffic. Look for correlation and lag time. If they move together with a 2-week delay, you know how far ahead your SEO investment pays off.",[157,939,940,943],{},[160,941,942],{},"Signups vs Channel:"," Overlay new signups with your primary channel metric. Is your main marketing channel actually driving signups, or is it vanity traffic?",[157,945,946,949],{},[160,947,948],{},"Churn vs Revenue:"," Overlay churn rate with MRR. Look for whether churn spikes precede revenue drops and by how long. This is your early warning system.",[306,951,953],{"id":952},"step-4-review-weekly","Step 4: Review Weekly",[134,955,956],{},"Set a weekly appointment with your dashboard. Not daily. Daily checks create noise and anxiety. Weekly reviews give you enough data to spot real trends and make informed decisions.",[134,958,959],{},"Each week, look at:",[154,961,962,965,968],{},[157,963,964],{},"Are the correlations holding?",[157,966,967],{},"Has any metric diverged from its usual pattern?",[157,969,970],{},"Is there a new lag effect you haven't noticed before?",[129,972,974],{"id":973},"when-to-add-more-metrics","When to Add More Metrics",[134,976,977],{},"Resist the urge to add every metric you can think of. Add a new metric only when:",[154,979,980,983,986],{},[157,981,982],{},"You have a specific hypothesis (\"I think X drives Y\")",[157,984,985],{},"You need to investigate an anomaly (\"Why did churn spike?\")",[157,987,988],{},"Your business model changes and you need to track a new channel",[134,990,991],{},"The goal is 5-10 metrics in 3-5 combined views. If you have more than that, you're probably tracking things that don't inform decisions.",[129,993,995],{"id":994},"when-to-simplify","When to Simplify",[134,997,998],{},"If you find yourself ignoring parts of your dashboard, remove them. If a combined view shows weak correlation (below 0.3), the relationship probably isn't meaningful enough to track. Delete the view and focus on the relationships that matter.",[134,1000,1001],{},"A dashboard with three powerful combined views is more useful than one with twenty mediocre widgets.",[129,1003,1005],{"id":1004},"build-yours-in-10-minutes","Build Yours in 10 Minutes",[134,1007,1008,1013],{},[160,1009,1010],{},[270,1011,506],{"href":503,"rel":1012},[505]," and set up your startup KPI dashboard. Import your first data sources via CSV to see results immediately, then switch to API polling for live updates.",[134,1015,1016,1022],{},[160,1017,1018],{},[270,1019,1021],{"href":515,"rel":1020},[505],"Explore the demo"," to see a sample SaaS dashboard with overlay charts and correlation analysis.",{"title":232,"searchDepth":233,"depth":233,"links":1024},[1025,1026,1027,1034,1040,1041,1042],{"id":831,"depth":233,"text":832},{"id":841,"depth":233,"text":842},{"id":865,"depth":233,"text":866,"children":1028},[1029,1030,1031,1032,1033],{"id":872,"depth":526,"text":873},{"id":879,"depth":526,"text":880},{"id":886,"depth":526,"text":887},{"id":893,"depth":526,"text":894},{"id":900,"depth":526,"text":901},{"id":907,"depth":233,"text":908,"children":1035},[1036,1037,1038,1039],{"id":911,"depth":526,"text":912},{"id":918,"depth":526,"text":919},{"id":925,"depth":526,"text":926},{"id":952,"depth":526,"text":953},{"id":973,"depth":233,"text":974},{"id":994,"depth":233,"text":995},{"id":1004,"depth":233,"text":1005},"2026-04-05T00:00:00.000Z","Most startup dashboards just display numbers. The dashboard that drives growth is the one that shows you how your KPIs connect. Here's how to build it.",{"src":1046},"https://images.unsplash.com/photo-1553877522-43269d4ea984?w=640&h=360&fit=crop",{},"/blog/startup-kpi-dashboard-guide",{"title":822,"description":1044},"3.blog/12.startup-kpi-dashboard-guide","AH0T6g8_wyl8Wt-1mMODk-XE2JkSYe3mKmoLnFGouiI",{"id":1053,"title":1054,"authors":1055,"badge":1058,"body":1060,"date":1263,"description":1264,"extension":242,"image":1265,"meta":1267,"navigation":246,"path":1268,"seo":1269,"stem":1270,"__hash__":1271},"posts/3.blog/13.what-metrics-should-saas-founders-track.md","What Metrics Should SaaS Founders Track? A Practical Guide",[1056],{"name":256,"to":120,"avatar":1057},{"src":258},{"label":1059},"Growth",{"type":126,"value":1061,"toc":1238},[1062,1066,1069,1072,1076,1079,1083,1086,1090,1093,1097,1100,1104,1107,1111,1114,1118,1121,1125,1128,1132,1135,1139,1142,1146,1149,1153,1156,1160,1163,1166,1170,1174,1177,1181,1184,1188,1191,1195,1227,1230],[129,1063,1065],{"id":1064},"the-metric-overload-problem","The Metric Overload Problem",[134,1067,1068],{},"Search \"SaaS metrics\" and you'll find articles listing 30, 40, or 50 metrics you \"must\" track. MRR, ARR, ARPU, LTV, CAC, CAC payback period, expansion revenue, contraction revenue, logo churn, revenue churn, net revenue retention, gross margin, burn rate, runway, NPS, CSAT, time to value, feature adoption rate...",[134,1070,1071],{},"For a solo founder or a team of three, tracking all of these is not only impossible but counterproductive. When you track everything, you understand nothing. The numbers become a wall of noise that you glance at without it informing a single decision.",[129,1073,1075],{"id":1074},"tier-1-track-daily-3-metrics","Tier 1: Track Daily (3 Metrics)",[134,1077,1078],{},"These are the vital signs. If you only had time to check three numbers, these are the ones.",[306,1080,1082],{"id":1081},"mrr-monthly-recurring-revenue","MRR (Monthly Recurring Revenue)",[134,1084,1085],{},"Your revenue heartbeat. Import this from Stripe or your billing system. Track it as a daily running total, not just end-of-month snapshots. A daily MRR line chart shows you growth trends, stalls, and dips as they happen, not 30 days later.",[306,1087,1089],{"id":1088},"new-signups-or-trial-starts","New Signups or Trial Starts",[134,1091,1092],{},"Your acquisition pulse. How many new people entered your funnel today? This is a leading indicator. If signups drop, MRR will follow in 2-4 weeks. Catching a signup decline early gives you time to react.",[306,1094,1096],{"id":1095},"churn-events","Churn Events",[134,1098,1099],{},"Your retention signal. How many customers cancelled or didn't renew today? Like signups, this is a leading indicator for MRR. A single day's churn doesn't mean much, but a week-over-week trend tells you whether your retention is stable, improving, or deteriorating.",[129,1101,1103],{"id":1102},"tier-2-track-weekly-3-metrics","Tier 2: Track Weekly (3 Metrics)",[134,1105,1106],{},"These require a bit more context and are better analyzed at the weekly level where patterns are clearer.",[306,1108,1110],{"id":1109},"traffic-by-source","Traffic by Source",[134,1112,1113],{},"Not total traffic. Traffic broken down by organic, paid, referral, and direct. You need to know where your visitors come from so you can invest in the channels that work. Google Search Console for organic, Google Analytics for the rest.",[306,1115,1117],{"id":1116},"trial-to-paid-conversion-rate","Trial-to-Paid Conversion Rate",[134,1119,1120],{},"What percentage of signups become paying customers? This is the multiplier that connects your acquisition efforts to revenue. If you double traffic but your conversion rate drops by half, you've gained nothing.",[306,1122,1124],{"id":1123},"arpu-average-revenue-per-user","ARPU (Average Revenue Per User)",[134,1126,1127],{},"Your revenue divided by your number of paying customers. Track this weekly to spot trends in pricing effectiveness and customer mix. If ARPU is rising, you're attracting higher-value customers or your upsells are working. If it's dropping, you might be underpricing or attracting the wrong audience.",[129,1129,1131],{"id":1130},"tier-3-track-monthly-3-metrics","Tier 3: Track Monthly (3 Metrics)",[134,1133,1134],{},"These are strategic metrics that only make sense at the monthly level.",[306,1136,1138],{"id":1137},"cac-customer-acquisition-cost","CAC (Customer Acquisition Cost)",[134,1140,1141],{},"Your total marketing and sales spend divided by new customers acquired. Only meaningful at monthly or quarterly intervals because daily spend fluctuates too much. Compare this to your ARPU and LTV to know whether your growth is sustainable.",[306,1143,1145],{"id":1144},"ltv-lifetime-value","LTV (Lifetime Value)",[134,1147,1148],{},"Average revenue per customer multiplied by average customer lifespan. This is inherently a lagging indicator. Track it monthly and watch the trend. If LTV is growing, your product is getting stickier. If it's shrinking, you have a retention problem.",[306,1150,1152],{"id":1151},"nps-or-customer-satisfaction-score","NPS or Customer Satisfaction Score",[134,1154,1155],{},"Survey your customers once a month. A simple \"How likely are you to recommend us?\" gives you a directional signal on product-market fit. An NPS above 40 is strong. Below 20 is a warning.",[129,1157,1159],{"id":1158},"the-secret-its-not-the-individual-metrics","The Secret: It's Not the Individual Metrics",[134,1161,1162],{},"Here's what most \"SaaS metrics\" guides miss: the individual numbers are far less valuable than the relationships between them.",[134,1164,1165],{},"Knowing your MRR is $35K is useful. Knowing that your MRR correlates at 0.82 with organic traffic on a 2-week lag is actionable. The first is a status report. The second is a strategy insight.",[129,1167,1169],{"id":1168},"three-correlations-every-saas-founder-should-check-monthly","Three Correlations Every SaaS Founder Should Check Monthly",[306,1171,1173],{"id":1172},"_1-traffic-source-vs-mrr-by-channel","1. Traffic Source vs MRR (by channel)",[134,1175,1176],{},"Overlay each traffic source with MRR separately. Which channel has the strongest correlation? That's probably your most effective acquisition channel, even if it's not your highest-volume one.",[306,1178,1180],{"id":1179},"_2-churn-rate-vs-support-ticket-volume","2. Churn Rate vs Support Ticket Volume",[134,1182,1183],{},"Do support tickets spike before churn spikes? Many SaaS businesses find a 2-3 week lead time. If you can detect the support spike early, you can intervene with proactive outreach before customers leave.",[306,1185,1187],{"id":1186},"_3-content-output-vs-trial-signups","3. Content Output vs Trial Signups",[134,1189,1190],{},"If you publish blog content, overlay your publishing frequency or blog traffic with trial signups. Most content marketing operates on a 2-4 week delay. Understanding your specific lag helps you set realistic expectations and maintain consistency even when results aren't immediate.",[129,1192,1194],{"id":1193},"how-to-set-this-up-in-15-minutes","How to Set This Up in 15 Minutes",[771,1196,1197,1203,1209,1215,1221],{},[157,1198,1199,1202],{},[160,1200,1201],{},"Create a project"," in TotalKPI for your SaaS",[157,1204,1205,1208],{},[160,1206,1207],{},"Import your Tier 1 metrics"," via CSV or API (MRR, signups, churn)",[157,1210,1211,1214],{},[160,1212,1213],{},"Add your primary traffic source"," (organic search is usually most important)",[157,1216,1217,1220],{},[160,1218,1219],{},"Create 3 combined views",": Revenue vs Traffic, Churn vs Signups, Revenue vs Your Primary Channel",[157,1222,1223,1226],{},[160,1224,1225],{},"Check weekly"," for correlation changes and new patterns",[134,1228,1229],{},"The entire setup takes about 15 minutes. The insights compound over time as you accumulate more data.",[134,1231,1232,1237],{},[160,1233,1234],{},[270,1235,795],{"href":503,"rel":1236},[505]," and connect your metrics. No credit card required, and you'll see your first cross-source correlation within minutes.",{"title":232,"searchDepth":233,"depth":233,"links":1239},[1240,1241,1246,1251,1256,1257,1262],{"id":1064,"depth":233,"text":1065},{"id":1074,"depth":233,"text":1075,"children":1242},[1243,1244,1245],{"id":1081,"depth":526,"text":1082},{"id":1088,"depth":526,"text":1089},{"id":1095,"depth":526,"text":1096},{"id":1102,"depth":233,"text":1103,"children":1247},[1248,1249,1250],{"id":1109,"depth":526,"text":1110},{"id":1116,"depth":526,"text":1117},{"id":1123,"depth":526,"text":1124},{"id":1130,"depth":233,"text":1131,"children":1252},[1253,1254,1255],{"id":1137,"depth":526,"text":1138},{"id":1144,"depth":526,"text":1145},{"id":1151,"depth":526,"text":1152},{"id":1158,"depth":233,"text":1159},{"id":1168,"depth":233,"text":1169,"children":1258},[1259,1260,1261],{"id":1172,"depth":526,"text":1173},{"id":1179,"depth":526,"text":1180},{"id":1186,"depth":526,"text":1187},{"id":1193,"depth":233,"text":1194},"2026-04-10T00:00:00.000Z","Skip the 50-metric framework. Here are the metrics that actually matter for solo SaaS founders, and more importantly, how to see how they connect.",{"src":1266},"https://images.unsplash.com/photo-1554224155-6726b3ff858f?w=640&h=360&fit=crop",{},"/blog/what-metrics-should-saas-founders-track",{"title":1054,"description":1264},"3.blog/13.what-metrics-should-saas-founders-track","CF9rXjhk5lIg67FgFiUMi301KhLDZkqSDag7flXBNG8",{"id":1273,"title":1274,"authors":1275,"badge":1278,"body":1280,"date":1443,"description":1444,"extension":242,"image":1445,"meta":1447,"navigation":246,"path":1448,"seo":1449,"stem":1450,"__hash__":1451},"posts/3.blog/14.hidden-correlations-in-your-business-data.md","5 Hidden Correlations in Your Business Data You're Probably Missing",[1276],{"name":119,"to":120,"avatar":1277},{"src":122},{"label":1279},"Insights",{"type":126,"value":1281,"toc":1434},[1282,1286,1289,1292,1295,1298,1302,1305,1311,1317,1321,1324,1329,1334,1338,1341,1346,1351,1355,1358,1363,1368,1372,1375,1380,1385,1389,1392,1423,1426],[129,1283,1285],{"id":1284},"why-correlations-hide-in-plain-sight","Why Correlations Hide in Plain Sight",[134,1287,1288],{},"Your business generates data across dozens of tools. Stripe tracks revenue. Google Search Console tracks search traffic. Your email platform tracks open rates. Your support tool tracks ticket volume. Each tool shows you its own data beautifully.",[134,1290,1291],{},"But the connections between these datasets are invisible because no individual tool can show you data from another tool. The correlation between your blog traffic and your trial signups lives in the gap between Google Analytics and your product database. Neither tool will ever show it to you.",[134,1293,1294],{},"The only way to find these hidden relationships is to overlay the data on the same chart and look.",[134,1296,1297],{},"Here are five correlations that founders commonly discover when they start combining their metrics.",[129,1299,1301],{"id":1300},"_1-deploy-frequency-vs-customer-churn-2-week-lag","1. Deploy Frequency vs Customer Churn (2-Week Lag)",[134,1303,1304],{},"A B2B SaaS founder overlaid their GitHub deployment count with their Stripe churn rate. The correlation was -0.68: a moderately strong negative relationship. When they deployed more frequently, churn went down. When deployments slowed, churn increased two weeks later.",[134,1306,1307,1310],{},[160,1308,1309],{},"Why it matters:"," Frequent shipping signals an active, improving product. Customers feel progress. When shipping slows, customers lose confidence that their feedback will be addressed and start evaluating alternatives.",[134,1312,1313,1316],{},[160,1314,1315],{},"The actionable insight:"," Maintain a consistent deployment cadence. If you need to slow down for a major refactor, communicate the roadmap to customers proactively. The two-week lag gives you a window to intervene.",[129,1318,1320],{"id":1319},"_2-blog-publish-cadence-vs-trial-signups-3-week-lag","2. Blog Publish Cadence vs Trial Signups (3-Week Lag)",[134,1322,1323],{},"A content-heavy SaaS startup tracked their blog publishing frequency (posts per week) against trial signups. The correlation was 0.71 with a consistent 3-week lag. Weeks with more published posts led to higher signups three weeks later.",[134,1325,1326,1328],{},[160,1327,1309],{}," Content marketing is famously hard to measure because the feedback loop is slow. If you publish a post today and check signups tomorrow, you'll see nothing. But overlay the data with a 3-week shift and the relationship appears clearly.",[134,1330,1331,1333],{},[160,1332,1315],{}," Content marketing works, but patience is required. Set a consistent publishing schedule and measure results on a 3-4 week delay, not same-week. If you stop publishing for a month, expect signups to dip in 3-4 weeks.",[129,1335,1337],{"id":1336},"_3-support-ticket-volume-vs-churn-rate-immediate-to-2-week","3. Support Ticket Volume vs Churn Rate (Immediate to 2-Week)",[134,1339,1340],{},"Multiple SaaS founders report the same finding: a spike in support tickets strongly predicts a churn spike. The timing varies by business but is usually 0-2 weeks. The correlation ranges from 0.6 to 0.85 depending on the company.",[134,1342,1343,1345],{},[160,1344,1309],{}," Support tickets are a leading indicator of churn. By the time a customer cancels, the decision was made weeks ago. But the support ticket happened in real time. If you can detect the spike, you can intervene.",[134,1347,1348,1350],{},[160,1349,1315],{}," Overlay support volume with churn weekly. When you see a support spike, don't just resolve the tickets. Reach out to affected customers proactively. Send a product update. Acknowledge the issue publicly. The churn window is 1-2 weeks; act within it.",[129,1352,1354],{"id":1353},"_4-pricing-page-visits-vs-trial-starts-surprisingly-low-correlation","4. Pricing Page Visits vs Trial Starts (Surprisingly Low Correlation)",[134,1356,1357],{},"A SaaS founder assumed that more pricing page visits meant more trial starts. When they overlaid the data, the correlation was only 0.32. Days with the highest pricing page traffic actually had below-average conversion rates.",[134,1359,1360,1362],{},[160,1361,1309],{}," The traffic source matters more than the traffic volume. High-traffic days to the pricing page were driven by a blog post that went viral on social media, attracting window-shoppers with no intent to buy. Lower-traffic days with visitors from targeted Google searches had much higher conversion.",[134,1364,1365,1367],{},[160,1366,1315],{}," Don't optimize for pricing page traffic. Optimize for pricing page traffic from high-intent sources. Overlay pricing page visits by referral source with trial starts to find which channels send visitors that actually convert.",[129,1369,1371],{"id":1370},"_5-social-media-mentions-vs-direct-traffic-1-week-lag","5. Social Media Mentions vs Direct Traffic (1-Week Lag)",[134,1373,1374],{},"A bootstrapped founder tracked their Twitter/X mention count against their direct website traffic (visits that type the URL directly). The correlation was 0.63 with a 1-week lag.",[134,1376,1377,1379],{},[160,1378,1309],{}," Social media ROI is notoriously hard to measure because the path from tweet to customer isn't direct. People see your name on Twitter, don't click, but search for you or type your URL a few days later. This shows up as \"direct traffic\" and gets zero attribution to social media.",[134,1381,1382,1384],{},[160,1383,1315],{}," Social media may be working better than your analytics suggest. If direct traffic correlates with social activity on a lag, your social presence is building brand awareness that converts through untracked channels.",[129,1386,1388],{"id":1387},"how-to-find-your-own-hidden-correlations","How to Find Your Own Hidden Correlations",[134,1390,1391],{},"These five examples are common patterns, but every business has its own unique correlations waiting to be discovered. The process is simple:",[771,1393,1394,1400,1405,1411,1417],{},[157,1395,1396,1399],{},[160,1397,1398],{},"Import your key metrics"," from different tools into TotalKPI (CSV, API, or webhook)",[157,1401,1402,1404],{},[160,1403,199],{}," for metrics you suspect might be related",[157,1406,1407,1410],{},[160,1408,1409],{},"Check the correlation coefficient"," that's automatically calculated",[157,1412,1413,1416],{},[160,1414,1415],{},"Look at the chart"," for lag effects (one metric consistently leading the other)",[157,1418,1419,1422],{},[160,1420,1421],{},"Test with new combinations"," you hadn't considered",[134,1424,1425],{},"The correlations that surprise you the most are usually the most valuable. They reveal relationships you didn't know existed and couldn't have found by checking each dashboard separately.",[134,1427,1428,1433],{},[160,1429,1430],{},[270,1431,795],{"href":503,"rel":1432},[505]," and overlay your first metrics. The correlation might change how you run your business.",{"title":232,"searchDepth":233,"depth":233,"links":1435},[1436,1437,1438,1439,1440,1441,1442],{"id":1284,"depth":233,"text":1285},{"id":1300,"depth":233,"text":1301},{"id":1319,"depth":233,"text":1320},{"id":1336,"depth":233,"text":1337},{"id":1353,"depth":233,"text":1354},{"id":1370,"depth":233,"text":1371},{"id":1387,"depth":233,"text":1388},"2026-04-15T00:00:00.000Z","Your metrics are connected in ways you can't see in separate dashboards. Here are five real correlations that founders discovered when they overlaid their data.",{"src":1446},"https://images.unsplash.com/photo-1518186285589-2f7649de83e0?w=640&h=360&fit=crop",{},"/blog/hidden-correlations-in-your-business-data",{"title":1274,"description":1444},"3.blog/14.hidden-correlations-in-your-business-data","knD27DIS6fSIPTS8vI7MNpNp2ivjMLB3ENfIuoPKRyA",{"id":1453,"title":1454,"authors":1455,"badge":1458,"body":1460,"date":1658,"description":1659,"extension":242,"image":1660,"meta":1662,"navigation":246,"path":1663,"seo":1664,"stem":1665,"__hash__":1666},"posts/3.blog/15.combine-stripe-hubspot-data.md","How to Combine Stripe and HubSpot Data to See Your Full Sales Funnel",[1456],{"name":256,"to":120,"avatar":1457},{"src":258},{"label":1459},"Integrations",{"type":126,"value":1461,"toc":1638},[1462,1466,1469,1472,1475,1479,1482,1486,1489,1493,1496,1500,1503,1507,1511,1514,1528,1532,1535,1539,1542,1545,1548,1551,1555,1558,1569,1572,1576,1579,1590,1593,1597,1600,1626,1630],[129,1463,1465],{"id":1464},"the-crm-billing-gap","The CRM-Billing Gap",[134,1467,1468],{},"HubSpot knows everything about your leads: when they entered the pipeline, which stage they're in, what emails they opened, which pages they visited. Stripe knows everything about your revenue: who paid, how much, when they upgraded, when they churned.",[134,1470,1471],{},"But neither tool knows about the other. HubSpot shows you 50 new leads this month. Stripe shows you 12 new customers. The journey from lead to customer is a black box that lives in the gap between the two systems.",[134,1473,1474],{},"This gap means you can't answer fundamental questions: How long does it take a lead to become a paying customer? Does your sales pipeline volume actually correlate with revenue? When you increase lead generation, how long before it shows up in Stripe?",[129,1476,1478],{"id":1477},"what-youll-learn-from-combining-this-data","What You'll Learn From Combining This Data",[134,1480,1481],{},"Overlaying HubSpot pipeline data with Stripe revenue reveals patterns that neither tool can show alone:",[306,1483,1485],{"id":1484},"lead-to-close-time-correlation","Lead-to-Close Time Correlation",[134,1487,1488],{},"Plot your weekly new leads (from HubSpot) against your weekly new customers (from Stripe). The lag between the two curves is your effective sales cycle. If leads consistently convert 3 weeks after entering the pipeline, you can predict next month's revenue from this month's pipeline activity.",[306,1490,1492],{"id":1491},"pipeline-volume-vs-revenue","Pipeline Volume vs Revenue",[134,1494,1495],{},"Is your pipeline volume actually correlated with revenue? It seems obvious that more leads should mean more revenue, but the correlation might be weaker than you think. If you're generating lots of low-quality leads, pipeline volume might not predict revenue at all. A weak correlation here is a signal to focus on lead quality, not quantity.",[306,1497,1499],{"id":1498},"deal-stage-velocity","Deal Stage Velocity",[134,1501,1502],{},"Track how many deals move to each pipeline stage per week and overlay with revenue. You might discover that deals moving from \"demo scheduled\" to \"proposal sent\" is a stronger predictor of revenue than total new leads. That tells you which stage of your funnel deserves the most attention.",[129,1504,1506],{"id":1505},"setting-up-the-hubspot-connection","Setting Up the HubSpot Connection",[306,1508,1510],{"id":1509},"via-api","Via API",[134,1512,1513],{},"HubSpot's API lets you pull deal pipeline data, contact counts, and engagement metrics. In TotalKPI, create an API data source:",[771,1515,1516,1519,1522,1525],{},[157,1517,1518],{},"Set the endpoint to your HubSpot API URL for the data you want (e.g., deals search or analytics)",[157,1520,1521],{},"Add your HubSpot API key in the authorization header",[157,1523,1524],{},"Configure a JSONPath expression to extract the specific metric (new deals count, pipeline value, etc.)",[157,1526,1527],{},"Set polling to daily for pipeline metrics",[306,1529,1531],{"id":1530},"via-csv","Via CSV",[134,1533,1534],{},"Export your HubSpot pipeline report as a CSV with dates and the metric you want to track (new contacts, deals created, deals closed). Import into TotalKPI with a few clicks.",[129,1536,1538],{"id":1537},"setting-up-the-stripe-connection","Setting Up the Stripe Connection",[306,1540,1510],{"id":1541},"via-api-1",[134,1543,1544],{},"Connect to Stripe's API to pull MRR, new customer count, or payment volume. Similar setup: endpoint URL, API key in headers, JSONPath for the value, and a polling interval.",[306,1546,1531],{"id":1547},"via-csv-1",[134,1549,1550],{},"Export Stripe's revenue data as a CSV. This is the fastest way to get historical data for the initial overlay.",[129,1552,1554],{"id":1553},"creating-the-combined-funnel-view","Creating the Combined Funnel View",[134,1556,1557],{},"With both data sources in your workspace:",[771,1559,1560,1563,1566],{},[157,1561,1562],{},"Create a combined view",[157,1564,1565],{},"Select your HubSpot lead metric and your Stripe revenue metric",[157,1567,1568],{},"The overlay renders immediately with automatic normalization",[134,1570,1571],{},"Now you can see both curves on the same timeline. The shapes tell the story: if leads spike in week 1 and revenue spikes in week 4, you've found your conversion lag. If leads spike and revenue doesn't follow, you have a conversion problem, not an acquisition problem.",[129,1573,1575],{"id":1574},"using-annotations-for-campaign-tracking","Using Annotations for Campaign Tracking",[134,1577,1578],{},"TotalKPI lets you add date annotations to any chart. Use these to mark:",[154,1580,1581,1584,1587],{},[157,1582,1583],{},"Campaign launches (\"Started Google Ads campaign\")",[157,1585,1586],{},"Process changes (\"Implemented new sales script\")",[157,1588,1589],{},"External events (\"Competitor raised prices\")",[134,1591,1592],{},"Over time, these annotations create a visual history of what moved the needle. You can see at a glance which campaigns produced a lead spike that actually converted to revenue and which produced leads that went nowhere.",[129,1594,1596],{"id":1595},"practical-actions-from-this-data","Practical Actions From This Data",[134,1598,1599],{},"Once you've overlaid HubSpot and Stripe data for a few weeks:",[154,1601,1602,1608,1614,1620],{},[157,1603,1604,1607],{},[160,1605,1606],{},"If correlation is strong (>0.6):"," Your pipeline is healthy. Focus on increasing volume at the top of the funnel.",[157,1609,1610,1613],{},[160,1611,1612],{},"If correlation is weak (\u003C0.3):"," Your leads aren't converting. Focus on lead quality, qualification criteria, or your sales process.",[157,1615,1616,1619],{},[160,1617,1618],{},"If there's a long lag (>4 weeks):"," Your sales cycle is long. Consider whether you can shorten it with better onboarding, lower friction trials, or simplified pricing.",[157,1621,1622,1625],{},[160,1623,1624],{},"If lag is inconsistent:"," Some lead sources convert faster than others. Break out your HubSpot data by lead source and overlay each one separately with revenue.",[129,1627,1629],{"id":1628},"get-started","Get Started",[134,1631,1632,1637],{},[160,1633,1634],{},[270,1635,506],{"href":503,"rel":1636},[505]," and connect your HubSpot and Stripe data. The combined view takes about 10 minutes to set up and immediately reveals the relationship between your pipeline and your revenue.",{"title":232,"searchDepth":233,"depth":233,"links":1639},[1640,1641,1646,1650,1654,1655,1656,1657],{"id":1464,"depth":233,"text":1465},{"id":1477,"depth":233,"text":1478,"children":1642},[1643,1644,1645],{"id":1484,"depth":526,"text":1485},{"id":1491,"depth":526,"text":1492},{"id":1498,"depth":526,"text":1499},{"id":1505,"depth":233,"text":1506,"children":1647},[1648,1649],{"id":1509,"depth":526,"text":1510},{"id":1530,"depth":526,"text":1531},{"id":1537,"depth":233,"text":1538,"children":1651},[1652,1653],{"id":1541,"depth":526,"text":1510},{"id":1547,"depth":526,"text":1531},{"id":1553,"depth":233,"text":1554},{"id":1574,"depth":233,"text":1575},{"id":1595,"depth":233,"text":1596},{"id":1628,"depth":233,"text":1629},"2026-04-20T00:00:00.000Z","See the complete journey from lead to paying customer by overlaying HubSpot pipeline data with Stripe revenue on a single chart.",{"src":1661},"https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=640&h=360&fit=crop",{},"/blog/combine-stripe-hubspot-data",{"title":1454,"description":1659},"3.blog/15.combine-stripe-hubspot-data","pLvm1SpxAltasLh8ehT0fLFbgcJ5Zq51Itt6QkBm_ac",{"id":1668,"title":1669,"authors":1670,"badge":1673,"body":1674,"date":1952,"description":1953,"extension":242,"image":1954,"meta":1956,"navigation":246,"path":1957,"seo":1958,"stem":1959,"__hash__":1960},"posts/3.blog/16.stop-guessing-what-drives-revenue.md","Stop Guessing What Drives Your Revenue: A Data Overlay Approach",[1671],{"name":119,"to":120,"avatar":1672},{"src":122},{"label":124},{"type":126,"value":1675,"toc":1937},[1676,1680,1683,1686,1689,1693,1696,1699,1713,1716,1720,1723,1726,1729,1733,1737,1740,1763,1767,1770,1774,1777,1781,1784,1788,1791,1873,1876,1880,1883,1886,1889,1893,1896,1922,1926,1929],[129,1677,1679],{"id":1678},"the-attribution-problem","The Attribution Problem",[134,1681,1682],{},"Every founder has a theory. \"Content marketing drives our growth.\" \"Our paid ads are working.\" \"Word of mouth is our main channel.\" These theories are often based on gut feeling, anecdotal evidence, or whatever the last successful campaign was.",[134,1684,1685],{},"The problem is that attribution in a multi-channel world is genuinely hard. A customer might discover you through a blog post, visit your site three times from different sources, sign up after seeing a tweet, and convert to paid after an email sequence. Which channel gets the credit?",[134,1687,1688],{},"Most analytics tools answer this with attribution models: first touch, last touch, linear. But these models are all arbitrary. First touch gives credit to the blog post. Last touch gives credit to the email. Neither tells you the full story.",[129,1690,1692],{"id":1691},"why-traditional-attribution-falls-short","Why Traditional Attribution Falls Short",[134,1694,1695],{},"Google Analytics attribution models are useful for understanding which touchpoints exist in the customer journey. But they have a fundamental limitation: they operate at the individual session level and require users to be tracked across all touchpoints.",[134,1697,1698],{},"In practice:",[154,1700,1701,1704,1707,1710],{},[157,1702,1703],{},"Users block tracking cookies",[157,1705,1706],{},"People switch between devices",[157,1708,1709],{},"B2B purchases involve multiple stakeholders",[157,1711,1712],{},"The decision to buy happens offline, weeks after the last tracked interaction",[134,1714,1715],{},"For a SaaS founder making resource allocation decisions, individual-level attribution is often unreliable. What's more reliable is aggregate correlation: when we do more of X, does revenue go up?",[129,1717,1719],{"id":1718},"the-overlay-approach","The Overlay Approach",[134,1721,1722],{},"Instead of tracking individual journeys, overlay your channel metrics with revenue on the same time-series chart and look for correlation.",[134,1724,1725],{},"This approach answers a different question. Not \"which touchpoint converted this specific customer\" but \"which channel, at the aggregate level, correlates most strongly with revenue growth?\"",[134,1727,1728],{},"The second question is actually more useful for decision-making because it accounts for all the invisible, untracked influence that individual attribution misses.",[129,1730,1732],{"id":1731},"setting-up-a-revenue-driver-analysis","Setting Up a Revenue Driver Analysis",[306,1734,1736],{"id":1735},"step-1-list-your-potential-revenue-drivers","Step 1: List Your Potential Revenue Drivers",[134,1738,1739],{},"Write down every channel or activity that might influence revenue:",[154,1741,1742,1745,1748,1751,1754,1757,1760],{},[157,1743,1744],{},"Organic search traffic (from Google Search Console)",[157,1746,1747],{},"Paid ad spend (from Google Ads, Meta Ads)",[157,1749,1750],{},"Email sends or open rates (from your email platform)",[157,1752,1753],{},"Social media activity (from Twitter/X analytics)",[157,1755,1756],{},"Content published (blog posts per week)",[157,1758,1759],{},"Product changes (deploy count from GitHub)",[157,1761,1762],{},"Support quality (resolution time)",[306,1764,1766],{"id":1765},"step-2-import-each-as-a-data-source","Step 2: Import Each as a Data Source",[134,1768,1769],{},"In TotalKPI, create a data source for each potential driver. Import via CSV for historical data or connect via API for live tracking.",[306,1771,1773],{"id":1772},"step-3-import-your-revenue-data","Step 3: Import Your Revenue Data",[134,1775,1776],{},"Add your Stripe MRR or revenue as a data source. This is your anchor metric.",[306,1778,1780],{"id":1779},"step-4-create-a-combined-view-for-each-driver","Step 4: Create a Combined View for Each Driver",[134,1782,1783],{},"Overlay each potential driver with revenue one at a time. This gives you a clear correlation coefficient for each pairing without the noise of multiple overlapping lines.",[306,1785,1787],{"id":1786},"step-5-rank-by-correlation-strength","Step 5: Rank by Correlation Strength",[134,1789,1790],{},"After creating all the views, you'll have a clear ranking:",[332,1792,1793,1806],{},[335,1794,1795],{},[338,1796,1797,1800,1803],{},[341,1798,1799],{"align":343},"Driver",[341,1801,1802],{"align":343},"Correlation with Revenue",[341,1804,1805],{"align":343},"Lag",[352,1807,1808,1819,1830,1841,1852,1863],{},[338,1809,1810,1813,1816],{},[357,1811,1812],{"align":343},"Organic traffic",[357,1814,1815],{"align":343},"0.82",[357,1817,1818],{"align":343},"2 weeks",[338,1820,1821,1824,1827],{},[357,1822,1823],{"align":343},"Email sends",[357,1825,1826],{"align":343},"0.61",[357,1828,1829],{"align":343},"3 days",[338,1831,1832,1835,1838],{},[357,1833,1834],{"align":343},"Blog posts published",[357,1836,1837],{"align":343},"0.54",[357,1839,1840],{"align":343},"3 weeks",[338,1842,1843,1846,1849],{},[357,1844,1845],{"align":343},"Social media activity",[357,1847,1848],{"align":343},"0.41",[357,1850,1851],{"align":343},"1 week",[338,1853,1854,1857,1860],{},[357,1855,1856],{"align":343},"Paid ad spend",[357,1858,1859],{"align":343},"0.28",[357,1861,1862],{"align":343},"Same week",[338,1864,1865,1868,1871],{},[357,1866,1867],{"align":343},"Support resolution time",[357,1869,1870],{"align":343},"-0.45",[357,1872,1818],{"align":343},[134,1874,1875],{},"In this hypothetical example, organic traffic is by far the strongest revenue correlator. Paid ad spend has a surprisingly weak correlation. And support resolution time has a negative correlation: longer resolution times precede revenue drops.",[129,1877,1879],{"id":1878},"accounting-for-time-lag","Accounting for Time Lag",[134,1881,1882],{},"Revenue doesn't respond to inputs immediately. Content marketing might take 3 weeks to show up in revenue. Email campaigns might convert in 3 days. Paid ads might have a same-day effect (or no lasting effect at all).",[134,1884,1885],{},"When looking at your combined views, shift your attention. If organic traffic spikes in week 1 and revenue spikes in week 3, the visual overlay makes this lag obvious even without sophisticated analysis. The two curves have the same shape, just offset.",[134,1887,1888],{},"Understanding your specific lag for each channel is incredibly valuable for planning. If you know content takes 3 weeks to convert, you can plan your publishing calendar 3 weeks ahead of when you need the revenue impact.",[129,1890,1892],{"id":1891},"making-the-decision","Making the Decision",[134,1894,1895],{},"With correlation data in hand, resource allocation becomes clearer:",[154,1897,1898,1904,1910,1916],{},[157,1899,1900,1903],{},[160,1901,1902],{},"High correlation, controllable:"," Double down. If organic traffic correlates at 0.82 with revenue and you can publish more content, that's your highest-leverage activity.",[157,1905,1906,1909],{},[160,1907,1908],{},"High correlation, not controllable:"," Monitor closely. If word-of-mouth correlates strongly but you can't directly control it, focus on making your product more remarkable.",[157,1911,1912,1915],{},[160,1913,1914],{},"Low correlation, high cost:"," Cut or reduce. If paid ads have a 0.28 correlation with revenue and cost $5K/month, that budget might be better spent elsewhere.",[157,1917,1918,1921],{},[160,1919,1920],{},"Negative correlation:"," Investigate urgently. If support resolution time negatively correlates with revenue, improving support is directly protective of revenue.",[129,1923,1925],{"id":1924},"replace-gut-feeling-with-data","Replace Gut Feeling With Data",[134,1927,1928],{},"The overlay approach won't give you perfect attribution. Nothing will. But it gives you something far better than gut feeling: a ranked list of which channels actually correlate with revenue growth, with timing information.",[134,1930,1931,1936],{},[160,1932,1933],{},[270,1934,506],{"href":503,"rel":1935},[505]," and overlay your first channel metric with revenue. The correlation might confirm your theory or completely overturn it. Either way, you'll make better decisions.",{"title":232,"searchDepth":233,"depth":233,"links":1938},[1939,1940,1941,1942,1949,1950,1951],{"id":1678,"depth":233,"text":1679},{"id":1691,"depth":233,"text":1692},{"id":1718,"depth":233,"text":1719},{"id":1731,"depth":233,"text":1732,"children":1943},[1944,1945,1946,1947,1948],{"id":1735,"depth":526,"text":1736},{"id":1765,"depth":526,"text":1766},{"id":1772,"depth":526,"text":1773},{"id":1779,"depth":526,"text":1780},{"id":1786,"depth":526,"text":1787},{"id":1878,"depth":233,"text":1879},{"id":1891,"depth":233,"text":1892},{"id":1924,"depth":233,"text":1925},"2026-04-25T00:00:00.000Z","Every founder has a theory about what drives revenue. Here's how to replace theories with data by overlaying your marketing, product, and revenue metrics.",{"src":1955},"https://images.unsplash.com/photo-1543286386-713bdd548da4?w=640&h=360&fit=crop",{},"/blog/stop-guessing-what-drives-revenue",{"title":1669,"description":1953},"3.blog/16.stop-guessing-what-drives-revenue","DV4vYVLwNJkPspc158tviKmZVA0Ur0Mp4HMx1L5-Zoc",{"id":1962,"title":1963,"authors":1964,"badge":1967,"body":1969,"date":2211,"description":2212,"extension":242,"image":2213,"meta":2215,"navigation":246,"path":2216,"seo":2217,"stem":2218,"__hash__":2219},"posts/3.blog/17.too-many-dashboards-one-solution.md","Too Many Dashboards? Here's How to Get Down to One",[1965],{"name":256,"to":120,"avatar":1966},{"src":258},{"label":1968},"Productivity",{"type":126,"value":1970,"toc":2197},[1971,1975,1978,1981,1984,1988,1991,2005,2008,2012,2015,2019,2022,2026,2029,2033,2036,2039,2043,2046,2084,2087,2091,2094,2097,2117,2120,2124,2127,2132,2149,2155,2159,2162,2165,2168,2171,2175,2178,2189],[129,1972,1974],{"id":1973},"the-dashboard-sprawl-problem","The Dashboard Sprawl Problem",[134,1976,1977],{},"It starts innocently. You sign up for Stripe and check revenue there. Then Google Analytics for traffic. Then Search Console for SEO rankings. Then Mailchimp for email metrics. Then a CRM for leads. Then a spreadsheet for that one metric no tool tracks.",[134,1979,1980],{},"Before you know it, your morning routine involves opening six tabs, logging into six services, and mentally stitching together a picture of how your business is doing. A BetterCloud survey found the average company uses over 100 SaaS tools. Even a lean startup accumulates five or six separate dashboards within its first year.",[134,1982,1983],{},"Each tool does its job well. The problem isn't the tools. It's that your understanding of the business is fragmented across all of them.",[129,1985,1987],{"id":1986},"step-1-audit-your-dashboard-routine","Step 1: Audit Your Dashboard Routine",[134,1989,1990],{},"Before consolidating, understand what you're actually checking. For one week, write down every tool you open to check metrics. Note:",[154,1992,1993,1996,1999,2002],{},[157,1994,1995],{},"The tool name",[157,1997,1998],{},"What metric you check",[157,2000,2001],{},"How long you spend",[157,2003,2004],{},"Whether it actually influenced a decision that day",[134,2006,2007],{},"Most founders find they check 5-8 tools daily, spending 15-25 minutes total. They also find that most of those checks are habit, not decision-making. You check Stripe because it's comforting to see revenue, not because the number changes your plans.",[129,2009,2011],{"id":2010},"step-2-identify-what-actually-matters","Step 2: Identify What Actually Matters",[134,2013,2014],{},"From your audit, categorize each metric:",[306,2016,2018],{"id":2017},"decision-metrics-keep-these","Decision Metrics (Keep These)",[134,2020,2021],{},"Metrics that have directly influenced a decision in the past month. \"I saw traffic drop, so I published more content.\" \"I noticed churn spike, so I reached out to at-risk customers.\" These are worth tracking actively.",[306,2023,2025],{"id":2024},"monitoring-metrics-check-weekly","Monitoring Metrics (Check Weekly)",[134,2027,2028],{},"Metrics that matter but don't change daily in meaningful ways. Monthly traffic trends, email open rates, CAC. Check these weekly, not daily.",[306,2030,2032],{"id":2031},"vanity-metrics-drop-these","Vanity Metrics (Drop These)",[134,2034,2035],{},"Metrics that feel good to check but never inform decisions. Total page views, social media follower count, total registered users (if most are inactive). Stop checking these daily. They're noise.",[134,2037,2038],{},"For most founders, the essential list narrows to 6-10 metrics.",[129,2040,2042],{"id":2041},"step-3-import-your-essential-metrics","Step 3: Import Your Essential Metrics",[134,2044,2045],{},"Take your 6-10 essential metrics and bring them into one workspace:",[154,2047,2048,2054,2060,2066,2072,2078],{},[157,2049,2050,2053],{},[160,2051,2052],{},"Revenue data"," from Stripe (CSV export or API connection)",[157,2055,2056,2059],{},[160,2057,2058],{},"Traffic data"," from Google Search Console or Analytics (CSV or API)",[157,2061,2062,2065],{},[160,2063,2064],{},"Signup data"," from your app (CSV or webhook)",[157,2067,2068,2071],{},[160,2069,2070],{},"Churn data"," from your billing system (CSV or API)",[157,2073,2074,2077],{},[160,2075,2076],{},"Channel metrics"," from your primary marketing channel (CSV or API)",[157,2079,2080,2083],{},[160,2081,2082],{},"Custom metrics"," from spreadsheets or internal tools (CSV or webhook)",[134,2085,2086],{},"In TotalKPI, each of these becomes a data source. Import historical data via CSV to start, then switch to API polling or webhooks for live updates.",[129,2088,2090],{"id":2089},"step-4-create-combined-views-not-just-lists","Step 4: Create Combined Views, Not Just Lists",[134,2092,2093],{},"This is the step that separates \"consolidated dashboard\" from \"useful dashboard.\" Don't just put all your metrics in one place. Overlay the ones that should be compared.",[134,2095,2096],{},"Create these combined views:",[154,2098,2099,2105,2111],{},[157,2100,2101,2104],{},[160,2102,2103],{},"Revenue vs Primary Traffic Source:"," See whether traffic actually drives revenue and with what lag",[157,2106,2107,2110],{},[160,2108,2109],{},"Signups vs Churn:"," Net growth at a glance. When signups exceed churn, you're growing",[157,2112,2113,2116],{},[160,2114,2115],{},"Marketing Activity vs Conversions:"," Does your primary marketing channel correlate with actual conversions?",[134,2118,2119],{},"The overlay reveals relationships. A list of numbers reveals nothing.",[129,2121,2123],{"id":2122},"step-5-the-weekly-review-process","Step 5: The Weekly Review Process",[134,2125,2126],{},"With your consolidated dashboard in place, establish a weekly review ritual:",[134,2128,2129],{},[160,2130,2131],{},"Monday morning, 15 minutes:",[771,2133,2134,2137,2140,2143,2146],{},[157,2135,2136],{},"Open TotalKPI (one tab, one login)",[157,2138,2139],{},"Check your combined views for any divergence from normal patterns",[157,2141,2142],{},"Note the correlation coefficients. Have any changed significantly?",[157,2144,2145],{},"Look at any annotations from the past week (campaign launches, product changes)",[157,2147,2148],{},"Write down one action item if any metric needs attention",[134,2150,2151,2154],{},[160,2152,2153],{},"Compare this to the old routine:"," Open Stripe (2 min), open GA (3 min), open Search Console (2 min), open email platform (2 min), open CRM (3 min), open spreadsheet (3 min) = 15+ minutes daily across 6 tools, none of which show how the metrics relate.",[129,2156,2158],{"id":2157},"the-overlay-advantage","The Overlay Advantage",[134,2160,2161],{},"Consolidation alone saves time. But the real value of moving to one dashboard isn't efficiency. It's insight.",[134,2163,2164],{},"When your metrics live in separate tools, you see them in isolation. Revenue went up. Traffic went down. Churn is stable. These are facts without context.",[134,2166,2167],{},"When your metrics are overlaid on the same chart, you see connections. Revenue went up because organic traffic increased three weeks ago. Churn is stable despite a support ticket spike because you responded quickly. Traffic went down but revenue held because your email conversion improved.",[134,2169,2170],{},"That level of understanding is impossible with six separate dashboards. It requires seeing the data together.",[129,2172,2174],{"id":2173},"start-consolidating-today","Start Consolidating Today",[134,2176,2177],{},"You can go from six dashboards to one in about 30 minutes:",[771,2179,2180,2183,2186],{},[157,2181,2182],{},"Export your key metrics as CSVs from each tool (10 minutes)",[157,2184,2185],{},"Import them into TotalKPI (10 minutes)",[157,2187,2188],{},"Create 3 combined views for the relationships that matter most (10 minutes)",[134,2190,2191,2196],{},[160,2192,2193],{},[270,2194,795],{"href":503,"rel":2195},[505]," and see what your metrics look like when they're not scattered across six tabs.",{"title":232,"searchDepth":233,"depth":233,"links":2198},[2199,2200,2201,2206,2207,2208,2209,2210],{"id":1973,"depth":233,"text":1974},{"id":1986,"depth":233,"text":1987},{"id":2010,"depth":233,"text":2011,"children":2202},[2203,2204,2205],{"id":2017,"depth":526,"text":2018},{"id":2024,"depth":526,"text":2025},{"id":2031,"depth":526,"text":2032},{"id":2041,"depth":233,"text":2042},{"id":2089,"depth":233,"text":2090},{"id":2122,"depth":233,"text":2123},{"id":2157,"depth":233,"text":2158},{"id":2173,"depth":233,"text":2174},"2026-04-30T00:00:00.000Z","The average SaaS founder checks 5+ dashboards daily. Here's a practical approach to consolidating your metrics into a single view that actually drives decisions.",{"src":2214},"https://images.unsplash.com/photo-1496181133206-80ce9b88a853?w=640&h=360&fit=crop",{},"/blog/too-many-dashboards-one-solution",{"title":1963,"description":2212},"3.blog/17.too-many-dashboards-one-solution","_AtT2waYxOAhUD25IZEpc8m5F-Ki-BetKyRJjf6clyU",{"id":2221,"title":2222,"authors":2223,"badge":2226,"body":2228,"date":2727,"description":2728,"extension":242,"image":2729,"meta":2731,"navigation":246,"path":2732,"seo":2733,"stem":2734,"__hash__":2735},"posts/3.blog/18.push-custom-data-via-webhooks.md","Push Custom Data to Your Dashboard via Webhooks (No Code Required)",[2224],{"name":119,"to":120,"avatar":2225},{"src":122},{"label":2227},"Tutorial",{"type":126,"value":2229,"toc":2711},[2230,2234,2237,2254,2257,2261,2264,2289,2296,2300,2303,2306,2316,2320,2323,2384,2387,2391,2394,2418,2421,2425,2429,2432,2482,2485,2489,2492,2518,2521,2525,2528,2650,2654,2657,2661,2664,2667,2671,2697,2699,2707],[129,2231,2233],{"id":2232},"when-api-polling-isnt-enough","When API Polling Isn't Enough",[134,2235,2236],{},"TotalKPI's API polling feature works great for pulling data from external services on a schedule. But some data doesn't live behind a standard API:",[154,2238,2239,2242,2245,2248,2251],{},[157,2240,2241],{},"Internal metrics from your own application",[157,2243,2244],{},"Build and deploy counts from CI/CD pipelines",[157,2246,2247],{},"Custom calculations from scripts or cron jobs",[157,2249,2250],{},"Event data from services that support webhooks but not pull-based APIs",[157,2252,2253],{},"Metrics from spreadsheets that you update periodically",[134,2255,2256],{},"For these cases, TotalKPI supports inbound webhooks: you POST JSON data to a unique endpoint, and it appears on your charts automatically.",[129,2258,2260],{"id":2259},"how-the-inbound-webhook-system-works","How the Inbound Webhook System Works",[134,2262,2263],{},"The flow is straightforward:",[771,2265,2266,2273,2276,2279,2286],{},[157,2267,2268,2269,2272],{},"You create an ",[160,2270,2271],{},"API key"," in TotalKPI's settings",[157,2274,2275],{},"TotalKPI gives you a unique webhook URL",[157,2277,2278],{},"You send a POST request to that URL with your data as JSON",[157,2280,2281,2282,2285],{},"TotalKPI matches the payload against your ",[160,2283,2284],{},"JSON templates"," to extract the metric value",[157,2287,2288],{},"The extracted value is appended to the associated data source as a new data point",[134,2290,2291,2292,2295],{},"The key concept is ",[160,2293,2294],{},"JSON templates."," These are mappings that tell TotalKPI which field in your JSON payload contains the metric value. You define the template once, and every subsequent payload that matches the same structure is processed automatically.",[129,2297,2299],{"id":2298},"step-1-create-an-api-key","Step 1: Create an API Key",[134,2301,2302],{},"In your TotalKPI dashboard, go to Settings and create a new inbound API key. Give it a descriptive name like \"GitHub Actions\" or \"Daily Revenue Script.\"",[134,2304,2305],{},"TotalKPI generates a unique key and shows you the webhook URL:",[2307,2308,2313],"pre",{"className":2309,"code":2311,"language":2312},[2310],"language-text","POST https://totalkpi.com/api/inbound/your-unique-key\n","text",[2314,2315,2311],"code",{"__ignoreMap":232},[129,2317,2319],{"id":2318},"step-2-send-a-test-payload","Step 2: Send a Test Payload",[134,2321,2322],{},"Send your first payload using curl or any HTTP client:",[2307,2324,2328],{"className":2325,"code":2326,"language":2327,"meta":232,"style":232},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl -X POST https://totalkpi.com/api/inbound/your-unique-key \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"metric\": \"deploy_count\", \"value\": 12, \"timestamp\": \"2026-03-15T10:00:00Z\"}'\n","bash",[2314,2329,2330,2353,2370],{"__ignoreMap":232},[2331,2332,2335,2339,2343,2346,2349],"span",{"class":2333,"line":2334},"line",1,[2331,2336,2338],{"class":2337},"sBMFI","curl",[2331,2340,2342],{"class":2341},"sfazB"," -X",[2331,2344,2345],{"class":2341}," POST",[2331,2347,2348],{"class":2341}," https://totalkpi.com/api/inbound/your-unique-key",[2331,2350,2352],{"class":2351},"sTEyZ"," \\\n",[2331,2354,2355,2358,2362,2365,2368],{"class":2333,"line":233},[2331,2356,2357],{"class":2341},"  -H",[2331,2359,2361],{"class":2360},"sMK4o"," \"",[2331,2363,2364],{"class":2341},"Content-Type: application/json",[2331,2366,2367],{"class":2360},"\"",[2331,2369,2352],{"class":2351},[2331,2371,2372,2375,2378,2381],{"class":2333,"line":526},[2331,2373,2374],{"class":2341},"  -d",[2331,2376,2377],{"class":2360}," '",[2331,2379,2380],{"class":2341},"{\"metric\": \"deploy_count\", \"value\": 12, \"timestamp\": \"2026-03-15T10:00:00Z\"}",[2331,2382,2383],{"class":2360},"'\n",[134,2385,2386],{},"The first time you send a payload with a new structure, it appears as an \"unmapped\" payload in your settings. This is expected. TotalKPI needs you to tell it how to interpret the data.",[129,2388,2390],{"id":2389},"step-3-map-the-payload-to-a-data-source","Step 3: Map the Payload to a Data Source",[134,2392,2393],{},"In the settings UI, you'll see your unmapped payload. Click on it to create a JSON template:",[771,2395,2396,2406,2415],{},[157,2397,2398,2399,2402,2403,2405],{},"Select which JSON field contains the ",[160,2400,2401],{},"value"," (e.g., ",[2314,2404,2401],{},")",[157,2407,2408,2409,2402,2412,2414],{},"Optionally select which field contains the ",[160,2410,2411],{},"timestamp",[2314,2413,2411],{},"). If omitted, TotalKPI uses the current time.",[157,2416,2417],{},"Assign the template to an existing data source or create a new one",[134,2419,2420],{},"Once mapped, all future payloads with the same structure are processed automatically. No manual intervention needed.",[129,2422,2424],{"id":2423},"common-integration-patterns","Common Integration Patterns",[306,2426,2428],{"id":2427},"github-actions-track-deploy-count","GitHub Actions: Track Deploy Count",[134,2430,2431],{},"Add a step to your GitHub Actions workflow that fires after a successful deployment:",[2307,2433,2437],{"className":2434,"code":2435,"language":2436,"meta":232,"style":232},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","- name: Report deploy to TotalKPI\n  run: |\n    curl -X POST https://totalkpi.com/api/inbound/your-key \\\n      -H \"Content-Type: application/json\" \\\n      -d '{\"metric\": \"deploys\", \"value\": 1}'\n","yaml",[2314,2438,2439,2454,2465,2470,2476],{"__ignoreMap":232},[2331,2440,2441,2444,2448,2451],{"class":2333,"line":2334},[2331,2442,2443],{"class":2360},"-",[2331,2445,2447],{"class":2446},"swJcz"," name",[2331,2449,2450],{"class":2360},":",[2331,2452,2453],{"class":2341}," Report deploy to TotalKPI\n",[2331,2455,2456,2459,2461],{"class":2333,"line":233},[2331,2457,2458],{"class":2446},"  run",[2331,2460,2450],{"class":2360},[2331,2462,2464],{"class":2463},"s7zQu"," |\n",[2331,2466,2467],{"class":2333,"line":526},[2331,2468,2469],{"class":2341},"    curl -X POST https://totalkpi.com/api/inbound/your-key \\\n",[2331,2471,2473],{"class":2333,"line":2472},4,[2331,2474,2475],{"class":2341},"      -H \"Content-Type: application/json\" \\\n",[2331,2477,2479],{"class":2333,"line":2478},5,[2331,2480,2481],{"class":2341},"      -d '{\"metric\": \"deploys\", \"value\": 1}'\n",[134,2483,2484],{},"Each deploy sends a data point. Over time, you'll see deploy frequency on your chart and can overlay it with revenue, churn, or other metrics.",[306,2486,2488],{"id":2487},"zapier-or-make-connect-any-service","Zapier or Make: Connect Any Service",[134,2490,2491],{},"Use Zapier's webhook action to send data from any trigger to TotalKPI. For example:",[154,2493,2494,2500,2506,2512],{},[157,2495,2496,2499],{},[160,2497,2498],{},"New Shopify order"," sends order value to TotalKPI",[157,2501,2502,2505],{},[160,2503,2504],{},"New Intercom conversation"," sends support ticket count",[157,2507,2508,2511],{},[160,2509,2510],{},"New Typeform response"," sends NPS score",[157,2513,2514,2517],{},[160,2515,2516],{},"New Stripe payment"," sends payment amount",[134,2519,2520],{},"Set up the Zap with a webhook POST action pointing to your TotalKPI endpoint. Map the relevant fields to a simple JSON structure.",[306,2522,2524],{"id":2523},"cron-job-daily-metric-snapshot","Cron Job: Daily Metric Snapshot",[134,2526,2527],{},"Write a simple script that runs daily and pushes a metric:",[2307,2529,2531],{"className":2325,"code":2530,"language":2327,"meta":232,"style":232},"#!/bin/bash\n# Get today's active user count from your database\nACTIVE_USERS=$(psql -t -c \"SELECT count(*) FROM users WHERE last_seen > now() - interval '24 hours'\")\n\ncurl -X POST https://totalkpi.com/api/inbound/your-key \\\n  -H \"Content-Type: application/json\" \\\n  -d \"{\\\"metric\\\": \\\"daily_active_users\\\", \\\"value\\\": $ACTIVE_USERS}\"\n",[2314,2532,2533,2539,2544,2571,2576,2589,2602],{"__ignoreMap":232},[2331,2534,2535],{"class":2333,"line":2334},[2331,2536,2538],{"class":2537},"sHwdD","#!/bin/bash\n",[2331,2540,2541],{"class":2333,"line":233},[2331,2542,2543],{"class":2537},"# Get today's active user count from your database\n",[2331,2545,2546,2549,2552,2555,2558,2561,2563,2566,2568],{"class":2333,"line":526},[2331,2547,2548],{"class":2351},"ACTIVE_USERS",[2331,2550,2551],{"class":2360},"=$(",[2331,2553,2554],{"class":2337},"psql",[2331,2556,2557],{"class":2341}," -t",[2331,2559,2560],{"class":2341}," -c",[2331,2562,2361],{"class":2360},[2331,2564,2565],{"class":2341},"SELECT count(*) FROM users WHERE last_seen > now() - interval '24 hours'",[2331,2567,2367],{"class":2360},[2331,2569,2570],{"class":2360},")\n",[2331,2572,2573],{"class":2333,"line":2472},[2331,2574,2575],{"emptyLinePlaceholder":246},"\n",[2331,2577,2578,2580,2582,2584,2587],{"class":2333,"line":2478},[2331,2579,2338],{"class":2337},[2331,2581,2342],{"class":2341},[2331,2583,2345],{"class":2341},[2331,2585,2586],{"class":2341}," https://totalkpi.com/api/inbound/your-key",[2331,2588,2352],{"class":2351},[2331,2590,2592,2594,2596,2598,2600],{"class":2333,"line":2591},6,[2331,2593,2357],{"class":2341},[2331,2595,2361],{"class":2360},[2331,2597,2364],{"class":2341},[2331,2599,2367],{"class":2360},[2331,2601,2352],{"class":2351},[2331,2603,2605,2607,2609,2612,2615,2618,2620,2623,2625,2628,2630,2633,2635,2637,2639,2641,2644,2647],{"class":2333,"line":2604},7,[2331,2606,2374],{"class":2341},[2331,2608,2361],{"class":2360},[2331,2610,2611],{"class":2341},"{",[2331,2613,2614],{"class":2351},"\\\"",[2331,2616,2617],{"class":2341},"metric",[2331,2619,2614],{"class":2351},[2331,2621,2622],{"class":2341},": ",[2331,2624,2614],{"class":2351},[2331,2626,2627],{"class":2341},"daily_active_users",[2331,2629,2614],{"class":2351},[2331,2631,2632],{"class":2341},", ",[2331,2634,2614],{"class":2351},[2331,2636,2401],{"class":2341},[2331,2638,2614],{"class":2351},[2331,2640,2622],{"class":2341},[2331,2642,2643],{"class":2351},"$ACTIVE_USERS",[2331,2645,2646],{"class":2341},"}",[2331,2648,2649],{"class":2360},"\"\n",[306,2651,2653],{"id":2652},"n8n-workflows-self-hosted-automation","n8n Workflows: Self-Hosted Automation",[134,2655,2656],{},"If you use n8n for automation, add an HTTP Request node at the end of any workflow to push the result to TotalKPI. Works with any data source n8n can connect to.",[129,2658,2660],{"id":2659},"overlaying-webhook-data-with-other-sources","Overlaying Webhook Data with Other Sources",[134,2662,2663],{},"The real power of webhooks is that the data they push lives alongside all your other data sources. A deploy count pushed from GitHub Actions sits on the same chart as your Stripe MRR pulled via API polling.",[134,2665,2666],{},"Create a combined view with your webhook data and any other source. The auto-normalization handles the scale differences automatically. Now you can see whether deploy frequency actually correlates with revenue, whether support tickets spike after deploys, or whether your custom internal metric predicts churn.",[129,2668,2670],{"id":2669},"tips-for-reliable-webhooks","Tips for Reliable Webhooks",[154,2672,2673,2679,2685,2691],{},[157,2674,2675,2678],{},[160,2676,2677],{},"Send data consistently."," Whether hourly, daily, or per-event, keep a regular cadence so your time-series data is smooth.",[157,2680,2681,2684],{},[160,2682,2683],{},"Include timestamps."," If your events aren't real-time, include the timestamp in the payload so the data point lands on the correct date.",[157,2686,2687,2690],{},[160,2688,2689],{},"Use descriptive metric names."," Your JSON template maps by structure, so keep the payload schema consistent across sends.",[157,2692,2693,2696],{},[160,2694,2695],{},"Monitor for failures."," If a webhook fails (network issue, key expired), the data point is simply missed. Set up monitoring on your sending side to catch failures.",[129,2698,1629],{"id":1628},[134,2700,2701,2706],{},[160,2702,2703],{},[270,2704,506],{"href":503,"rel":2705},[505]," and create your first inbound API key. Push a test payload and see it appear on your chart in real time. Then overlay it with your other metrics to find the correlations you've been missing.",[2708,2709,2710],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}",{"title":232,"searchDepth":233,"depth":233,"links":2712},[2713,2714,2715,2716,2717,2718,2724,2725,2726],{"id":2232,"depth":233,"text":2233},{"id":2259,"depth":233,"text":2260},{"id":2298,"depth":233,"text":2299},{"id":2318,"depth":233,"text":2319},{"id":2389,"depth":233,"text":2390},{"id":2423,"depth":233,"text":2424,"children":2719},[2720,2721,2722,2723],{"id":2427,"depth":526,"text":2428},{"id":2487,"depth":526,"text":2488},{"id":2523,"depth":526,"text":2524},{"id":2652,"depth":526,"text":2653},{"id":2659,"depth":233,"text":2660},{"id":2669,"depth":233,"text":2670},{"id":1628,"depth":233,"text":1629},"2026-05-05T00:00:00.000Z","Learn how to send data from any system to TotalKPI using webhooks and JSON templates. Build custom integrations without writing a single line of code.",{"src":2730},"https://images.unsplash.com/photo-1558494949-ef010cbdcc31?w=640&h=360&fit=crop",{},"/blog/push-custom-data-via-webhooks",{"title":2222,"description":2728},"3.blog/18.push-custom-data-via-webhooks","z-0amGs-G8owpUFK9fHapLRcusKuCG0AApMsPwP0f44",{"id":2737,"title":2738,"authors":2739,"badge":2742,"body":2743,"date":3020,"description":3021,"extension":242,"image":3022,"meta":3024,"navigation":246,"path":3025,"seo":3026,"stem":3027,"__hash__":3028},"posts/3.blog/19.supermetrics-alternative-for-startups.md","Supermetrics Alternative for Startups: Visualize, Don't Just Export",[2740],{"name":256,"to":120,"avatar":2741},{"src":258},{"label":260},{"type":126,"value":2744,"toc":3006},[2745,2753,2757,2760,2763,2767,2770,2773,2787,2790,2792,2795,2799,2802,2806,2809,2813,2816,2818,2899,2902,2906,2932,2934,2977,2979,2982,2985,2988,2990,2998],[264,2746,2747],{},[134,2748,268,2749,274],{},[270,2750,2752],{"href":2751},"/compare/supermetrics","dedicated TotalKPI vs Supermetrics comparison page",[129,2754,2756],{"id":2755},"what-supermetrics-does","What Supermetrics Does",[134,2758,2759],{},"Supermetrics is a data pipeline tool. It connects to marketing platforms (Google Ads, Meta Ads, LinkedIn, etc.) and pulls data into destinations like Google Sheets, Looker Studio, BigQuery, or Excel. It's essentially a bridge between your data sources and your spreadsheet or BI tool.",[134,2761,2762],{},"With 138+ connectors, Supermetrics has the broadest integration coverage in the marketing data space. If you need raw data from an advertising platform in a spreadsheet, Supermetrics is a solid choice.",[129,2764,2766],{"id":2765},"the-two-tool-problem","The Two-Tool Problem",[134,2768,2769],{},"Here's where it gets frustrating. Supermetrics has zero visualization. It's a pipe, not a dashboard. Once the data lands in Google Sheets or Looker Studio, you need to build your own charts, set up your own formulas, and maintain your own reports.",[134,2771,2772],{},"This creates what users call the \"two-tool Frankenstein\" workflow:",[771,2774,2775,2778,2781,2784],{},[157,2776,2777],{},"Supermetrics fetches the data",[157,2779,2780],{},"Looker Studio (or Sheets) visualizes it",[157,2782,2783],{},"Connectors break, schemas change, and your dashboard goes blank",[157,2785,2786],{},"You spend an hour debugging whether it's a Supermetrics issue or a Looker Studio issue",[134,2788,2789],{},"Competitor reviews consistently cite this as the top frustration. You're paying for a data pipe and still doing the visualization work yourself.",[129,2791,301],{"id":300},[134,2793,2794],{},"TotalKPI combines data connection and visualization in a single tool. You connect your data sources (via API, CSV, or webhook) and the data goes directly into interactive time-series charts. No intermediate spreadsheet. No separate visualization tool.",[306,2796,2798],{"id":2797},"one-tool-not-two","One Tool, Not Two",[134,2800,2801],{},"Connect to any JSON API endpoint directly from TotalKPI. The data is fetched, stored, and charted in one step. No export-to-sheets-then-build-a-chart workflow.",[306,2803,2805],{"id":2804},"overlay-charts-not-just-data-tables","Overlay Charts, Not Just Data Tables",[134,2807,2808],{},"Supermetrics gives you rows and columns. TotalKPI gives you overlay charts where metrics from different sources are plotted on the same time axis with automatic normalization. You can see relationships between marketing spend and revenue at a glance.",[306,2810,2812],{"id":2811},"automatic-correlation","Automatic Correlation",[134,2814,2815],{},"Every combined view in TotalKPI calculates the Pearson correlation between your metrics. Supermetrics gives you raw data. You'd need to write CORREL() formulas in Sheets or set up a BI tool to get the same insight.",[129,2817,330],{"id":329},[332,2819,2820,2831],{},[335,2821,2822],{},[338,2823,2824,2826,2829],{},[341,2825,344],{"align":343},[341,2827,2828],{"align":343},"Supermetrics",[341,2830,350],{"align":343},[352,2832,2833,2843,2853,2862,2870,2879,2888],{},[338,2834,2835,2837,2840],{},[357,2836,359],{"align":343},[357,2838,2839],{"align":343},"$29/mo (1 connector, Sheets only)",[357,2841,2842],{"align":343},"$9/mo (10 data sources)",[338,2844,2845,2847,2850],{},[357,2846,49],{"align":343},[357,2848,2849],{"align":343},"None (requires Looker Studio, Sheets, etc.)",[357,2851,2852],{"align":343},"Built-in interactive charts",[338,2854,2855,2858,2860],{},[357,2856,2857],{"align":343},"Overlay/combined charts",[357,2859,384],{"align":343},[357,2861,387],{"align":343},[338,2863,2864,2866,2868],{},[357,2865,392],{"align":343},[357,2867,384],{"align":343},[357,2869,666],{"align":343},[338,2871,2872,2874,2877],{},[357,2873,402],{"align":343},[357,2875,2876],{"align":343},"No (pull only)",[357,2878,683],{"align":343},[338,2880,2881,2884,2886],{},[357,2882,2883],{"align":343},"Webhook/inbound data",[357,2885,384],{"align":343},[357,2887,683],{"align":343},[338,2889,2890,2893,2896],{},[357,2891,2892],{"align":343},"Number of tools needed",[357,2894,2895],{"align":343},"2 (Supermetrics + viz tool)",[357,2897,2898],{"align":343},"1",[134,2900,2901],{},"Supermetrics pricing scales with connectors. If you need data from Google Ads, Meta Ads, and LinkedIn, you might need a higher tier. TotalKPI's pricing is flat: $9/mo for Starter or $19/mo for Growth, regardless of how many API endpoints you connect.",[129,2903,2905],{"id":2904},"when-supermetrics-is-the-better-choice","When Supermetrics Is the Better Choice",[154,2907,2908,2915,2922,2929],{},[157,2909,2910,2911,2914],{},"You need to feed data into a ",[160,2912,2913],{},"data warehouse"," (BigQuery, Snowflake) for analysis by a data team",[157,2916,2917,2918,2921],{},"You already have a mature ",[160,2919,2920],{},"Looker Studio or Tableau setup"," and just need the data pipe",[157,2923,2924,2925,2928],{},"You need connectors to ",[160,2926,2927],{},"very specific marketing platforms"," that TotalKPI doesn't support via API",[157,2930,2931],{},"Your workflow is spreadsheet-centric and you want data in Google Sheets columns",[129,2933,746],{"id":745},[154,2935,2936,2943,2950,2957,2964,2971],{},[157,2937,2938,2939,2942],{},"You want to ",[160,2940,2941],{},"see your data immediately"," without building charts in a separate tool",[157,2944,2945,2946,2949],{},"You need to ",[160,2947,2948],{},"overlay metrics from different sources"," on the same chart",[157,2951,2952,2953,2956],{},"You want ",[160,2954,2955],{},"automatic correlation detection"," without spreadsheet formulas",[157,2958,2959,2960,2963],{},"You're a ",[160,2961,2962],{},"startup or solopreneur"," who wants simplicity over enterprise data engineering",[157,2965,2966,2967,2970],{},"You want to combine marketing data with ",[160,2968,2969],{},"non-marketing data"," (revenue, product metrics, custom data)",[157,2972,2973,2976],{},[160,2974,2975],{},"Budget matters"," and you want one tool instead of two",[129,2978,483],{"id":482},[134,2980,2981],{},"Supermetrics answers: \"How do I get my data from A to B?\"",[134,2983,2984],{},"TotalKPI answers: \"How do I see what my data means?\"",[134,2986,2987],{},"If you're a startup founder who wants to understand which marketing channels drive revenue, you don't need a data pipeline. You need a tool that shows you the relationship between your ad spend and your revenue on the same chart, with automatic normalization and correlation.",[129,2989,496],{"id":495},[134,2991,2992,2997],{},[160,2993,2994],{},[270,2995,506],{"href":503,"rel":2996},[505]," and connect your marketing data alongside your Stripe revenue. See the correlation between your marketing activity and your actual revenue in minutes, not hours. No credit card required.",[134,2999,510,3000,518],{},[160,3001,3002],{},[270,3003,3005],{"href":515,"rel":3004},[505],"explore the demo",{"title":232,"searchDepth":233,"depth":233,"links":3007},[3008,3009,3010,3015,3016,3017,3018,3019],{"id":2755,"depth":233,"text":2756},{"id":2765,"depth":233,"text":2766},{"id":300,"depth":233,"text":301,"children":3011},[3012,3013,3014],{"id":2797,"depth":526,"text":2798},{"id":2804,"depth":526,"text":2805},{"id":2811,"depth":526,"text":2812},{"id":329,"depth":233,"text":330},{"id":2904,"depth":233,"text":2905},{"id":745,"depth":233,"text":746},{"id":482,"depth":233,"text":483},{"id":495,"depth":233,"text":496},"2026-05-10T00:00:00.000Z","Supermetrics pulls data into spreadsheets. TotalKPI pulls data into interactive charts with automatic correlation. Here's which approach works better for startups.",{"src":3023},"https://images.unsplash.com/photo-1611974789855-9c2a0a7236a3?w=640&h=360&fit=crop",{},"/blog/supermetrics-alternative-for-startups",{"title":2738,"description":3021},"3.blog/19.supermetrics-alternative-for-startups","mc-XCKrHJUxQOM38w6-fTkr-G8xc15CzZ47MYOvnZUM",{"id":3030,"title":3031,"authors":3032,"badge":3037,"body":3038,"date":3186,"description":3187,"extension":242,"image":3188,"meta":3189,"navigation":246,"path":3190,"seo":3191,"stem":3192,"__hash__":3193},"posts/3.blog/2.getting-started-with-csv-imports.md","Getting Started: Import Your First CSV in Under 2 Minutes",[3033],{"name":3034,"to":120,"avatar":3035},"Nicolai Hansen",{"src":3036},"https://valoks.com/assets/images/team/nicolai.webp",{"label":2227},{"type":126,"value":3039,"toc":3179},[3040,3044,3047,3050,3054,3064,3070,3073,3100,3104,3135,3139,3142,3162,3166,3173,3176],[129,3041,3043],{"id":3042},"your-data-visualized-in-minutes","Your Data, Visualized in Minutes",[134,3045,3046],{},"One of the fastest ways to get value from TotalKPI is to import a CSV file. Whether you're exporting data from a spreadsheet, a database query, or another analytics tool, CSV is the universal format that just works.",[134,3048,3049],{},"This guide walks you through importing your first dataset and seeing it on a chart.",[129,3051,3053],{"id":3052},"formatting-your-csv","Formatting Your CSV",[134,3055,3056,3057,3060,3061,3063],{},"TotalKPI expects two columns: a ",[160,3058,3059],{},"date"," and a ",[160,3062,2401],{},". Your CSV should look something like this:",[2307,3065,3068],{"className":3066,"code":3067,"language":2312},[2310],"date,value\n2025-01-01,1200\n2025-01-02,1350\n2025-01-03,1280\n2025-01-04,1420\n",[2314,3069,3067],{"__ignoreMap":232},[134,3071,3072],{},"A few formatting tips:",[154,3074,3075,3085,3091,3097],{},[157,3076,3077,3080,3081,3084],{},[160,3078,3079],{},"Dates"," should be in ",[2314,3082,3083],{},"YYYY-MM-DD"," format for best results",[157,3086,3087,3090],{},[160,3088,3089],{},"Values"," should be numeric (no currency symbols or commas in the numbers)",[157,3092,3093,3096],{},[160,3094,3095],{},"Headers"," are optional but recommended",[157,3098,3099],{},"The file can contain additional columns - TotalKPI will use the first two",[129,3101,3103],{"id":3102},"step-by-step-import","Step-by-Step Import",[771,3105,3106,3111,3117,3123,3129],{},[157,3107,3108,3110],{},[160,3109,1201],{}," - Navigate to your dashboard and create a new project. Think of projects as workspaces for a specific business or product.",[157,3112,3113,3116],{},[160,3114,3115],{},"Add a page"," - Within your project, create a page. Pages help you organize related metrics (e.g., \"Revenue Metrics\" or \"Marketing KPIs\").",[157,3118,3119,3122],{},[160,3120,3121],{},"Add a data source"," - Click \"Add Source\" and select the CSV import option. You can either drag and drop your file or paste date/value pairs directly.",[157,3124,3125,3128],{},[160,3126,3127],{},"Configure display settings"," - Give your source a name, pick a color for the chart line, and choose a unit format (USD, percentage, or custom).",[157,3130,3131,3134],{},[160,3132,3133],{},"View your chart"," - Your data appears immediately as an interactive line chart. Hover over any point to see the exact date and value.",[129,3136,3138],{"id":3137},"tips-for-clean-data","Tips for Clean Data",[134,3140,3141],{},"Getting the most out of your visualizations starts with clean data:",[154,3143,3144,3150,3156],{},[157,3145,3146,3149],{},[160,3147,3148],{},"Remove gaps"," - Missing dates can create misleading gaps in your chart. If you have sparse data, that's fine, but be aware of how it affects the visualization.",[157,3151,3152,3155],{},[160,3153,3154],{},"Consistent intervals"," - Daily data works best for spotting short-term trends. Weekly or monthly aggregations are better for long-term views.",[157,3157,3158,3161],{},[160,3159,3160],{},"Watch for outliers"," - A single data entry error (like typing 50000 instead of 5000) can skew your entire chart. Scan your data before importing.",[129,3163,3165],{"id":3164},"whats-next","What's Next",[134,3167,3168,3169,3172],{},"Once your first data source is in, the real power comes from adding more. Import a second CSV with a different metric, then create a ",[160,3170,3171],{},"Combined View"," to overlay them on the same chart. TotalKPI will normalize both datasets so you can compare trends regardless of scale.",[134,3174,3175],{},"From there, you can start exploring correlations, connecting live API sources, or integrating directly with Stripe and Google Search Console to keep your data flowing in automatically.",[134,3177,3178],{},"Your spreadsheet exports have a new home.",{"title":232,"searchDepth":233,"depth":233,"links":3180},[3181,3182,3183,3184,3185],{"id":3042,"depth":233,"text":3043},{"id":3052,"depth":233,"text":3053},{"id":3102,"depth":233,"text":3103},{"id":3137,"depth":233,"text":3138},{"id":3164,"depth":233,"text":3165},"2026-01-28T00:00:00.000Z","A quick walkthrough on importing CSV data into TotalKPI, formatting your files correctly, and visualizing your first metric.",{"src":537},{},"/blog/getting-started-with-csv-imports",{"title":3031,"description":3187},"3.blog/2.getting-started-with-csv-imports","y87cG4Q7afabMlJKeqP5GkO_OpLo8Wd5dzeWp8kXkNk",{"id":3195,"title":3196,"authors":3197,"badge":3200,"body":3201,"date":3521,"description":3522,"extension":242,"image":3523,"meta":3525,"navigation":246,"path":3526,"seo":3527,"stem":3528,"__hash__":3529},"posts/3.blog/20.how-to-prove-marketing-drives-revenue.md","How to Prove Your Marketing Actually Drives Revenue (With Data)",[3198],{"name":119,"to":120,"avatar":3199},{"src":122},{"label":1059},{"type":126,"value":3202,"toc":3497},[3203,3207,3210,3213,3216,3220,3224,3227,3241,3245,3248,3252,3255,3258,3262,3265,3297,3301,3304,3308,3311,3315,3318,3335,3339,3342,3346,3350,3353,3359,3363,3366,3371,3375,3378,3383,3387,3390,3394,3397,3421,3424,3427,3431,3434,3460,3463,3467,3470,3484,3487,3489],[129,3204,3206],{"id":3205},"the-marketing-proof-problem","The Marketing Proof Problem",[134,3208,3209],{},"Every marketer has heard the question: \"How do we know marketing is actually working?\"",[134,3211,3212],{},"It's a fair question. Marketing budgets are often the first to get cut during downturns because the ROI is genuinely hard to prove. Unlike sales, where the connection between activity and revenue is direct, marketing operates through indirect channels with variable time delays.",[134,3214,3215],{},"Google Analytics shows you traffic. Your ad platform shows you clicks and impressions. Your email tool shows you open rates. But none of them show you the connection to revenue. That connection lives in the gap between your marketing tools and your billing system.",[129,3217,3219],{"id":3218},"why-standard-analytics-falls-short","Why Standard Analytics Falls Short",[306,3221,3223],{"id":3222},"attribution-model-limitations","Attribution Model Limitations",[134,3225,3226],{},"Google Analytics attribution models (first touch, last touch, linear) track individual user journeys. But they miss:",[154,3228,3229,3232,3235,3238],{},[157,3230,3231],{},"Users who block cookies or switch devices",[157,3233,3234],{},"The brand awareness effect (someone sees your content, doesn't click, and searches for you directly a week later)",[157,3236,3237],{},"B2B buying committees where multiple people research before one person signs up",[157,3239,3240],{},"Word-of-mouth referrals triggered by your content",[306,3242,3244],{"id":3243},"the-reporting-silo-problem","The Reporting Silo Problem",[134,3246,3247],{},"Your marketing dashboard shows marketing metrics. Your revenue dashboard shows revenue metrics. To see the connection, you'd need to export both datasets, align them by date in a spreadsheet, and build a chart. Most marketers do this once for a board deck and then never again because it takes hours.",[129,3249,3251],{"id":3250},"the-overlay-method","The Overlay Method",[134,3253,3254],{},"Instead of tracking individual journeys, overlay your marketing metrics with revenue at the aggregate level and look for statistical correlation.",[134,3256,3257],{},"This approach answers: \"When we increase marketing activity, does revenue increase?\" That's the question your CEO is actually asking.",[306,3259,3261],{"id":3260},"step-1-identify-your-marketing-inputs","Step 1: Identify Your Marketing Inputs",[134,3263,3264],{},"List every marketing activity you spend time or money on:",[154,3266,3267,3273,3279,3285,3291],{},[157,3268,3269,3272],{},[160,3270,3271],{},"Organic content:"," Blog posts published, SEO traffic volume",[157,3274,3275,3278],{},[160,3276,3277],{},"Paid advertising:"," Ad spend by platform, click volume",[157,3280,3281,3284],{},[160,3282,3283],{},"Email marketing:"," Emails sent, open rates, click rates",[157,3286,3287,3290],{},[160,3288,3289],{},"Social media:"," Posts published, engagement, follower growth",[157,3292,3293,3296],{},[160,3294,3295],{},"PR/partnerships:"," Mentions, referral traffic",[306,3298,3300],{"id":3299},"step-2-import-each-metric","Step 2: Import Each Metric",[134,3302,3303],{},"In TotalKPI, create a data source for each marketing input. Use CSV exports for historical data and API connections for ongoing tracking.",[306,3305,3307],{"id":3306},"step-3-import-revenue-data","Step 3: Import Revenue Data",[134,3309,3310],{},"Add your Stripe MRR, new customer count, or total revenue as a separate data source. This is your dependent variable.",[306,3312,3314],{"id":3313},"step-4-create-pairwise-overlays","Step 4: Create Pairwise Overlays",[134,3316,3317],{},"For each marketing metric, create a combined view with revenue. One view per pairing. This keeps the analysis clean and the correlations interpretable.",[154,3319,3320,3323,3326,3329,3332],{},[157,3321,3322],{},"Organic traffic vs Revenue",[157,3324,3325],{},"Ad spend vs Revenue",[157,3327,3328],{},"Email sends vs Revenue",[157,3330,3331],{},"Social media engagement vs Revenue",[157,3333,3334],{},"Blog posts published vs Revenue",[306,3336,3338],{"id":3337},"step-5-read-the-correlations","Step 5: Read the Correlations",[134,3340,3341],{},"TotalKPI calculates the Pearson correlation automatically for each combined view. Rank your channels by correlation strength.",[129,3343,3345],{"id":3344},"interpreting-the-results","Interpreting the Results",[306,3347,3349],{"id":3348},"strong-positive-correlation-07","Strong Positive Correlation (0.7+)",[134,3351,3352],{},"This channel strongly correlates with revenue growth. If the timing shows the marketing metric leading revenue by a consistent period, you have strong evidence that this channel drives revenue.",[134,3354,3355,3358],{},[160,3356,3357],{},"Action:"," Increase investment. This is your highest-leverage channel.",[306,3360,3362],{"id":3361},"moderate-correlation-04-07","Moderate Correlation (0.4-0.7)",[134,3364,3365],{},"This channel has some relationship with revenue, but other factors are also at play. The channel contributes but isn't the primary driver.",[134,3367,3368,3370],{},[160,3369,3357],{}," Maintain current investment but don't increase disproportionately.",[306,3372,3374],{"id":3373},"weak-correlation-below-04","Weak Correlation (below 0.4)",[134,3376,3377],{},"This channel doesn't meaningfully correlate with revenue at the aggregate level. It might still be valuable for brand awareness or other goals, but it's not directly driving revenue growth.",[134,3379,3380,3382],{},[160,3381,3357],{}," Question whether the current spend level is justified. Consider reallocating to higher-correlation channels.",[306,3384,3386],{"id":3385},"negative-correlation","Negative Correlation",[134,3388,3389],{},"Rare but possible. If ad spend is negatively correlated with revenue, you might be attracting the wrong audience or cannibalizing organic traffic. Investigate immediately.",[129,3391,3393],{"id":3392},"the-lag-factor","The Lag Factor",[134,3395,3396],{},"Marketing rarely drives same-day revenue. The delay between marketing activity and revenue impact varies by channel:",[154,3398,3399,3405,3410,3415],{},[157,3400,3401,3404],{},[160,3402,3403],{},"Paid ads:"," 0-7 days (fastest feedback loop)",[157,3406,3407,3409],{},[160,3408,3283],{}," 1-7 days",[157,3411,3412,3414],{},[160,3413,3289],{}," 1-2 weeks",[157,3416,3417,3420],{},[160,3418,3419],{},"Content marketing / SEO:"," 2-6 weeks (slowest but often strongest)",[134,3422,3423],{},"When looking at your overlay charts, pay attention to whether the marketing metric's peaks appear before revenue peaks by a consistent interval. This lag is itself a valuable data point for planning.",[134,3425,3426],{},"If you know content takes 3 weeks to impact revenue, you can plan your content calendar 3 weeks ahead of when you need the revenue boost.",[129,3428,3430],{"id":3429},"building-the-case","Building the Case",[134,3432,3433],{},"Once you have correlation data for each channel:",[771,3435,3436,3442,3448,3454],{},[157,3437,3438,3441],{},[160,3439,3440],{},"Create a summary chart"," overlaying your top 2-3 channels with revenue on the same view",[157,3443,3444,3447],{},[160,3445,3446],{},"Export or screenshot"," the chart for your presentation",[157,3449,3450,3453],{},[160,3451,3452],{},"Present the correlation coefficients"," alongside the visual",[157,3455,3456,3459],{},[160,3457,3458],{},"Highlight the lag effect"," to set expectations for future investments",[134,3461,3462],{},"A chart showing organic traffic at 0.82 correlation with revenue on a 2-week lag is more persuasive than any attribution report. It's visual, intuitive, and based on actual aggregate data rather than modeled individual journeys.",[129,3464,3466],{"id":3465},"the-ongoing-dashboard","The Ongoing Dashboard",[134,3468,3469],{},"Don't do this analysis once and forget about it. Set up your combined views as a permanent marketing ROI dashboard:",[154,3471,3472,3475,3478,3481],{},[157,3473,3474],{},"Check weekly for correlation changes",[157,3476,3477],{},"Add annotations when you launch new campaigns or change strategy",[157,3479,3480],{},"Watch for correlations weakening over time (channel saturation)",[157,3482,3483],{},"Watch for new correlations emerging (a channel you weren't tracking becomes important)",[134,3485,3486],{},"Over months, this dashboard becomes your marketing intelligence system. Every strategic decision about budget allocation is backed by data showing which channels actually move revenue.",[129,3488,1629],{"id":1628},[134,3490,3491,3496],{},[160,3492,3493],{},[270,3494,506],{"href":503,"rel":3495},[505]," and overlay your first marketing metric with revenue. The correlation might confirm your strategy or reveal that your biggest investment has the weakest return. Either way, you'll have data instead of gut feeling.",{"title":232,"searchDepth":233,"depth":233,"links":3498},[3499,3500,3504,3511,3517,3518,3519,3520],{"id":3205,"depth":233,"text":3206},{"id":3218,"depth":233,"text":3219,"children":3501},[3502,3503],{"id":3222,"depth":526,"text":3223},{"id":3243,"depth":526,"text":3244},{"id":3250,"depth":233,"text":3251,"children":3505},[3506,3507,3508,3509,3510],{"id":3260,"depth":526,"text":3261},{"id":3299,"depth":526,"text":3300},{"id":3306,"depth":526,"text":3307},{"id":3313,"depth":526,"text":3314},{"id":3337,"depth":526,"text":3338},{"id":3344,"depth":233,"text":3345,"children":3512},[3513,3514,3515,3516],{"id":3348,"depth":526,"text":3349},{"id":3361,"depth":526,"text":3362},{"id":3373,"depth":526,"text":3374},{"id":3385,"depth":526,"text":3386},{"id":3392,"depth":233,"text":3393},{"id":3429,"depth":233,"text":3430},{"id":3465,"depth":233,"text":3466},{"id":1628,"depth":233,"text":1629},"2026-05-15T00:00:00.000Z","Your CEO wants proof that marketing spend translates to revenue. Here's how to overlay your marketing metrics with revenue data and show a clear correlation.",{"src":3524},"https://images.unsplash.com/photo-1533750349088-cd871a92f312?w=640&h=360&fit=crop",{},"/blog/how-to-prove-marketing-drives-revenue",{"title":3196,"description":3522},"3.blog/20.how-to-prove-marketing-drives-revenue","V2Aq63Xxq3l2iTd2egs3liQuv1hRu8Sbgmpt2M4BZyQ",{"id":3531,"title":3532,"authors":3533,"badge":3536,"body":3537,"date":3741,"description":3742,"extension":242,"image":3743,"meta":3745,"navigation":246,"path":3746,"seo":3747,"stem":3748,"__hash__":3749},"posts/3.blog/21.combine-stripe-shopify-data.md","How to Combine Stripe and Shopify Data on One Dashboard",[3534],{"name":119,"to":120,"avatar":3535},{"src":122},{"label":1459},{"type":126,"value":3538,"toc":3720},[3539,3543,3546,3549,3552,3556,3560,3563,3567,3570,3574,3577,3581,3584,3588,3590,3593,3610,3612,3615,3617,3619,3622,3624,3627,3631,3634,3644,3647,3651,3654,3674,3677,3681,3684,3710,3712],[129,3540,3542],{"id":3541},"the-shopify-stripe-split","The Shopify-Stripe Split",[134,3544,3545],{},"If you use Shopify with Stripe as your payment processor, your business data lives in two places. Shopify has your orders, products, inventory, and store traffic. Stripe has your actual payment data: successful charges, refunds, disputes, and net revenue.",[134,3547,3548],{},"Shopify's built-in analytics show you store-level metrics. Stripe's dashboard shows you payment-level metrics. But the relationship between the two - how store activity translates to actual collected revenue - requires switching between tabs and doing mental math.",[134,3550,3551],{},"This matters because Shopify's reported revenue and Stripe's collected revenue are often different. Failed payments, refunds processed at different times, currency conversion fees, and Stripe's processing fees all create a gap between what Shopify says you earned and what actually hit your bank account.",[129,3553,3555],{"id":3554},"what-combining-this-data-reveals","What Combining This Data Reveals",[306,3557,3559],{"id":3558},"order-volume-vs-net-revenue","Order Volume vs Net Revenue",[134,3561,3562],{},"Plot your Shopify daily order count against Stripe's net revenue. In a healthy store, these should correlate strongly. If they start to diverge - more orders but flat or declining net revenue - you have a problem: smaller average order values, more refunds, or more failed payments.",[306,3564,3566],{"id":3565},"traffic-to-payment-conversion","Traffic-to-Payment Conversion",[134,3568,3569],{},"Overlay your Shopify store sessions with Stripe successful charges. This gives you the true conversion rate from visit to completed payment, not just Shopify's cart conversion rate. Failed payments at checkout create a gap between Shopify's \"orders\" and Stripe's \"successful payments\" that many merchants don't track.",[306,3571,3573],{"id":3572},"refund-impact-over-time","Refund Impact Over Time",[134,3575,3576],{},"Track Stripe refund volume alongside Shopify order volume. A rising refund-to-order ratio might indicate product quality issues, misleading product descriptions, or shipping problems. Catching this trend early prevents it from eroding your margins.",[306,3578,3580],{"id":3579},"average-order-value-trends","Average Order Value Trends",[134,3582,3583],{},"Compare Shopify's average order value with Stripe's average charge amount over time. Divergence might indicate discount abuse, coupon overuse, or pricing strategy issues.",[129,3585,3587],{"id":3586},"setting-up-the-shopify-connection","Setting Up the Shopify Connection",[306,3589,1510],{"id":1509},[134,3591,3592],{},"Shopify's Admin API provides access to orders, products, and analytics. In TotalKPI:",[771,3594,3595,3598,3601,3604,3607],{},[157,3596,3597],{},"Create an API data source",[157,3599,3600],{},"Set the endpoint to your Shopify store's API (e.g., order count or sales data)",[157,3602,3603],{},"Add your Shopify API access token in the headers",[157,3605,3606],{},"Configure a JSONPath expression to extract the metric you want",[157,3608,3609],{},"Set polling to daily or hourly depending on your store volume",[306,3611,1531],{"id":1530},[134,3613,3614],{},"Export your Shopify analytics reports as CSV files. Shopify's Reports section lets you export sales by day, orders by day, and traffic data. Import these into TotalKPI as separate data sources.",[129,3616,1538],{"id":1537},[306,3618,1510],{"id":1541},[134,3620,3621],{},"Connect to Stripe's API for live revenue data. Create an API data source with your Stripe endpoint, API key in headers, and a JSONPath expression for net revenue, charge count, or refund volume.",[306,3623,1531],{"id":1547},[134,3625,3626],{},"Export Stripe's balance transactions or payment data as a CSV. This gives you historical data for the initial overlay.",[129,3628,3630],{"id":3629},"creating-the-combined-view","Creating the Combined View",[134,3632,3633],{},"With both sources configured:",[771,3635,3636,3638,3641],{},[157,3637,1562],{},[157,3639,3640],{},"Select your Shopify metric (e.g., daily orders) and Stripe metric (e.g., daily net revenue)",[157,3642,3643],{},"The overlay renders with automatic normalization",[134,3645,3646],{},"The correlation coefficient tells you how tightly your store activity tracks with actual revenue. For a healthy e-commerce business, this should be above 0.7. Lower values suggest leakage in your payment pipeline.",[129,3648,3650],{"id":3649},"seasonal-planning-with-overlays","Seasonal Planning With Overlays",[134,3652,3653],{},"E-commerce is seasonal. By overlaying Shopify traffic with Stripe revenue across months, you can see:",[154,3655,3656,3662,3668],{},[157,3657,3658,3661],{},[160,3659,3660],{},"Pre-purchase browsing patterns:"," Traffic spikes before revenue spikes (holiday window shopping)",[157,3663,3664,3667],{},[160,3665,3666],{},"Promotion effectiveness:"," Do sale events increase revenue proportionally to the traffic spike, or do they just attract bargain hunters who browse and leave?",[157,3669,3670,3673],{},[160,3671,3672],{},"Post-holiday dips:"," How long does the revenue dip last after peak season, and does traffic recover faster than revenue?",[134,3675,3676],{},"Add date annotations for sales events, product launches, and marketing campaigns. Over a few seasons, you'll build a visual playbook for when and how to invest in growth.",[129,3678,3680],{"id":3679},"practical-actions","Practical Actions",[134,3682,3683],{},"Once you've overlaid your Shopify and Stripe data:",[154,3685,3686,3692,3698,3704],{},[157,3687,3688,3691],{},[160,3689,3690],{},"If correlation is strong (>0.7):"," Your store is converting efficiently. Focus on driving more traffic.",[157,3693,3694,3697],{},[160,3695,3696],{},"If correlation is weakening:"," Investigate failed payments, rising refunds, or declining average order values.",[157,3699,3700,3703],{},[160,3701,3702],{},"If there's a consistent lag:"," Understand your pre-purchase browsing window and time promotions accordingly.",[157,3705,3706,3709],{},[160,3707,3708],{},"If refunds are rising:"," Cross-reference with specific products to identify quality or description issues.",[129,3711,1629],{"id":1628},[134,3713,3714,3719],{},[160,3715,3716],{},[270,3717,506],{"href":503,"rel":3718},[505]," and connect your Shopify and Stripe data. See the real relationship between your store activity and collected revenue in minutes.",{"title":232,"searchDepth":233,"depth":233,"links":3721},[3722,3723,3729,3733,3737,3738,3739,3740],{"id":3541,"depth":233,"text":3542},{"id":3554,"depth":233,"text":3555,"children":3724},[3725,3726,3727,3728],{"id":3558,"depth":526,"text":3559},{"id":3565,"depth":526,"text":3566},{"id":3572,"depth":526,"text":3573},{"id":3579,"depth":526,"text":3580},{"id":3586,"depth":233,"text":3587,"children":3730},[3731,3732],{"id":1509,"depth":526,"text":1510},{"id":1530,"depth":526,"text":1531},{"id":1537,"depth":233,"text":1538,"children":3734},[3735,3736],{"id":1541,"depth":526,"text":1510},{"id":1547,"depth":526,"text":1531},{"id":3629,"depth":233,"text":3630},{"id":3649,"depth":233,"text":3650},{"id":3679,"depth":233,"text":3680},{"id":1628,"depth":233,"text":1629},"2026-05-20T00:00:00.000Z","See the full picture of your e-commerce business by overlaying Shopify store metrics with Stripe payment data on a single chart. Spot trends between traffic, orders, and revenue.",{"src":3744},"https://images.unsplash.com/photo-1556742393-d75f468bfcb0?w=640&h=360&fit=crop",{},"/blog/combine-stripe-shopify-data",{"title":3532,"description":3742},"3.blog/21.combine-stripe-shopify-data","AFX2J7EbV-j4fj3kPLRpq5J_FTQ4Z8cM8RQgRIkRQsk",{"id":3751,"title":3752,"authors":3753,"badge":3756,"body":3757,"date":4004,"description":4005,"extension":242,"image":4006,"meta":4007,"navigation":246,"path":4008,"seo":4009,"stem":4010,"__hash__":4011},"posts/3.blog/22.posthog-stripe-product-usage-drives-revenue.md","PostHog + Stripe: See How Product Usage Drives Revenue",[3754],{"name":256,"to":120,"avatar":3755},{"src":258},{"label":1459},{"type":126,"value":3758,"toc":3980},[3759,3763,3766,3769,3772,3776,3780,3783,3787,3790,3794,3797,3801,3804,3808,3810,3813,3829,3831,3834,3838,3841,3845,3848,3850,3853,3863,3866,3870,3873,3877,3887,3890,3894,3902,3905,3909,3917,3920,3924,3932,3935,3939,3942,3962,3964,3972],[129,3760,3762],{"id":3761},"product-led-growth-needs-product-led-data","Product-Led Growth Needs Product-Led Data",[134,3764,3765],{},"If you're running a product-led growth (PLG) strategy, your product is your sales team. Users sign up, try the product, and upgrade when they find enough value. The question every PLG founder asks is: which product behavior predicts revenue?",[134,3767,3768],{},"PostHog tracks what users do inside your product: feature usage, session frequency, funnel completion, retention curves. Stripe tracks what they pay: subscription starts, upgrades, downgrades, churn. But PostHog doesn't know about revenue, and Stripe doesn't know about product behavior.",[134,3770,3771],{},"The connection between the two is where PLG strategy lives.",[129,3773,3775],{"id":3774},"what-youll-learn-from-this-overlay","What You'll Learn From This Overlay",[306,3777,3779],{"id":3778},"feature-usage-vs-upgrade-rate","Feature Usage vs Upgrade Rate",[134,3781,3782],{},"Track weekly active users of a specific feature in PostHog and overlay it with Stripe's weekly new subscription count. If a feature's usage strongly correlates with upgrades, you've found your activation trigger. That feature should be front and center in your onboarding flow.",[306,3784,3786],{"id":3785},"engagement-frequency-vs-revenue","Engagement Frequency vs Revenue",[134,3788,3789],{},"Plot PostHog's daily active users (DAU) or session count against Stripe MRR over time. A strong positive correlation confirms that engagement drives revenue. A weak correlation might mean you have a pricing problem - users love the product but aren't willing to pay for it.",[306,3791,3793],{"id":3792},"usage-drops-predict-churn","Usage Drops Predict Churn",[134,3795,3796],{},"Overlay PostHog's weekly active user count with Stripe's churn rate (or cancellation count). If usage drops consistently precede cancellations by 2-3 weeks, you've found your churn early warning system. You can intervene with re-engagement campaigns before users cancel.",[306,3798,3800],{"id":3799},"power-user-behavior-and-expansion-revenue","Power User Behavior and Expansion Revenue",[134,3802,3803],{},"Track PostHog events for advanced features or high-volume usage alongside Stripe upgrade events. This reveals which behaviors drive expansion revenue. If users who hit a specific usage threshold tend to upgrade, you can use that threshold to trigger upgrade prompts.",[129,3805,3807],{"id":3806},"setting-up-posthog","Setting Up PostHog",[306,3809,1510],{"id":1509},[134,3811,3812],{},"PostHog's API provides access to insights, trends, and event data. In TotalKPI:",[771,3814,3815,3817,3820,3823,3826],{},[157,3816,3597],{},[157,3818,3819],{},"Set the endpoint to your PostHog instance's API (e.g., trends or insights endpoint)",[157,3821,3822],{},"Add your PostHog personal API key in the headers",[157,3824,3825],{},"Configure a JSONPath expression to extract the metric (DAU, feature usage count, etc.)",[157,3827,3828],{},"Set polling to daily",[306,3830,1531],{"id":1530},[134,3832,3833],{},"Export PostHog insight data as CSV. Most PostHog insights have an export option. Download the trend data you want to track and import it into TotalKPI.",[306,3835,3837],{"id":3836},"via-webhook-n8n-or-zapier","Via Webhook (n8n or Zapier)",[134,3839,3840],{},"If you use PostHog's webhook destinations or pipe PostHog data through n8n/Zapier, you can push metrics directly to TotalKPI's inbound webhook endpoint. This gives you real-time data without polling.",[129,3842,3844],{"id":3843},"setting-up-stripe","Setting Up Stripe",[134,3846,3847],{},"Connect Stripe via API for live MRR, new subscription, or churn data. Or export historical data as CSV for the initial overlay.",[129,3849,3630],{"id":3629},[134,3851,3852],{},"With both sources ready:",[771,3854,3855,3857,3860],{},[157,3856,1562],{},[157,3858,3859],{},"Select your PostHog usage metric and your Stripe revenue metric",[157,3861,3862],{},"The overlay normalizes both to 0-100% scale automatically",[134,3864,3865],{},"The Pearson correlation coefficient appears immediately. A correlation above 0.5 between a product metric and revenue is strong signal. Below 0.3, the product behavior you're tracking probably doesn't drive revenue directly.",[129,3867,3869],{"id":3868},"the-plg-diagnostic-framework","The PLG Diagnostic Framework",[134,3871,3872],{},"Run these four overlays to diagnose your PLG engine:",[306,3874,3876],{"id":3875},"_1-activation-check","1. Activation Check",[134,3878,3879,3882,3883,3886],{},[160,3880,3881],{},"PostHog:"," New users who complete key action (first week) vs ",[160,3884,3885],{},"Stripe:"," New paying customers",[134,3888,3889],{},"Strong correlation = your activation flow works. Weak = users aren't finding value fast enough.",[306,3891,3893],{"id":3892},"_2-engagement-check","2. Engagement Check",[134,3895,3896,3898,3899,3901],{},[160,3897,3881],{}," Weekly active users vs ",[160,3900,3885],{}," MRR",[134,3903,3904],{},"Strong correlation = engagement drives revenue. Weak = pricing or monetization problem.",[306,3906,3908],{"id":3907},"_3-retention-check","3. Retention Check",[134,3910,3911,3913,3914,3916],{},[160,3912,3881],{}," Returning users (week over week) vs ",[160,3915,3885],{}," Churn rate (inverted)",[134,3918,3919],{},"Strong correlation = retained users stay paying. Weak = payment and usage are disconnected.",[306,3921,3923],{"id":3922},"_4-expansion-check","4. Expansion Check",[134,3925,3926,3928,3929,3931],{},[160,3927,3881],{}," Power user actions (advanced features, high volume) vs ",[160,3930,3885],{}," Upgrade events",[134,3933,3934],{},"Strong correlation = clear expansion triggers exist. Weak = no natural upgrade path.",[129,3936,3938],{"id":3937},"timing-matters","Timing Matters",[134,3940,3941],{},"Product usage metrics typically lead revenue metrics by 1-4 weeks in PLG businesses. When looking at the overlay, pay attention to:",[154,3943,3944,3950,3956],{},[157,3945,3946,3949],{},[160,3947,3948],{},"How long after a usage spike does revenue increase?"," This is your conversion cycle.",[157,3951,3952,3955],{},[160,3953,3954],{},"How long before a churn event does usage decline?"," This is your intervention window.",[157,3957,3958,3961],{},[160,3959,3960],{},"Do usage spikes from new features correlate with revenue spikes?"," This validates feature investment.",[129,3963,1629],{"id":1628},[134,3965,3966,3971],{},[160,3967,3968],{},[270,3969,506],{"href":503,"rel":3970},[505]," and overlay your PostHog product data with Stripe revenue. See which product behaviors actually drive your business in minutes, not months of data analysis.",[134,3973,510,3974,3979],{},[160,3975,3976],{},[270,3977,3005],{"href":515,"rel":3978},[505]," to see combined charts in action.",{"title":232,"searchDepth":233,"depth":233,"links":3981},[3982,3983,3989,3994,3995,3996,4002,4003],{"id":3761,"depth":233,"text":3762},{"id":3774,"depth":233,"text":3775,"children":3984},[3985,3986,3987,3988],{"id":3778,"depth":526,"text":3779},{"id":3785,"depth":526,"text":3786},{"id":3792,"depth":526,"text":3793},{"id":3799,"depth":526,"text":3800},{"id":3806,"depth":233,"text":3807,"children":3990},[3991,3992,3993],{"id":1509,"depth":526,"text":1510},{"id":1530,"depth":526,"text":1531},{"id":3836,"depth":526,"text":3837},{"id":3843,"depth":233,"text":3844},{"id":3629,"depth":233,"text":3630},{"id":3868,"depth":233,"text":3869,"children":3997},[3998,3999,4000,4001],{"id":3875,"depth":526,"text":3876},{"id":3892,"depth":526,"text":3893},{"id":3907,"depth":526,"text":3908},{"id":3922,"depth":526,"text":3923},{"id":3937,"depth":233,"text":3938},{"id":1628,"depth":233,"text":1629},"2026-05-25T00:00:00.000Z","Overlay PostHog product analytics with Stripe revenue data to see which features drive upgrades, which usage patterns predict churn, and where your product-led growth engine is working.",{"src":244},{},"/blog/posthog-stripe-product-usage-drives-revenue",{"title":3752,"description":4005},"3.blog/22.posthog-stripe-product-usage-drives-revenue","uYmUYncD8KHrRYFAhsxDjXcTZ0RzurinVjhzmcnuvLU",{"id":4013,"title":4014,"authors":4015,"badge":4018,"body":4019,"date":4278,"description":4279,"extension":242,"image":4280,"meta":4281,"navigation":246,"path":4282,"seo":4283,"stem":4284,"__hash__":4285},"posts/3.blog/23.plausible-analytics-with-revenue-data.md","Plausible Analytics + Revenue: See Which Traffic Actually Converts",[4016],{"name":119,"to":120,"avatar":4017},{"src":122},{"label":1459},{"type":126,"value":4020,"toc":4259},[4021,4025,4028,4031,4034,4038,4042,4045,4049,4052,4056,4059,4063,4066,4070,4072,4075,4096,4098,4101,4105,4108,4122,4125,4127,4130,4141,4145,4148,4194,4197,4201,4204,4215,4218,4220,4223,4249,4251],[129,4022,4024],{"id":4023},"privacy-first-analytics-meets-revenue","Privacy-First Analytics Meets Revenue",[134,4026,4027],{},"You chose Plausible over Google Analytics for a reason: lightweight, privacy-friendly, no cookies, no complex consent banners. It gives you clean traffic data without the ethical baggage.",[134,4029,4030],{},"But Plausible intentionally doesn't track individual user journeys. It shows you aggregate traffic patterns - pageviews, sources, countries, devices - without connecting them to specific users. This is great for privacy, but it means you can't do traditional attribution modeling to figure out which traffic drives revenue.",[134,4032,4033],{},"There's a better approach: overlay Plausible's aggregate traffic data with your revenue data and look for correlation at the macro level. When organic traffic goes up, does revenue follow? When referral traffic spikes, do you see more payments? This aggregate correlation approach respects user privacy while still answering the fundamental business question.",[129,4035,4037],{"id":4036},"what-this-overlay-reveals","What This Overlay Reveals",[306,4039,4041],{"id":4040},"traffic-source-effectiveness","Traffic Source Effectiveness",[134,4043,4044],{},"Plausible tracks traffic by source: organic search, direct, referral, social. Export or pull each source's data separately and overlay each with Stripe revenue. The source with the highest correlation coefficient is your most effective revenue driver - no individual tracking required.",[306,4046,4048],{"id":4047},"content-performance","Content Performance",[134,4050,4051],{},"Plausible shows you which pages get the most traffic. Track traffic to your key conversion pages (pricing, signup, landing pages) and overlay with revenue. This tells you whether your high-traffic content is actually driving business results or just accumulating vanity pageviews.",[306,4053,4055],{"id":4054},"geographic-revenue-patterns","Geographic Revenue Patterns",[134,4057,4058],{},"Plausible shows traffic by country. If you overlay traffic from specific countries with revenue, you might discover that traffic from certain regions converts at dramatically different rates. This can inform localization decisions, pricing tiers, and marketing targeting.",[306,4060,4062],{"id":4061},"campaign-impact-without-utm-complexity","Campaign Impact Without UTM Complexity",[134,4064,4065],{},"Plausible supports UTM parameters for campaign tracking. When you run a campaign, track the resulting traffic spike in Plausible and overlay it with Stripe revenue over the following weeks. The visual correlation tells you whether the campaign drove actual revenue, not just clicks.",[129,4067,4069],{"id":4068},"setting-up-plausible","Setting Up Plausible",[306,4071,1510],{"id":1509},[134,4073,4074],{},"Plausible has a straightforward stats API. In TotalKPI:",[771,4076,4077,4079,4085,4088,4091,4094],{},[157,4078,3597],{},[157,4080,4081,4082,2405],{},"Set the endpoint to Plausible's stats API (e.g., ",[2314,4083,4084],{},"https://plausible.io/api/v1/stats/timeseries",[157,4086,4087],{},"Add your Plausible API key in the headers",[157,4089,4090],{},"Set query parameters for the metric you want (visitors, pageviews, bounce rate) and date range",[157,4092,4093],{},"Configure JSONPath to extract the values",[157,4095,3828],{},[306,4097,1531],{"id":1530},[134,4099,4100],{},"Plausible lets you export dashboard data as CSV. Export your traffic data for the period you want to analyze and import it into TotalKPI.",[306,4102,4104],{"id":4103},"per-source-tracking","Per-Source Tracking",[134,4106,4107],{},"For deeper analysis, create separate data sources for each traffic source:",[154,4109,4110,4113,4116,4119],{},[157,4111,4112],{},"Organic search traffic",[157,4114,4115],{},"Direct traffic",[157,4117,4118],{},"Referral traffic (or specific referrers)",[157,4120,4121],{},"Social traffic",[134,4123,4124],{},"Then create separate combined views overlaying each with revenue. This gives you per-channel correlation data.",[129,4126,3844],{"id":3843},[134,4128,4129],{},"Connect Stripe via API for live data or CSV for historical analysis. The key metrics to track alongside Plausible:",[154,4131,4132,4135,4138],{},[157,4133,4134],{},"Daily/weekly new customer count",[157,4136,4137],{},"Daily/weekly revenue",[157,4139,4140],{},"MRR (for SaaS)",[129,4142,4144],{"id":4143},"the-privacy-respecting-attribution-model","The Privacy-Respecting Attribution Model",[134,4146,4147],{},"Traditional attribution requires tracking individual users across sessions and devices. Plausible doesn't do this by design. But aggregate correlation gives you the same strategic insight:",[332,4149,4150,4160],{},[335,4151,4152],{},[338,4153,4154,4157],{},[341,4155,4156],{"align":343},"Traditional Attribution",[341,4158,4159],{"align":343},"Aggregate Correlation",[352,4161,4162,4170,4178,4186],{},[338,4163,4164,4167],{},[357,4165,4166],{"align":343},"\"User X came from organic search and paid $99\"",[357,4168,4169],{"align":343},"\"Organic traffic correlates 0.78 with revenue on a 2-week lag\"",[338,4171,4172,4175],{},[357,4173,4174],{"align":343},"Requires cookies and consent",[357,4176,4177],{"align":343},"No cookies needed",[338,4179,4180,4183],{},[357,4181,4182],{"align":343},"Breaks with ad blockers",[357,4184,4185],{"align":343},"Works regardless of client-side blocking",[338,4187,4188,4191],{},[357,4189,4190],{"align":343},"Individual journey accuracy",[357,4192,4193],{"align":343},"Population-level accuracy",[134,4195,4196],{},"For strategic decisions like \"should we invest more in SEO or paid ads?\", both approaches give you the same answer. The aggregate approach is actually more robust because it's not affected by cookie consent rates, ad blockers, or cross-device attribution gaps.",[129,4198,4200],{"id":4199},"running-plausible-and-ga4-together","Running Plausible and GA4 Together?",[134,4202,4203],{},"Some teams run both Plausible (for clean, privacy-friendly daily metrics) and GA4 (for deeper attribution when users consent). If that's you, you can import both into TotalKPI:",[154,4205,4206,4209,4212],{},[157,4207,4208],{},"Overlay Plausible traffic with revenue for the big-picture correlation",[157,4210,4211],{},"Overlay GA4 data with revenue for more granular (but consent-dependent) analysis",[157,4213,4214],{},"Compare the two to see how much insight you lose from users who block GA4",[134,4216,4217],{},"This comparison itself is valuable. If Plausible and GA4 show similar traffic patterns, you might not need GA4 at all.",[129,4219,3680],{"id":3679},[134,4221,4222],{},"After running the overlay for a few weeks:",[154,4224,4225,4231,4237,4243],{},[157,4226,4227,4230],{},[160,4228,4229],{},"Highest-correlation source:"," Increase investment. This channel reliably drives revenue.",[157,4232,4233,4236],{},[160,4234,4235],{},"High traffic, low correlation:"," Investigate why visitors from this source don't convert. Possible issues: wrong audience, misleading content, or poor landing page experience.",[157,4238,4239,4242],{},[160,4240,4241],{},"Low traffic, high correlation:"," Hidden gem. Even small traffic increases from this source could meaningfully impact revenue.",[157,4244,4245,4248],{},[160,4246,4247],{},"Consistent lag time:"," Use the lag to plan campaigns. If organic traffic takes 2 weeks to convert, plan your content 2 weeks before you need the revenue boost.",[129,4250,1629],{"id":1628},[134,4252,4253,4258],{},[160,4254,4255],{},[270,4256,506],{"href":503,"rel":4257},[505]," and connect your Plausible analytics alongside your Stripe revenue. See which traffic actually drives your business - with full respect for user privacy.",{"title":232,"searchDepth":233,"depth":233,"links":4260},[4261,4262,4268,4273,4274,4275,4276,4277],{"id":4023,"depth":233,"text":4024},{"id":4036,"depth":233,"text":4037,"children":4263},[4264,4265,4266,4267],{"id":4040,"depth":526,"text":4041},{"id":4047,"depth":526,"text":4048},{"id":4054,"depth":526,"text":4055},{"id":4061,"depth":526,"text":4062},{"id":4068,"depth":233,"text":4069,"children":4269},[4270,4271,4272],{"id":1509,"depth":526,"text":1510},{"id":1530,"depth":526,"text":1531},{"id":4103,"depth":526,"text":4104},{"id":3843,"depth":233,"text":3844},{"id":4143,"depth":233,"text":4144},{"id":4199,"depth":233,"text":4200},{"id":3679,"depth":233,"text":3680},{"id":1628,"depth":233,"text":1629},"2026-05-30T00:00:00.000Z","You chose Plausible for privacy-friendly analytics. Now overlay your traffic data with Stripe revenue to see which sources drive paying customers - without sacrificing privacy.",{"src":537},{},"/blog/plausible-analytics-with-revenue-data",{"title":4014,"description":4279},"3.blog/23.plausible-analytics-with-revenue-data","q4wOHYqVg-0y5r12krPRDo05kPAJsqP2cOmxJVagYMc",{"id":4287,"title":4288,"authors":4289,"badge":4292,"body":4293,"date":4711,"description":4712,"extension":242,"image":4713,"meta":4714,"navigation":246,"path":4715,"seo":4716,"stem":4717,"__hash__":4718},"posts/3.blog/24.connect-n8n-zapier-to-metrics-dashboard.md","How to Connect n8n or Zapier Workflows to Your Metrics Dashboard",[4290],{"name":256,"to":120,"avatar":4291},{"src":258},{"label":1459},{"type":126,"value":4294,"toc":4689},[4295,4299,4302,4305,4309,4312,4329,4332,4336,4340,4343,4349,4353,4356,4376,4379,4451,4455,4464,4468,4471,4474,4478,4498,4502,4505,4509,4513,4516,4546,4550,4553,4557,4560,4571,4574,4578,4581,4608,4611,4615,4673,4676,4678,4686],[129,4296,4298],{"id":4297},"when-your-tool-doesnt-have-an-api-or-you-dont-want-to-write-code","When Your Tool Doesn't Have an API (or You Don't Want to Write Code)",[134,4300,4301],{},"TotalKPI connects directly to any JSON API. But sometimes the data you want to track lives in a tool that doesn't expose a clean API, or you want to combine data from multiple sources into a single metric before charting it, or you just don't want to deal with API authentication.",[134,4303,4304],{},"That's where n8n and Zapier come in. Both tools can pull data from hundreds of sources and push it to TotalKPI's inbound webhook endpoint. No code required.",[129,4306,4308],{"id":4307},"how-inbound-webhooks-work","How Inbound Webhooks Work",[134,4310,4311],{},"TotalKPI provides a webhook URL for your account. Any HTTP POST to that URL with a JSON body gets received, parsed, and mapped to your data sources. The flow:",[771,4313,4314,4317,4320,4323,4326],{},[157,4315,4316],{},"n8n/Zapier triggers on a schedule or event",[157,4318,4319],{},"It pulls data from your source (CRM, email tool, ad platform, database, etc.)",[157,4321,4322],{},"It sends a POST request to your TotalKPI webhook URL",[157,4324,4325],{},"TotalKPI matches the payload structure to your configured template",[157,4327,4328],{},"The value is extracted and appended as a new data point",[134,4330,4331],{},"This means any tool that n8n or Zapier can connect to becomes a TotalKPI data source.",[129,4333,4335],{"id":4334},"setting-up-with-n8n","Setting Up With n8n",[306,4337,4339],{"id":4338},"step-1-create-an-inbound-api-key","Step 1: Create an Inbound API Key",[134,4341,4342],{},"In TotalKPI's settings, create a new inbound API key. This gives you a webhook URL like:",[2307,4344,4347],{"className":4345,"code":4346,"language":2312},[2310],"https://totalkpi.com/api/inbound/your-api-key\n",[2314,4348,4346],{"__ignoreMap":232},[306,4350,4352],{"id":4351},"step-2-build-your-n8n-workflow","Step 2: Build Your n8n Workflow",[134,4354,4355],{},"Create a new n8n workflow with:",[771,4357,4358,4364,4370],{},[157,4359,4360,4363],{},[160,4361,4362],{},"Schedule Trigger"," - Set to run daily, hourly, or whatever interval makes sense",[157,4365,4366,4369],{},[160,4367,4368],{},"Data Source Node"," - Connect to whatever tool has your data (e.g., Mailchimp, HubSpot, a database, a Google Sheet)",[157,4371,4372,4375],{},[160,4373,4374],{},"HTTP Request Node"," - POST to your TotalKPI webhook URL with the data as JSON",[134,4377,4378],{},"Example payload:",[2307,4380,4384],{"className":4381,"code":4382,"language":4383,"meta":232,"style":232},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"metric\": \"email_subscribers\",\n  \"value\": 1523,\n  \"date\": \"2026-06-01\"\n}\n","json",[2314,4385,4386,4391,4413,4429,4446],{"__ignoreMap":232},[2331,4387,4388],{"class":2333,"line":2334},[2331,4389,4390],{"class":2360},"{\n",[2331,4392,4393,4396,4399,4401,4403,4405,4408,4410],{"class":2333,"line":233},[2331,4394,4395],{"class":2360},"  \"",[2331,4397,2617],{"class":4398},"spNyl",[2331,4400,2367],{"class":2360},[2331,4402,2450],{"class":2360},[2331,4404,2361],{"class":2360},[2331,4406,4407],{"class":2341},"email_subscribers",[2331,4409,2367],{"class":2360},[2331,4411,4412],{"class":2360},",\n",[2331,4414,4415,4417,4419,4421,4423,4427],{"class":2333,"line":526},[2331,4416,4395],{"class":2360},[2331,4418,2401],{"class":4398},[2331,4420,2367],{"class":2360},[2331,4422,2450],{"class":2360},[2331,4424,4426],{"class":4425},"sbssI"," 1523",[2331,4428,4412],{"class":2360},[2331,4430,4431,4433,4435,4437,4439,4441,4444],{"class":2333,"line":2472},[2331,4432,4395],{"class":2360},[2331,4434,3059],{"class":4398},[2331,4436,2367],{"class":2360},[2331,4438,2450],{"class":2360},[2331,4440,2361],{"class":2360},[2331,4442,4443],{"class":2341},"2026-06-01",[2331,4445,2649],{"class":2360},[2331,4447,4448],{"class":2333,"line":2478},[2331,4449,4450],{"class":2360},"}\n",[306,4452,4454],{"id":4453},"step-3-map-the-payload-in-totalkpi","Step 3: Map the Payload in TotalKPI",[134,4456,4457,4458,4460,4461,4463],{},"When the first payload arrives, TotalKPI shows it as an unmapped payload. Open the settings UI, create a JSON template that maps the ",[2314,4459,2401],{}," and ",[2314,4462,3059],{}," fields to a data source. All future payloads with the same structure are automatically processed.",[129,4465,4467],{"id":4466},"setting-up-with-zapier","Setting Up With Zapier",[306,4469,4339],{"id":4470},"step-1-create-an-inbound-api-key-1",[134,4472,4473],{},"Same as above - create the key in TotalKPI settings.",[306,4475,4477],{"id":4476},"step-2-build-your-zap","Step 2: Build Your Zap",[771,4479,4480,4486,4492],{},[157,4481,4482,4485],{},[160,4483,4484],{},"Trigger"," - Choose your data source app and trigger event (e.g., \"New row in Google Sheets\", \"New subscriber in Mailchimp\", scheduled trigger)",[157,4487,4488,4491],{},[160,4489,4490],{},"Action"," - Choose \"Webhooks by Zapier\" → \"POST\"",[157,4493,4494,4497],{},[160,4495,4496],{},"Configure"," - Set the URL to your TotalKPI webhook, content type to JSON, and map the data fields",[306,4499,4501],{"id":4500},"step-3-map-the-payload","Step 3: Map the Payload",[134,4503,4504],{},"Same as n8n - map the incoming payload structure to your data source in TotalKPI.",[129,4506,4508],{"id":4507},"what-this-unlocks","What This Unlocks",[306,4510,4512],{"id":4511},"track-metrics-from-any-tool","Track Metrics From Any Tool",[134,4514,4515],{},"n8n has 400+ integrations. Zapier has 6,000+. Any metric from any of these tools can flow into TotalKPI:",[154,4517,4518,4523,4528,4534,4540],{},[157,4519,4520,4522],{},[160,4521,3283],{}," Subscriber count from Mailchimp, ConvertKit, or Buttondown",[157,4524,4525,4527],{},[160,4526,3289],{}," Follower count, engagement rate from Twitter/X, LinkedIn, Instagram",[157,4529,4530,4533],{},[160,4531,4532],{},"Support:"," Ticket volume from Zendesk, Intercom, or Freshdesk",[157,4535,4536,4539],{},[160,4537,4538],{},"Advertising:"," Daily ad spend or conversion count from Google Ads, Meta Ads",[157,4541,4542,4545],{},[160,4543,4544],{},"Custom databases:"," Any metric from your PostgreSQL, MySQL, or Airtable",[306,4547,4549],{"id":4548},"combine-multiple-sources-into-one-metric","Combine Multiple Sources Into One Metric",[134,4551,4552],{},"Sometimes the metric you want doesn't exist in a single tool. For example, \"total community size\" might be Twitter followers + Discord members + newsletter subscribers. Build an n8n workflow that pulls all three, sums them, and pushes the total to TotalKPI as a single data point.",[306,4554,4556],{"id":4555},"event-driven-data-points","Event-Driven Data Points",[134,4558,4559],{},"Instead of polling on a schedule, trigger on events:",[154,4561,4562,4565,4568],{},[157,4563,4564],{},"New customer signs up → push customer count to TotalKPI",[157,4566,4567],{},"Support ticket closed → push resolution count",[157,4569,4570],{},"Deploy completed → push deployment frequency",[134,4572,4573],{},"This gives you real-time data points without waiting for the next polling interval.",[129,4575,4577],{"id":4576},"example-email-subscriber-count-vs-revenue","Example: Email Subscriber Count vs Revenue",[134,4579,4580],{},"A common use case for indie hackers and SaaS founders:",[771,4582,4583,4589,4595,4605],{},[157,4584,4585,4588],{},[160,4586,4587],{},"n8n schedule trigger"," runs daily",[157,4590,4591,4594],{},[160,4592,4593],{},"Mailchimp node"," fetches total subscriber count",[157,4596,4597,4600,4601,4604],{},[160,4598,4599],{},"HTTP request node"," pushes ",[2314,4602,4603],{},"{ \"metric\": \"subscribers\", \"value\": 4521, \"date\": \"2026-06-01\" }"," to TotalKPI",[157,4606,4607],{},"In TotalKPI, overlay subscriber count with Stripe MRR",[134,4609,4610],{},"The correlation tells you whether your email list growth actually drives revenue. If the correlation is strong with a 2-week lag, you know that growing your email list today means more revenue in two weeks.",[129,4612,4614],{"id":4613},"n8n-vs-zapier-which-to-use","n8n vs Zapier: Which to Use?",[332,4616,4617,4629],{},[335,4618,4619],{},[338,4620,4621,4623,4626],{},[341,4622],{"align":343},[341,4624,4625],{"align":343},"n8n",[341,4627,4628],{"align":343},"Zapier",[352,4630,4631,4642,4653,4662],{},[338,4632,4633,4636,4639],{},[357,4634,4635],{"align":343},"Pricing",[357,4637,4638],{"align":343},"Free (self-hosted) or from $20/mo",[357,4640,4641],{"align":343},"Free tier, then from $20/mo",[338,4643,4644,4647,4650],{},[357,4645,4646],{"align":343},"Complexity",[357,4648,4649],{"align":343},"More flexible, steeper learning curve",[357,4651,4652],{"align":343},"Simpler, less flexible",[338,4654,4655,4658,4660],{},[357,4656,4657],{"align":343},"Self-hosting",[357,4659,683],{"align":343},[357,4661,384],{"align":343},[338,4663,4664,4667,4670],{},[357,4665,4666],{"align":343},"Best for",[357,4668,4669],{"align":343},"Technical users, complex workflows",[357,4671,4672],{"align":343},"Non-technical users, simple automations",[134,4674,4675],{},"Both work equally well with TotalKPI's webhook endpoint. Choose whichever you already use or prefer.",[129,4677,1629],{"id":1628},[134,4679,4680,4685],{},[160,4681,4682],{},[270,4683,506],{"href":503,"rel":4684},[505]," and create your first inbound API key. Connect it to an n8n or Zapier workflow and start pushing data from any tool into your metrics dashboard. No code, no API authentication hassle.",[2708,4687,4688],{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":232,"searchDepth":233,"depth":233,"links":4690},[4691,4692,4693,4698,4703,4708,4709,4710],{"id":4297,"depth":233,"text":4298},{"id":4307,"depth":233,"text":4308},{"id":4334,"depth":233,"text":4335,"children":4694},[4695,4696,4697],{"id":4338,"depth":526,"text":4339},{"id":4351,"depth":526,"text":4352},{"id":4453,"depth":526,"text":4454},{"id":4466,"depth":233,"text":4467,"children":4699},[4700,4701,4702],{"id":4470,"depth":526,"text":4339},{"id":4476,"depth":526,"text":4477},{"id":4500,"depth":526,"text":4501},{"id":4507,"depth":233,"text":4508,"children":4704},[4705,4706,4707],{"id":4511,"depth":526,"text":4512},{"id":4548,"depth":526,"text":4549},{"id":4555,"depth":526,"text":4556},{"id":4576,"depth":233,"text":4577},{"id":4613,"depth":233,"text":4614},{"id":1628,"depth":233,"text":1629},"2026-06-05T00:00:00.000Z","Push data from any n8n or Zapier workflow into TotalKPI via webhooks. Track custom metrics from any tool, even ones without a direct API integration.",{"src":2730},{},"/blog/connect-n8n-zapier-to-metrics-dashboard",{"title":4288,"description":4712},"3.blog/24.connect-n8n-zapier-to-metrics-dashboard","SpVpfkgUqr-DIoBlSV5FeljAO-iK_4q1cWWGJndsiHY",{"id":4720,"title":4721,"authors":4722,"badge":4725,"body":4726,"date":5004,"description":5005,"extension":242,"image":5006,"meta":5008,"navigation":246,"path":5009,"seo":5010,"stem":5011,"__hash__":5012},"posts/3.blog/25.track-github-activity-alongside-business-metrics.md","Track GitHub Activity Alongside Business Metrics",[4723],{"name":119,"to":120,"avatar":4724},{"src":122},{"label":1459},{"type":126,"value":4727,"toc":4976},[4728,4732,4735,4738,4752,4756,4760,4763,4767,4770,4774,4777,4781,4784,4788,4790,4793,4814,4817,4821,4824,4838,4841,4845,4848,4852,4856,4859,4863,4866,4870,4873,4877,4880,4884,4888,4891,4895,4898,4900,4903,4907,4910,4936,4939,4943,4946,4966,4968],[129,4729,4731],{"id":4730},"does-shipping-faster-mean-growing-faster","Does Shipping Faster Mean Growing Faster?",[134,4733,4734],{},"Every engineering team believes that shipping more features drives growth. But does it? The answer is buried in the gap between your GitHub activity and your business metrics. Commits, PRs, and releases happen in GitHub. Revenue, signups, and churn happen in Stripe and your analytics tool. Nobody looks at both together.",[134,4736,4737],{},"Overlaying shipping velocity with business outcomes answers questions that engineering and product teams argue about constantly:",[154,4739,4740,4743,4746,4749],{},[157,4741,4742],{},"Does shipping more features actually increase revenue?",[157,4744,4745],{},"Do bug fix releases reduce churn?",[157,4747,4748],{},"Is there a lag between shipping and business impact?",[157,4750,4751],{},"Are we shipping the right things, or just shipping fast?",[129,4753,4755],{"id":4754},"what-to-track-from-github","What to Track From GitHub",[306,4757,4759],{"id":4758},"commit-frequency","Commit Frequency",[134,4761,4762],{},"Weekly commit count is a rough proxy for engineering output. It's noisy (not all commits are equal), but over time, trends in commit frequency correlate with shipping velocity.",[306,4764,4766],{"id":4765},"pull-requests-merged","Pull Requests Merged",[134,4768,4769],{},"More meaningful than raw commits. PRs merged per week represents completed units of work that made it through review. This is a better signal for \"how much did we actually ship?\"",[306,4771,4773],{"id":4772},"releases-deployments","Releases / Deployments",[134,4775,4776],{},"The most direct measure of what reaches users. Track your release count or deployment frequency. This is what customers actually experience.",[306,4778,4780],{"id":4779},"issues-closed","Issues Closed",[134,4782,4783],{},"Tracks bug fixes and feature completion. Overlay with churn rate to see if fixing bugs actually reduces customer loss.",[129,4785,4787],{"id":4786},"setting-up-the-github-connection","Setting Up the GitHub Connection",[306,4789,1510],{"id":1509},[134,4791,4792],{},"GitHub's REST API provides access to commits, PRs, releases, and issues. In TotalKPI:",[771,4794,4795,4797,4803,4806,4812],{},[157,4796,3597],{},[157,4798,4799,4800,2405],{},"Set the endpoint to the GitHub API for your repo (e.g., ",[2314,4801,4802],{},"https://api.github.com/repos/owner/repo/commits",[157,4804,4805],{},"Add your GitHub personal access token in the Authorization header",[157,4807,4808,4809],{},"Use array mode to fetch multiple data points: ",[2314,4810,4811],{},"$array:path:valueKey:dateKey",[157,4813,3828],{},[134,4815,4816],{},"For commit count, you can use the stats/commit_activity endpoint which returns weekly commit counts - perfect for time-series tracking.",[306,4818,4820],{"id":4819},"via-webhook","Via Webhook",[134,4822,4823],{},"Use GitHub webhooks to push events to TotalKPI in real-time:",[771,4825,4826,4829,4832,4835],{},[157,4827,4828],{},"Create an inbound API key in TotalKPI",[157,4830,4831],{},"Add the webhook URL to your GitHub repo settings",[157,4833,4834],{},"Select events: push, pull_request, release",[157,4836,4837],{},"Map the incoming payload to a data source in TotalKPI",[134,4839,4840],{},"This gives you real-time data points every time a PR is merged or a release is published.",[306,4842,4844],{"id":4843},"via-n8n-or-zapier","Via n8n or Zapier",[134,4846,4847],{},"If you prefer, use n8n or Zapier's GitHub integrations to aggregate and push data on a schedule. This lets you transform the data (e.g., count PRs merged this week) before sending it to TotalKPI.",[129,4849,4851],{"id":4850},"overlays-that-matter","Overlays That Matter",[306,4853,4855],{"id":4854},"prs-merged-vs-mrr","PRs Merged vs MRR",[134,4857,4858],{},"The big question: does shipping correlate with revenue? Overlay weekly PRs merged with Stripe MRR growth. A strong positive correlation with a 2-4 week lag means your engineering work is driving business results. A weak correlation might mean you're shipping features that don't move the needle.",[306,4860,4862],{"id":4861},"release-frequency-vs-new-signups","Release Frequency vs New Signups",[134,4864,4865],{},"Track how often you release and overlay with new user signups. Product-led growth depends on continuous improvement. If release frequency correlates with signups, your product improvements are attracting new users. If not, your growth might be driven by marketing rather than product.",[306,4867,4869],{"id":4868},"bug-fix-releases-vs-churn-rate","Bug Fix Releases vs Churn Rate",[134,4871,4872],{},"This is a powerful one. Track releases tagged as bug fixes or patches and overlay with your monthly churn rate. If bug fix releases correlate with reduced churn (with a short lag), you have clear evidence that engineering investment in stability directly impacts retention.",[306,4874,4876],{"id":4875},"issues-closed-vs-customer-satisfaction","Issues Closed vs Customer Satisfaction",[134,4878,4879],{},"If you track NPS, CSAT, or support ticket volume, overlay these with GitHub issues closed per week. This connects engineering work directly to customer experience metrics.",[129,4881,4883],{"id":4882},"reading-the-results","Reading the Results",[306,4885,4887],{"id":4886},"strong-correlation-05-with-lag","Strong Correlation (>0.5) With Lag",[134,4889,4890],{},"Your engineering output drives business results, but it takes time for users to experience and respond to changes. Use the lag duration to set expectations: \"Features we ship this sprint will impact revenue in 3 weeks.\"",[306,4892,4894],{"id":4893},"weak-correlation-03","Weak Correlation (\u003C0.3)",[134,4896,4897],{},"Shipping velocity doesn't predict business outcomes. This isn't necessarily bad - it might mean your product is mature and growth is driven by sales or marketing rather than new features. But if you're a startup counting on product-led growth, a weak correlation here is a warning sign.",[306,4899,3386],{"id":3385},[134,4901,4902],{},"Rare but concerning. If shipping more correlates with declining metrics, you might be introducing instability, confusing the UX with too many changes, or shipping features that complicate the product. Investigate which specific releases preceded metric declines.",[129,4904,4906],{"id":4905},"adding-context-with-annotations","Adding Context With Annotations",[134,4908,4909],{},"Mark specific events on your charts:",[154,4911,4912,4918,4924,4930],{},[157,4913,4914,4917],{},[160,4915,4916],{},"Major feature launches:"," \"Shipped collaboration feature\"",[157,4919,4920,4923],{},[160,4921,4922],{},"Infrastructure changes:"," \"Migrated to new database\"",[157,4925,4926,4929],{},[160,4927,4928],{},"Team changes:"," \"Hired 2 new engineers\"",[157,4931,4932,4935],{},[160,4933,4934],{},"Incidents:"," \"3-hour downtime\"",[134,4937,4938],{},"Over months, annotations create a narrative that explains the correlation patterns. You can see at a glance which launches drove growth and which caused problems.",[129,4940,4942],{"id":4941},"for-engineering-leaders","For Engineering Leaders",[134,4944,4945],{},"This data is powerful in planning conversations:",[154,4947,4948,4954,4960],{},[157,4949,4950,4953],{},[160,4951,4952],{},"Sprint planning:"," \"Features in the collaboration category have a 0.7 correlation with signups. Let's prioritize that over the admin dashboard redesign.\"",[157,4955,4956,4959],{},[160,4957,4958],{},"Hiring justification:"," \"Shipping velocity correlates with MRR growth at 0.65. Adding two engineers should accelerate revenue.\"",[157,4961,4962,4965],{},[160,4963,4964],{},"Technical debt arguments:"," \"Bug fix releases correlate with 15% churn reduction. Allocating 20% of sprint capacity to stability is directly protecting revenue.\"",[129,4967,1629],{"id":1628},[134,4969,4970,4975],{},[160,4971,4972],{},[270,4973,506],{"href":503,"rel":4974},[505]," and connect your GitHub repo alongside your Stripe or analytics data. See whether your engineering effort is actually driving your business forward.",{"title":232,"searchDepth":233,"depth":233,"links":4977},[4978,4979,4985,4990,4996,5001,5002,5003],{"id":4730,"depth":233,"text":4731},{"id":4754,"depth":233,"text":4755,"children":4980},[4981,4982,4983,4984],{"id":4758,"depth":526,"text":4759},{"id":4765,"depth":526,"text":4766},{"id":4772,"depth":526,"text":4773},{"id":4779,"depth":526,"text":4780},{"id":4786,"depth":233,"text":4787,"children":4986},[4987,4988,4989],{"id":1509,"depth":526,"text":1510},{"id":4819,"depth":526,"text":4820},{"id":4843,"depth":526,"text":4844},{"id":4850,"depth":233,"text":4851,"children":4991},[4992,4993,4994,4995],{"id":4854,"depth":526,"text":4855},{"id":4861,"depth":526,"text":4862},{"id":4868,"depth":526,"text":4869},{"id":4875,"depth":526,"text":4876},{"id":4882,"depth":233,"text":4883,"children":4997},[4998,4999,5000],{"id":4886,"depth":526,"text":4887},{"id":4893,"depth":526,"text":4894},{"id":3385,"depth":526,"text":3386},{"id":4905,"depth":233,"text":4906},{"id":4941,"depth":233,"text":4942},{"id":1628,"depth":233,"text":1629},"2026-06-10T00:00:00.000Z","Overlay your GitHub commits, PRs, and releases with revenue and user growth to see how shipping velocity affects your business. Built for dev-focused teams.",{"src":5007},"https://images.unsplash.com/photo-1618401471353-b98afee0b2eb?w=640&h=360&fit=crop",{},"/blog/track-github-activity-alongside-business-metrics",{"title":4721,"description":5005},"3.blog/25.track-github-activity-alongside-business-metrics","eqA58xpwQjoxGmaVSNSgkNE_GaOwlrV9nU3T22DRI4g",{"id":5014,"title":5015,"authors":5016,"badge":5019,"body":5020,"date":5300,"description":5301,"extension":242,"image":5302,"meta":5304,"navigation":246,"path":5305,"seo":5306,"stem":5307,"__hash__":5308},"posts/3.blog/26.umami-analytics-with-revenue-data.md","Umami Analytics + Revenue: Connect Privacy-First Traffic to Business Results",[5017],{"name":256,"to":120,"avatar":5018},{"src":258},{"label":1459},{"type":126,"value":5021,"toc":5277},[5022,5026,5029,5032,5035,5039,5042,5056,5059,5063,5067,5070,5074,5077,5103,5106,5110,5113,5117,5120,5124,5126,5129,5150,5153,5155,5158,5162,5165,5167,5170,5174,5177,5196,5199,5203,5206,5210,5224,5228,5242,5246,5260,5262,5270],[129,5023,5025],{"id":5024},"self-hosted-analytics-self-owned-insights","Self-Hosted Analytics, Self-Owned Insights",[134,5027,5028],{},"Umami is the go-to analytics tool for developers who want full control. It's open-source, self-hosted, privacy-focused, and lightweight. No cookies, no tracking scripts phoning home to third parties, no GDPR consent banners needed.",[134,5030,5031],{},"But like all standalone analytics tools, Umami answers \"what's happening on my site\" without connecting it to \"what's happening in my business.\" You can see that traffic from Hacker News spiked last Tuesday, but did those visitors become paying customers? Umami can't tell you that - revenue lives in Stripe.",[134,5033,5034],{},"By overlaying Umami traffic data with Stripe revenue in TotalKPI, you bridge that gap while keeping your analytics stack fully self-hosted and privacy-respecting.",[129,5036,5038],{"id":5037},"why-umami-users-care-about-this","Why Umami Users Care About This",[134,5040,5041],{},"Umami's user base skews toward indie hackers, solo developers, and small SaaS teams. If that's you, you probably:",[154,5043,5044,5047,5050,5053],{},[157,5045,5046],{},"Run a lean operation where every marketing dollar matters",[157,5048,5049],{},"Don't have a data team to build custom dashboards in Metabase or Grafana",[157,5051,5052],{},"Want actionable insight, not vanity metrics",[157,5054,5055],{},"Care about owning your data stack end-to-end",[134,5057,5058],{},"Overlaying Umami with revenue gives you the \"does this traffic actually make money?\" answer without adding complexity to your stack.",[129,5060,5062],{"id":5061},"what-the-overlay-shows","What the Overlay Shows",[306,5064,5066],{"id":5065},"visitor-count-vs-revenue","Visitor Count vs Revenue",[134,5068,5069],{},"The most basic and most useful overlay. Plot Umami's daily unique visitors against Stripe's daily revenue. A strong positive correlation means your traffic growth translates to revenue growth. A weak correlation means you're attracting visitors who don't convert - time to investigate why.",[306,5071,5073],{"id":5072},"referral-sources-vs-conversions","Referral Sources vs Conversions",[134,5075,5076],{},"Umami tracks referral sources cleanly. Export or pull traffic data per referrer and overlay each with revenue:",[154,5078,5079,5085,5091,5097],{},[157,5080,5081,5084],{},[160,5082,5083],{},"Organic search traffic vs revenue"," - Is your SEO driving business?",[157,5086,5087,5090],{},[160,5088,5089],{},"Hacker News / Reddit referrals vs revenue"," - Do viral spikes convert or just bounce?",[157,5092,5093,5096],{},[160,5094,5095],{},"Direct traffic vs revenue"," - Are returning visitors your best customers?",[157,5098,5099,5102],{},[160,5100,5101],{},"Newsletter referrals vs revenue"," - Is your content marketing working?",[134,5104,5105],{},"Most indie hackers discover that viral traffic spikes (HN, Reddit, Product Hunt) have weak revenue correlation, while steady organic search traffic has strong correlation. That's a strategic insight worth knowing.",[306,5107,5109],{"id":5108},"page-performance","Page Performance",[134,5111,5112],{},"Track traffic to specific pages - your landing page, pricing page, docs, or blog posts - and overlay each with revenue. Pages that correlate with revenue are your conversion drivers. Pages with high traffic but no revenue correlation might need better CTAs or conversion paths.",[306,5114,5116],{"id":5115},"event-tracking","Event Tracking",[134,5118,5119],{},"Umami supports custom event tracking. If you track events like \"clicked signup button\" or \"started trial,\" overlay these event counts with Stripe revenue. This gives you a self-hosted, privacy-respecting conversion funnel analysis.",[129,5121,5123],{"id":5122},"setting-up-umami","Setting Up Umami",[306,5125,1510],{"id":1509},[134,5127,5128],{},"Umami exposes a REST API on your self-hosted instance. In TotalKPI:",[771,5130,5131,5133,5139,5142,5145,5148],{},[157,5132,3597],{},[157,5134,5135,5136,2405],{},"Set the endpoint to your Umami instance's API (e.g., ",[2314,5137,5138],{},"https://your-umami.com/api/websites/{id}/stats",[157,5140,5141],{},"Add your Umami API token in the Authorization header",[157,5143,5144],{},"Configure query parameters for the date range and metric type",[157,5146,5147],{},"Set JSONPath to extract the value (pageviews, visitors, etc.)",[157,5149,3828],{},[134,5151,5152],{},"Since you host Umami yourself, there are no API rate limits to worry about beyond your own server capacity.",[306,5154,1531],{"id":1530},[134,5156,5157],{},"Umami's dashboard lets you export data. Download your traffic data for the period you want to analyze and import it into TotalKPI as a CSV data source.",[306,5159,5161],{"id":5160},"via-direct-database-query","Via Direct Database Query",[134,5163,5164],{},"Since you self-host Umami, you have direct access to its database (typically PostgreSQL or MySQL). You could set up an n8n workflow that queries Umami's database directly, aggregates the metrics you want, and pushes them to TotalKPI via webhook. This is the most flexible approach for power users.",[129,5166,3844],{"id":3843},[134,5168,5169],{},"Connect Stripe via API for live MRR, new customer, or revenue data. Or export historical Stripe data as CSV for the initial analysis.",[129,5171,5173],{"id":5172},"the-self-hosted-stack-advantage","The Self-Hosted Stack Advantage",[134,5175,5176],{},"One thing that makes the Umami + TotalKPI combination appealing for privacy-conscious developers: you control the entire data pipeline.",[154,5178,5179,5185,5190],{},[157,5180,5181,5184],{},[160,5182,5183],{},"Umami"," runs on your server - traffic data never leaves your infrastructure",[157,5186,5187,5189],{},[160,5188,350],{}," receives aggregated metrics only - no individual user data, no PII",[157,5191,5192,5195],{},[160,5193,5194],{},"Stripe"," data is pulled via your own API keys",[134,5197,5198],{},"No third-party analytics company has access to your users' browsing behavior. The data that flows to TotalKPI is just numbers: \"142 visitors today,\" \"3 new customers,\" \"$1,200 in revenue.\" Fully aggregate, fully privacy-compliant.",[129,5200,5202],{"id":5201},"practical-analysis-for-indie-hackers","Practical Analysis for Indie Hackers",[134,5204,5205],{},"Here's a concrete workflow for a solo SaaS founder using Umami:",[306,5207,5209],{"id":5208},"weekly-review-10-minutes","Weekly Review (10 minutes)",[771,5211,5212,5215,5218,5221],{},[157,5213,5214],{},"Open your TotalKPI dashboard",[157,5216,5217],{},"Check the Umami visitors vs Stripe revenue overlay - is the correlation holding?",[157,5219,5220],{},"Check per-source overlays - any referral source gaining or losing effectiveness?",[157,5222,5223],{},"Note any divergences to investigate",[306,5225,5227],{"id":5226},"monthly-deep-dive-30-minutes","Monthly Deep Dive (30 minutes)",[771,5229,5230,5233,5236,5239],{},[157,5231,5232],{},"Review correlation coefficients for all your traffic-revenue overlays",[157,5234,5235],{},"Rank your traffic sources by revenue correlation, not just traffic volume",[157,5237,5238],{},"Check if any blog posts or landing pages have gained or lost revenue correlation",[157,5240,5241],{},"Adjust your content and marketing strategy based on what's actually driving revenue",[306,5243,5245],{"id":5244},"after-launches-same-day","After Launches (same day)",[771,5247,5248,5251,5254,5257],{},[157,5249,5250],{},"Add a date annotation marking the launch",[157,5252,5253],{},"Watch the traffic spike in Umami over the following days",[157,5255,5256],{},"Watch whether the spike translates to a revenue bump 1-3 weeks later",[157,5258,5259],{},"Compare this launch's conversion pattern to previous launches",[129,5261,1629],{"id":1628},[134,5263,5264,5269],{},[160,5265,5266],{},[270,5267,506],{"href":503,"rel":5268},[505]," and connect your self-hosted Umami instance alongside your Stripe data. See which of your traffic actually converts - with full ownership of your analytics stack.",[134,5271,510,5272,3979],{},[160,5273,5274],{},[270,5275,3005],{"href":515,"rel":5276},[505],{"title":232,"searchDepth":233,"depth":233,"links":5278},[5279,5280,5281,5287,5292,5293,5294,5299],{"id":5024,"depth":233,"text":5025},{"id":5037,"depth":233,"text":5038},{"id":5061,"depth":233,"text":5062,"children":5282},[5283,5284,5285,5286],{"id":5065,"depth":526,"text":5066},{"id":5072,"depth":526,"text":5073},{"id":5108,"depth":526,"text":5109},{"id":5115,"depth":526,"text":5116},{"id":5122,"depth":233,"text":5123,"children":5288},[5289,5290,5291],{"id":1509,"depth":526,"text":1510},{"id":1530,"depth":526,"text":1531},{"id":5160,"depth":526,"text":5161},{"id":3843,"depth":233,"text":3844},{"id":5172,"depth":233,"text":5173},{"id":5201,"depth":233,"text":5202,"children":5295},[5296,5297,5298],{"id":5208,"depth":526,"text":5209},{"id":5226,"depth":526,"text":5227},{"id":5244,"depth":526,"text":5245},{"id":1628,"depth":233,"text":1629},"2026-06-15T00:00:00.000Z","Overlay your Umami self-hosted analytics with Stripe revenue data to see which traffic patterns drive paying customers - fully privacy-compliant and self-hosted.",{"src":5303},"https://images.unsplash.com/photo-1504868584819-f8e8b4b6d7e3?w=640&h=360&fit=crop",{},"/blog/umami-analytics-with-revenue-data",{"title":5015,"description":5301},"3.blog/26.umami-analytics-with-revenue-data","wceYGVWdiGBgZOfu1tkH0YYVuTmmlZR3AxnyB8-iSww",{"id":5310,"title":5311,"authors":5312,"badge":5315,"body":5317,"date":5560,"description":5561,"extension":242,"image":5562,"meta":5564,"navigation":246,"path":5565,"seo":5566,"stem":5567,"__hash__":5568},"posts/3.blog/27.business-forecasting-projections-kpi-dashboard.md","How to Forecast Business KPIs: A Practical Guide to Metric Projections",[5313],{"name":256,"to":120,"avatar":5314},{"src":258},{"label":5316},"Guide",{"type":126,"value":5318,"toc":5547},[5319,5323,5326,5329,5333,5336,5340,5343,5349,5355,5360,5364,5367,5372,5377,5382,5386,5389,5394,5399,5404,5408,5411,5416,5421,5426,5430,5433,5438,5443,5448,5452,5455,5509,5512,5516,5519,5522,5524,5538,5541],[129,5320,5322],{"id":5321},"why-forecasting-matters-for-startups","Why Forecasting Matters for Startups",[134,5324,5325],{},"Every startup founder makes decisions based on where they think their numbers are heading. Will MRR hit $50K by Q3? Is churn trending up or was last month an outlier? Should you hire based on current growth or projected growth?",[134,5327,5328],{},"Most founders answer these questions with gut feeling and a mental trendline. That works until it doesn't. A simple projection based on your actual data is almost always more reliable than intuition, and it takes seconds instead of hours in a spreadsheet.",[129,5330,5332],{"id":5331},"five-projection-methods-one-dashboard","Five Projection Methods, One Dashboard",[134,5334,5335],{},"TotalKPI includes five projection methods built directly into every chart. No exports, no formulas, no separate tools. Toggle projections on and the forecast extends your data forward.",[306,5337,5339],{"id":5338},"_1-linear-trend","1. Linear Trend",[134,5341,5342],{},"The simplest and most common projection. Fits a straight line to your historical data using ordinary least squares regression and extends it forward.",[134,5344,5345,5348],{},[160,5346,5347],{},"Best for:"," Metrics with steady, consistent growth. Monthly recurring revenue that grows by roughly the same dollar amount each month. Support ticket volume that increases predictably with user count.",[134,5350,5351,5354],{},[160,5352,5353],{},"Watch out for:"," Linear projection assumes constant absolute growth. If your metric is actually growing by a percentage (compounding), linear will underestimate the future.",[134,5356,5357],{},[270,5358,5359],{"href":77},"Read more about linear projections",[306,5361,5363],{"id":5362},"_2-moving-average","2. Moving Average",[134,5365,5366],{},"Smooths out short-term noise by averaging recent data points and projecting that smoothed trend forward. You control the window size to balance responsiveness against stability.",[134,5368,5369,5371],{},[160,5370,5347],{}," Noisy metrics where you want to see the underlying trend. Daily active users with weekend dips. Ad spend that fluctuates but trends in a direction.",[134,5373,5374,5376],{},[160,5375,5353],{}," Moving average reacts slowly to sudden changes. If your metric just had a real inflection point, the projection will lag behind reality.",[134,5378,5379],{},[270,5380,5381],{"href":82},"Read more about moving average projections",[306,5383,5385],{"id":5384},"_3-exponential-smoothing-holts-method","3. Exponential Smoothing (Holt's Method)",[134,5387,5388],{},"Weights recent data points more heavily than older ones, capturing evolving trends better than a simple moving average. Uses Holt's double exponential smoothing to model both level and trend.",[134,5390,5391,5393],{},[160,5392,5347],{}," Metrics where recent changes matter more than historical patterns. Churn rate that's been improving due to recent product changes. Conversion rates after a funnel optimization.",[134,5395,5396,5398],{},[160,5397,5353],{}," Can overreact to recent outliers. A single unusual data point will pull the projection more than it would with linear or moving average methods.",[134,5400,5401],{},[270,5402,5403],{"href":87},"Read more about exponential smoothing",[306,5405,5407],{"id":5406},"_4-logarithmic","4. Logarithmic",[134,5409,5410],{},"Models growth that starts fast and gradually decelerates. The classic adoption curve shape: rapid early growth that levels off as you approach saturation.",[134,5412,5413,5415],{},[160,5414,5347],{}," User adoption metrics, market penetration, organic traffic growth for a maturing site. Any metric where you expect diminishing returns.",[134,5417,5418,5420],{},[160,5419,5353],{}," If your metric is still in an early exponential growth phase, logarithmic projection will be too conservative. It assumes deceleration has already begun.",[134,5422,5423],{},[270,5424,5425],{"href":92},"Read more about logarithmic projections",[306,5427,5429],{"id":5428},"_5-growth-rate-cagr","5. Growth Rate (CAGR)",[134,5431,5432],{},"Calculates the compound annual growth rate from your historical data and projects it forward. This gives you percentage-based exponential growth.",[134,5434,5435,5437],{},[160,5436,5347],{}," Revenue and user growth in early-stage startups where you're growing by a percentage each month. Compound metrics where each period builds on the last.",[134,5439,5440,5442],{},[160,5441,5353],{}," CAGR projection assumes your historical growth rate continues unchanged. If growth is decelerating (as most metrics do eventually), CAGR will overestimate the future.",[134,5444,5445],{},[270,5446,5447],{"href":97},"Read more about growth rate projections",[129,5449,5451],{"id":5450},"choosing-the-right-method","Choosing the Right Method",[134,5453,5454],{},"There's no single best projection method. The right choice depends on what your data looks like:",[332,5456,5457,5467],{},[335,5458,5459],{},[338,5460,5461,5464],{},[341,5462,5463],{},"If your metric...",[341,5465,5466],{},"Use",[352,5468,5469,5477,5485,5493,5501],{},[338,5470,5471,5474],{},[357,5472,5473],{},"Grows by a steady amount each period",[357,5475,5476],{},"Linear",[338,5478,5479,5482],{},[357,5480,5481],{},"Is noisy but has an underlying trend",[357,5483,5484],{},"Moving Average",[338,5486,5487,5490],{},[357,5488,5489],{},"Has recently changed direction",[357,5491,5492],{},"Exponential Smoothing",[338,5494,5495,5498],{},[357,5496,5497],{},"Grew fast early and is slowing down",[357,5499,5500],{},"Logarithmic",[338,5502,5503,5506],{},[357,5504,5505],{},"Grows by a consistent percentage",[357,5507,5508],{},"Growth Rate (CAGR)",[134,5510,5511],{},"The practical approach: try two or three methods on the same chart and see which one best matches the recent trend you'd expect to continue. TotalKPI lets you switch between methods instantly.",[129,5513,5515],{"id":5514},"projections-correlations","Projections + Correlations",[134,5517,5518],{},"Projections become even more powerful when combined with correlation analysis. If you've identified that blog traffic has a 0.85 correlation with trial signups (with a 2-week lag), you can project both metrics forward and see whether your pipeline is on track.",[134,5520,5521],{},"Overlay your projected traffic with projected signups on the same chart. If the projections diverge from the correlation pattern, something has changed and it's worth investigating.",[129,5523,5],{"id":221},[771,5525,5526,5529,5532,5535],{},[157,5527,5528],{},"Open any data source chart in your dashboard",[157,5530,5531],{},"Click the projections icon in the chart toolbar",[157,5533,5534],{},"Choose a method and projection period",[157,5536,5537],{},"The forecast line extends your data forward",[134,5539,5540],{},"That's it. No configuration, no formulas, no spreadsheet gymnastics. Your simple KPI dashboard now shows you where your metrics are heading.",[134,5542,5543,5544,274],{},"For detailed documentation on each projection method, visit the ",[270,5545,5546],{"href":70},"projections docs",{"title":232,"searchDepth":233,"depth":233,"links":5548},[5549,5550,5557,5558,5559],{"id":5321,"depth":233,"text":5322},{"id":5331,"depth":233,"text":5332,"children":5551},[5552,5553,5554,5555,5556],{"id":5338,"depth":526,"text":5339},{"id":5362,"depth":526,"text":5363},{"id":5384,"depth":526,"text":5385},{"id":5406,"depth":526,"text":5407},{"id":5428,"depth":526,"text":5429},{"id":5450,"depth":233,"text":5451},{"id":5514,"depth":233,"text":5515},{"id":221,"depth":233,"text":5},"2026-03-12T00:00:00.000Z","Learn how to project your business metrics forward using linear trends, moving averages, exponential smoothing, and growth rates. Built into your simple KPI dashboard.",{"src":5563},"https://images.unsplash.com/photo-1526628953301-3e589a6a8b74?w=640&h=360&fit=crop",{},"/blog/business-forecasting-projections-kpi-dashboard",{"title":5311,"description":5561},"3.blog/27.business-forecasting-projections-kpi-dashboard","3VDbTSI72qEVTJkx_Vafrr9YQMorCk9TPetjMPEdAJ0",{"id":5570,"title":5571,"authors":5572,"badge":5577,"body":5579,"date":5765,"description":5766,"extension":242,"image":5767,"meta":5768,"navigation":246,"path":5769,"seo":5770,"stem":5771,"__hash__":5772},"posts/3.blog/3.understanding-metric-correlation.md","Understanding Correlation: What Your KPIs Are Really Telling You",[5573],{"name":5574,"to":120,"avatar":5575},"Mikkel Christensen",{"src":5576},"https://valoks.com/assets/images/team/mikkel.webp",{"label":5578},"Analytics",{"type":126,"value":5580,"toc":5754},[5581,5585,5588,5591,5595,5601,5621,5624,5685,5689,5692,5696,5699,5703,5706,5710,5713,5717,5724,5727,5730,5741,5745,5748,5751],[129,5582,5584],{"id":5583},"beyond-gut-feeling","Beyond Gut Feeling",[134,5586,5587],{},"Every founder has hunches. \"I think our blog traffic drives signups.\" \"I'm pretty sure that feature launch boosted retention.\" But hunches aren't evidence. Correlation analysis gives you the numbers to back up - or challenge - your assumptions.",[134,5589,5590],{},"TotalKPI automatically calculates correlation coefficients when you create a combined view with two or more data sources. But what do those numbers actually mean, and how should you use them?",[129,5592,5594],{"id":5593},"correlation-coefficients-explained","Correlation Coefficients Explained",[134,5596,5597,5598,2450],{},"A correlation coefficient ranges from ",[160,5599,5600],{},"-1.0 to +1.0",[154,5602,5603,5609,5615],{},[157,5604,5605,5608],{},[160,5606,5607],{},"+1.0"," - Perfect positive correlation. When one metric goes up, the other always goes up by a proportional amount.",[157,5610,5611,5614],{},[160,5612,5613],{},"0"," - No correlation. The two metrics move independently of each other.",[157,5616,5617,5620],{},[160,5618,5619],{},"-1.0"," - Perfect negative correlation. When one goes up, the other always goes down.",[134,5622,5623],{},"In practice, you'll rarely see perfect correlations. Here's a practical guide to interpreting the numbers:",[332,5625,5626,5636],{},[335,5627,5628],{},[338,5629,5630,5633],{},[341,5631,5632],{},"Range",[341,5634,5635],{},"Interpretation",[352,5637,5638,5646,5654,5662,5669,5677],{},[338,5639,5640,5643],{},[357,5641,5642],{},"0.7 to 1.0",[357,5644,5645],{},"Strong positive relationship",[338,5647,5648,5651],{},[357,5649,5650],{},"0.4 to 0.7",[357,5652,5653],{},"Moderate positive relationship",[338,5655,5656,5659],{},[357,5657,5658],{},"0.0 to 0.4",[357,5660,5661],{},"Weak or no relationship",[338,5663,5664,5667],{},[357,5665,5666],{},"-0.4 to 0.0",[357,5668,5661],{},[338,5670,5671,5674],{},[357,5672,5673],{},"-0.7 to -0.4",[357,5675,5676],{},"Moderate negative relationship",[338,5678,5679,5682],{},[357,5680,5681],{},"-1.0 to -0.7",[357,5683,5684],{},"Strong negative relationship",[129,5686,5688],{"id":5687},"real-world-examples","Real-World Examples",[134,5690,5691],{},"Here are some correlations SaaS businesses commonly discover:",[306,5693,5695],{"id":5694},"blog-traffic-vs-trial-signups-typical-05-to-07","Blog Traffic vs. Trial Signups (Typical: +0.5 to +0.7)",[134,5697,5698],{},"Content marketing usually shows a moderate-to-strong positive correlation with signups. The relationship isn't perfect because not all blog visitors convert, but the trend is clear. If you see a weak correlation here, your content might not be reaching the right audience.",[306,5700,5702],{"id":5701},"support-tickets-vs-churn-rate-typical-04-to-06","Support Tickets vs. Churn Rate (Typical: +0.4 to +0.6)",[134,5704,5705],{},"More support tickets often predict higher churn. This makes intuitive sense - frustrated users ask for help before they leave. Tracking this correlation helps you set thresholds for proactive outreach.",[306,5707,5709],{"id":5708},"ad-spend-vs-revenue-varies-widely","Ad Spend vs. Revenue (Varies widely)",[134,5711,5712],{},"This one surprises people. Sometimes the correlation is weaker than expected because of long conversion cycles. A customer who clicks an ad today might not subscribe for weeks. Consider time-shifting your data to account for this lag.",[129,5714,5716],{"id":5715},"the-golden-rule-correlation-is-not-causation","The Golden Rule: Correlation Is Not Causation",[134,5718,5719,5720,5723],{},"This matters enough to state plainly: ",[160,5721,5722],{},"a strong correlation does not prove that one metric causes the other",". Two metrics might move together because they're both driven by a third factor you're not tracking.",[134,5725,5726],{},"For example, both your website traffic and revenue might spike every January - not because traffic drives revenue, but because your industry has seasonal demand patterns.",[134,5728,5729],{},"Use correlation as a starting point for investigation, not as a final answer. When you spot a strong correlation, ask yourself:",[771,5731,5732,5735,5738],{},[157,5733,5734],{},"Does the timing make sense? Does one metric lead the other?",[157,5736,5737],{},"Is there a logical mechanism connecting these metrics?",[157,5739,5740],{},"Could a hidden third factor be driving both?",[129,5742,5744],{"id":5743},"using-correlation-in-totalkpi","Using Correlation in TotalKPI",[134,5746,5747],{},"When you create a combined view with multiple data sources, TotalKPI automatically displays the Pearson correlation coefficient for each pair of metrics. This updates as you add new data, so you can track whether relationships are strengthening or weakening over time.",[134,5749,5750],{},"The most actionable approach is to check your correlations monthly. If a historically strong correlation suddenly weakens, something in your business has changed - and that's worth investigating.",[134,5752,5753],{},"Start by combining the two metrics you care about most. The number might confirm what you already suspected, or it might surprise you entirely. Either way, you'll be making decisions with data instead of hunches.",{"title":232,"searchDepth":233,"depth":233,"links":5755},[5756,5757,5758,5763,5764],{"id":5583,"depth":233,"text":5584},{"id":5593,"depth":233,"text":5594},{"id":5687,"depth":233,"text":5688,"children":5759},[5760,5761,5762],{"id":5694,"depth":526,"text":5695},{"id":5701,"depth":526,"text":5702},{"id":5708,"depth":526,"text":5709},{"id":5715,"depth":233,"text":5716},{"id":5743,"depth":233,"text":5744},"2026-01-15T00:00:00.000Z","Learn how correlation analysis reveals hidden relationships between your business metrics and helps you make smarter, data-driven decisions.",{"src":5303},{},"/blog/understanding-metric-correlation",{"title":5571,"description":5766},"3.blog/3.understanding-metric-correlation","MX8JZA2J3eRv_lGVrvPHvIVhMsNne9faaxI18pN4efI",{"id":5774,"title":5775,"authors":5776,"badge":5781,"body":5782,"date":6006,"description":6007,"extension":242,"image":6008,"meta":6010,"navigation":246,"path":6011,"seo":6012,"stem":6013,"__hash__":6014},"posts/3.blog/4.connecting-stripe-and-google-search-console.md","Connect Stripe and Google Search Console for the Full Revenue Picture",[5777],{"name":5778,"to":120,"avatar":5779},"Benjamin Westerholt",{"src":5780},"https://valoks.com/assets/images/team/benjamin.webp",{"label":1459},{"type":126,"value":5783,"toc":5992},[5784,5788,5791,5794,5798,5802,5805,5831,5835,5838,5864,5868,5871,5875,5878,5882,5885,5889,5892,5896,5934,5937,5941,5944,5949,5960,5965,5976,5981,5986,5989],[129,5785,5787],{"id":5786},"two-tools-one-story","Two Tools, One Story",[134,5789,5790],{},"Stripe tells you how much money you're making. Google Search Console tells you how visible you are in search results. Separately, they're useful. Together, they tell you whether your organic growth is actually translating into revenue - or if there's a disconnect you need to fix.",[134,5792,5793],{},"TotalKPI's pre-built integrations let you connect both services and overlay their data on the same chart within minutes.",[129,5795,5797],{"id":5796},"what-you-get-from-each-integration","What You Get From Each Integration",[306,5799,5801],{"id":5800},"stripe-metrics","Stripe Metrics",[134,5803,5804],{},"When you connect Stripe, TotalKPI can pull in:",[154,5806,5807,5813,5819,5825],{},[157,5808,5809,5812],{},[160,5810,5811],{},"Monthly Recurring Revenue (MRR)"," - Your subscription revenue, tracked daily",[157,5814,5815,5818],{},[160,5816,5817],{},"New Subscriptions"," - How many new customers signed up each day",[157,5820,5821,5824],{},[160,5822,5823],{},"Churn Rate"," - The percentage of customers who cancelled",[157,5826,5827,5830],{},[160,5828,5829],{},"Daily Revenue"," - Total revenue including one-time charges",[306,5832,5834],{"id":5833},"google-search-console-metrics","Google Search Console Metrics",[134,5836,5837],{},"From Google Search Console, you get:",[154,5839,5840,5846,5852,5858],{},[157,5841,5842,5845],{},[160,5843,5844],{},"Clicks"," - How many people clicked through to your site from search results",[157,5847,5848,5851],{},[160,5849,5850],{},"Impressions"," - How many times your pages appeared in search results",[157,5853,5854,5857],{},[160,5855,5856],{},"Click-Through Rate (CTR)"," - The percentage of impressions that resulted in clicks",[157,5859,5860,5863],{},[160,5861,5862],{},"Average Position"," - Your average ranking position across all queries",[129,5865,5867],{"id":5866},"the-insights-that-matter","The Insights That Matter",[134,5869,5870],{},"Once both integrations are connected, create a combined view and start exploring. Here are the most valuable combinations:",[306,5872,5874],{"id":5873},"clicks-vs-new-subscriptions","Clicks vs. New Subscriptions",[134,5876,5877],{},"This is the clearest path from discovery to conversion. If organic clicks are rising but new subscriptions aren't, you might have a landing page problem or a traffic quality issue. If both are rising together, your SEO strategy is working.",[306,5879,5881],{"id":5880},"impressions-vs-mrr","Impressions vs. MRR",[134,5883,5884],{},"A longer-term view. Search impressions indicate market awareness - people are searching for terms related to your product. Overlaying this with MRR shows whether growing awareness is eventually converting to revenue, even if there's a delay of weeks or months.",[306,5886,5888],{"id":5887},"average-position-vs-churn-rate","Average Position vs. Churn Rate",[134,5890,5891],{},"This one is less obvious but valuable. If your search rankings drop, fewer new users find you organically, which means your growth slows while churn continues at its natural rate. Seeing both lines on the same chart helps you spot this dynamic early.",[129,5893,5895],{"id":5894},"setting-up-the-integrations","Setting Up the Integrations",[771,5897,5898,5904,5910,5916,5922,5928],{},[157,5899,5900,5903],{},[160,5901,5902],{},"Navigate to your project"," and open the page where you want to add the integration",[157,5905,5906,5909],{},[160,5907,5908],{},"Click \"Add Source\""," and select the integration tab",[157,5911,5912,5915],{},[160,5913,5914],{},"Choose Stripe or Google Search Console"," from the available integrations",[157,5917,5918,5921],{},[160,5919,5920],{},"Authorize access"," - You'll be redirected to authenticate with the service",[157,5923,5924,5927],{},[160,5925,5926],{},"Select your metrics"," - Pick which specific metrics you want to track",[157,5929,5930,5933],{},[160,5931,5932],{},"Set the polling interval"," - Choose how often TotalKPI should fetch new data (from every minute to once daily)",[134,5935,5936],{},"Once connected, data flows in automatically. No more manual exports.",[129,5938,5940],{"id":5939},"building-your-revenue-dashboard","Building Your Revenue Dashboard",[134,5942,5943],{},"A practical setup that works well for most SaaS businesses:",[134,5945,5946],{},[160,5947,5948],{},"Page 1 - Acquisition",[154,5950,5951,5954,5957],{},[157,5952,5953],{},"Google Search Console clicks",[157,5955,5956],{},"Google Search Console impressions",[157,5958,5959],{},"New Stripe subscriptions",[134,5961,5962],{},[160,5963,5964],{},"Page 2 - Revenue",[154,5966,5967,5970,5973],{},[157,5968,5969],{},"Stripe MRR",[157,5971,5972],{},"Stripe daily revenue",[157,5974,5975],{},"Stripe churn rate",[134,5977,5978],{},[160,5979,5980],{},"Page 3 - Full Funnel",[154,5982,5983],{},[157,5984,5985],{},"Combined view: GSC clicks + new subscriptions + MRR",[134,5987,5988],{},"The full funnel view is where the real insights live. You'll see exactly how your organic traffic pipeline feeds into revenue, how long the lag is, and where the bottlenecks are.",[134,5990,5991],{},"Stop treating your search data and revenue data as separate worlds. They're telling the same story - you just need to see them on the same chart.",{"title":232,"searchDepth":233,"depth":233,"links":5993},[5994,5995,5999,6004,6005],{"id":5786,"depth":233,"text":5787},{"id":5796,"depth":233,"text":5797,"children":5996},[5997,5998],{"id":5800,"depth":526,"text":5801},{"id":5833,"depth":526,"text":5834},{"id":5866,"depth":233,"text":5867,"children":6000},[6001,6002,6003],{"id":5873,"depth":526,"text":5874},{"id":5880,"depth":526,"text":5881},{"id":5887,"depth":526,"text":5888},{"id":5894,"depth":233,"text":5895},{"id":5939,"depth":233,"text":5940},"2025-12-20T00:00:00.000Z","See how connecting your payment and search data in TotalKPI reveals the relationship between organic visibility and revenue growth.",{"src":6009},"https://images.unsplash.com/photo-1556742049-0cfed4f6a45d?w=640&h=360&fit=crop",{},"/blog/connecting-stripe-and-google-search-console",{"title":5775,"description":6007},"3.blog/4.connecting-stripe-and-google-search-console","Tqc7btueGYYMsbleSv8zc9sOItoxQeDwOD-knPZk41w",{"id":6016,"title":6017,"authors":6018,"badge":6021,"body":6022,"date":6136,"description":6137,"extension":242,"image":6138,"meta":6139,"navigation":246,"path":6140,"seo":6141,"stem":6142,"__hash__":6143},"posts/3.blog/5.data-driven-decisions-for-saas-founders.md","5 Data-Driven Decisions Every SaaS Founder Should Make",[6019],{"name":256,"to":120,"avatar":6020},{"src":258},{"label":1059},{"type":126,"value":6023,"toc":6127},[6024,6028,6031,6034,6038,6041,6047,6050,6054,6057,6062,6065,6069,6072,6077,6080,6084,6087,6092,6095,6099,6102,6107,6110,6114,6121,6124],[129,6025,6027],{"id":6026},"data-over-instinct","Data Over Instinct",[134,6029,6030],{},"Running a SaaS business means making dozens of decisions every week. Most founders rely on a mix of experience and gut feeling. But the founders who scale fastest are the ones who let their data guide the way.",[134,6032,6033],{},"Here are five decisions where having your metrics combined and correlated gives you a real advantage.",[129,6035,6037],{"id":6036},"_1-when-to-double-down-on-a-marketing-channel","1. When to Double Down on a Marketing Channel",[134,6039,6040],{},"You're running campaigns across Google Ads, content marketing, and social media. Each channel reports its own metrics. But which one is actually driving paying customers - not just clicks?",[134,6042,6043,6046],{},[160,6044,6045],{},"How to answer it:"," Import your spend data for each channel as separate data sources. Connect your Stripe integration for new subscription data. Create combined views for each channel overlaid with new subscriptions.",[134,6048,6049],{},"The channel with the strongest positive correlation between spend and new subscriptions is your winner. But watch the timing. If content marketing shows a weaker correlation on a daily basis but a strong one when you shift the data by 2-3 weeks, it might actually be your best long-term channel.",[129,6051,6053],{"id":6052},"_2-whether-a-feature-launch-actually-moved-the-needle","2. Whether a Feature Launch Actually Moved the Needle",[134,6055,6056],{},"You shipped a major feature last month. The team feels good about it. But did it actually impact the metrics that matter?",[134,6058,6059,6061],{},[160,6060,6045],{}," Mark the launch date on your chart and compare the trend lines before and after. Overlay your product usage metric with trial-to-paid conversion rate and churn rate.",[134,6063,6064],{},"A feature that truly moves the needle should show up in at least one of these metrics within 2-4 weeks. If nothing changed, the feature might be valuable for retention (harder to measure) or it might simply not be as impactful as the team hoped. Either way, you have the data to make the call.",[129,6066,6068],{"id":6067},"_3-how-to-set-your-pricing","3. How to Set Your Pricing",[134,6070,6071],{},"Pricing decisions are often made once and then left alone for too long. Your data can tell you when it's time to revisit.",[134,6073,6074,6076],{},[160,6075,6045],{}," Track your average revenue per user (ARPU) alongside your signup rate and churn rate over time. If ARPU is flat while signups are strong and churn is low, you likely have room to increase prices. If churn spikes every time you adjust pricing, you've found the ceiling.",[134,6078,6079],{},"Create a combined view with all three metrics. The sweet spot is where ARPU is growing, signups remain stable, and churn stays below your historical average.",[129,6081,6083],{"id":6082},"_4-when-to-hire-your-next-support-person","4. When to Hire Your Next Support Person",[134,6085,6086],{},"Scaling support is a timing problem. Hire too early and you burn cash. Hire too late and customers churn from slow response times.",[134,6088,6089,6091],{},[160,6090,6045],{}," Track your support ticket volume alongside your churn rate and customer satisfaction scores. When you see ticket volume rising and a corresponding uptick in churn (even a moderate correlation of 0.4+), it's time to hire.",[134,6093,6094],{},"TotalKPI's correlation analysis makes this straightforward. Set up a combined view with tickets and churn, and check the coefficient monthly. When it starts climbing, you have a data-backed case for the hire.",[129,6096,6098],{"id":6097},"_5-whether-your-content-strategy-is-working","5. Whether Your Content Strategy Is Working",[134,6100,6101],{},"Content marketing is a long game. It's easy to keep publishing without ever validating that the effort is paying off.",[134,6103,6104,6106],{},[160,6105,6045],{}," Connect Google Search Console to track organic clicks and impressions. Import your blog publish dates and frequency as a data source. Overlay these with trial signups from Stripe.",[134,6108,6109],{},"Look for two things: first, whether impressions and clicks are trending upward (your content is gaining visibility). Second, whether there's a lagged correlation between organic traffic and signups. If you're getting more traffic but it's not converting, you might be ranking for the wrong keywords.",[129,6111,6113],{"id":6112},"the-common-thread","The Common Thread",[134,6115,6116,6117,6120],{},"Every one of these decisions comes down to the same principle: ",[160,6118,6119],{},"look at multiple metrics together, not in isolation",". A single chart showing MRR going up tells you almost nothing about why. But MRR overlaid with organic traffic, support tickets, and feature usage starts to tell a story.",[134,6122,6123],{},"TotalKPI exists to make this kind of analysis accessible without building custom dashboards or writing SQL queries. Import your data, create combined views, and let the correlations guide your next move.",[134,6125,6126],{},"The best decisions aren't the boldest ones. They're the most informed ones.",{"title":232,"searchDepth":233,"depth":233,"links":6128},[6129,6130,6131,6132,6133,6134,6135],{"id":6026,"depth":233,"text":6027},{"id":6036,"depth":233,"text":6037},{"id":6052,"depth":233,"text":6053},{"id":6067,"depth":233,"text":6068},{"id":6082,"depth":233,"text":6083},{"id":6097,"depth":233,"text":6098},{"id":6112,"depth":233,"text":6113},"2025-12-05T00:00:00.000Z","Stop guessing. Here are five critical business decisions where combining and correlating your metrics gives you a clear, confident answer.",{"src":814},{},"/blog/data-driven-decisions-for-saas-founders",{"title":6017,"description":6137},"3.blog/5.data-driven-decisions-for-saas-founders","55z8Hgo_1_MAQXCBIhrJy79Yf5bb-hs9j26uTr9kMGk",{"id":6145,"title":6146,"authors":6147,"badge":6150,"body":6152,"date":6293,"description":6294,"extension":242,"image":6295,"meta":6297,"navigation":246,"path":6298,"seo":6299,"stem":6300,"__hash__":6301},"posts/3.blog/6.dashboard-fatigue-is-killing-your-productivity.md","Dashboard Fatigue Is Killing Your Productivity (and What to Do About It)",[6148],{"name":119,"to":120,"avatar":6149},{"src":122},{"label":6151},"Thought Leadership",{"type":126,"value":6153,"toc":6281},[6154,6158,6161,6164,6168,6171,6175,6178,6182,6185,6188,6192,6195,6199,6202,6205,6208,6212,6215,6218,6221,6225,6228,6231,6234,6238,6258,6265],[129,6155,6157],{"id":6156},"the-morning-dashboard-ritual","The Morning Dashboard Ritual",[134,6159,6160],{},"If you're running a SaaS business, your morning probably looks something like this: open Stripe to check revenue, switch to Google Analytics for traffic, hop over to Search Console for keyword rankings, check your email platform for open rates, glance at your CRM for new leads, and maybe open a spreadsheet where you track something custom.",[134,6162,6163],{},"That's six apps, six logins, six mental context switches before your first cup of coffee. A BetterCloud survey found that the average company uses over 100 SaaS tools. Even a lean startup juggles at least five or six dashboards daily. And each one only shows you its own slice of reality.",[129,6165,6167],{"id":6166},"the-hidden-costs-youre-not-counting","The Hidden Costs You're Not Counting",[134,6169,6170],{},"Dashboard fatigue isn't just annoying. It has real costs that compound over time.",[306,6172,6174],{"id":6173},"context-switching-destroys-focus","Context Switching Destroys Focus",[134,6176,6177],{},"Every time you switch from Stripe to Google Analytics, your brain has to reload context. Research from the University of California, Irvine found that it takes an average of 23 minutes to fully regain focus after a task switch. You're not just spending 15 minutes checking dashboards. You're losing an hour of deep work from the cognitive overhead.",[306,6179,6181],{"id":6180},"missed-connections-cost-revenue","Missed Connections Cost Revenue",[134,6183,6184],{},"When your metrics live in separate tools, the connections between them stay invisible. Your MRR dropped 8% last month. You check Stripe and see higher churn. But why? Without overlaying your other data, you might never realize that a Google algorithm update tanked your organic traffic two weeks earlier, which reduced new signups, which meant your churn rate outpaced your acquisition rate.",[134,6186,6187],{},"That cause-and-effect chain is only visible when you can see multiple metrics on the same timeline. In six separate dashboards, it's invisible.",[306,6189,6191],{"id":6190},"decision-paralysis-from-fragmented-data","Decision Paralysis From Fragmented Data",[134,6193,6194],{},"When you can't see how metrics relate to each other, every decision becomes a guess. Should you double down on content marketing or paid ads? Your traffic is up but revenue is flat. Is the content attracting the wrong audience, or is there a lag before traffic converts? Without overlaying the data, you're making resource allocation decisions based on incomplete information.",[129,6196,6198],{"id":6197},"why-more-dashboards-is-not-the-answer","Why \"More Dashboards\" Is Not the Answer",[134,6200,6201],{},"The instinct when you feel overwhelmed by dashboards is to build another one. A \"master dashboard\" that aggregates everything. Tools like Geckoboard and Databox let you pull metrics into widgets on a single screen.",[134,6203,6204],{},"But widgets have a fundamental limitation: they show metrics side by side, not combined. You can see that revenue went up and traffic went down in the same glance, but you can't overlay them on the same time axis to understand the timing, the lag, or the correlation.",[134,6206,6207],{},"A wall of widgets is still a wall of isolated numbers. It solves the tab-switching problem but not the insight problem.",[129,6209,6211],{"id":6210},"the-real-problem-metrics-exist-in-isolation","The Real Problem: Metrics Exist in Isolation",[134,6213,6214],{},"The core issue isn't that your data is in different tools. It's that no tool shows you how your data connects across those tools.",[134,6216,6217],{},"What you actually need is the ability to overlay metrics from completely different sources on a single time-series chart. Put Stripe revenue on the same axis as Google organic traffic, normalize the scales automatically, and see whether they move together.",[134,6219,6220],{},"That's the difference between a dashboard (displays numbers) and an insight tool (reveals relationships).",[129,6222,6224],{"id":6223},"what-a-unified-view-actually-looks-like","What a Unified View Actually Looks Like",[134,6226,6227],{},"Imagine opening one tab and seeing your Stripe MRR, Google Search Console clicks, and email subscriber count all on the same chart. The scales are automatically normalized to 0-100% so the patterns are comparable despite the wildly different units.",[134,6229,6230],{},"You notice that every time your organic traffic dips, revenue follows with a two-week lag. You notice that email sends correlate with Stripe revenue on a three-day delay. You notice that your latest feature launch had zero impact on any acquisition metric.",[134,6232,6233],{},"These are insights you simply cannot get from checking six dashboards separately.",[129,6235,6237],{"id":6236},"three-steps-to-cure-dashboard-fatigue-today","Three Steps to Cure Dashboard Fatigue Today",[771,6239,6240,6246,6252],{},[157,6241,6242,6245],{},[160,6243,6244],{},"Audit your dashboard routine."," Write down every tool you check daily. For most founders, it's five to eight. Identify which metrics actually inform decisions versus which you check out of habit.",[157,6247,6248,6251],{},[160,6249,6250],{},"Identify your core metrics."," Strip it down to the six to ten numbers that actually drive your business. Revenue, traffic by source, signups, churn, and one or two metrics specific to your product.",[157,6253,6254,6257],{},[160,6255,6256],{},"Combine them in one place."," Import your key metrics into a single workspace where you can overlay them on shared time-series charts. See the relationships, not just the individual numbers.",[134,6259,6260,6264],{},[270,6261,350],{"href":6262,"rel":6263},"https://totalkpi.com",[505]," was built specifically for this. Connect your tools via API, import CSVs, or push data via webhooks. Everything lands on interactive charts with automatic normalization and correlation detection. Your morning dashboard ritual goes from 15 minutes across six apps to 2 minutes in one tab.",[134,6266,6267,6273,6274,6280],{},[160,6268,6269],{},[270,6270,6272],{"href":515,"rel":6271},[505],"Try the live demo"," to see what a unified view of your metrics looks like, or ",[160,6275,6276],{},[270,6277,6279],{"href":503,"rel":6278},[505],"start your free trial"," to connect your own data.",{"title":232,"searchDepth":233,"depth":233,"links":6282},[6283,6284,6289,6290,6291,6292],{"id":6156,"depth":233,"text":6157},{"id":6166,"depth":233,"text":6167,"children":6285},[6286,6287,6288],{"id":6173,"depth":526,"text":6174},{"id":6180,"depth":526,"text":6181},{"id":6190,"depth":526,"text":6191},{"id":6197,"depth":233,"text":6198},{"id":6210,"depth":233,"text":6211},{"id":6223,"depth":233,"text":6224},{"id":6236,"depth":233,"text":6237},"2026-03-05T00:00:00.000Z","You check Stripe, Google Analytics, Search Console, your CRM, and a spreadsheet every morning. Here's why that scattered workflow costs you more than time.",{"src":6296},"https://images.unsplash.com/photo-1544725121-be3bf52e2dc8?w=640&h=360&fit=crop",{},"/blog/dashboard-fatigue-is-killing-your-productivity",{"title":6146,"description":6294},"3.blog/6.dashboard-fatigue-is-killing-your-productivity","UI87vXAthuxTKu77ziOX-1ItGmsC8xXpGWuniT2kjsI",{"id":6303,"title":6304,"authors":6305,"badge":6308,"body":6309,"date":6477,"description":6478,"extension":242,"image":6479,"meta":6480,"navigation":246,"path":6481,"seo":6482,"stem":6483,"__hash__":6484},"posts/3.blog/7.overlay-metrics-from-different-sources.md","How to Overlay Metrics from Different Sources on One Chart",[6306],{"name":119,"to":120,"avatar":6307},{"src":122},{"label":2227},{"type":126,"value":6310,"toc":6463},[6311,6315,6318,6321,6325,6328,6331,6334,6338,6341,6345,6348,6352,6355,6359,6362,6365,6369,6372,6375,6379,6382,6408,6411,6415,6418,6432,6435,6439,6442,6446,6455],[129,6312,6314],{"id":6313},"why-overlaying-metrics-matters","Why Overlaying Metrics Matters",[134,6316,6317],{},"Every business tool shows you its own data in isolation. Stripe shows revenue. Google Search Console shows clicks. Your CRM shows leads. But the questions that actually drive growth are cross-source questions: Does my organic traffic drive revenue? Is there a lag between content publishing and signups? Which marketing channel actually converts?",[134,6319,6320],{},"To answer these questions, you need to see metrics from different sources on the same time axis. That's what overlaying means: putting two or more data series on a single chart so the patterns between them become visible.",[129,6322,6324],{"id":6323},"the-normalization-problem","The Normalization Problem",[134,6326,6327],{},"The biggest challenge with overlaying metrics is scale. Your Stripe MRR might be $45,000 while your Search Console clicks are 150,000. If you plot them on the same Y-axis with raw values, one line will be a flat line at the bottom while the other dominates the chart.",[134,6329,6330],{},"The solution is normalization. TotalKPI automatically normalizes all data sources in a combined view to a 0-100% scale. Each metric's minimum becomes 0% and its maximum becomes 100%. This makes the shapes of the curves directly comparable, regardless of the underlying units.",[134,6332,6333],{},"A spike in traffic that happens at the same time as a spike in revenue becomes immediately visible, even if one is measured in dollars and the other in page views.",[129,6335,6337],{"id":6336},"step-1-add-your-first-data-source","Step 1: Add Your First Data Source",[134,6339,6340],{},"Start by adding the metric you care about most. For most SaaS founders, that's revenue.",[306,6342,6344],{"id":6343},"from-a-csv","From a CSV",[134,6346,6347],{},"Export your Stripe data as a CSV with two columns: date and value. In TotalKPI, create a new data source and paste or upload the CSV. The parser auto-detects date formats and currency symbols.",[306,6349,6351],{"id":6350},"from-an-api","From an API",[134,6353,6354],{},"If you want live data, add an API data source. Enter the endpoint URL, set your authentication headers, and configure a JSONPath expression to extract the value you want. Set a polling interval (every hour, every 6 hours, daily) and TotalKPI will keep the data current automatically.",[129,6356,6358],{"id":6357},"step-2-add-a-second-source-from-a-different-tool","Step 2: Add a Second Source from a Different Tool",[134,6360,6361],{},"Now add the metric you want to compare against. If your first source was Stripe revenue, try adding Google Search Console clicks or your email subscriber count.",[134,6363,6364],{},"The key is that these sources come from completely different tools. That's the whole point. You're combining data that normally lives in separate dashboards.",[129,6366,6368],{"id":6367},"step-3-create-a-combined-view","Step 3: Create a Combined View",[134,6370,6371],{},"With two or more data sources in your workspace, create a combined view. Select which sources to include. TotalKPI immediately renders them on the same chart with automatic normalization.",[134,6373,6374],{},"Each source gets its own color and you can see both lines moving across the same time axis. Hover over any point to see the exact values for each source at that moment in time.",[129,6376,6378],{"id":6377},"reading-the-correlation-coefficient","Reading the Correlation Coefficient",[134,6380,6381],{},"Every combined view automatically calculates the Pearson correlation coefficient between the included metrics. This is a number between -1 and +1:",[154,6383,6384,6390,6396,6402],{},[157,6385,6386,6389],{},[160,6387,6388],{},"+0.7 to +1.0",": Strong positive correlation. The metrics move together consistently.",[157,6391,6392,6395],{},[160,6393,6394],{},"+0.4 to +0.7",": Moderate positive correlation. There's a relationship, but other factors are involved.",[157,6397,6398,6401],{},[160,6399,6400],{},"0 to +0.4",": Weak or no correlation. The metrics don't have a meaningful relationship.",[157,6403,6404,6407],{},[160,6405,6406],{},"-0.4 to -1.0",": Negative correlation. When one goes up, the other tends to go down.",[134,6409,6410],{},"A correlation of 0.85 between your organic traffic and revenue means that historically, when traffic increases, revenue follows closely. That's actionable information for deciding where to invest your marketing budget.",[129,6412,6414],{"id":6413},"real-example-stripe-mrr-vs-organic-traffic","Real Example: Stripe MRR vs Organic Traffic",[134,6416,6417],{},"Imagine you overlay your Stripe MRR with Google Search Console clicks for the past 6 months. The combined view shows:",[154,6419,6420,6423,6426,6429],{},[157,6421,6422],{},"Both lines trend upward over the period",[157,6424,6425],{},"Traffic spikes precede revenue spikes by about 2 weeks",[157,6427,6428],{},"A dip in traffic in October correlates with a revenue dip in early November",[157,6430,6431],{},"Pearson correlation: 0.78 (strong positive)",[134,6433,6434],{},"This tells you that organic search is likely a meaningful revenue driver for your business, and that there's a roughly two-week lag between traffic changes and revenue impact. Without the overlay, you'd see \"traffic went up\" in Search Console and \"revenue went up\" in Stripe, but the timing relationship would be invisible.",[129,6436,6438],{"id":6437},"beyond-two-sources","Beyond Two Sources",[134,6440,6441],{},"Combined views aren't limited to two sources. Add your ad spend, your email open rates, your support ticket volume. The more metrics you overlay, the richer the picture becomes. You might discover that support tickets spike two weeks before churn increases, or that email campaigns correlate with revenue more strongly than paid ads.",[129,6443,6445],{"id":6444},"try-it-with-your-own-data","Try It With Your Own Data",[134,6447,6448,6449,6454],{},"The best way to understand the power of overlaying metrics is to try it with your own numbers. ",[160,6450,6451],{},[270,6452,506],{"href":503,"rel":6453},[505]," and connect your first two data sources. The correlation might surprise you.",[134,6456,510,6457,6462],{},[160,6458,6459],{},[270,6460,517],{"href":515,"rel":6461},[505]," to see overlay charts in action with sample SaaS data.",{"title":232,"searchDepth":233,"depth":233,"links":6464},[6465,6466,6467,6471,6472,6473,6474,6475,6476],{"id":6313,"depth":233,"text":6314},{"id":6323,"depth":233,"text":6324},{"id":6336,"depth":233,"text":6337,"children":6468},[6469,6470],{"id":6343,"depth":526,"text":6344},{"id":6350,"depth":526,"text":6351},{"id":6357,"depth":233,"text":6358},{"id":6367,"depth":233,"text":6368},{"id":6377,"depth":233,"text":6378},{"id":6413,"depth":233,"text":6414},{"id":6437,"depth":233,"text":6438},{"id":6444,"depth":233,"text":6445},"2026-03-10T00:00:00.000Z","A step-by-step guide to combining data from Stripe, Google Search Console, spreadsheets, and APIs into a single time-series visualization.",{"src":244},{},"/blog/overlay-metrics-from-different-sources",{"title":6304,"description":6478},"3.blog/7.overlay-metrics-from-different-sources","QrojY5kpe4CEig1M9E7mzWIxBfseEXK4TOcN8Fq4ugk",{"id":6486,"title":6487,"authors":6488,"badge":6491,"body":6492,"date":6711,"description":6712,"extension":242,"image":6713,"meta":6714,"navigation":246,"path":6715,"seo":6716,"stem":6717,"__hash__":6718},"posts/3.blog/8.correlate-business-metrics-guide.md","How to Find Real Correlations in Your Business Data (Without a Data Team)",[6489],{"name":256,"to":120,"avatar":6490},{"src":258},{"label":5578},{"type":126,"value":6493,"toc":6692},[6494,6498,6501,6504,6523,6526,6529,6533,6536,6542,6548,6554,6557,6561,6564,6568,6571,6575,6578,6582,6585,6589,6592,6596,6599,6625,6629,6633,6636,6640,6643,6645,6648,6650,6653,6657,6677,6681,6684],[129,6495,6497],{"id":6496},"what-correlation-actually-means-simply","What Correlation Actually Means (Simply)",[134,6499,6500],{},"Correlation measures whether two things tend to move together. When your organic traffic goes up, does your revenue also go up? If so, those metrics are positively correlated.",[134,6502,6503],{},"The standard measurement is the Pearson correlation coefficient, which produces a number between -1 and +1:",[154,6505,6506,6512,6517],{},[157,6507,6508,6511],{},[160,6509,6510],{},"+1"," means the two metrics move in perfect lockstep",[157,6513,6514,6516],{},[160,6515,5613],{}," means there's no relationship at all",[157,6518,6519,6522],{},[160,6520,6521],{},"-1"," means they move in perfect opposite directions",[134,6524,6525],{},"In practice, you'll rarely see values at the extremes. A correlation of 0.7 or above is considered strong. Between 0.4 and 0.7 is moderate. Below 0.4 is weak.",[134,6527,6528],{},"The important thing to understand is that correlation tells you \"these things move together\" but not \"one causes the other.\" That distinction matters, and we'll come back to it.",[129,6530,6532],{"id":6531},"correlation-vs-causation-the-practical-guide","Correlation vs Causation: The Practical Guide",[134,6534,6535],{},"You've heard \"correlation is not causation\" a thousand times. But as a business operator, you need to make decisions with imperfect information. Here's the practical framework:",[134,6537,6538,6541],{},[160,6539,6540],{},"Correlation gives you hypotheses."," If you discover that your blog traffic is strongly correlated with trial signups (0.82), that doesn't prove blogging causes signups. But it gives you a very strong signal worth investigating. Combined with what you know about your funnel, it's probably actionable.",[134,6543,6544,6547],{},[160,6545,6546],{},"Look for timing."," If metric A consistently moves before metric B, the causal direction is more likely A to B. If your blog traffic spikes two weeks before your trial signups spike, that's a stronger signal than if they spike simultaneously.",[134,6549,6550,6553],{},[160,6551,6552],{},"Test with interventions."," Increase your blog output for a month and watch what happens to signups. If the correlation holds and the timing is consistent, you have strong practical evidence of causation.",[134,6555,6556],{},"The point isn't academic certainty. It's making better decisions than \"I think content marketing is working, but I'm not sure.\"",[129,6558,6560],{"id":6559},"the-metrics-most-worth-correlating","The Metrics Most Worth Correlating",[134,6562,6563],{},"Not all metric comparisons are useful. Here are the combinations that tend to reveal the most actionable insights:",[306,6565,6567],{"id":6566},"revenue-traffic-sources","Revenue + Traffic Sources",[134,6569,6570],{},"Which traffic sources actually drive paying customers? Overlay your Stripe revenue with organic traffic, paid traffic, referral traffic, and direct traffic separately. You might discover that organic traffic correlates at 0.75 with revenue while paid traffic correlates at only 0.3.",[306,6572,6574],{"id":6573},"churn-support-tickets","Churn + Support Tickets",[134,6576,6577],{},"Does support volume predict churn? Many SaaS businesses find a strong lagged correlation: a spike in support tickets this week predicts higher churn in 2-4 weeks. If you can see this pattern, you can intervene before the churn happens.",[306,6579,6581],{"id":6580},"marketing-spend-signups","Marketing Spend + Signups",[134,6583,6584],{},"Are your ad dollars actually working? Overlay your Google Ads or Meta Ads spend with new signups over the same period. If the correlation is weak, your budget might be better spent elsewhere.",[306,6586,6588],{"id":6587},"feature-usage-retention","Feature Usage + Retention",[134,6590,6591],{},"If you track product metrics, overlay feature adoption rates with retention rates. Features that correlate strongly with retention are the ones to invest in and promote.",[129,6593,6595],{"id":6594},"finding-correlations-in-totalkpi","Finding Correlations in TotalKPI",[134,6597,6598],{},"The process is straightforward:",[771,6600,6601,6607,6613,6619],{},[157,6602,6603,6606],{},[160,6604,6605],{},"Add your data sources."," Import each metric as a separate data source via CSV, API connection, or webhook.",[157,6608,6609,6612],{},[160,6610,6611],{},"Create a combined view."," Select the two (or more) metrics you want to compare.",[157,6614,6615,6618],{},[160,6616,6617],{},"Read the correlation."," TotalKPI automatically calculates and displays the Pearson coefficient for every combined view. No configuration needed.",[157,6620,6621,6624],{},[160,6622,6623],{},"Look at the chart."," The visual overlay often reveals patterns that the number alone doesn't capture. You might notice that the correlation is strong in Q1-Q3 but breaks down in Q4 (seasonal effects), or that one metric leads the other by a consistent time lag.",[129,6626,6628],{"id":6627},"interpreting-your-results","Interpreting Your Results",[306,6630,6632],{"id":6631},"strong-correlation-above-07","Strong Correlation (above 0.7)",[134,6634,6635],{},"These metrics are closely linked. Investigate the causal mechanism. Is it direct (traffic leads to signups leads to revenue) or indirect (both are driven by a third factor like seasonality)?",[306,6637,6639],{"id":6638},"moderate-correlation-04-to-07","Moderate Correlation (0.4 to 0.7)",[134,6641,6642],{},"There's a relationship, but other factors are involved. This is common in business data. A moderate correlation between ad spend and revenue might mean ads work, but other channels also contribute. Still valuable for directional decisions.",[306,6644,3374],{"id":3373},[134,6646,6647],{},"These metrics aren't meaningfully connected. This is itself an insight. If your social media activity has near-zero correlation with any revenue metric, that tells you something about where your time should go.",[306,6649,3386],{"id":3385},[134,6651,6652],{},"Don't ignore these. A negative correlation between your pricing page visits and your trial conversion rate might indicate that something on the pricing page is turning people away. A negative correlation between deploy frequency and customer satisfaction is a signal to slow down and focus on quality.",[129,6654,6656],{"id":6655},"three-correlations-most-saas-founders-miss","Three Correlations Most SaaS Founders Miss",[771,6658,6659,6665,6671],{},[157,6660,6661,6664],{},[160,6662,6663],{},"Blog publish cadence vs trial signups (3-week lag)."," Most founders check whether individual blog posts drive traffic. Fewer check whether their overall publishing cadence correlates with trial signups over time. The lag is usually 2-4 weeks, which makes it invisible without overlaying the data.",[157,6666,6667,6670],{},[160,6668,6669],{},"Support ticket sentiment vs churn (2-week lag)."," Not just volume, but the nature of support requests. A spike in \"how do I cancel\" or \"this doesn't work\" tickets is a leading indicator of churn that predicts the problem before it shows up in your revenue numbers.",[157,6672,6673,6676],{},[160,6674,6675],{},"Pricing page visits vs revenue (inverse on high-traffic days)."," Some founders discover that their highest-traffic days to the pricing page have the lowest conversion rates. The traffic might be coming from a channel that attracts window-shoppers, not buyers.",[129,6678,6680],{"id":6679},"start-finding-your-correlations","Start Finding Your Correlations",[134,6682,6683],{},"The insights hiding in your data are specific to your business. The only way to find them is to overlay your metrics and look.",[134,6685,6686,6691],{},[160,6687,6688],{},[270,6689,795],{"href":503,"rel":6690},[505]," and connect your first data sources. TotalKPI calculates correlations automatically. You might discover something that changes how you allocate your next month's budget.",{"title":232,"searchDepth":233,"depth":233,"links":6693},[6694,6695,6696,6702,6703,6709,6710],{"id":6496,"depth":233,"text":6497},{"id":6531,"depth":233,"text":6532},{"id":6559,"depth":233,"text":6560,"children":6697},[6698,6699,6700,6701],{"id":6566,"depth":526,"text":6567},{"id":6573,"depth":526,"text":6574},{"id":6580,"depth":526,"text":6581},{"id":6587,"depth":526,"text":6588},{"id":6594,"depth":233,"text":6595},{"id":6627,"depth":233,"text":6628,"children":6704},[6705,6706,6707,6708],{"id":6631,"depth":526,"text":6632},{"id":6638,"depth":526,"text":6639},{"id":3373,"depth":526,"text":3374},{"id":3385,"depth":526,"text":3386},{"id":6655,"depth":233,"text":6656},{"id":6679,"depth":233,"text":6680},"2026-03-15T00:00:00.000Z","You don't need SQL or a BI tool to discover which metrics drive your growth. Here's a practical guide to finding meaningful correlations in your business data.",{"src":5303},{},"/blog/correlate-business-metrics-guide",{"title":6487,"description":6712},"3.blog/8.correlate-business-metrics-guide","Y-qLupzzZHUS2vmbQyR5wrCJvRnAzzCvBOmX0ZPocwY",{"id":6720,"title":6721,"authors":6722,"badge":6725,"body":6726,"date":6919,"description":6920,"extension":242,"image":6921,"meta":6922,"navigation":246,"path":6923,"seo":6924,"stem":6925,"__hash__":6926},"posts/3.blog/9.combine-stripe-google-analytics-data.md","How to Combine Stripe and Google Analytics Data on One Dashboard",[6723],{"name":119,"to":120,"avatar":6724},{"src":122},{"label":1459},{"type":126,"value":6727,"toc":6899},[6728,6732,6735,6738,6741,6743,6746,6766,6768,6772,6775,6779,6782,6785,6789,6793,6796,6800,6803,6805,6807,6818,6821,6825,6829,6832,6835,6839,6842,6845,6849,6852,6855,6859,6862,6882,6884,6892],[129,6729,6731],{"id":6730},"the-problem-two-dashboards-one-question","The Problem: Two Dashboards, One Question",[134,6733,6734],{},"Every SaaS founder has the same question: which traffic is actually driving revenue?",[134,6736,6737],{},"Stripe tells you how much money came in. Google Analytics tells you how many people visited and from where. But neither tool tells you how they connect. You can see that revenue went up last month and that organic traffic went up last month, but was it the organic traffic that drove the revenue? Or was it the email campaign you ran? Or the Product Hunt mention?",[134,6739,6740],{},"To answer that question, you need both datasets on the same chart, on the same time axis, with comparable scales.",[129,6742,1478],{"id":1477},[134,6744,6745],{},"When you overlay Stripe revenue with Google Analytics traffic data, several patterns typically emerge:",[154,6747,6748,6754,6760],{},[157,6749,6750,6753],{},[160,6751,6752],{},"Lag time."," Most businesses see a 1-3 week delay between traffic increases and revenue increases. Visitors don't convert on day one. Understanding your specific lag helps you set realistic expectations for marketing investments.",[157,6755,6756,6759],{},[160,6757,6758],{},"Channel effectiveness."," If organic traffic correlates strongly with revenue but paid traffic doesn't, that's a clear signal about where to invest. Many founders are surprised to find that their highest-traffic channel isn't their highest-converting one.",[157,6761,6762,6765],{},[160,6763,6764],{},"Seasonal patterns."," Traffic and revenue may have different seasonal curves. E-commerce tends to see traffic rise before revenue (window shopping vs buying). SaaS tends to see them move more closely together.",[129,6767,1538],{"id":1537},[306,6769,6771],{"id":6770},"option-1-csv-export","Option 1: CSV Export",[134,6773,6774],{},"The fastest way to get started is with a CSV. Export your Stripe revenue data with dates and amounts. In TotalKPI, create a new data source and import the CSV. The parser auto-detects currency symbols and date formats.",[306,6776,6778],{"id":6777},"option-2-api-polling","Option 2: API Polling",[134,6780,6781],{},"For live, auto-updating data, connect to the Stripe API. Create an API data source in TotalKPI with your Stripe API endpoint. Set the authorization header with your API key, configure a JSONPath expression to extract the value you want (e.g., MRR, new customers, or payment volume), and set a polling interval.",[134,6783,6784],{},"TotalKPI polls the endpoint on your schedule and appends new data points automatically. Your revenue chart is always current without manual exports.",[129,6786,6788],{"id":6787},"importing-google-analytics-data","Importing Google Analytics Data",[306,6790,6792],{"id":6791},"csv-export","CSV Export",[134,6794,6795],{},"Export your Google Analytics session data or traffic-by-source data as a CSV. The key columns are date and the metric you want to track (sessions, users, pageviews, or a specific channel's traffic).",[306,6797,6799],{"id":6798},"api-connection","API Connection",[134,6801,6802],{},"Connect to the Google Analytics Data API to pull traffic data automatically. Configure the endpoint, authentication, and JSONPath extraction for the specific metric you want. Set polling to daily for traffic data.",[129,6804,3630],{"id":3629},[134,6806,1557],{},[771,6808,6809,6812,6815],{},[157,6810,6811],{},"Click \"Add Combined View\"",[157,6813,6814],{},"Select your Stripe revenue source and your Google Analytics traffic source",[157,6816,6817],{},"TotalKPI immediately renders both on the same chart",[134,6819,6820],{},"The magic happens automatically. Your $45,000 MRR and your 150,000 monthly sessions are normalized to a 0-100% scale so the patterns are directly comparable. The Pearson correlation coefficient is calculated and displayed.",[129,6822,6824],{"id":6823},"what-the-overlay-reveals","What the Overlay Reveals",[306,6826,6828],{"id":6827},"the-revenue-lag","The Revenue Lag",[134,6830,6831],{},"Most SaaS businesses see a lag between traffic changes and revenue changes. When you overlay the data, look for whether traffic peaks consistently appear 1-3 weeks before revenue peaks. If they do, you've found your acquisition-to-conversion cycle time.",[134,6833,6834],{},"This is incredibly valuable for planning. If you know that a traffic increase takes two weeks to show up in revenue, you can plan your content calendar and ad spend accordingly. You'll also stop panicking when you see a traffic spike that hasn't converted yet.",[306,6836,6838],{"id":6837},"which-traffic-converts","Which Traffic Converts",[134,6840,6841],{},"If Google Analytics lets you export traffic by source, create separate data sources for organic, paid, referral, and direct traffic. Overlay each one separately with Stripe revenue. The one with the highest correlation is likely your most effective acquisition channel.",[134,6843,6844],{},"Many founders discover that organic traffic has a much stronger correlation with revenue than paid traffic, despite paid traffic being more expensive to acquire. That's actionable intelligence for budget allocation.",[306,6846,6848],{"id":6847},"anomaly-detection","Anomaly Detection",[134,6850,6851],{},"Overlaying the data makes anomalies stand out. If traffic stays flat but revenue drops, the problem is likely conversion or churn, not acquisition. If traffic drops but revenue holds steady, your existing customers are stable but your acquisition pipeline has a problem.",[134,6853,6854],{},"These patterns are invisible when the data lives in separate dashboards.",[129,6856,6858],{"id":6857},"using-this-insight","Using This Insight",[134,6860,6861],{},"Once you've identified the relationship between traffic and revenue:",[154,6863,6864,6870,6876],{},[157,6865,6866,6869],{},[160,6867,6868],{},"Double down on what converts."," If organic traffic correlates strongly with revenue, invest more in SEO and content.",[157,6871,6872,6875],{},[160,6873,6874],{},"Set realistic timelines."," If there's a 3-week lag, plan campaigns 3 weeks before you need the revenue impact.",[157,6877,6878,6881],{},[160,6879,6880],{},"Add annotations."," Mark campaign launches, product changes, and pricing updates on your chart. Over time, you'll build a visual history of what moved the needle.",[129,6883,6445],{"id":6444},[134,6885,6886,6891],{},[160,6887,6888],{},[270,6889,506],{"href":503,"rel":6890},[505]," and connect your Stripe and Google Analytics data. The overlay takes about 5 minutes to set up and the insights last as long as you track them.",[134,6893,510,6894,3979],{},[160,6895,6896],{},[270,6897,517],{"href":515,"rel":6898},[505],{"title":232,"searchDepth":233,"depth":233,"links":6900},[6901,6902,6903,6907,6911,6912,6917,6918],{"id":6730,"depth":233,"text":6731},{"id":1477,"depth":233,"text":1478},{"id":1537,"depth":233,"text":1538,"children":6904},[6905,6906],{"id":6770,"depth":526,"text":6771},{"id":6777,"depth":526,"text":6778},{"id":6787,"depth":233,"text":6788,"children":6908},[6909,6910],{"id":6791,"depth":526,"text":6792},{"id":6798,"depth":526,"text":6799},{"id":3629,"depth":233,"text":3630},{"id":6823,"depth":233,"text":6824,"children":6913},[6914,6915,6916],{"id":6827,"depth":526,"text":6828},{"id":6837,"depth":526,"text":6838},{"id":6847,"depth":526,"text":6848},{"id":6857,"depth":233,"text":6858},{"id":6444,"depth":233,"text":6445},"2026-03-20T00:00:00.000Z","See the direct relationship between your website traffic and revenue by overlaying Stripe payment data with Google Analytics metrics on a single chart.",{"src":6009},{},"/blog/combine-stripe-google-analytics-data",{"title":6721,"description":6920},"3.blog/9.combine-stripe-google-analytics-data","eRKIQBtIe7A3scgOruXx0VeYlpp2C9dh3gKw4CW8YjI"]