From shopify-admin-skills
Segments high-LTV Shopify customers by order count and lifetime spend, tags them, and exports a loyalty-ready contact list.
How this skill is triggered — by the user, by Claude, or both
Slash command
/shopify-admin-skills:shopify-admin-loyalty-segment-exportThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Segments your highest-value customers by order count and total lifetime spend, tags them in Shopify, and exports a list ready for loyalty program enrollment or VIP campaign targeting. This skill handles the data layer; managing rewards points or sending loyalty emails requires an external tool.
Segments your highest-value customers by order count and total lifetime spend, tags them in Shopify, and exports a list ready for loyalty program enrollment or VIP campaign targeting. This skill handles the data layer; managing rewards points or sending loyalty emails requires an external tool.
shopify auth login --store <domain>read_customers, write_customers| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| store | string | yes | — | Store domain |
| format | string | no | human | human or json |
| dry_run | bool | no | false | Preview without tagging |
| min_orders | integer | no | 3 | Minimum lifetime order count |
| min_spend | float | no | 200 | Minimum lifetime spend (store currency) |
| tag | string | no | loyalty-vip | Tag applied to qualifying customers |
OPERATION: customers — query
Inputs: filter orders_count:>=(min_orders), total_spent:>=(min_spend), first: 250, pagination
Expected output: List with id, defaultEmailAddress { emailAddress }, firstName, lastName, ordersCount, totalSpentV2; paginate until hasNextPage: false
OPERATION: tagsAdd — mutation
Inputs: Customer id, tag from tag parameter
Expected output: Confirmation per customer; collect userErrors
# customers:query — validated against api_version 2025-04
query LoyaltyCustomers($first: Int!, $after: String, $query: String) {
customers(first: $first, after: $after, query: $query) {
edges {
node {
id
defaultEmailAddress {
emailAddress
}
firstName
lastName
ordersCount
totalSpentV2 {
amount
currencyCode
}
tags
}
}
pageInfo {
hasNextPage
endCursor
}
}
}
# tagsAdd:mutation — validated against api_version 2025-01
mutation TagsAdd($id: ID!, $tags: [String!]!) {
tagsAdd(id: $id, tags: $tags) {
node { id }
userErrors { field message }
}
}
Claude MUST emit the following output at each stage. This is mandatory.
On start, emit:
╔══════════════════════════════════════════════╗
║ SKILL: Loyalty Segment Export ║
║ Store: <store domain> ║
║ Started: <YYYY-MM-DD HH:MM UTC> ║
╚══════════════════════════════════════════════╝
After each step, emit:
[N/TOTAL] <QUERY|MUTATION> <OperationName>
→ Params: <brief summary>
→ Result: <count or outcome>
If dry_run: true, prefix mutation steps with [DRY RUN] and do not execute.
On completion, for format: human:
══════════════════════════════════════════════
OUTCOME SUMMARY
VIP customers found: <n>
Customers tagged: <n>
Errors: <n>
Output: loyalty_segment_<date>.csv
══════════════════════════════════════════════
For format: json, emit the standard JSON schema with outcome keys: vip_customers_found, customers_tagged, errors, output_file.
CSV loyalty_segment_<YYYY-MM-DD>.csv with columns:
customer_id, email, first_name, last_name, orders_count, total_spent, currency, tag_applied
| Error | Cause | Recovery |
|---|---|---|
THROTTLED | Rate limit | Wait 2s, retry up to 3 times |
userErrors on tagsAdd | Invalid customer ID | Log, skip, continue |
NOT tag:loyalty-vip to your query filter to skip already-enrolled customers.dry_run: true to see the count, then adjust min_orders and min_spend before committing.customer-win-back: tag high-LTV lapsed customers with both loyalty-vip and a win-back tag to identify your highest-priority re-engagement targets.npx claudepluginhub 40rty-ai/shopify-admin-skills --plugin shopify-admin-skillsIdentifies top-spending customers by lifetime value or order frequency, exports a CSV of VIP candidates, and optionally tags them as VIPs in Shopify.
Assigns custom labels to Wix contacts for targeted email campaigns by querying orders API, aggregating buyer spend with jq, and filtering high-value contacts.
Manages Shopify customers via GraphQL Admin API mutations/queries for create/update/delete/tags/metafields, Customer Account API, Multipass SSO, segmentation, B2B accounts.