The Real Cost of the Self-Built Data Stack
A worked total cost of ownership for the self-built data stack: extraction, dbt, BI, reverse ETL, the warehouse, and the engineering time that dominates it.
Verity Team
·
June 12, 2026
·
12 min read
The self-built modern data stack is a fine architecture and an underestimated line item. Those two things are both true, and the second one is what this article is about, because the license fees you can look up are roughly half the real bill. The other half is people, and it never appears in the vendor comparison spreadsheet.
To be clear about terms: the modern data stack, as usually assembled, means an extraction tool that copies data out of your ad platforms and store into a cloud warehouse, a transformation framework (almost always dbt) that turns raw tables into clean models, a BI tool for dashboards, and increasingly a reverse ETL tool that pushes segments from the warehouse back into marketing channels. Each piece is good at its job. The question is what the assembly costs to own, so let us price one out properly.
We wrote elsewhere about why the warehouse should sit in your own cloud project. This piece assumes you agree and are deciding how to get there: build the stack yourself, or have it operated for you.
The worked example
Take a brand doing €5M to €10M in annual online revenue, around 50,000 orders a year. Five data sources, which is typical at this size: Meta Ads, Google Ads, GA4, the store platform, and an email platform. The team is a marketing lead, a couple of channel specialists, and one analyst who is good with spreadsheets and learning SQL. No dedicated data engineer yet. The warehouse will be BigQuery.
Everything below uses list prices as of mid 2026. Tool prices are quoted in dollars because that is how the vendors publish them; the totals treat euros and dollars as roughly equivalent, which is close enough for budgeting at this scale.
The license line, itemized
Extraction
Extraction tools in this category mostly price on monthly active rows, or MAR: every distinct row that is inserted, updated, or deleted in your destination during a month counts once. Entry paid tiers start around $500 per month at the first million MAR, with the per-row rate declining as volume grows, list price as of mid 2026.
A million rows sounds like a lot until you look at what marketing data actually is. Ad platforms deliver daily-grain rows per ad, per audience segment, sometimes per device and country. Conversion restatement makes it worse: Meta and Google revise the last few weeks of attributed conversions every day, so rows you already synced keep getting touched. GA4 pulled through a connector arrives as events, and 500,000 events a month is 500,000 rows. Email platforms produce an event row for every send, open, and click.
For this brand, a realistic total across five sources is 1.5M to 3M MAR a month once everything runs. Call it $700 to $1,200 a month, or roughly €9,000 to €14,000 a year. One mitigation worth knowing: GA4 has a native BigQuery export that is free to enable, so you can take that source off the meter if you are willing to work with the raw export schema, which is its own commitment.
Transformation
dbt Cloud's Team plan lists at $100 per developer seat per month as of mid 2026. Two seats, one for the analyst and one for whoever backs them up, is $2,400 a year.
dbt Core is free, and plenty of teams run it that way. The license line goes to zero and the cost moves into operations: you now need somewhere for jobs to run, scheduling, alerting when a model fails at 6 a.m., and someone to upgrade versions. An experienced engineer shrugs at all of that. A team without one, which is the team in this example, should just pay for the seats.
The BI tool
Per-seat pricing, and the seats add up faster than expected because dashboards are only useful if the whole team can open them. List prices as of mid 2026: Power BI Pro at $14 per user per month, Tableau at $75 for a Creator, $42 for an Explorer, and $15 for a Viewer on annual billing. Looker sits at custom enterprise quotes that commonly land in five figures a year, which takes it out of consideration at this size.
For ten people, one builder and nine viewers, budget €2,000 a year at the Power BI end and €5,000 to €6,000 in Tableau territory.
Reverse ETL
Reverse ETL means syncing data out of the warehouse and back into operational tools: pushing a high-LTV customer segment to Meta as a custom audience, or flagging churn risks in the email platform. The standalone vendors in this niche list entry paid plans between roughly $450 and $1,000 a month as of mid 2026, with free tiers that cover a destination or two.
Many brands defer this piece for a year, and that is reasonable. But activation is usually where the warehouse starts paying for itself, so the honest budget includes it eventually: €5,000 to €10,000 a year once you are on a paid plan.
The warehouse itself
The line everyone worries about and the smallest number on the page. For marketing-sized data, BigQuery storage and queries typically cost single-digit euros a month, sometimes low double digits. We did the full worked example for BigQuery costs separately; the short version is that this brand's bill rounds to a coffee. Budget €200 to €600 a year to be safe.
The dominant cost: engineering time
Now the half that never makes the comparison spreadsheet.
The initial build is four to eight weeks of competent data engineering. Connecting the extraction tool is the easy first day. The weeks go into modeling: turning the GA4 export's nested events into sessions and orders, reconciling ad spend across platforms with different attribution windows, deciding what "revenue" means when the store platform and GA4 disagree, building the first marts and dashboards on top. At €600 to €800 a day for a contractor in the Netherlands or Germany, that is €15,000 to €30,000 before anyone has answered a business question.
Then the build ends and the permanent tax begins. This is the part people underestimate, so it deserves specifics:
- Ad platform APIs deprecate versions on their own schedule, and the connector usually handles it, except when it needs a resync that blows through your MAR tier or silently changes a column.
- The GA4 export has moods. Intraday tables disappear when the daily table lands, events arrive late, and a schema that was stable for months grows a new field that breaks a downstream model.
- dbt models drift. The business launches a new market, changes the returns policy, or renames campaigns, and last quarter's clean logic stops matching reality.
- Dashboard requests accumulate. Every new question from marketing is an hour or a day of someone's time, and the queue never empties.
There is also a cost this list cannot show. The hours spent debugging a connector are hours nobody spends analyzing anything, and at a brand with one analyst, pipeline maintenance and insight generation draw from the same person. Stacks at this size do not usually die of a big failure. They die of the analyst quietly going back to spreadsheet exports because the pipeline broke twice in a month and marketing needed numbers on Tuesday.
Across teams at this scale, the ongoing load lands somewhere between 0.3 and 0.5 of a full-time engineer. A mid-level data engineer in the EU costs €70,000 to €90,000 gross, which is €90,000 to €115,000 fully loaded. Take €100,000 as the round number: the maintenance tax is €30,000 to €50,000 a year, every year. Whether it is a fraction of a hire, a contractor on retainer, or your analyst's evenings, someone pays it.
Total cost of ownership
Putting the example together, year one and steady state:
| Line item | Year one | Steady state, annual |
|---|---|---|
| Extraction tool | €9,000 to €14,000 | €9,000 to €14,000 |
| Transformation (dbt Cloud, 2 seats) | €0 to €2,400 | €0 to €2,400 |
| BI tool (10 seats) | €2,000 to €6,000 | €2,000 to €6,000 |
| Reverse ETL | €0 to €6,000 | €5,000 to €10,000 |
| BigQuery | €200 to €600 | €200 to €600 |
| Initial build (people) | €15,000 to €30,000 | €0 |
| Ongoing operation (0.3 to 0.5 FTE) | €20,000 to €35,000 | €30,000 to €50,000 |
| Total | €46,000 to €94,000 | €46,000 to €83,000 |
Two things stand out. First, the people rows are 55 to 70 percent of the total in every scenario. Second, the steady state barely drops from year one, because the maintenance tax replaces the build cost almost exactly. Anyone budgeting the stack from the vendors' pricing pages alone is planning for less than half the real spend.
The table also grows with the business, and not gently. MAR-priced extraction scales with data volume, so adding a channel or doubling order volume moves the extraction line directly. BI seats scale with headcount. The maintenance tax scales with the number of models and dashboards in production, which only ever goes up. Treat the totals above as this year's floor rather than a fixed cost.
When building it yourself is the right call
A fair accounting cuts both ways, and there are situations where the self-built stack wins on merit.
If your sources are unusual, build. Connector catalogs are deep for mainstream tools and shallow everywhere else. A custom ERP, a marketplace with a half-documented API, or a legacy backend will need custom pipeline work no matter who operates the stack, and at that point you want the engineers in-house.
If you have a data team of five or more, build, or rather, you already have. At that headcount the maintenance tax is absorbed into work the team does anyway, and the flexibility of owning every layer outweighs the convenience of a managed service.
And if the warehouse is already central to the whole business, with finance, operations, and ML workloads running on it, marketing data is one more schema in an estate you were maintaining regardless. The marginal cost of self-building is low.
The brand in our example matches none of these. Mainstream sources, no data team, warehouse used for marketing analytics only. For that profile, the €46,000 to €83,000 steady state buys the same outcome a managed service delivers for a fraction of the number.
The managed alternative
The interesting development of the last few years is that you no longer have to choose between owning the architecture and having someone else run it. A managed service can operate the same stack, BigQuery, SQL transforms, a semantic layer for metric definitions, inside your own cloud project. The pipelines are maintained for you, the models are tested and versioned, and the license line consolidates from four vendors into one subscription, starting around €500 a month at this end of the market.
The architecture is identical to what you would have built. The difference is who carries the pager, and whose balance sheet the maintenance tax sits on. The ownership test still applies and is worth running on any managed vendor: the data and the SQL must live in your project, and cancellation must leave both behind.
Where Verity fits
Verity is this managed model. Managed pipelines land your marketing sources in your own BigQuery project, SQLMesh transforms run with tests and lineage, and a semantic layer keeps metric definitions readable instead of buried in tooling. Unlimited users are included, so the per-seat math above stops applying. Subscriptions run from €500 per month; the pricing page has the details.
Frequently asked questions
Is dbt Core really free?
The license is free. Running it in production is not, because you still need job orchestration, alerting, version upgrades, and someone who notices when the 6 a.m. run fails. For a team with an engineer, that overhead is small. For a team without one, dbt Cloud's $100 per seat per month is usually cheaper than the time.
Can I avoid the extraction tool entirely with native exports?
Partially. GA4 exports to BigQuery for free, and some store platforms offer native warehouse feeds. Ad platforms are the gap: Meta and Google Ads have no free warehouse export, so you need either a connector vendor or custom API scripts, and custom scripts put you back on the maintenance treadmill.
What does 0.3 to 0.5 FTE actually look like in practice?
A day or two per week, on average, with high variance. Quiet weeks cost nothing, then a GA4 schema change or an API deprecation eats four days. The average is what belongs in the budget, and at EU data engineering rates it comes to €30,000 to €50,000 a year.
Is a managed service just lock-in with better marketing?
It depends entirely on where the data and code live, which is why that should be your first diligence question. A managed service operating inside your own cloud project leaves every table and model behind if you cancel. One that ingests your data into its own infrastructure is a rented dashboard with extra steps. The exit test separates the two in one question.
Stop Guessing. Start Asking.
Verity turns your data into a conversation. Ask questions in plain language, get trusted answers backed by your actual data.