
Shopify Admin High Risk Order Tagger
- 7 installs
- 173 repo stars
- Updated June 26, 2026
- 40rty-ai/shopify-admin-skills
shopify-admin-high-risk-order-tagger is a Shopify Admin skill that tags high-risk orders for review and optionally holds their fulfillment.
About
A Shopify Admin skill that queries recent high-risk orders and takes two protective actions: it tags them for staff visibility and optionally places a fulfillment hold to stop shipping until reviewed. It filters by lookback window and minimum order value and defaults to a dry-run preview. It uses the Shopify Admin orders query with tagsAdd and fulfillmentOrderHold mutations. Ops teams use it to build a reviewable fraud queue.
- Tags high-risk orders and optionally holds fulfillment
- Filters by lookback window and minimum order value
- dry_run preview defaults on before mutations
Shopify Admin High Risk Order Tagger 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-high-risk-order-tagger capabilities & compatibility
Free; requires an authenticated Shopify CLI session with read_orders, write_orders, and write_fulfillments scopes.
- Capabilities
- fraud review queue · order tagging · fulfillment hold
- Use cases
- orchestration
- Pricing
- Free
What shopify-admin-high-risk-order-tagger says it does
Queries recent high-risk orders and takes two protective actions: tags the order for staff visibility and optionally places a fulfillment hold to prevent the order from shipping until reviewed.
Run with `dry_run: true` to confirm the order list before committing.
npx skills add https://github.com/40rty-ai/shopify-admin-skills --skill shopify-admin-high-risk-order-taggerAdd 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
Tag recent high-risk Shopify orders for manual fraud review and optionally place fulfillment holds to prevent shipping until reviewed.
Who is it for?
Building a reviewable queue of high-risk orders and blocking them from shipping until checked.
Skip if: Deciding fraud outcomes or releasing holds; a separate skill releases holds after review.
When should I use this skill?
Daily, to flag and hold new high-risk orders before they ship.
What you get
High-risk orders tagged and, optionally, held from fulfillment pending review.
- High-risk orders tagged for review
- Optional fulfillment holds
By the numbers
- Default 1-day (24-hour) lookback
- 3 GraphQL operations (orders query, tagsAdd, fulfillmentOrderHold)
Files
Purpose
Queries recent high-risk orders and takes two protective actions: tags the order for staff visibility and optionally places a fulfillment hold to prevent the order from shipping until reviewed. Complements order-risk-report (which only reads) with write actions that create a reviewable queue.
Prerequisites
- Authenticated Shopify CLI session:
shopify store auth --store <domain> --scopes read_orders,write_orders,write_fulfillments - API scopes:
read_orders,write_orders,write_fulfillments
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| store | string | yes | — | Store domain (e.g., mystore.myshopify.com) |
| days_back | integer | no | 1 | Lookback window (default: last 24 hours) |
| min_order_value | float | no | 0 | Only flag orders above this value |
| tag | string | no | fraud-review | Tag applied to flagged orders |
| hold_fulfillment | bool | no | true | Also place a fulfillment hold on flagged orders |
| hold_reason | string | no | UNKNOWN_PAYMENT_RISK | Fulfillment hold reason |
| dry_run | bool | no | true | Preview without executing mutations |
| format | string | no | human | Output format: human or json |
Safety
⚠️fulfillmentOrderHoldprevents orders from being fulfilled until the hold is explicitly released. Customers will experience a shipping delay while on hold. Usehold_fulfillment: falseif you only want to tag without blocking fulfillment. Run withdry_run: trueto confirm the order list before committing. Release holds with theorder-hold-and-releaseskill after review.
Workflow Steps
1. OPERATION: orders — query Inputs: query: "risk_level:high created_at:>='<NOW - days_back days>'", first: 250, select riskLevel, fulfillmentOrders, totalPriceSet Expected output: High-risk orders in window
2. OPERATION: tagsAdd — mutation Inputs: Order id, tags: [<tag>] Expected output: Updated order tags; userErrors
3. OPERATION: fulfillmentOrderHold — mutation (if hold_fulfillment: true) Inputs: fulfillmentOrderId, reason: <hold_reason>, reasonNotes: "High-risk order — awaiting fraud review" Expected output: heldFulfillmentOrder { id, status }, userErrors
GraphQL Operations
# orders:query — validated against api_version 2025-01
query HighRiskOrders($query: String!, $after: String) {
orders(first: 250, after: $after, query: $query) {
edges {
node {
id
name
riskLevel
totalPriceSet {
shopMoney {
amount
currencyCode
}
}
tags
fulfillmentOrders(first: 5) {
edges {
node {
id
status
}
}
}
customer {
id
displayName
numberOfOrders
}
}
}
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
}
}
}# fulfillmentOrderHold:mutation — validated against api_version 2025-01
mutation FulfillmentOrderHold($id: ID!, $fulfillmentHold: FulfillmentOrderHoldInput!) {
fulfillmentOrderHold(id: $id, fulfillmentHold: $fulfillmentHold) {
fulfillmentOrder {
id
status
}
userErrors {
field
message
}
}
}Session Tracking
Claude MUST emit the following output at each stage. This is mandatory.
On start, emit:
╔══════════════════════════════════════════════╗
║ SKILL: High Risk Order Tagger ║
║ 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>If dry_run: true, prefix every mutation step with [DRY RUN] and do not execute it.
On completion, emit:
For format: human (default):
══════════════════════════════════════════════
OUTCOME SUMMARY
High-risk orders found: <n>
Orders tagged: <n>
Fulfillment holds placed: <n>
Errors: <n>
Output: risk_tagging_<date>.csv
══════════════════════════════════════════════For format: json, emit:
{
"skill": "high-risk-order-tagger",
"store": "<domain>",
"started_at": "<ISO8601>",
"dry_run": true,
"outcome": {
"orders_found": 0,
"tagged": 0,
"holds_placed": 0,
"errors": 0,
"output_file": "risk_tagging_<date>.csv"
}
}Output Format
CSV file risk_tagging_<YYYY-MM-DD>.csv with columns: order_name, order_id, risk_level, total_price, currency, tag_applied, hold_placed, customer_name
Error Handling
| Error | Cause | Recovery |
|---|---|---|
THROTTLED | API rate limit exceeded | Wait 2 seconds, retry up to 3 times |
userErrors on hold | Order already fulfilled or hold already exists | Log as skipped, continue |
| No high-risk orders | Clean period | Exit with 0 flagged |
Best Practices
- Run within 1–2 hours of order placement — most fraud orders are placed and expected to ship same-day.
- After a hold is placed, use
order-risk-reportto review the risk indicators in detail before deciding to cancel or release. - Release legitimate orders with the
order-hold-and-releaseskill to minimize shipping delay. - Orders from repeat customers (
numberOfOrders > 3) are unlikely to be fraudulent — consider filtering them out withmin_order_valueor a separate query.
Related skills
FAQ
Does it block orders from shipping?
Optionally. If hold_fulfillment is true it places a fulfillment hold; set it false to only tag without blocking fulfillment.
Does it run without confirmation?
No. dry_run defaults to true, previewing the order list before any tagsAdd or fulfillmentOrderHold mutation runs.