# Notch Metrics > Notch Metrics shows your business metrics, revenue, MRR and subscribers, in the MacBook notch. Hover the camera housing to see them; move away and the notch looks untouched. Provider API keys are held encrypted server-side and never reach the Mac. Apple silicon, macOS 14 and later. The full text of every post below is also available in one file at https://notchmetrics.com/llms-full.txt. ## Pages - [Notch Metrics](https://notchmetrics.com): What the product is: revenue, MRR and subscribers in the MacBook notch, the connectors it supports, and pricing. - [Sources](https://notchmetrics.com/sources): Every service Notch Metrics reads a number from, and every number it reports, with how each one is calculated. - [Custom apps and widgets](https://notchmetrics.com/docs): What a widget is, the seven shapes a tile draws, and how to build a custom app that runs on your own Mac against your own key. - [Free tools](https://notchmetrics.com/free-tools): Free browser calculators for MRR, ARR, churn, lifetime value, CAC payback, net revenue retention, average order value, CTR, RPM and payment fees. - [Content library](https://notchmetrics.com/library): Roundups of the tools in this category, alternatives worth knowing, and plain definitions of the numbers a founder tracks. - [Security](https://notchmetrics.com/security): How provider credentials are encrypted, what the Mac app can and cannot see, and what a custom metric is allowed to reach. - [Download](https://notchmetrics.com/download/manual): Direct links to the current build for Apple silicon, macOS 14 and later. - [Privacy policy](https://notchmetrics.com/privacy): What is collected, why, where it lives, how long it is kept, and how to delete it. - [Terms of service](https://notchmetrics.com/terms): The terms the service is offered under. ## Sources - [Stripe](https://notchmetrics.com/sources/stripe): Revenue, MRR and subscribers straight from your Stripe account. Reports monthly recurring revenue, revenue, active subscribers, new subscribers, churned subscribers, refunds, recent payments. - [Dodo Payments](https://notchmetrics.com/sources/dodopayments): Revenue and subscriptions from your Dodo Payments account. Reports monthly recurring revenue, total revenue, one-time sales, active subscribers, recent payments. - [Lemon Squeezy](https://notchmetrics.com/sources/lemonsqueezy): Store revenue and subscriptions from Lemon Squeezy. Reports monthly recurring revenue, revenue, active subscribers, refunds, recent payments. - [Polar](https://notchmetrics.com/sources/polar): Revenue and subscriptions from your Polar storefront. Reports monthly recurring revenue, revenue, active subscriptions, new subscriptions, churned subscriptions, recent payments. - [Paddle](https://notchmetrics.com/sources/paddle): Subscriptions and revenue from Paddle Billing. Reports monthly recurring revenue, revenue, active subscriptions, new subscriptions, churned subscriptions, recent payments. - [RevenueCat](https://notchmetrics.com/sources/revenuecat): In-app subscription revenue, subscribers and trials from RevenueCat. Reports monthly recurring revenue, revenue, active subscriptions, active trials, new customers · 28 days, active customers · 28 days. - [Shopify](https://notchmetrics.com/sources/shopify): Sales, orders and customers from your Shopify store. Reports sales, orders, average order value, refunds, new customers, customers, recent payments. - [PostHog](https://notchmetrics.com/sources/posthog): Product analytics: users, events and conversion from PostHog. Reports active users, new users, events, pageviews, sessions. - [Plausible](https://notchmetrics.com/sources/plausible): Privacy-friendly traffic numbers from Plausible. Reports unique visitors, pageviews, bounce rate, sessions. - [Amplitude](https://notchmetrics.com/sources/amplitude): Active users and events from Amplitude. Reports active users, new users, events. - [Google Analytics](https://notchmetrics.com/sources/google-analytics): Users, sessions and page views from GA4. Reports active users, new users, sessions, page views. - [Google Search Console](https://notchmetrics.com/sources/google-search-console): Clicks, impressions and ranking from Search Console. Reports clicks, impressions, click-through rate, average position. - [YouTube](https://notchmetrics.com/sources/youtube): Views, watch time and subscribers for your channel. Reports views, watch time, average view duration, subscribers, new subscribers, likes, comments, estimated revenue, ad revenue, revenue per mille. - [GitHub](https://notchmetrics.com/sources/github): Stars, forks and open work, per repository. Reports stars, forks, open issues, open pull requests, ci runs, followers. - [OpenAI](https://notchmetrics.com/sources/openai): Token usage and spend across your OpenAI organisation. Reports tokens, input tokens, output tokens, api requests, api spend. - [Claude](https://notchmetrics.com/sources/anthropic): Token usage and spend across your Claude organisation. Reports tokens, input tokens, output tokens, api spend. ## Numbers - [Stripe monthly recurring revenue](https://notchmetrics.com/sources/stripe/mrr): Active subscriptions right now, each item normalised to a monthly amount (annual ÷ 12, weekly × 52/12) and reduced by any percentage coupon. A snapshot, not a sum over the window. - [Stripe revenue](https://notchmetrics.com/sources/stripe/revenue): Gross charges from balance transactions in the window, before Stripe fees. Refunds are reported separately rather than netted off. - [Stripe active subscribers](https://notchmetrics.com/sources/stripe/active-subscribers): Subscriptions in Stripe status `active` right now. Trials are not counted. - [Stripe new subscribers](https://notchmetrics.com/sources/stripe/new-subscribers): Subscriptions created in the window, bucketed by creation time. - [Stripe churned subscribers](https://notchmetrics.com/sources/stripe/churned-subscribers): Subscriptions cancelled in the window, bucketed by cancellation time. - [Stripe refunds](https://notchmetrics.com/sources/stripe/refunds): Refund balance transactions in the window, as a positive amount. - [Stripe recent payments](https://notchmetrics.com/sources/stripe/recent-payments): The latest succeeded charges, newest first, with the payer's billing name or receipt email and the charge description. The headline is their total in your currency. - [Dodo Payments monthly recurring revenue](https://notchmetrics.com/sources/dodopayments/mrr): Active subscriptions, each `recurring_pre_tax_amount` normalised to a monthly amount using its payment frequency. A snapshot of the book right now, not a total over the window. - [Dodo Payments total revenue](https://notchmetrics.com/sources/dodopayments/revenue): Every succeeded payment in the window, subscription renewals and one-time purchases together, by `total_amount`. Gross, before refunds and fees. - [Dodo Payments one-time sales](https://notchmetrics.com/sources/dodopayments/one-time-sales): Succeeded payments in the window that are not tied to a subscription, by `total_amount`. Gross, before refunds and fees. - [Dodo Payments active subscribers](https://notchmetrics.com/sources/dodopayments/active-subscribers): Subscriptions in status `active` right now. - [Dodo Payments recent payments](https://notchmetrics.com/sources/dodopayments/recent-payments): The latest succeeded payments, newest first, with the customer's name or email. The headline is their total in your currency. - [Lemon Squeezy monthly recurring revenue](https://notchmetrics.com/sources/lemonsqueezy/mrr): Active subscriptions, each price normalised to a monthly amount by its renewal interval. A snapshot of the book right now, not a total over the window. - [Lemon Squeezy revenue](https://notchmetrics.com/sources/lemonsqueezy/revenue): Orders in the window that took payment, by `total`. Gross: a later refund does not remove the order from the day it was paid. - [Lemon Squeezy active subscribers](https://notchmetrics.com/sources/lemonsqueezy/active-subscribers): Subscriptions in status `active` right now, trials included. - [Lemon Squeezy refunds](https://notchmetrics.com/sources/lemonsqueezy/refunds): `refunded_amount` on orders in the window, bucketed by the order date rather than the refund date, which the API does not expose. - [Lemon Squeezy recent payments](https://notchmetrics.com/sources/lemonsqueezy/recent-payments): The latest orders that took payment, newest first, with the buyer's name or email and the first product on the order. The headline is their total in your currency. - [Polar monthly recurring revenue](https://notchmetrics.com/sources/polar/mrr): Polar's own MRR: active subscriptions normalised to a month, yearly plans divided by twelve, trials excluded. The latest day Polar has computed. - [Polar revenue](https://notchmetrics.com/sources/polar/revenue): Order subtotals in the window as Polar reports them, before Polar's fees and before tax. In the organization's currency. - [Polar active subscriptions](https://notchmetrics.com/sources/polar/active-subscribers): Active subscriptions on the latest day Polar has computed, including paused and past-due ones, excluding trials. - [Polar new subscriptions](https://notchmetrics.com/sources/polar/new-subscribers): Subscriptions started in the window, as Polar counts them. - [Polar churned subscriptions](https://notchmetrics.com/sources/polar/churned-subscribers): Subscriptions that ended in the window, as Polar counts them. - [Polar recent payments](https://notchmetrics.com/sources/polar/recent-payments): The latest paid orders, newest first, with the customer's name or email and the product. Amounts are what the customer paid, after discounts and including tax. - [Paddle monthly recurring revenue](https://notchmetrics.com/sources/paddle/mrr): Active subscriptions, each recurring item's unit price times quantity normalised to a month by its billing cycle. Discounts are not applied. A snapshot of the book right now. - [Paddle revenue](https://notchmetrics.com/sources/paddle/revenue): Transactions billed in the window that are paid or completed, by their total including tax, before Paddle's fee. Bucketed by billing date. - [Paddle active subscriptions](https://notchmetrics.com/sources/paddle/active-subscribers): Subscriptions in status `active` right now. Trialing and paused are not counted. - [Paddle new subscriptions](https://notchmetrics.com/sources/paddle/new-subscribers): Subscriptions whose `started_at` falls in the window, in any status. Paddle cannot filter subscriptions by date, so the whole list is read and bounded. - [Paddle churned subscriptions](https://notchmetrics.com/sources/paddle/churned-subscribers): Subscriptions whose `canceled_at` falls in the window. Paddle cannot filter subscriptions by date, so the whole list is read and bounded. - [Paddle recent payments](https://notchmetrics.com/sources/paddle/recent-payments): The latest paid or completed transactions by billing date, with the customer's name or email and the first product on the transaction. Totals include tax. - [RevenueCat monthly recurring revenue](https://notchmetrics.com/sources/revenuecat/mrr): RevenueCat's own MRR figure for the project: active paid subscriptions normalised to a month, as shown on the Overview. A snapshot of the book right now. - [RevenueCat revenue](https://notchmetrics.com/sources/revenuecat/revenue): Gross revenue across every app in the project for the days in the window, before store commission and taxes. Today is partial while transactions are still arriving. - [RevenueCat active subscriptions](https://notchmetrics.com/sources/revenuecat/active-subscribers): Paid subscriptions active right now, including ones that are cancelled or in a grace period until they expire. Trials are not counted. - [RevenueCat active trials](https://notchmetrics.com/sources/revenuecat/trials): Free trials active right now, including cancelled ones, until they convert to paid or expire. - [RevenueCat new customers · 28 days](https://notchmetrics.com/sources/revenuecat/new-users): App User IDs first seen in the last 28 days, as RevenueCat's Overview counts them. The window is fixed by RevenueCat and ignores the widget's range. Aliased IDs count once. - [RevenueCat active customers · 28 days](https://notchmetrics.com/sources/revenuecat/active-users): App User IDs that contacted RevenueCat in the last 28 days. The window is fixed by RevenueCat and ignores the widget's range. May lag by one to two hours. - [Shopify sales](https://notchmetrics.com/sources/shopify/revenue): Order totals for orders placed in the window that took payment, in the store's own currency. Gross: a later refund does not remove the order from the day it was placed. The Refunds widget is the other half. - [Shopify orders](https://notchmetrics.com/sources/shopify/orders): Orders placed in the window that took payment. Test orders and abandoned or unpaid checkouts are excluded, so this sits below the Shopify admin's own order count when the store has pending orders. - [Shopify average order value](https://notchmetrics.com/sources/shopify/average-order-value): Sales divided by orders over the whole window. Each point is that day's own ratio, so the headline is not the average of the points. - [Shopify refunds](https://notchmetrics.com/sources/shopify/refunds): Amounts refunded against orders placed in the window, bucketed by the order's date rather than the refund's. A refund of a much older order is not counted here. - [Shopify new customers](https://notchmetrics.com/sources/shopify/new-customers): Customer records created in the window. Shopify creates one at checkout, so a guest who buys twice counts once. Somebody who only signed up for the newsletter counts too. - [Shopify customers](https://notchmetrics.com/sources/shopify/customers): Every customer record on the store right now, which is what the admin's Customers page counts. Shopify reports this as an estimate above ten thousand. - [Shopify recent payments](https://notchmetrics.com/sources/shopify/recent-payments): The latest orders that took payment, newest first, with the buyer's name and the first product on the order. The headline is their total in the store's currency. - [PostHog active users](https://notchmetrics.com/sources/posthog/active-users): People with at least one event in the window, de-duplicated. The headline counts each person once across the whole window, so the bars do not add up to it: one person on three days is one user and three bars. Days are your PostHog project's timezone, so the figures match its own dashboards. - [PostHog new users](https://notchmetrics.com/sources/posthog/new-users): Person profiles PostHog first created in the window. Anonymous visitors who are never identified do not create one, so this counts people PostHog can tell apart rather than every first visit. - [PostHog events](https://notchmetrics.com/sources/posthog/events): Every event recorded in the window, of every name. - [PostHog pageviews](https://notchmetrics.com/sources/posthog/pageviews): `$pageview` events in the window. Repeat views by one person all count. - [PostHog sessions](https://notchmetrics.com/sources/posthog/sessions): Distinct `$session_id`s seen in the window. The headline de-duplicates across the whole window, so a session spanning midnight is one session and two bars. - [Plausible unique visitors](https://notchmetrics.com/sources/plausible/visitors): Distinct visitors in the window. The headline counts each visitor once across the whole window, so the bars do not add up to it. Buckets are your Plausible site's reporting timezone, so the figures match its own dashboard. - [Plausible pageviews](https://notchmetrics.com/sources/plausible/pageviews): Total pages viewed in the window, with repeat views by one visitor all counted. Buckets are your Plausible site's reporting timezone, so the figures match its own dashboard. - [Plausible bounce rate](https://notchmetrics.com/sources/plausible/bounce-rate): Share of sessions that left after one interaction. Plausible computes each bar over its own bucket, so a week is weighted by its sessions rather than being the mean of seven daily rates. Buckets are your Plausible site's reporting timezone, so the figures match its own dashboard. - [Plausible sessions](https://notchmetrics.com/sources/plausible/sessions): Visits started in the window, which Plausible calls "visits". A session that spans midnight is counted in the bucket it started in. Buckets are your Plausible site's reporting timezone, so the figures match its own dashboard. - [Amplitude active users](https://notchmetrics.com/sources/amplitude/active-users): Users who did anything in the window, which Amplitude calls "Any Active Event". The headline is Amplitude's own de-duplicated figure for the whole window, so the bars do not add up to it: one person active on three days is one user and three bars. Days are your Amplitude project's timezone, so the figures match its own charts. - [Amplitude new users](https://notchmetrics.com/sources/amplitude/new-users): Users whose first ever event Amplitude recorded in the window. A user is new on exactly one day, so these bars do add up to the headline. Days are your Amplitude project's timezone, so the figures match its own charts. - [Amplitude events](https://notchmetrics.com/sources/amplitude/events): Every event recorded in the window, of every type, which Amplitude calls "Any Event". Days are your Amplitude project's timezone, so the figures match its own charts. - [Google Analytics active users](https://notchmetrics.com/sources/google-analytics/active-users): GA4 `activeUsers`. The headline is the de-duplicated count over the whole window, as GA reports it; the chart is per day, so its bars do not add up to the headline: one person on three days is one user and three bars. - [Google Analytics new users](https://notchmetrics.com/sources/google-analytics/new-users): GA4 `newUsers`: people whose first session fell in the window. - [Google Analytics sessions](https://notchmetrics.com/sources/google-analytics/sessions): GA4 `sessions` in the window. - [Google Analytics page views](https://notchmetrics.com/sources/google-analytics/pageviews): GA4 `screenPageViews`: every page and screen view in the window. - [Google Search Console clicks](https://notchmetrics.com/sources/google-search-console/clicks): Clicks through to the site from Google Search in the window. Search Console data runs two to three days behind, so the newest days read low until they settle. - [Google Search Console impressions](https://notchmetrics.com/sources/google-search-console/impressions): Times a result for the site was shown in the window. Two to three days behind. - [Google Search Console click-through rate](https://notchmetrics.com/sources/google-search-console/ctr): Clicks divided by impressions over the window, rather than the mean of daily rates, which would weight a quiet day the same as a busy one. - [Google Search Console average position](https://notchmetrics.com/sources/google-search-console/average-position): Mean ranking position across impressions in the window, weighted by impressions the way Search Console's own overview is. Lower is better. - [YouTube views](https://notchmetrics.com/sources/youtube/views): YouTube Analytics `views` for the channel in the window. YouTube's day boundaries are Pacific Time, so a day here can straddle two of yours. - [YouTube watch time](https://notchmetrics.com/sources/youtube/watch-time): YouTube Analytics `estimatedMinutesWatched` in the window, shown as hours. This is the figure monetisation thresholds are measured against. - [YouTube average view duration](https://notchmetrics.com/sources/youtube/average-view-duration): Watch time divided by views over the whole window, rather than the mean of the daily averages, which would weight a quiet day the same as a busy one. - [YouTube subscribers](https://notchmetrics.com/sources/youtube/subscribers): Subscribers on the channel right now, as the YouTube Data API reports it, which rounds anything over a thousand to three figures, so 12,345 reads as 12,300. The change against the previous window is the exact net gain from Analytics, so the arrow is right even where the total is rounded. - [YouTube new subscribers](https://notchmetrics.com/sources/youtube/new-subscribers): YouTube Analytics `subscribersGained`: people who subscribed in the window. Gross, not net: unsubscribes are not deducted, so this does not match the change in the subscriber total. - [YouTube likes](https://notchmetrics.com/sources/youtube/likes): YouTube Analytics `likes` across the channel's videos in the window. - [YouTube comments](https://notchmetrics.com/sources/youtube/comments): YouTube Analytics `comments` left on the channel's videos in the window. - [YouTube estimated revenue](https://notchmetrics.com/sources/youtube/revenue): YouTube Analytics `estimatedRevenue`: net earnings from ads and YouTube Premium, after YouTube's share. Subject to month-end adjustment, so the current month is provisional, and it excludes partner-sold advertising. Only channels in the YouTube Partner Program have it at all. - [YouTube ad revenue](https://notchmetrics.com/sources/youtube/ad-revenue): YouTube Analytics `estimatedAdRevenue`: the advertising part of estimated revenue alone, with YouTube Premium earnings excluded. Also subject to month-end adjustment. - [YouTube revenue per mille](https://notchmetrics.com/sources/youtube/rpm): Estimated revenue per thousand views, computed over the whole window rather than averaged across daily rates. This is RPM as YouTube Studio reports it, meaning total revenue over total views with every view counted. It is not CPM, which is per thousand ad impressions and counts only monetised playbacks. - [GitHub stars](https://notchmetrics.com/sources/github/stars): Stargazers on the repository right now. - [GitHub forks](https://notchmetrics.com/sources/github/forks): Forks of the repository right now. - [GitHub open issues](https://notchmetrics.com/sources/github/open-issues): Open issues, excluding pull requests. - [GitHub open pull requests](https://notchmetrics.com/sources/github/open-pull-requests): Pull requests currently open. - [GitHub ci runs](https://notchmetrics.com/sources/github/ci-runs): The ten most recent GitHub Actions runs, newest first. Private repositories included, for the account this connection signed in as. - [GitHub followers](https://notchmetrics.com/sources/github/followers): People following the GitHub account this connection signed in as. - [OpenAI tokens](https://notchmetrics.com/sources/openai/tokens): Input plus output tokens on chat and completions requests in the window. Input includes cached reads and cache writes, so this matches what the Usage page totals rather than what you were charged for. - [OpenAI input tokens](https://notchmetrics.com/sources/openai/input-tokens): Input tokens on completions requests, cached reads and cache writes included. Audio and image inputs are counted in their own token units, as OpenAI reports them. - [OpenAI output tokens](https://notchmetrics.com/sources/openai/output-tokens): Output tokens generated on completions requests in the window. - [OpenAI api requests](https://notchmetrics.com/sources/openai/api-requests): Model requests on the completions endpoint. One batch job counts as the requests inside it, not as one. - [OpenAI api spend](https://notchmetrics.com/sources/openai/api-spend): Billed cost per day from OpenAI's cost report, every line item included: tokens, tools and storage. Rounded to the cent per day, so it tracks the invoice rather than the fractional amounts the API returns. - [Claude tokens](https://notchmetrics.com/sources/anthropic/tokens): Input plus output tokens on Messages requests in the window. Input is uncached input, cache reads and cache writes added together, which is what the Usage page shows. It is not what you were billed, since cache reads cost a tenth of the rest. - [Claude input tokens](https://notchmetrics.com/sources/anthropic/input-tokens): Uncached input, cache reads and both cache-write tiers added together. Each is priced differently; this is the volume, not the bill. - [Claude output tokens](https://notchmetrics.com/sources/anthropic/output-tokens): Output tokens generated on Messages requests in the window. Thinking tokens are output tokens and are counted here. - [Claude api spend](https://notchmetrics.com/sources/anthropic/api-spend): Billed cost per day from the cost report: tokens, web search and code execution. Priority Tier is billed differently and is not included, which is Anthropic's own caveat, not ours. ## Documentation Every page below is also available as one file, with the manifest schema and the runtime contract, at https://notchmetrics.com/docs/llms.txt. - [Quickstart](https://notchmetrics.com/docs/quickstart): From an empty folder to a widget in the notch. - [Development setup](https://notchmetrics.com/docs/development-setup): Node, the types package, and the edit and reload loop. - [What a widget is](https://notchmetrics.com/docs/what-is-a-widget): One tile, one number, and the four parts every widget is made of. - [The widget types](https://notchmetrics.com/docs/widget-types): Sparkline, bars, gauge, split, ranked, ring and plain. What each needs. - [Sizes and windows](https://notchmetrics.com/docs/sizes-and-windows): The six column grid, the four presets, and the five time windows. - [How custom apps work](https://notchmetrics.com/docs/custom-apps): Where an app runs, what it can reach, and what enabling it approves. - [The app and its manifest](https://notchmetrics.com/docs/connector-manifest): createApp, the grants it declares, and the generated manifest. - [The code](https://notchmetrics.com/docs/connector-code): createMetric, the context object, and what fetch returns. ## Free tools - [MRR calculator](https://notchmetrics.com/free-tools/mrr-calculator): Work out monthly recurring revenue from your monthly and annual subscribers, with annual plans normalised to a month. Formula: MRR = (monthly subscribers × monthly price) + (annual subscribers × annual price ÷ 12). - [ARR calculator](https://notchmetrics.com/free-tools/arr-calculator): Convert monthly recurring revenue to annual recurring revenue, and see what a growth rate does to it over the next year. Formula: ARR = MRR × 12. - [Churn rate calculator](https://notchmetrics.com/free-tools/churn-rate-calculator): Work out customer churn and retention from the customers you started with and the ones you lost, with the annual equivalent. Formula: Churn rate = customers lost ÷ customers at the start of the period. - [LTV calculator](https://notchmetrics.com/free-tools/ltv-calculator): Estimate customer lifetime value from average revenue per user, monthly churn and gross margin, with the expected lifetime in months. Formula: LTV = ARPU × gross margin ÷ monthly churn rate. - [CAC payback calculator](https://notchmetrics.com/free-tools/cac-payback-calculator): Work out how many months it takes to earn back what you spent acquiring a customer, on gross margin rather than on revenue. Formula: Payback months = CAC ÷ (ARPU × gross margin). - [Net revenue retention calculator](https://notchmetrics.com/free-tools/net-revenue-retention-calculator): Work out NRR and gross revenue retention from starting MRR, expansion, contraction and churn, with no new customers counted. Formula: NRR = (starting MRR + expansion − contraction − churn) ÷ starting MRR. - [Rule of 40 calculator](https://notchmetrics.com/free-tools/rule-of-40-calculator): Add your growth rate to your profit margin and see whether a software business clears the Rule of 40 benchmark. Formula: Rule of 40 = revenue growth rate % + profit margin %. - [Average order value calculator](https://notchmetrics.com/free-tools/average-order-value-calculator): Divide sales by orders to get AOV, with the revenue per customer and repeat rate that explain what moved it. Formula: AOV = total sales ÷ number of orders. - [Conversion rate calculator](https://notchmetrics.com/free-tools/conversion-rate-calculator): Work out a conversion rate from visitors and conversions, with the revenue per visitor that makes it comparable across pages. Formula: Conversion rate = conversions ÷ visitors. - [CTR calculator](https://notchmetrics.com/free-tools/ctr-calculator): Work out click-through rate from clicks and impressions, for search results, ads and email alike. Formula: CTR = clicks ÷ impressions. - [RPM calculator](https://notchmetrics.com/free-tools/rpm-calculator): Work out revenue per mille from your earnings and views, and see how it differs from the CPM advertisers are quoted. Formula: RPM = revenue ÷ views × 1,000. - [Stripe fee calculator](https://notchmetrics.com/free-tools/stripe-fee-calculator): Work out what you keep after payment processing fees, and what to charge to receive a specific amount net. Formula: Fee = (amount × percentage) + fixed fee. ## Blog - [Amplitude active users on your Mac](https://notchmetrics.com/blog/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. - [How to calculate average order value from Shopify orders](https://notchmetrics.com/blog/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. - [How to calculate MRR from Dodo Payments subscriptions](https://notchmetrics.com/blog/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. - [How to calculate MRR from Paddle Billing](https://notchmetrics.com/blog/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. - [How to calculate MRR from the Lemon Squeezy API](https://notchmetrics.com/blog/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. - [How to calculate MRR from the Polar API](https://notchmetrics.com/blog/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. - [How to calculate MRR from the Stripe API](https://notchmetrics.com/blog/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. - [How to count active Lemon Squeezy subscriptions](https://notchmetrics.com/blog/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. - [How to count events in Amplitude by API](https://notchmetrics.com/blog/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. - [How to count new against returning Shopify customers](https://notchmetrics.com/blog/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. - [How to count new users in GA4](https://notchmetrics.com/blog/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. - [How to count open issues without counting pull requests](https://notchmetrics.com/blog/count-open-issues-without-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. - [How to count pageviews and events with PostHog HogQL](https://notchmetrics.com/blog/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. - [Dodo Payments revenue in the notch](https://notchmetrics.com/blog/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. - [GA4 visitors in your MacBook notch](https://notchmetrics.com/blog/ga4-visitors-in-your-notch): Active users, new users, sessions and page views from Google Analytics 4, in the strip of glass around your Mac's camera. - [How to get a repository's star count from the GitHub API](https://notchmetrics.com/blog/get-a-repository-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. - [How to get active users from the GA4 Data API](https://notchmetrics.com/blog/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. - [How to get average position and CTR from Search Console](https://notchmetrics.com/blog/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. - [How to get daily sales totals from the Shopify Admin API](https://notchmetrics.com/blog/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. - [How to get new users from Amplitude](https://notchmetrics.com/blog/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. - [How to get realtime visitors from Plausible](https://notchmetrics.com/blog/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. - [How to get revenue from the Dodo Payments API](https://notchmetrics.com/blog/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. - [How to get views and watch time from the YouTube Analytics API](https://notchmetrics.com/blog/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. - [GitHub stars in your MacBook notch](https://notchmetrics.com/blog/github-stars-in-your-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. - [Lemon Squeezy MRR on your Mac](https://notchmetrics.com/blog/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. - [How to measure sessions in PostHog](https://notchmetrics.com/blog/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. - [How to measure Stripe subscriber churn](https://notchmetrics.com/blog/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. - [Paddle MRR on your Mac](https://notchmetrics.com/blog/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. - [Plausible visitors in your MacBook notch](https://notchmetrics.com/blog/plausible-visitors-in-your-notch): Unique visitors, pageviews, sessions and bounce rate from Plausible, in the strip of glass around your Mac's camera. No tab to open. - [Polar revenue in your MacBook notch](https://notchmetrics.com/blog/polar-revenue-in-your-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. - [PostHog active users on your Mac](https://notchmetrics.com/blog/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. - [How to pull clicks and impressions from the Search Console API](https://notchmetrics.com/blog/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. - [How to pull Lemon Squeezy revenue and refunds by store](https://notchmetrics.com/blog/pull-lemon-squeezy-revenue-and-refunds): 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. - [How to pull Paddle transactions for a date range](https://notchmetrics.com/blog/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. - [How to pull Polar revenue and orders by date](https://notchmetrics.com/blog/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. - [How to pull sessions and page views from GA4](https://notchmetrics.com/blog/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. - [How to query active users from the Amplitude Dashboard REST API](https://notchmetrics.com/blog/query-active-users-from-the-amplitude-dashboard-api): Basic auth with two keys, the m parameter that decides everything, and the regional host that makes a good key look revoked. - [How to query active users from the PostHog API](https://notchmetrics.com/blog/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. - [How to read bounce rate from Plausible](https://notchmetrics.com/blog/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. - [How to read estimated revenue and RPM from YouTube Analytics](https://notchmetrics.com/blog/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. - [How to read MRR and revenue from the RevenueCat Charts API](https://notchmetrics.com/blog/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. - [How to get active subscribers from the RevenueCat API, v1 against v2](https://notchmetrics.com/blog/revenuecat-active-subscribers-api-v1-v2): There is no list-active-subscribers endpoint. What v1 and v2 actually offer, and which one answers the question you are asking. - [RevenueCat MRR and trials on your Mac](https://notchmetrics.com/blog/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. - [Search Console clicks in your MacBook notch](https://notchmetrics.com/blog/search-console-clicks-in-your-notch): Clicks, impressions, CTR and average position from Google Search Console, in the strip of glass around your Mac's camera. - [How to separate one-time sales from subscriptions in Dodo Payments](https://notchmetrics.com/blog/separate-one-time-sales-from-subscriptions): A single revenue total hides the shape of the business. How to split recurring from one-off in Dodo Payments, and why it matters. - [Shopify sales and orders in your MacBook notch](https://notchmetrics.com/blog/shopify-sales-and-orders-in-your-notch): Sales, orders, average order value and customers from Shopify, in the strip of glass around your Mac's camera. No tab to open. - [Stripe MRR on your Mac, without opening the dashboard](https://notchmetrics.com/blog/stripe-mrr-on-your-mac): Your Stripe MRR, revenue and subscriber count in the MacBook notch. Hover the camera housing to look, move away and it is gone. - [How to get Stripe revenue for a date range with the Balance Transactions API](https://notchmetrics.com/blog/stripe-revenue-for-a-date-range): The charges endpoint is the wrong one. Balance transactions are what Stripe actually settles, and here is how to sum them for a window. - [How to track open pull requests on a repository](https://notchmetrics.com/blog/track-open-pull-requests-across-a-repository): Counting open pull requests, whether drafts belong in the number, and why review latency matters more than the count itself. - [How to track Paddle subscription churn](https://notchmetrics.com/blog/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. - [How to track Polar subscription cancellations](https://notchmetrics.com/blog/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. - [How to track subscriber growth with the YouTube API](https://notchmetrics.com/blog/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. - [How to track trial to paid conversion in RevenueCat](https://notchmetrics.com/blog/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. - [How to use the Plausible Stats API v2](https://notchmetrics.com/blog/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. - [Why Search Console data lags two to three days](https://notchmetrics.com/blog/why-search-console-data-lags): Every Search Console chart droops at the right-hand end. What causes the lag, what settles when, and how to report around it honestly. - [YouTube views and revenue on your Mac](https://notchmetrics.com/blog/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. - [Writing a custom metric with Claude and MCP](https://notchmetrics.com/blog/writing-a-custom-metric): 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. - [How we encrypt your API keys](https://notchmetrics.com/blog/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. - [Introducing Notch Metrics](https://notchmetrics.com/blog/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. ## Library - [What are active users?](https://notchmetrics.com/library/active-users): DAU, WAU and MAU are de-duplicated counts, which is why weekly is never the sum of seven dailies. What active means, and who decides. - [What is ARR?](https://notchmetrics.com/library/arr): Annual recurring revenue is MRR times twelve, and nothing else. What it is useful for, and the three ways people quietly inflate it. - [What is average order value?](https://notchmetrics.com/library/average-order-value): AOV is sales divided by orders, and almost every chart of it is computed wrongly. Why the headline is not the average of the points. - [Baremetrics alternatives](https://notchmetrics.com/library/baremetrics-alternatives): Baremetrics is priced on the revenue it tracks. Four alternatives, what each actually replaces, and prices read off their own pages. - [Best Stripe MRR trackers for Mac](https://notchmetrics.com/library/best-stripe-mrr-menu-bar-apps-for-mac): A ranked look at the Mac apps that keep your Stripe MRR one glance away, with prices read off each vendor's own page. - [What is bounce rate?](https://notchmetrics.com/library/bounce-rate): A bounce is a single-page visit, which means bounce rate cannot see time. Why high is often fine, and why GA4's definition is different. - [What is churn rate?](https://notchmetrics.com/library/churn-rate): Churn is the customers or revenue you lose in a period. Why the denominator is the whole argument, and how voluntary and involuntary churn differ. - [What is click-through rate?](https://notchmetrics.com/library/click-through-rate): CTR is clicks divided by impressions. Why a falling CTR is often good news, and why it must never be read without volume beside it. - [Are free MRR trackers for Mac worth it?](https://notchmetrics.com/library/free-mrr-trackers-for-mac): Three genuinely free ways to watch your MRR on a Mac, what each gives up, and when paying for one is the cheaper decision. - [What is MRR?](https://notchmetrics.com/library/mrr): Monthly recurring revenue, what it includes, how to normalise annual and weekly plans, and why two correct MRR figures can disagree. - [Revenue dashboards for indie hackers](https://notchmetrics.com/library/revenue-dashboards-for-indie-hackers): A buyer's guide for solo founders. What to track, how often to look, and which tool fits a business run by one person. - [RPM against CPM](https://notchmetrics.com/library/rpm-vs-cpm): RPM is what you earn per thousand views. CPM is what advertisers pay per thousand ad impressions. Why CPM is always the bigger number.