
Shopify Admin Repeat Purchase Rate
- 7 installs
- 173 repo stars
- Updated June 26, 2026
- 40rty-ai/shopify-admin-skills
shopify-admin-repeat-purchase-rate is a Claude Code skill that calculates the percentage of Shopify customers who place a second order within a window, segmented by first-purchase product.
About
This skill calculates the repeat purchase rate, the percentage of customers who return to place at least one more order within a defined window, and segments it by first-purchase product. Merchants use it to see which products drive repeat buying and retention. It is read-only and writes a repeat purchase CSV.
- Calculates the percentage of customers who place 2+ orders within N days, segmented by first-purchase product
- Read-only against the Shopify Admin GraphQL customers and orders queries
- Identifies which products drive the highest repeat purchase behavior
Shopify Admin Repeat Purchase Rate by the numbers
- 7 all-time installs (skills.sh)
- Ranked #826 of 1,106 Finance & Trading skills by installs in the Skillselion catalog
- Data as of Aug 1, 2026 (Skillselion catalog sync)
shopify-admin-repeat-purchase-rate capabilities & compatibility
Free; requires an authenticated Shopify store session with read_customers and read_orders scopes
- Capabilities
- repeat purchase analysis · retention analysis · cohort analysis · data analysis
- Works with
- github
- Use cases
- data analysis
- Pricing
- Free
What shopify-admin-repeat-purchase-rate says it does
calculates what percentage of customers place 2+ orders within N days, segmented by product or collection.
Identifies which products drive the highest repeat purchase behavior.
npx skills add https://github.com/40rty-ai/shopify-admin-skills --skill shopify-admin-repeat-purchase-rateAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 7 |
|---|---|
| repo stars | ★ 173 |
| Last updated | June 26, 2026 |
| Repository | 40rty-ai/shopify-admin-skills ↗ |
What it does
Calculate the percentage of Shopify customers who reorder within a window, segmented by first-purchase product.
Who is it for?
Understanding which products drive repeat purchases and customer retention
Skip if: Analyzing guest-checkout orders, which have no customer record to link and are excluded
When should I use this skill?
You want to measure repeat purchase rate or find which products drive reorders
What you get
An overall repeat purchase rate plus a per-first-product breakdown.
- repeat_purchase CSV with customer_id, first_order_date, first_product, total_orders, is_repeat, days_to_repeat, total_sp
By the numbers
- 2 GraphQL query operations (customers, orders)
- Default acquisition and repeat windows of 90 days each
- Repeat defined as 2+ orders
Files
Purpose
Calculates the repeat purchase rate — the percentage of customers who return to place at least one more order within a defined window — and segments it by first-purchase product or collection. Identifies which products drive the highest repeat purchase behavior. Read-only — no mutations.
Prerequisites
- Authenticated Shopify CLI session:
shopify store auth --store <domain> --scopes read_customers,read_orders - API scopes:
read_customers,read_orders
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| store | string | yes | — | Store domain (e.g., mystore.myshopify.com) |
| days_back | integer | no | 90 | Acquisition window — customers first purchased in this period |
| repeat_window | integer | no | 90 | Days after first purchase to look for a repeat order |
| segment_by | string | no | none | Segment repeat rate by: product, none |
| format | string | no | human | Output format: human or json |
Safety
ℹ️ Read-only skill — no mutations are executed. Safe to run at any time.
Workflow Steps
1. OPERATION: customers — query Inputs: query: "created_at:>='<NOW - days_back days>'", first: 250, select id, numberOfOrders, createdAt Expected output: Customers acquired in window
2. OPERATION: orders — query Inputs: query: "created_at:>='<NOW - days_back + repeat_window days>'", first: 250, select customer { id }, createdAt, lineItems { product { id, title } }, pagination cursor Expected output: Orders to build per-customer purchase history and first-product mapping
3. For each acquired customer: if they have ≥ 2 orders within repeat_window days → repeat purchaser
4. Calculate overall rate; if segment_by: product, group by first-purchased product
GraphQL Operations
# customers:query — validated against api_version 2025-01
query AcquiredCustomers($query: String!, $after: String) {
customers(first: 250, after: $after, query: $query) {
edges {
node {
id
createdAt
numberOfOrders
defaultEmailAddress {
emailAddress
}
}
}
pageInfo {
hasNextPage
endCursor
}
}
}# orders:query — validated against api_version 2025-01
query CustomerOrderHistory($query: String!, $after: String) {
orders(first: 250, after: $after, query: $query) {
edges {
node {
id
createdAt
customer {
id
}
lineItems(first: 5) {
edges {
node {
product {
id
title
}
}
}
}
}
}
pageInfo {
hasNextPage
endCursor
}
}
}Session Tracking
Claude MUST emit the following output at each stage. This is mandatory.
On start, emit:
╔══════════════════════════════════════════════╗
║ SKILL: Repeat Purchase Rate ║
║ Store: <store domain> ║
║ 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):
══════════════════════════════════════════════
REPEAT PURCHASE RATE
Acquisition window: <days_back> days
Repeat window: <repeat_window> days
Customers acquired: <n>
Repeat purchasers: <n>
Repeat rate: <pct>%
By First Product:
"<product>" Acquired: <n> Repeat: <pct>%
Output: repeat_purchase_<date>.csv
══════════════════════════════════════════════For format: json, emit:
{
"skill": "repeat-purchase-rate",
"store": "<domain>",
"acquisition_days": 90,
"repeat_window_days": 90,
"customers_acquired": 0,
"repeat_purchasers": 0,
"repeat_rate_pct": 0,
"by_product": [],
"output_file": "repeat_purchase_<date>.csv"
}Output Format
CSV file repeat_purchase_<YYYY-MM-DD>.csv with columns: customer_id, first_order_date, first_product, total_orders, is_repeat, days_to_repeat, total_spent
Error Handling
| Error | Cause | Recovery |
|---|---|---|
THROTTLED | API rate limit exceeded | Wait 2 seconds, retry up to 3 times |
| Guest checkout customers | No customer record to link orders | Exclude from analysis |
| Insufficient history | Store newer than window | Analyze available period |
Best Practices
- A repeat rate of 25–35% within 90 days is a healthy baseline for most non-subscription ecommerce stores.
- Products with high repeat rates are your "gateway" products — prioritize them in acquisition campaigns.
- Use
segment_by: productto identify which products create loyal customers vs. one-time buyers. - Pair with
customer-cohort-analysisfor a deeper view of long-term retention trends.
Related skills
FAQ
How is a repeat purchaser defined?
A customer acquired in the window who has 2 or more orders within the repeat_window days after their first purchase.
Are guest checkouts included?
No; guest-checkout customers have no customer record to link orders and are excluded from the analysis.