Every provider counts things slightly differently. GA4's "sessions" aren't Meta's "sessions," and revenue lives in three places with three shapes. Normalized metrics collapse all of that into one schema so you — and your agent — read a single set of numbers.
The problem with raw provider data
If you pull metrics straight from GA4, Meta, and TikTok, you get three incompatible dashboards. Comparing them means reconciling naming, time zones, attribution windows, and currency by hand. That's vendor-hopping, and it doesn't scale past one site.
What VibesAnalytics normalizes
VibesAnalytics maps each provider's reporting into a shared metric schema:
- Sessions — engaged visits to your site.
- Signups — account or lead creation from your canonical
signup_completedevent. - Revenue — purchase value with currency, reconciled across providers.
- ROAS — return on ad spend, computed per channel.
- Conversion rates — funnel step-to-step rates (e.g. trial → paid).
How to pull them
Your agent calls get_project_metrics for a single project, or get_workspace_insights for everything at once. Both return the normalized schema, so one call gives you sessions, signups, revenue, and ROAS without touching individual ad dashboards.
Why it matters for agents
An agent reasoning over one consistent schema can answer "is revenue up or down this week?" in a single tool call. Feed it three raw provider exports and it spends its context window reconciling formats instead of finding the answer. Normalization is what makes the data agent-readable.
See Tracking Health & Insights for how these normalized metrics get turned into anomaly alerts.