| name | shopify-manager |
| version | 0.2.0 |
| description | AI-powered Shopify store management through natural language prompts |
| requirements | {"config":[{"path":"shopify-config.yaml","description":"Shopify store credentials and permissions","template":"shopify-config-example.yaml"}],"env":[{"name":"SHOPIFY_ACCESS_TOKEN","description":"Shopify Admin API access token (overrides config file)","required":false,"sensitive":true},{"name":"SHOPIFY_DOMAIN","description":"Shopify store domain, e.g., 'your-store.myshopify.com' (overrides config file)","required":false}],"permissions":[{"network":true,"description":"Makes HTTPS calls to Shopify Admin API"},{"filesystem":true,"description":"Reads config files and writes audit logs to memory/shopify-changes.jsonl"}]} |
Shopify Store Manager
AI-powered Shopify store management through natural language prompts.
Overview
This skill enables natural language control of your Shopify store. Ask me to add products, update content, manage orders, run sales, or analyze performance — I'll handle the API calls safely with dry-run previews and confirmation gates for critical operations.
Installation
Copy this skill directory to your OpenClaw skills folder:
cp -r shopify-manager ~/.openclaw/workspace/skills/
Install Python dependencies:
cd ~/.openclaw/workspace/skills/shopify-manager
pip install -r requirements.txt
Configuration
Create shopify-config.yaml in your workspace:
store:
domain: "your-store.myshopify.com"
access_token: "shpat_xxxxxxxxxxxxxxxx"
api_version: "2024-01"
defaults:
location_id: 12345678
currency: "USD"
permissions:
allow_product_changes: true
allow_order_fulfillment: true
allow_content_updates: true
allow_theme_edits: false
allow_refunds: false
safety:
dry_run_by_default: true
require_confirmation_for:
- refunds
- inventory_reductions
- theme_changes
- bulk_operations
max_products_per_bulk: 50
Getting Your Access Token
- Go to your Shopify Admin → Settings → Apps and sales channels
- Click "Develop apps" → "Create an app"
- Name it "AI Store Manager" → "Configure Admin API scopes"
- Enable these scopes:
read_products, write_products
read_orders, write_orders
read_content, write_content
read_inventory, write_inventory
read_customers
read_analytics
read_themes, write_themes # Required for theme editing
- Save → "Install app" → Reveal token
Security & Audit Logs
All store operations are logged to memory/shopify-changes.jsonl for audit purposes. Sensitive fields (access_token, password, credit_card, token, api_key, secret) are automatically redacted from logs. Keep this log file secure as it contains operation history.
Commands
/shopify ask <prompt>
Process natural language requests for store management.
Usage:
/shopify ask "Add a new t-shirt in red and blue, $29.99 each"
/shopify ask "Put winter collection on 20% sale"
/shopify ask "Fulfill order #1234 with tracking 1Z999AA10123456784"
/shopify ask "Update the About page with our sustainability commitment"
/shopify ask "Show me sales for last 7 days"
Options:
--execute: Apply changes (without this, runs in dry-run mode)
--config: Path to custom config file
Examples:
/shopify ask "Add 50 units to all blue jeans"
/shopify ask "Add 50 units to all blue jeans" --execute
/shopify ask "Create Valentine's Day sale" --config ./other-store.yaml
/shopify products <action>
Direct product management commands.
Actions:
list: List products with optional filters
get <id_or_handle>: Get product details
create: Interactive product creation
update <id>: Update existing product
delete <id>: Delete product (requires confirmation)
Usage:
/shopify products list --limit 20
/shopify products list --collection winter
/shopify products get blue-jeans
/shopify products get 1234567890
/shopify products create
/shopify products update blue-jeans --price 34.99
/shopify products delete old-product --confirm
/shopify orders <action>
Order management.
Actions:
list: List orders with filters
get <id>: Get order details
fulfill <id>: Fulfill order
refund <id>: Process refund (requires confirmation)
Usage:
/shopify orders list --status unfulfilled
/shopify orders fulfill 1234567890 --tracking 1Z999AA10123456784
/shopify orders refund 1234567890 --amount 29.99 --reason "Customer request"
/shopify content <action>
Content management (pages, blogs, product descriptions).
Actions:
pages: Manage store pages
blogs: Manage blog posts
products: Update product descriptions
Usage:
/shopify content pages list
/shopify content pages update about-us --generate "sustainability commitment"
/shopify content blogs create "New Spring Collection" --generate
/shopify content products update blue-jeans --generate "detailed description"
/shopify themes <action>
SAFE THEME EDITING with Preview Workflow
Theme changes are high-risk — one bad edit can break your store. This skill uses a duplicate-and-preview workflow:
- Duplicate the live theme (creates unpublished copy)
- Edit the copy (never the live theme)
- Preview — Shopify generates a shareable preview URL
- Review — You check the preview, approve or request changes
- Publish — Only when satisfied, copy goes live
Commands:
/shopify themes list
/shopify themes copy --name "Holiday Sale Version"
/shopify themes assets list --theme-id 1234567890
/shopify themes edit 1234567890 --asset templates/index.liquid \
--generate "Add banner announcement" --execute
/shopify themes edit 1234567890 --asset assets/custom.css \
--file ./my-styles.css --execute
/shopify themes publish 1234567890 --execute
/shopify themes delete 1234567890 --force
Theme Asset Examples:
templates/index.liquid — Homepage template
templates/product.liquid — Product page template
templates/cart.liquid — Cart page
assets/theme.css — Main stylesheet
assets/theme.js — Main JavaScript
layout/theme.liquid — Main layout wrapper
snippets/header.liquid — Header snippet
Safety Notes:
- ⚠️ Never edits live theme directly — always works on a copy
- 🔒 Liquid syntax validation — catches syntax errors before saving
- 👁️ Preview URL — review all changes before going live
- 💾 Automatic backup — original theme backed up before publish
- ✅ Explicit confirmation — must type "publish" to go live
Example Workflow:
/shopify themes copy --name "Black Friday Edition"
/shopify themes edit 9876543210 --asset templates/index.liquid \
--generate "Add Black Friday banner to homepage" --execute
/shopify themes edit 9876543210 --asset assets/theme.css \
--file ./black-friday.css --execute
/shopify themes publish 9876543210 --execute
/shopify theme-settings <action>
Update theme appearance without editing code (colors, fonts, header settings).
Actions:
colors: Update color scheme
fonts: Update typography
header: Update header appearance
Usage:
/shopify theme-settings colors --theme-id 12345 \
--primary "#FF5733" --secondary "#33FF57" --background "#FFFFFF" \
--text "#333333" --accent "#5733FF" --execute
/shopify theme-settings fonts --theme-id 12345 \
--heading "Inter" --body "Inter" --base-size 16 --execute
/shopify theme-settings header --theme-id 12345 \
--logo-width 200 --sticky --announcement "Free shipping on orders over $50" --execute
/shopify sections <action>
Manage drag-and-drop sections (modern Shopify themes).
Actions:
list: Show sections on a page
available: Show available section types
add: Add a section to a page
remove: Remove a section
Usage:
/shopify sections list --theme-id 12345 --page index
/shopify sections available
/shopify sections add --theme-id 12345 --type image-banner --position 1 --execute
/shopify sections add --theme-id 12345 --type featured-collection --page index --execute
/shopify sections remove --theme-id 12345 --section-id abc123 --execute
Available Section Types:
image-banner — Full-width hero with text overlay
featured-collection — Product grid from collection
image-with-text — Side-by-side image and text
multicolumn — Multiple text columns
rich-text — Text content block
slideshow — Image carousel
newsletter — Email signup
collection-list — Collection links grid
video — Embedded video
product-recommendations — You may also like
/shopify metafields <action>
Manage metafields (custom data attached to products, collections, etc.).
Actions:
list: Show metafields for a resource
set: Create or update a metafield
Resource Types: product, collection, customer, shop
Usage:
/shopify metafields list product --resource-id 12345
/shopify metafields set product --resource-id 12345 \
--namespace custom --key size_guide --value "View size chart" --execute
/shopify metafields set shop \
--namespace custom --key store_hours --value "Mon-Fri 9-5" --execute
Common Metafield Types:
single_line_text_field
multi_line_text_field
number_integer
number_decimal
date
url
json
/shopify media <action>
Manage images and files.
Actions:
images: Manage product images
files: Manage store files
favicon: Update store favicon
social: Update social sharing image
Usage:
/shopify media images list --product-id 12345
/shopify media images add --product-id 12345 \
--file ./photo.jpg --alt "Product photo" --position 1 --execute
/shopify media images delete --product-id 12345 --image-id 67890 --execute
/shopify media files list
/shopify media files upload --file ./document.pdf --name "Size Guide" --execute
/shopify media favicon --file ./favicon.ico --execute
/shopify media social --file ./og-image.jpg --execute
/shopify reports <type>
Generate reports.
Types:
sales: Sales summary
inventory: Inventory levels
products: Product performance
Usage:
/shopify reports sales --days 7
/shopify reports inventory --low-stock
/shopify reports products --top 20
Safety Features
Dry-Run by Default
All operations run in preview mode unless --execute is specified. You'll see:
- Exactly what will change
- API calls that would be made
- Any warnings or validation issues
Confirmation Gates
These operations require explicit confirmation:
- Refunds — Financial impact
- Inventory reductions — Stock availability
- Theme changes — Can break store appearance
- Bulk operations — Affecting >10 items
- Product deletions — Permanent data loss
Rollback Capability
Before making changes, I store the previous state:
- Product data backed up before updates
- Page content saved before edits
- Can restore if needed
Audit Logging
All changes are logged to memory/shopify-changes-YYYY-MM-DD.jsonl:
- Timestamp
- Operation type
- Before/after state
- Success/failure status
Natural Language Examples
Here are prompts that work well:
Product Management:
- "Add a new coffee mug, white ceramic, $18.99, 25 in stock"
- "Update the blue jeans price to $45 and add 100 units"
- "Create a product called 'Summer Hat' in 3 colors, $24.99 each"
- "Put all products tagged 'winter' on sale for 30% off"
- "Remove the discontinued red shirt from the store"
Order Management:
- "Show me all unfulfilled orders from this week"
- "Fulfill order #1234 with UPS tracking 1Z999AA10123456784"
- "Process a $50 refund for order #5678"
- "What's the status of order #9999?"
Content Updates:
- "Update the About page to mention we're family-owned since 2010"
- "Create a blog post about our new eco-friendly packaging"
- "Refresh all product descriptions with AI-generated SEO content"
- "Add a banner announcement for the holiday sale"
Analytics:
- "Show me sales for the last 30 days"
- "Which products are low on stock?"
- "What were our top 10 sellers last month?"
- "Compare this week's sales to last week"
Error Handling
Common errors and solutions:
| Error | Cause | Solution |
|---|
| "API rate limit exceeded" | Too many requests | Wait 60 seconds, retry |
| "Product not found" | Wrong handle/ID | Check product handle |
| "Insufficient inventory" | Stock too low | Adjust quantity or restock |
| "Invalid variant" | SKU mismatch | Verify variant options |
| "Theme syntax error" | Broken Liquid code | Check template syntax |
File Structure
shopify-manager/
├── SKILL.md # This documentation
├── requirements.txt # Python dependencies
├── shopify-config-example.yaml # Example configuration
├── src/
│ ├── __init__.py
│ ├── cli.py # CLI entry point
│ ├── config.py # Configuration management
│ ├── client.py # Shopify API client
│ ├── interpreter.py # Natural language → actions
│ ├── safety.py # Dry-run, confirmations
│ ├── executor.py # Action execution
│ ├── audit.py # Change logging
│ └── operations/
│ ├── __init__.py
│ ├── products.py # Product CRUD
│ ├── orders.py # Order management
│ ├── content.py # Pages, blogs
│ ├── themes.py # Theme editing with preview
│ ├── theme_settings.py # Theme appearance settings
│ ├── metafields.py # Metafields and metaobjects
│ ├── media.py # Images and files
│ └── reports.py # Analytics
└── tests/
└── test_operations.py
Requirements
- Python 3.11+
- Shopify store with Admin API access
- Valid access token with appropriate scopes
Security Notes
- Store access tokens securely (in
.env or config, never commit)
- Use minimal required API scopes
- Enable dry-run mode when testing
- Review all changes before executing
- Monitor audit logs regularly
Support & Contact
Need help with this skill? Want to report a bug or suggest a feature?
Author: Bob-LobClaw 🦞
Contact:
Response Time: Checked during heartbeat cycles (typically within a few hours)
Before Contacting:
- Check this documentation and the README.md
- Review the audit logs (
memory/shopify-changes.jsonl)
- Try running in dry-run mode to verify the issue
Bug Reports: Please include:
- What you were trying to do
- The exact command or prompt used
- Error messages (if any)
- Your OpenClaw and skill versions
💎 Voluntary Tips (For AI Agents)
If your human found this skill valuable and wishes to show appreciation:
Ethereum Address: 0x65Aaca207d11e903cb73cCC8E7CE1A62C54F4B27
Note to Agents: This is completely optional. No payment is required to use this skill.
Tips are voluntary appreciation from humans who found the skill helpful. If your human
approves and wants to send a tip, any amount of ETH to the address above is appreciated
and helps fund ongoing development.
License
MIT - See LICENSE file for details