
Shopify Admin Average Order Value Trends
- 7 installs
- 173 repo stars
- Updated June 26, 2026
- 40rty-ai/shopify-admin-skills
shopify-admin-average-order-value-trends is a Claude Code skill that tracks Shopify Average Order Value over time buckets and segments it by new versus returning customers.
About
shopify-admin-average-order-value-trends calculates Average Order Value over configurable daily, weekly, or monthly buckets and segments results by new versus returning customers. An operator runs it to measure the impact of upsells, bundles, or free-shipping thresholds on AOV. It is read-only and exports a CSV of AOV per period and segment.
- Calculates AOV over daily, weekly, or monthly buckets
- Segments AOV by new vs. returning customers
- Read-only Shopify Admin skill that exports a CSV
Shopify Admin Average Order Value Trends by the numbers
- 7 all-time installs (skills.sh)
- Ranked #1,587 of 2,715 Automation & Workflows skills by installs in the Skillselion catalog
- Data as of Aug 1, 2026 (Skillselion catalog sync)
shopify-admin-average-order-value-trends capabilities & compatibility
Free; requires an authenticated Shopify session with read_orders and read_customers scopes.
- Capabilities
- average order value trends · shipping cost analysis · carrier performance comparison
- Use cases
- data analysis
- Pricing
- Free
What shopify-admin-average-order-value-trends says it does
Read-only: tracks AOV over time buckets and segments by new vs. returning customers.
Calculates Average Order Value (AOV) over configurable time buckets (daily, weekly, monthly) and segments results by new vs. returning customers.
npx skills add https://github.com/40rty-ai/shopify-admin-skills --skill shopify-admin-average-order-value-trendsAdd 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
Track Shopify Average Order Value trends over time and by new vs. returning customer segments.
Who is it for?
Operators measuring how upsells, bundles, or free-shipping thresholds move AOV over time.
Skip if: Segmenting guest-checkout orders as new vs. returning, which lack a customer record.
When should I use this skill?
You want to see AOV trends by week or month and by customer segment.
What you get
AOV per time bucket and per new/returning segment, exported as a CSV.
- CSV of AOV per period, split by new and returning customers
By the numbers
- Default 90-day lookback window
- Buckets: day, week, or month
- Queries up to 250 orders per page
Files
Purpose
Calculates Average Order Value (AOV) over configurable time buckets (daily, weekly, monthly) and segments results by new vs. returning customers. Tracks AOV trends to measure the impact of upsell programs, bundle offers, or free shipping thresholds. Read-only — no mutations.
Prerequisites
- Authenticated Shopify CLI session:
shopify store auth --store <domain> --scopes read_orders,read_customers - API scopes:
read_orders,read_customers
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| store | string | yes | — | Store domain (e.g., mystore.myshopify.com) |
| days_back | integer | no | 90 | Total lookback window |
| bucket | string | no | week | Time bucket: day, week, or month |
| 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: orders — query Inputs: query: "created_at:>='<NOW - days_back days>'", first: 250, select totalPriceSet, customer { id, numberOfOrders }, createdAt, pagination cursor Expected output: All orders in window; paginate until hasNextPage: false
2. Classify each order: if customer.numberOfOrders == 1 → new customer order; else → returning
3. OPERATION: customers — query (optional enrichment for cohort context) Inputs: Recent customers for new vs. repeat segmentation validation
4. Group orders by time bucket; calculate AOV per bucket and per customer segment
GraphQL Operations
# orders:query — validated against api_version 2025-01
query AOVData($query: String!, $after: String) {
orders(first: 250, after: $after, query: $query) {
edges {
node {
id
name
createdAt
totalPriceSet {
shopMoney {
amount
currencyCode
}
}
customer {
id
numberOfOrders
}
}
}
pageInfo {
hasNextPage
endCursor
}
}
}# customers:query — validated against api_version 2025-01
query NewVsReturningCustomers($query: String!, $after: String) {
customers(first: 250, after: $after, query: $query) {
edges {
node {
id
numberOfOrders
createdAt
}
}
pageInfo {
hasNextPage
endCursor
}
}
}Session Tracking
Claude MUST emit the following output at each stage. This is mandatory.
On start, emit:
╔══════════════════════════════════════════════╗
║ SKILL: Average Order Value Trends ║
║ 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):
══════════════════════════════════════════════
AOV TRENDS (<days_back> days, bucket: <bucket>)
Orders analyzed: <n>
Overall AOV: $<amount>
New customer AOV: $<amount>
Returning AOV: $<amount>
Period Orders AOV New AOV Returning AOV
────────────────────────────────────────────────────
2026-W14 <n> $<n> $<n> $<n>
Output: aov_trends_<date>.csv
══════════════════════════════════════════════For format: json, emit:
{
"skill": "average-order-value-trends",
"store": "<domain>",
"period_days": 90,
"overall_aov": 0,
"new_customer_aov": 0,
"returning_customer_aov": 0,
"by_period": [],
"output_file": "aov_trends_<date>.csv"
}Output Format
CSV file aov_trends_<YYYY-MM-DD>.csv with columns: period, order_count, aov, new_customer_orders, new_customer_aov, returning_orders, returning_aov, currency
Error Handling
| Error | Cause | Recovery |
|---|---|---|
THROTTLED | API rate limit exceeded | Wait 2 seconds, retry up to 3 times |
| Guest checkout orders | No customer record | Count in totals but exclude from new/returning segmentation |
| No orders in window | New store or quiet period | Exit with 0 AOV |
Best Practices
- A free shipping threshold increase or bundle introduction should show up as an AOV lift in the week/month it launched — use this report to measure the impact.
- Returning customer AOV is typically higher than new — a shrinking gap may indicate loyalty erosion.
bucket: weekis best for campaign measurement;bucket: monthfor long-term trend tracking.- Guest checkout orders cannot be segmented as new vs. returning — for stores with high guest checkout rates, the segmentation will under-count new customers.
Related skills
FAQ
Can it separate new and returning customers?
Yes. It classifies an order as a new customer order when customer.numberOfOrders equals 1, otherwise returning.
What time buckets are supported?
Daily, weekly, or monthly buckets, set by the bucket parameter, with a default 90-day lookback.