shouldivibecodeit

Should I vibe codeMatomo Cloud?

Run first-party web analytics with goals, campaigns, and user-owned data

First-party analytics you host yourself is the version that actually respects the visitor.

?

Their verdict, the Essential price and the build-time estimate come from their entry, MIT-licensed. Checked 2026-08-03.

Can you build it?asked by canivibecodeit.com ↗KINDAweekend project · multi-day
?

Our verdict, the regret score and everything below it. Editorial and unsponsored — nobody can pay to be moved.

Should you ship it?asked by usSHIP ITgo. worst case you delete a repo.

The honest answer

why the verdict is what it is

Heavier than the minimal trackers because goals and campaigns are real features, but self-hosting keeps the data yours and the compliance story simple.

What actually breaks

not "if". the specific failures.

  • Scope, because goals, funnels and campaign attribution are a different product from counting page views
  • Attribution itself, which requires a model — last touch, first touch, position-based — and every model gives a different answer
  • Sessions, which need a definition: how long is a gap, what ends one, does a new campaign start a new session
  • Cross-device and cross-domain journeys, which are only solvable with an identifier you have decided not to keep
  • The privacy position, since richer analysis pulls toward exactly the identifiers the category exists to avoid
and then, at 3am

You add campaign attribution because you want to know which post brought people in. The first report is convincing and you act on it. Then you notice it uses last touch, so the post that introduced someone to the site gets no credit if they returned later via search — and the search result you were about to stop investing in is the one that closed. The data is correct. The model is a choice you made without noticing you were making it, and it is the model that produced the conclusion.

Is that you?

the verdict is a default, not a law

ship it if
  • You start with counts and add analysis only when you have a specific question
  • Every derived metric states the model behind it
  • You are honest that cross-device journeys are out of reach without identifiers
don’t ship it if
  • You are adding identifiers to enable richer analysis on a privacy-first tool
  • Attribution numbers are presented without naming the model
  • You are rebuilding a full analytics suite rather than answering a question
  • Session boundaries are undefined but session metrics are displayed

If you build it anyway

the checklist, then the prompt that enforces it

  1. Start with counts. Add each analytical feature only when you have a specific decision it would inform — this category grows without limit otherwise.
  2. Name the attribution model wherever a number appears, because the model determines the answer more than the data does.
  3. Define the session boundary explicitly and put it in the interface, since every session metric depends on an arbitrary timeout.
  4. Resist adding identifiers. Richer analysis pulls toward cross-device tracking, and that is the line this category exists on the safe side of.
  5. State plainly what cannot be measured without identifiers rather than approximating it silently.
  6. Prefer self-hosting Matomo over rebuilding it if you want the full feature set — the depth is the product.
the guardrail prompt
Before you build analytics with goals and attribution, apply these and push back if I ask you to break them.

1. Start with page and event counts. For every analytical feature I ask for,
   make me name the decision it would inform. Tell me this category expands
   without limit and that most of the value is in the first ten percent.
2. Whenever you display an attribution number, state the model — last touch,
   first touch, linear, position-based — next to it. Explain that the model
   determines the answer more than the underlying data does, and that choosing
   one silently is how people reach confident wrong conclusions.
3. Define the session timeout explicitly, put it in the interface, and tell me
   every session metric depends on that arbitrary number.
4. Refuse to add a persistent identifier or cross-device tracking. If I ask for
   a cross-device journey, tell me it is not answerable without exactly the
   identifier this tool exists to avoid, and say so in the UI rather than
   approximating.
5. Normalise campaign parameters and referrers into a documented, small set of
   sources.
6. Filter bots before storage, and never persist raw IP or user agent.
7. Set retention and aggregation policy before storing events.
8. If I want the full feature set, tell me to self-host Matomo rather than
   rebuild it — the depth is the product and it is open source.
9. Out of scope unless I ask: heatmaps, session recording, A/B testing, user
   IDs, ecommerce tracking.
paste this before you build — not after something breaks23 lines · 1486 chars

That one keeps you out of trouble. For the prompt that actually builds it, canivibecodeit.com has one.

their build prompt ↗

Or don’t build it

the boring option, and the way back out

just pay for it

$26 a month, or self-hosting the open-source version, is the right answer if you want goals, funnels and attribution — that depth is a product rather than a weekend. A first-party page-view counter you own is the version that is genuinely a good build, and it answers most questions people actually have.

your exit plan, if you already built it

Keep aggregates and the definitions behind them — attribution model, session timeout, bot filter version — since a number without its definition is not comparable to a future one. Self-hosted Matomo has a documented schema, which makes moving toward it a realistic path.

prior art · someone already did this
Umami

Popular open-source privacy-focused web analytics platform.

Questions

Why does the attribution model matter more than the data?

Because the same visits produce different winners under different models. Last touch credits whatever came immediately before the conversion, first touch credits the introduction, and position-based splits it. Each is defensible and they routinely disagree about which channel to invest in — so a number presented without its model is not an answer, it is a choice someone made for you.

Isn't a session a well-defined thing?

No — it is a convention. The common default ends a session after thirty minutes of inactivity, but that number is arbitrary, and choices like whether a new campaign starts a fresh session vary between tools. Every session-based metric inherits that arbitrariness, which is why the timeout belongs in the interface rather than buried in configuration.

did you build it?

Every week, someone ships something they shouldn’t have.

New verdicts, the worst thing that landed in the trap, and the occasional incident report. No other email, ever.

also on the regret index
Umami CloudSHIP IT

Self-hosting analytics is the one case where doing it yourself is also the privacy-correct answer.

PlausibleSHIP IT

Counting page views without cookies is a POST and a table. This one you should own.

Simple AnalyticsSHIP IT

No cookies, no personal data, no banner. Also no reason to pay $20 a month.

last reviewed 2026-08-03 · verdict is editorial and unsponsored · shared entry data from canivibecodeit under MIT · not legal advice