Work with me

Revenue & Analytics Reconciliation Diagnostic

A paid, scoped engagement to reconcile revenue and analytics numbers that disagree across RevenueCat, Mixpanel/Amplitude, and App Store Connect.

The situation this is for

You pull revenue for the same period from RevenueCat, your analytics tool (Mixpanel or Amplitude), and App Store Connect, and the three numbers don't match. Nobody on the team is sure which one to trust, so nobody can make a call that depends on it: a board update, a marketing spend decision, a "is this feature actually working" call.

Who this is for, and who it isn't

This is for you if

  • You have a live iOS app with real subscription or in-app-purchase revenue: RevenueCat, your analytics tool, and App Store Connect are all already wired up and reporting numbers, they just don't agree.
  • You've already looked at the three numbers side by side and confirmed there really is a gap, not just a hunch that something's off.
  • Someone needs to act on the correct number soon (finance, a board update, a spend decision), and "we're not sure" isn't good enough anymore.

This isn't for you if

  • Your app is pre-revenue or has no live transactions yet. There's nothing to reconcile.
  • You haven't read the free diagnostic write-up yet. Most discrepancies are one of the five causes it walks through. Start there, for free, before paying anyone to look at yours.
  • You want a general analytics audit unrelated to revenue reconciliation. Event taxonomy and funnel instrumentation work is something I do, but as its own engagement, not folded into this one. Ask and I will tell you which of the two you actually need.
"Our RevenueCat dashboard says one number, our analytics tool says another, and App Store Connect says a third, and finance is asking which one goes in the deck."

The method

Five checks, run in order against your actual numbers. Each one either explains the delta or rules itself out before moving to the next: the same structure as the free write-up, just applied to your specific app instead of explained in general.

  1. 01

    Gross vs. net commission reporting

    Confirm whether each destination (RevenueCat, your analytics tool, App Store Connect) is configured to report gross revenue or net-of-commission revenue, and quantify how much of the gap that alone explains.

  2. 02

    USD normalization vs. local currency

    Check which source normalizes to USD at transaction time vs. report time, which FX rate each one uses, and the resulting drift for markets with meaningful non-USD volume.

  3. 03

    Trial, pending and renewal event-type mismatches

    Map which event types each destination counts as "revenue" and at what moment. Find where the same transaction is double-counted in one source and dropped in another.

  4. 04

    Server-side receipt validation vs. client-fired events

    Separate what comes from server-side receipt validation (RevenueCat, App Store Connect) from what comes from client-fired SDK events, and quantify how much of the gap is dropped or late client events.

  5. 05

    Proceeds vs. sales timing

    Compare the date each source books a transaction against (sale date vs. proceeds/payout date), and quantify how much of the delta is pure timing rather than a real discrepancy.

What you receive
ScopeOne app, one revenue-reporting discrepancy
TurnaroundSet once scope is confirmed, not fixed here
DeliverableWritten findings report
Capacity2 at a time

A written findings report: which of the five checks above explains your delta, the size of each contributing factor where it can be quantified, and which number to treat as ground truth: for finance, and separately for growth/marketing decisions, since those aren't always the same number.

What's explicitly out of scope
  • One app, one revenue-reporting discrepancy per engagement, not a portfolio audit across multiple apps.
  • Finding the cause, not implementing the fix. The report names what to change and why, so your own team can act on it without me. Actually building the change is a separate, separately-scoped project.
  • Not a general analytics audit, and not an ongoing retainer. See engagement shapes below.
How this usually goes

This diagnostic is the first paid step, not the only one. It sits between the free write-up above and anything larger:

  • Free: the write-up and the reasoning, no email required.
  • Paid, fixed scope: this diagnostic (one app, one discrepancy, a written report).
  • After the diagnostic, three ways forward, listed by how much of it lands on me. You pick. I will say which one I think fits, but the findings decide it, not a package chosen in advance:
    • I implement the fix. Scoped project, I write the instrumentation and verify it.
    • Your team implements it and I stay alongside. Weekly sessions, your engineers do the work.
    • Monthly embedded work, a set number of days a month, if measurement is an ongoing problem rather than one discrepancy.
The disqualification promise

If I'm not the right person for what you need, I'll say so: on the call, before any money changes hands. Specifically:

  • If your numbers disagree for a reason outside the five checks above (a currency I haven't seen, a platform I don't know), I'll tell you that directly rather than take the engagement anyway.
  • If this is actually a data-engineering or warehouse problem rather than a revenue-reconciliation one, I'll say so and point you at what it actually is.
  • If the gap turns out to be small enough that it isn't worth paying to investigate, I'll tell you that too, even though it means no engagement.

I take two clients at a time, because I do the work myself, not a retainer team, not outsourced analysis. That's a fact about how this works, not a countdown.

Questions before you book

Why pay for this instead of reading the free write-up?

The free write-up covers the five general causes. This engagement applies them to your actual numbers and tells you which one (or combination) is yours, quantified.

What if none of the five checks explain it?

Then the engagement did not do its job, and I refund it. Tell me the report was not useful and I send the money back. No form, no argument. That is the whole guarantee, and it is the same answer whether the cause turned out to be something rarer than the five or whether I simply did not find it.

Do you need production access or credentials?

No production access, and no credentials that can change anything. Read-only viewer access to the dashboards is the fastest route: RevenueCat, your product analytics, and App Store Connect. If your policy does not allow that, exported reports and CSVs work too. It is slower, and it is a perfectly reasonable thing to insist on.

What does this cost?

Not published here: that number comes in conversation, once the scope is confirmed against your actual situation.

No price is published here: that number comes in conversation, once the scope is real.

Book a call →