Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
40rty-ai avatar

Shopify Admin Duplicate Customer Finder

  • 6 installs
  • 173 repo stars
  • Updated June 26, 2026
  • 40rty-ai/shopify-admin-skills

shopify-admin-duplicate-customer-finder is a read-only Claude Code skill that finds likely duplicate Shopify customer records by matching email, phone, or name combinations.

About

This Claude Code skill scans the Shopify customer database for likely duplicate records using email, phone, and name matching, then reports groups of matching records. A customer-ops user runs it to find duplicates that split order history and skew LTV and marketing segmentation. It is read-only, since Shopify's Admin API has no merge operation, so flagged duplicates must be merged manually in the admin.

  • Finds likely duplicate customer records by email, phone, or name matching
  • Read-only, exporting a grouped duplicate-customer CSV
  • Flags records that split order history and skew LTV and segmentation

Shopify Admin Duplicate Customer Finder by the numbers

  • 6 all-time installs (skills.sh)
  • Ranked #1,588 of 2,064 Data Science & ML skills by installs in the Skillselion catalog
  • Data as of Aug 1, 2026 (Skillselion catalog sync)
At a glance

shopify-admin-duplicate-customer-finder capabilities & compatibility

Free skill; requires an authenticated Shopify store session with read_customers

Capabilities
duplicate detection · customer deduplication · data quality audit
Use cases
data analysis
Runs
Runs locally
Pricing
Free
From the docs

What shopify-admin-duplicate-customer-finder says it does

Scans the customer database for likely duplicate records using email, phone, and name matching.
SKILL.md
Duplicate merging is not supported by the Shopify Admin API — flagged duplicates must be merged manually in Shopify Admin.
SKILL.md
npx skills add https://github.com/40rty-ai/shopify-admin-skills --skill shopify-admin-duplicate-customer-finder

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs6
repo stars173
Last updatedJune 26, 2026
Repository40rty-ai/shopify-admin-skills

What it does

Find likely duplicate Shopify customer records so they can be merged manually.

Who is it for?

Customer-ops teams surfacing duplicate records that split order history and skew LTV

Skip if: Merging the duplicates, since Shopify's Admin API has no merge and it must be done manually

When should I use this skill?

You suspect duplicate customer records are fragmenting your data

What you get

Grouped likely-duplicate records ready for a manual merge in Shopify admin.

  • duplicate_customers_<date>.csv grouping matched records

By the numbers

  • 1 GraphQL operation (customers query)
  • 4 match strategies (email, phone, name, all)

Files

SKILL.mdMarkdownGitHub ↗

Purpose

Scans the customer database for likely duplicate records using email, phone, and name matching. Duplicate customer records cause split order history, incorrect LTV calculations, and incorrect marketing segmentation. Read-only — no mutations.

Prerequisites

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

Parameters

ParameterTypeRequiredDefaultDescription
storestringyesStore domain (e.g., mystore.myshopify.com)
match_onstringnoemailMatch strategy: email, phone, name, or all
min_ordersintegerno0Only flag duplicates where at least one record has this many orders
formatstringnohumanOutput format: human or json

Safety

ℹ️ Read-only skill — no mutations are executed. Safe to run at any time. Duplicate merging is not supported by the Shopify Admin API — flagged duplicates must be merged manually in Shopify Admin.

Workflow Steps

1. OPERATION: customers — query Inputs: first: 250, select email, phone, firstName, lastName, numberOfOrders, totalSpentV2, pagination cursor Expected output: All customers with contact and order data; paginate until hasNextPage: false

2. Build in-memory lookup maps:

  • email → [customer_ids]
  • phone → [customer_ids] (if match_on includes phone)
  • "firstName lastName" → [customer_ids] (if match_on includes name)

3. Report groups with > 1 customer per key as likely duplicates

GraphQL Operations

# customers:query — validated against api_version 2025-01
query CustomersForDeduplication($after: String) {
  customers(first: 250, after: $after) {
    edges {
      node {
        id
        displayName
        firstName
        lastName
        defaultEmailAddress {
          emailAddress
        }
        phone
        numberOfOrders
        amountSpent {
          amount
          currencyCode
        }
        createdAt
      }
    }
    pageInfo {
      hasNextPage
      endCursor
    }
  }
}

Session Tracking

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

On start, emit:

╔══════════════════════════════════════════════╗
║  SKILL: Duplicate Customer Finder            ║
║  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):

══════════════════════════════════════════════
DUPLICATE CUSTOMER REPORT
  Customers scanned:       <n>
  Duplicate groups found:  <n>
  Customers affected:      <n>

  Duplicate groups (sample):
    Email: user@example.com
      Customer A — <n> orders, $<n> spent, created <date>
      Customer B — <n> orders, $<n> spent, created <date>
  Output: duplicate_customers_<date>.csv
══════════════════════════════════════════════

For format: json, emit:

{
  "skill": "duplicate-customer-finder",
  "store": "<domain>",
  "customers_scanned": 0,
  "duplicate_groups": 0,
  "customers_affected": 0,
  "output_file": "duplicate_customers_<date>.csv"
}

Output Format

CSV file duplicate_customers_<YYYY-MM-DD>.csv with columns: duplicate_group_id, match_key, match_type, customer_id, name, email, phone, number_of_orders, total_spent, created_at

Error Handling

ErrorCauseRecovery
THROTTLEDAPI rate limit exceededWait 2 seconds, retry up to 3 times
No duplicates foundClean customer databaseExit with ✅ no duplicates found

Best Practices

  • Shopify does not provide a native merge API — flagged duplicates must be resolved manually in Shopify Admin (Customers → Merge).
  • match_on: email finds the most reliable duplicates; match_on: name produces more false positives (common names).
  • Prioritize duplicates where at least one record has orders — these affect LTV and marketing segmentation most.
  • Common causes of duplicates: guest checkout followed by account creation, manual customer imports, or customers using multiple email addresses.

Related skills

FAQ

Does it merge the duplicates?

No. Shopify's Admin API has no merge, so flagged duplicates must be merged manually in Shopify Admin under Customers, Merge.

Which match strategy is most reliable?

match_on:email finds the most reliable duplicates, while match_on:name produces more false positives.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.