VoidhashDocs
DevelopersHelp centerGuidesAPI reference
Dashboard
Help center
Get started
Get access to Studio
Find your way around Studio
Glossary
Files and bots
Files and boards
Bots
Analytics
Analytics overview
Reports
Chart reference
Metric definitions
Insights and dashboards
Query with VoidQL
Alerts
Check your data
Ads
Ad measurement
Connect Meta Ads
Send purchases to Meta
Ads reports
People
Find and help a person
Refunds and cancellations
Products
Set up products and perks
Paywalls
Design a paywall
Prices and buttons
Design for every device
Onboarding flows
Translate a paywall
Fonts and images
Paywall components
Build and deploy
Paywall locations
A/B testing
Feature flags
A/B tests
Automations
Automations
Push notifications
Settings
Payment providers
Manage projects and teams
Members and roles
SSO and directory sync
Notices
Plans and billing
Audit log
Your account
Help
FAQ
Troubleshooting

Ads reports

Compare what your ad platform reports with the signups, payers and revenue Voidhash measured.

The Ads pages set your ad spend against the people each campaign, ad set and ad brought in and what they paid. They need a connected Meta ad account.

Find which campaign pays back

  1. Open Ads → Cohorts and click the ROAS tab.
  2. Set the Date chip to Last 13 weeks (the default) or Last 90 days, so most groups have had time to pay.
  3. Next to Cumulative ROAS, click Campaign.
  4. Read the Payback day table: Payback shows the day each campaign's revenue passed its spend, or Not yet.

A campaign with an early payback day earns back its spend fastest. For one that says Not yet, ROAS by day 365 and Payback chance (when shown) say whether it's likely to pay back within a year. Credit follows the rules in Ad measurement.

Reported, measured and estimated

Every report keeps three kinds of numbers apart and never adds one to another:

KindSourceExamples
ReportedMeta, with its own attributionSpend, impressions, link clicks, results, Meta's purchase value and ROAS
MeasuredVoidhash, from the people credited to the adVisits, installs, signups, trials, payers, net revenue, cost per payer, True ROAS
EstimatedVoidhash's estimate of what it couldn't seeEstimated revenue, Estimated ROAS

ROAS, return on ad spend, is revenue ÷ spend: 150% means each dollar of spend brought back $1.50. True ROAS is measured net revenue ÷ spend. Each person's revenue counts once, on the ad credited with their signup. Meta's ROAS can count one purchase for several ads, so the two often differ.

Estimated revenue is an upper estimate. A visitor who declines analytics consent or leaves before the page loads sends no visit, so measured revenue is a floor. The estimate assumes web clicks without a visit converted like those with one. It needs at least 30 measured visits, isn't made for app store ads, and never exceeds the revenue of unattributed people in the range.

Controls

Every Ads page has a Date chip: Today, Yesterday, Last 7 days (the default), Last 14 days, Last 30 days, Last 90 days or Last 13 weeks, except Cohorts, which offers Last 30 days, Last 90 days and Last 13 weeks (the default). Periods are compared with the period before unless you choose No comparison. The header shows when the accounts last synced, and warns when a sync failed or is overdue.

Money is in your reporting currency, or, until you choose one, the ad accounts' currency (US dollars when they differ). Days follow the accounts' time zone, or UTC when they differ. Revenue counts production purchases.

Numbers for the latest days can still rise: today's spend is still accruing, and new signups keep converting to payers.

Overview

Ads → Overview answers whether your ads pay off.

  • Key conversion (Signup, Trial when your project has trials, or Payer) and the attribution window (1, 7, 14, 30, 60 or 90 days) set how ads are judged. They apply to every Ads report in the project. Changing them needs an admin or the owner; Members see them grayed out.
  • Tiles: Spend, Net revenue, True ROAS (with Meta's ROAS and ROAS in the first 7 days), cost per key conversion, Signups and your key conversion.
  • Needs attention: rejected ads, spending limits almost reached, ad sets marked Learning limited (too few results for Meta to finish optimizing them), ads that don't deliver, failed syncs, account issues, spend without tracking parameters, and creative fatigue (people have seen an ad so often that fewer click it).
  • Funnel by surface: link clicks, visits, installs, signups, trials and payers, with conversion and cost per step. Steps your project doesn't have, such as installs for a web-only product, are left out.
  • Converted on: payers and net revenue by the surface they paid on.
  • By platform: Meta's reported numbers beside Voidhash's measured ones, plus rows for organic, unattributed and other revenue.
  • Top movers and Top creatives by true ROAS or spend.
  • Attribution coverage: the share of revenue traced to a credited touch, why the rest isn't (No touch, Outside the window, No person), and the estimate.
  • What people say brought them: answers to your "How did you hear about us?" question.

The Ads overview: headline numbers, what needs attention, and spend against revenue over timeStart with what needs attention, then spend against revenue

Campaigns

Ads → Campaigns lists performance at the Campaigns, Ad sets or Ads level. Filter by Status and Destination, search by name, and sort by any column. Columns presets choose what to show: Performance, Delivery, Funnel or Attribution, which adds the estimate and returning revenue. A Breakdown splits rows by Placement, Surface, Country, Age, Gender or Device; placement, country, age, gender and device cover the last 28 days. Download the current page as CSV.

Select a campaign, ad set or ad for its details: pacing against budget, payback, and for an ad its preview, tracking parameters, daily trend and, for a video, its hook and hold rates: how many viewers stay past 3 seconds, and how many of those keep watching.

The Campaigns table, with the numbers Meta reports next to the ones Voidhash measuresMeta's numbers sit next to the ones Voidhash measures

Creatives

Ads → Creatives ranks creatives by spend, with status, Link CTR, frequency, cost per payer and True ROAS. Filter by Format: video, image or carousel.

Cohorts

Ads → Cohorts shows when ad spend pays back, by the week or month people were acquired. Choose ROAS, Revenue per payer or Payers, and group by Surface, Platform, Campaign or Ad set.

  • Cumulative charts show each group's metric by days since acquisition.
  • Payback day lists the day each group paid back its spend and, when projections are shown, its ROAS by day 365 and the chance it pays back.
  • Weekly cohorts is a heatmap of each cohort at day 0, 1, 3, 7, 14, 30, 60, 90, 180, 365 and 730. Choose Month in its menu for monthly cohorts.

Dashed lines and ≈ values are projected. Ranges cover 8 of 10 likely outcomes. A hatched cell is Still maturing: some of its people haven't reached that day.

The weekly cohorts heatmap of cumulative return on ad spendEach row is a week's cohort; read across to see payback

If something's off

  • Overview says "No ad platforms connected yet": connect a Meta ad account.
  • Numbers are empty just after connecting: the first sync is still running; the header reads Syncing.
  • Meta and Voidhash disagree: that's expected. Meta can credit one purchase to several ads; Voidhash credits each person once. See Reported, measured and estimated.
  • Today's numbers look low: spend is still accruing and new signups keep converting.

For developers: AI agents and scripts can pull the same reports, and a log of campaign changes, from the CLI, the API and the MCP server (developer docs).

Next steps

  • Ad measurement
  • Send purchases to Meta
  • Metric definitions

Still stuck? Check Troubleshooting, ask us on Discord, or email support@voidhash.com on a paid plan.

Something wrong or missing on this page? Tell us by email or on Discord.

PreviousSend purchases to MetaNextFind and help a person

On this page

Find which campaign pays backReported, measured and estimatedControlsOverviewCampaignsCreativesCohortsIf something's offNext steps