Blog
Notes from the notch
Notes on building Notch Metrics: the notch itself, how we handle your provider keys, and guides to getting any number you care about onto your Mac.
- 2 min read
Amplitude active users on your Mac
Active users, new users and events from Amplitude, in the MacBook notch. Hover the camera housing to look, move away and it is gone.
- 2 min read
How to calculate average order value from Shopify orders
AOV is sales divided by orders, and almost every chart of it is wrong. Why the headline is not the average of the points, and what moves it.
- 2 min read
How to calculate MRR from Dodo Payments subscriptions
Dodo Payments has no MRR endpoint. Compute it from active subscriptions, normalising each pre-tax recurring amount by its payment frequency.
- 3 min read
How to calculate MRR from Paddle Billing
Paddle Billing has no MRR endpoint. Here is how to compute it from the subscriptions list, including the billing cycle maths most people get wrong.
- 2 min read
How to calculate MRR from the Lemon Squeezy API
Subscriptions, variants and renewal intervals. How to compute Lemon Squeezy MRR, and the JSON:API shape that catches people out.
- 2 min read
How to calculate MRR from the Polar API
Polar has an MRR endpoint, which puts it ahead of most. Here is how to call it, what it counts, and when to compute your own instead.
- 3 min read
How to calculate MRR from the Stripe API
Stripe has no MRR endpoint. Here is how to compute it from the subscriptions list, and why your number will not match the one in Stripe Billing.
- 2 min read
How to count active Lemon Squeezy subscriptions
Seven statuses, and only some of them are customers. What active means in Lemon Squeezy, and why trials make the obvious count ambiguous.
- 2 min read
How to count events in Amplitude by API
The segmentation endpoint, the event filter JSON that must be URL encoded, and why event volume is a billing signal more than a product one.
- 2 min read
How to count new against returning Shopify customers
First-time buyers, lifetime totals and guest checkout. Why the obvious Shopify customer count inflates, and what to use instead.
- 2 min read
How to count new users in GA4
New users depends on a cookie, and consent mode changes what GA4 can see. What the number counts and when it quietly stops being comparable.
- 2 min read
How to count open issues without counting pull requests
GitHub's open_issues_count includes pull requests. Here is why, what it does to your backlog number, and the query that fixes it.
- 2 min read
How to count pageviews and events with PostHog HogQL
Counting events is easy. Knowing what you counted is not, because autocapture puts a lot of things in the same table.
- 2 min read
Dodo Payments revenue in the notch
Revenue, MRR and orders from Dodo Payments in the MacBook notch. Hover the camera housing to look, move away and it is gone.
- 2 min read
GA4 visitors in your MacBook notch
Active users, new users, sessions and page views from Google Analytics 4, in the strip of glass around your Mac's camera.
- 3 min read
How to get a repository's star count from the GitHub API
One field, and then the hard part: why star history needs a different endpoint, a preview header, and more patience than it is worth.
- 3 min read
How to get active users from the GA4 Data API
runReport, the metric names that are not what they were in Universal Analytics, and the de-duplication that makes totals smaller than rows.
- 3 min read
How to get average position and CTR from Search Console
Both are ratios over the window, not averages of daily values. Why a falling CTR can be good news and what average position really describes.
- 3 min read
How to get daily sales totals from the Shopify Admin API
There is no sales endpoint. How to query orders with GraphQL, which money field to sum, and the pagination that bites at scale.
- 2 min read
How to get new users from Amplitude
New users is first-seen, and first-seen depends on when you started tracking. What the number counts, and the backfill that breaks it.
- 2 min read
How to get realtime visitors from Plausible
One endpoint, one integer, and a five-minute window that is not what most people assume. How Plausible counts who is on your site now.
- 2 min read
How to get revenue from the Dodo Payments API
Paging the payments list, which statuses are money, and the live and test host split that makes a good key look like a bad one.
- 2 min read
How to get views and watch time from the YouTube Analytics API
The reports.query endpoint, the ids parameter nobody guesses correctly, and the Pacific timezone that shifts every daily figure.
- 2 min read
GitHub stars in your MacBook notch
Stars, forks, open issues and pull requests from GitHub, in the strip of glass around your Mac's camera. Hover to look, move away and it is gone.
- 2 min read
Lemon Squeezy MRR on your Mac
MRR, revenue, subscriptions and refunds from Lemon Squeezy, in the MacBook notch. Hover to look, move away and it is gone.
- 2 min read
How to measure sessions in PostHog
Sessions are derived, not recorded. How PostHog stitches them, when one ends, and why session counts move when nothing else did.
- 3 min read
How to measure Stripe subscriber churn
Cancelled at period end is not cancelled. Here is how to count Stripe churn honestly, and why a churn count is not a churn rate.
- 2 min read
Paddle MRR on your Mac
Paddle MRR, revenue and subscriptions in the MacBook notch. Hover the camera housing to look, move away and the notch is untouched.
- 2 min read
Plausible visitors in your MacBook notch
Unique visitors, pageviews, sessions and bounce rate from Plausible, in the strip of glass around your Mac's camera. No tab to open.
- 2 min read
Polar revenue in your MacBook notch
MRR, revenue and subscriptions from Polar, in the strip of glass around your Mac's camera. Hover to look, move away and it is gone.
- 2 min read
PostHog active users on your Mac
Active users, events, pageviews and sessions from PostHog, in the MacBook notch. Hover the camera housing to look, move away and it is gone.
- 3 min read
How to pull clicks and impressions from the Search Console API
searchAnalytics.query, the site URL encoding that trips everyone up, and the row limits that make totals disagree with breakdowns.
- 2 min read
How to pull Lemon Squeezy revenue and refunds by store
Orders, totals and the refund date the API will not give you. How to sum Lemon Squeezy revenue per store, and what the numbers leave out.
- 2 min read
How to pull Paddle transactions for a date range
Billed date against created date, what the total actually includes, and why Paddle revenue is higher than the equivalent Stripe figure.
- 2 min read
How to pull Polar revenue and orders by date
Two endpoints, two different numbers. When to use Polar's metrics endpoint for revenue and when to page the orders list instead.
- 2 min read
How to pull sessions and page views from GA4
Two metrics, one request, and the engaged-session definition that makes GA4 numbers disagree with every tool you had before.
- 2 min read
How to query active users from the Amplitude Dashboard REST API
Basic auth with two keys, the m parameter that decides everything, and the regional host that makes a good key look revoked.
- 2 min read
How to query active users from the PostHog API
HogQL through the query endpoint, why uniq is not a sum, and the de-duplication that makes weekly actives smaller than you expect.
- 2 min read
How to read bounce rate from Plausible
A bounce is a session with one pageview, which means a time-on-page problem. What Plausible's number includes and when it misleads.
- 3 min read
How to read estimated revenue and RPM from YouTube Analytics
RPM is not CPM, and estimated revenue is not ad revenue. The four money metrics, what each includes, and the scope you need.
- 2 min read
How to read MRR and revenue from the RevenueCat Charts API
The overview endpoint, the metric ids worth knowing, and why RevenueCat revenue is gross of Apple's and Google's commission.
- 2 min read
How to get active subscribers from the RevenueCat API, v1 against v2
There is no list-active-subscribers endpoint. What v1 and v2 actually offer, and which one answers the question you are asking.
- 2 min read
RevenueCat MRR and trials on your Mac
MRR, revenue, active subscriptions and live trials from RevenueCat, in the MacBook notch. Hover to look, move away and it is gone.
- 2 min read
Search Console clicks in your MacBook notch
Clicks, impressions, CTR and average position from Google Search Console, in the strip of glass around your Mac's camera.
- 2 min read
How to separate one-time sales from subscriptions in Dodo Payments
A single revenue total hides the shape of the business. How to split recurring from one-off in Dodo Payments, and why it matters.
- 2 min read
Shopify sales and orders in your MacBook notch
Sales, orders, average order value and customers from Shopify, in the strip of glass around your Mac's camera. No tab to open.
- 2 min read
Stripe MRR on your Mac, without opening the dashboard
Your Stripe MRR, revenue and subscriber count in the MacBook notch. Hover the camera housing to look, move away and it is gone.
- 3 min read
How to get Stripe revenue for a date range with the Balance Transactions API
The charges endpoint is the wrong one. Balance transactions are what Stripe actually settles, and here is how to sum them for a window.
- 2 min read
How to track open pull requests on a repository
Counting open pull requests, whether drafts belong in the number, and why review latency matters more than the count itself.
- 3 min read
How to track Paddle subscription churn
Paused is not churned and past due is not churned. How to count Paddle cancellations properly, and why the API makes it awkward.
- 2 min read
How to track Polar subscription cancellations
What Polar counts as a subscription ending, why trials that lapse are not churn, and how to read cancellations against new subscriptions.
- 2 min read
How to track subscriber growth with the YouTube API
The total is rounded and gross gains are not net. Which API returns which, and how to build a subscriber series that is not misleading.
- 3 min read
How to track trial to paid conversion in RevenueCat
Active trials is a snapshot, not a funnel. How to measure trial conversion properly, and why the obvious ratio is wrong.
- 2 min read
How to use the Plausible Stats API v2
One POST endpoint for every query. The v2 shape, how metrics and dimensions fit together, and what changed from the v1 GET endpoints.
- 3 min read
Why Search Console data lags two to three days
Every Search Console chart droops at the right-hand end. What causes the lag, what settles when, and how to report around it honestly.
- 2 min read
YouTube views and revenue on your Mac
Views, watch time, subscribers, revenue and RPM from YouTube, in the MacBook notch. Hover to look, move away and it is gone.
- 3 min read
Writing a custom metric with Claude and MCP
Any number you can reach over HTTPS can live in your notch. One JavaScript module, a declared host list, and the code and keys never leave your Mac.
- 4 min read
How we encrypt your API keys
Every provider credential gets its own key, with your user id, the integration and the provider bound in as AAD. Why that last part is the whole control.
- 2 min read
Introducing Notch Metrics
Revenue, MRR and subscribers in the MacBook notch. Hover to look, move away and it is gone. No dock icon, no menu bar, no dashboard to open.