Why Your Analytics Should Run on SQL, Not Predefined Dashboards
Predefined dashboards answer the questions a vendor guessed you would ask. SQL answers the ones your product actually raises. Here is the difference.
Every analytics tool makes a promise the moment you install it: here are your metrics, no setup required. Active users, retention, a funnel or two, all rendered before you write a line of code. It feels like a gift. And for the first month it is.
Then your product asks a question the tool never anticipated, and the gift turns into a cage. You want to know how a specific flow behaves for users who hit a particular milestone, on version 1.4, in Brazil, on weekends. The dashboard does not have a box for that. It was never going to. So you export a CSV and rebuild the answer by hand, and you do it again next week when the question changes slightly. That loop is the real cost of predefined analytics, and almost nobody prices it in when they choose a tool.
This post argues something simple: for any software with logic worth analyzing, whether that is a SaaS app, a mobile product, or a game, your analytics should run on SQL against your own data. Not because SQL is trendy, but because it is the only model that does not force your product to fit the tool.
What predefined dashboards actually are
A predefined dashboard is a frozen decision. Somewhere, a product team looked at thousands of products, guessed the metrics most of them would want, and shipped those as fixed views. That guess is genuinely useful for the common case. Active users are active users. Most teams want a retention curve. Shipping those defaults saves everyone time.
The problem is everything past the common case. Your product has features, a flow, and definitions of “engaged” that are specific to you. A vendor’s predefined dashboard cannot know that a “real” user in your app is one who completed setup and invited a teammate, or that your release cadence means version is the dimension you care about most. For a game it might be the player who crafted an item or cleared the second boss. Either way the dashboard flattens your product into the categories it decided on in advance, and when your question does not map onto those categories, you are stuck.
You can usually filter inside the boxes. You can rarely build a new box. That is the ceiling, and you hit it exactly when the analysis starts to matter.
What changes when you write SQL
SQL flips the model. Instead of picking from metrics a vendor exposed, you describe the question directly against your raw events. The answer to a new question is a new query, not a feature request that may never ship.
Take that question from earlier. With predefined dashboards it is an export job. With SQL it is a few lines:
SELECT
version,
country,
AVG(actions_per_session) AS avg_actions,
COUNT(DISTINCT user_id) AS users
FROM usage_events
WHERE milestone_reached = true
AND EXTRACT(DOW FROM event_time) IN (0, 6)
GROUP BY version, country
ORDER BY version, avg_actions DESC;
That query encodes your definition of the user you care about, your dimensions, and your time window. No predefined dashboard ships that view, because no vendor knew your product has that specific milestone. SQL does not need to know in advance. It only needs your data and your question.
The same flexibility covers the metrics you already track. Retention is a fixed widget in most tools. In SQL it is a query you control, which means you can redefine the cohort whenever your understanding of the product sharpens. (If you build games and retention, DAU, ARPU, and the rest still feel fuzzy, the game KPIs breakdown covers what each one means and how they mislead. The same idea applies to any product, just with different metric names.)
”But I’m a developer, not a data analyst”
This is the real objection, and it used to be fair. SQL had a learning curve, and asking a feature engineer or a designer to write window functions was a hard sell. That barrier is mostly gone.
Modern tools let you describe the question in plain language and generate the query, then drop into the SQL to adjust it by hand when you need precision. You get the floor of “just ask in English” and the ceiling of “write exactly the query I mean,” instead of being trapped between a dashboard that is too rigid and a data stack that is too heavy. The skill required is no longer “know SQL cold.” It is “know what question you are asking,” which is your job anyway.
The point is not that everyone becomes a data engineer. The point is that the question stops being blocked by the tool.
The things SQL gives you that dashboards cannot
A few capabilities fall out of the SQL model that predefined tools structurally cannot match.
- Custom widgets that match your product. Build the exact visualization your flows or economy need, arranged the way you think about your product, instead of the way a template author guessed.
- Real global filters. Slice the whole dashboard by country or version in one move. Comparing regions, or checking a new release against the last one, becomes a toggle instead of an export. (That version-versus-version comparison is one of the most common reasons studios outgrow their first tool, which the comparison of GameAnalytics, PlayFab, and Unity Analytics gets into, though the same wall exists for any software.)
- Contextual slicing. Different segments, plans, or game modes do not each need their own dashboard. Build one and filter to the slice, because the slice is just another column in your data.
- Ownership. It is your data and your query. Nothing about the answer depends on a vendor having anticipated the question.
None of these are exotic. They are the normal consequence of querying your own data directly instead of reading a frozen view of it.
When predefined dashboards are still the right call
To be fair, SQL is not always the answer. If you are a week into your first prototype and you only need to know whether anyone comes back tomorrow, a predefined tool that gives you a retention curve for free is the correct, lazy, good choice. Do not stand up a query layer to answer a question a default dashboard already answers.
The switch makes sense at a specific moment: when you find yourself exporting data to answer questions the tool will not, and you are doing it often enough that the export itself has become the work. That afternoon spent wrestling a CSV out of a dashboard to compute something basic is the signal. It means your questions have outgrown the boxes someone else drew.
The bottom line
Predefined dashboards answer the questions a vendor guessed in advance. That is a fine starting point and a bad finish line. Any product with real logic generates questions no template anticipated, and the only model that keeps up is one where a new question is a new query, not a support ticket.
SQL on your own data is that model. With AI help to write the first draft and full control to refine it, the old excuse about the learning curve is gone. What is left is the part that was always the real work: knowing what you want to ask. Pick the tool that lets you ask it.
Hintway is built around exactly this. You write SQL, by hand or with AI, against your own data, and shape the dashboard to your product instead of bending your product to a dashboard. If you have hit the export-a-CSV wall, that wall is the whole reason it exists.
Ready to see analytics that actually answers your questions?
Get Started Free