Shopify Admin Subscription Mrr Tracker logo

Shopify Admin Subscription Mrr Tracker

Organization
40RTY-ai
shopify-admin-subscription-mrr-tracker

Read-only: for stores with subscription products, calculates MRR, ARR, active subscriber count, and rolling churn rate from subscription contracts.

Overview

Publisher40RTY-ai
Repositoryshopify-admin-skills
Skill nameshopify-admin-subscription-mrr-tracker
Stars
200
Forks
22
Bundled files
Instructions only
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by 40RTY-ai on GitHub. Read the source before you install it.

Installation

Install the Shopify Admin Subscription Mrr Tracker AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/40RTY-ai/shopify-admin-skills/tree/main/skills/finance/shopify-admin-subscription-mrr-tracker
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/40RTY-ai/shopify-admin-skills.git /tmp/shopify-admin-skills
mkdir -p .claude/skills
cp -r /tmp/shopify-admin-skills/skills/finance/shopify-admin-subscription-mrr-tracker .claude/skills/shopify-admin-subscription-mrr-tracker
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Shopify Admin Subscription Mrr Tracker in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Shopify Admin Subscription Mrr Tracker on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Shopify Admin Subscription Mrr Tracker is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Purpose

For stores selling subscription products via Shopify's native subscriptions, this skill aggregates active subscription contracts into the standard SaaS-style metrics finance teams care about: monthly recurring revenue (MRR), annualized recurring revenue (ARR), active subscriber count, average revenue per subscriber (ARPU), and a rolling churn rate. Read-only — no mutations.

Prerequisites

  • Authenticated Shopify CLI session: shopify store auth --store <domain> --scopes read_own_subscription_contracts
  • API scopes: read_own_subscription_contracts

Parameters

ParameterTypeRequiredDefaultDescription
storestringyes—Store domain (e.g., mystore.myshopify.com)
churn_window_daysintegerno30Rolling window for churn calculation (cancellations / starting subscribers)
as_ofstringnotoday (UTC)ISO date for "as of" snapshot label
include_pausedboolnofalseTreat PAUSED contracts as active recurring revenue
formatstringnohumanOutput format: human or json

Safety

ℹ️ Read-only skill — no mutations are executed. This skill is only meaningful if the store sells subscription products. If subscriptionContracts returns 0 contracts, the report exits with $0 MRR — that is the correct answer, not an error.

Recurring Revenue Model

For each subscription contract, the contribution to MRR depends on its billing interval:

billing_amount = sum(line.currentPrice × line.quantity) for each line in contract
mrr_contribution =
  billing_amount                       if interval = MONTH and intervalCount = 1
  billing_amount / intervalCount       if interval = MONTH (e.g., every 3 months → /3)
  billing_amount × 4.345               if interval = WEEK (avg weeks per month)
  billing_amount × 4.345 / intervalCount if interval = WEEK with intervalCount > 1
  billing_amount / 12                  if interval = YEAR
  billing_amount × 30 / intervalCount  if interval = DAY

Aggregations:

  • MRR = Σ mrr_contribution for all ACTIVE (and PAUSED if include_paused) contracts
  • ARR = MRR × 12
  • Active subscribers = unique customer.id count
  • ARPU = MRR / active subscribers
  • Churn rate (period) = contracts cancelled inside churn_window_days ÷ contracts that were active at the start of the window
  • Net new subscribers = new contracts inside the window − cancelled contracts inside the window

Workflow Steps

  1. OPERATION: subscriptionContracts — query Inputs: first: 250, select id, status, createdAt, updatedAt, nextBillingDate, customer { id, displayName }, currencyCode, billingPolicy { interval, intervalCount }, lines { edges { node { currentPrice { amount, currencyCode }, quantity, productId, variantId, title } } }, pagination cursor Expected output: All subscription contracts; paginate until hasNextPage: false

  2. Classify each contract by status: ACTIVE, PAUSED, CANCELLED, EXPIRED, FAILED

  3. Compute mrr_contribution for each active (and paused if requested) contract using the model above

  4. Aggregate MRR / ARR / subscribers / ARPU

  5. For churn: count cancellations where updatedAt is within churn_window_days and status moved to CANCELLED; count contracts that existed and were ACTIVE at as_of - churn_window_days

  6. Build a per-product breakdown so finance can see which subscription SKUs drive MRR

GraphQL Operations

graphql
# subscriptionContracts:query — validated against api_version 2025-01
query SubscriptionMRR($after: String) {
  subscriptionContracts(first: 250, after: $after) {
    edges {
      node {
        id
        status
        createdAt
        updatedAt
        nextBillingDate
        currencyCode
        customer {
          id
          displayName
          defaultEmailAddress { emailAddress }
        }
        billingPolicy { interval intervalCount minCycles maxCycles }
        deliveryPolicy { interval intervalCount }
        lines(first: 50) {
          edges {
            node {
              id
              productId
              variantId
              title
              quantity
              currentPrice { amount currencyCode }
            }
          }
        }
      }
    }
    pageInfo { hasNextPage endCursor }
  }
}

Session Tracking

Claude MUST emit the following output at each stage. This is mandatory.

On start, emit:

╔══════════════════════════════════════════════╗
║  SKILL: Subscription MRR Tracker             ║
║  Store: <store domain>                       ║
║  As of: <YYYY-MM-DD>                         ║
║  Started: <YYYY-MM-DD HH:MM UTC>             ║
╚══════════════════════════════════════════════╝

After each step, emit:

[N/TOTAL] <QUERY|MUTATION>  <OperationName>
          → Params: <brief summary of key inputs>
          → Result: <count or outcome>

On completion, emit:

For format: human (default):

══════════════════════════════════════════════
SUBSCRIPTION MRR REPORT  (as of <date>)
  Active contracts:        <n>
  Paused contracts:        <n>
  Cancelled (last <n>d):   <n>
  ─────────────────────────────
  MRR:                     $<amount>
  ARR:                     $<amount>
  Active subscribers:      <n>
  ARPU:                    $<amount>
  Churn rate (<n>d):       <pct>%
  Net new (<n>d):          <n>

  Top subscription products by MRR:
    "<title>"   Subs: <n>   MRR: $<n>
    "<title>"   Subs: <n>   MRR: $<n>

  Output: subscription_mrr_<date>.csv
══════════════════════════════════════════════

For format: json, emit:

json
{
  "skill": "subscription-mrr-tracker",
  "store": "<domain>",
  "as_of": "<YYYY-MM-DD>",
  "active_contracts": 0,
  "paused_contracts": 0,
  "cancelled_in_window": 0,
  "mrr": 0,
  "arr": 0,
  "active_subscribers": 0,
  "arpu": 0,
  "churn_rate_pct": 0,
  "net_new": 0,
  "currency": "USD",
  "by_product": [],
  "output_file": "subscription_mrr_<date>.csv"
}

Output Format

CSV file subscription_mrr_<YYYY-MM-DD>.csv with columns: contract_id, status, customer_id, customer_email, created_at, next_billing_date, interval, interval_count, billing_amount, mrr_contribution, currency, product_titles

Error Handling

ErrorCauseRecovery
THROTTLEDAPI rate limit exceededWait 2 seconds, retry up to 3 times
subscriptionContracts emptyStore has no subscription productsExit cleanly — report $0 MRR; this is the correct value, not an error
Multi-currency contractsDifferent currencyCode per contractGroup MRR per currency; do not sum across currencies — surface separately in output
Pre-paid contracts (maxCycles set)Customer paid upfront for N cyclesStill contributes to MRR while ACTIVE, but the contract will end after maxCycles; flag in output

Best Practices

  • This skill is only meaningful if the store actually sells subscription products. If you don't run subscriptions, MRR will be $0 — that's correct.
  • Run on the first day of every month so MRR snapshots align with finance's monthly close cadence.
  • Track MRR week-over-week to catch payment-failure spikes early — FAILED contracts that don't recover become churn within 30 days.
  • Pre-paid annual subscriptions inflate ARR without inflating cash flow in any given month — keep them separate when reporting to investors who want a cash-flow view.
  • Pair with churn-risk-scorer (transactional churn) to triangulate subscription churn vs. one-time-purchase churn — they deserve separate retention strategies.
  • Multi-currency stores: report MRR per currency; converting via spot FX rates produces a misleading number that fluctuates with exchange rates rather than business performance.

Frequently asked questions

What does the Shopify Admin Subscription Mrr Tracker AI skill do?

Read-only: for stores with subscription products, calculates MRR, ARR, active subscriber count, and rolling churn rate from subscription contracts.

Why use Shopify Admin Subscription Mrr Tracker on TypingMind?

Because you install it once and use it with any model. Shopify Admin Subscription Mrr Tracker is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Shopify Admin Subscription Mrr Tracker in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/40RTY-ai/shopify-admin-skills/tree/main/skills/finance/shopify-admin-subscription-mrr-tracker. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Shopify Admin Subscription Mrr Tracker?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Shopify Admin Subscription Mrr Tracker?

As many as you like. As long as a model supports skills, you can use Shopify Admin Subscription Mrr Tracker with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Shopify Admin Subscription Mrr Tracker AI skill free?

Yes. It is published on GitHub by 40RTY-ai under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇