# Shopify

Manage Shopify store: products, variants, orders, customers, fulfillments, discounts. Exposes **49 actions** covering the full API surface
the agent needs - read and write.

## What it can do

| Method | What it does |
| --- | --- |
| `shopify_list_products` | List all products - GET /products.json. |
| `shopify_get_product` | Get one product by ID - GET /products/&#123;product_id&#125;.json. |
| `shopify_create_product` | Create a new product - POST /products.json. |
| `shopify_update_product` | Update a product - PUT /products/&#123;product_id&#125;.json. |
| `shopify_delete_product` | Delete a product - DELETE /products/&#123;product_id&#125;.json. |
| `shopify_list_variants` | List product variants - GET /products/&#123;product_id&#125;/variants.json. |
| `shopify_get_variant` | Get one variant by ID - GET /variants/&#123;variant_id&#125;.json. |
| `shopify_create_variant` | Create a product variant - POST /products/&#123;product_id&#125;/variants.json. |
| `shopify_update_variant` | Update a product variant - PUT /variants/&#123;variant_id&#125;.json. |
| `shopify_delete_variant` | Delete a product variant - DELETE /products/&#123;product_id&#125;/variants/&#123;variant_id&#125;.json. |
| `shopify_list_inventory_levels` | List inventory levels - GET /inventory_levels.json. |
| `shopify_get_inventory_level` | Get inventory level for a specific item+location - GET /inventory_levels.json?inventory_item_id=...&location_id=. |
| `shopify_adjust_inventory_level` | Adjust inventory quantity - POST /inventory_levels/adjust.json. |
| `shopify_list_orders` | List orders - GET /orders.json. |
| `shopify_get_order` | Get one order by ID - GET /orders/&#123;order_id&#125;.json. |
| `shopify_create_order` | Create a draft order (manual order) - POST /orders.json. |
| `shopify_update_order` | Update an order - PUT /orders/&#123;order_id&#125;.json. |
| `shopify_cancel_order` | Cancel an order - POST /orders/&#123;order_id&#125;/cancel.json. |
| `shopify_close_order` | Close an order (completed, no longer accepting fulfillment) - POST /orders/&#123;order_id&#125;/close.json. |
| `shopify_list_fulfillments` | List fulfillments for an order - GET /orders/&#123;order_id&#125;/fulfillments.json. |
| `shopify_get_fulfillment` | Get one fulfillment by ID - GET /orders/&#123;order_id&#125;/fulfillments/&#123;fulfillment_id&#125;.json. |
| `shopify_create_fulfillment` | Create a fulfillment - POST /orders/&#123;order_id&#125;/fulfillments.json. |
| `shopify_cancel_fulfillment` | Cancel a fulfillment - POST /orders/&#123;order_id&#125;/fulfillments/&#123;fulfillment_id&#125;/cancel.json. |
| `shopify_update_fulfillment_tracking` | Update fulfillment tracking info - PATCH /fulfillments/&#123;fulfillment_id&#125;/tracking_info.json. |
| `shopify_list_customers` | List customers - GET /customers.json. |
| `shopify_get_customer` | Get one customer by ID - GET /customers/&#123;customer_id&#125;.json. |
| `shopify_create_customer` | Create a customer - POST /customers.json. |
| `shopify_update_customer` | Update a customer - PUT /customers/&#123;customer_id&#125;.json. |
| `shopify_delete_customer` | Delete a customer - DELETE /customers/&#123;customer_id&#125;.json. |
| `shopify_activate_customer_account` | Send customer account activation email - POST /customers/&#123;customer_id&#125;/send_invite.json. |
| `shopify_list_collections` | List collections (custom collections) - GET /custom_collections.json. |
| `shopify_get_collection` | Get one collection by ID - GET /custom_collections/&#123;collection_id&#125;.json. |
| `shopify_create_collection` | Create a collection - POST /custom_collections.json. |
| `shopify_update_collection` | Update a collection - PUT /custom_collections/&#123;collection_id&#125;.json. |
| `shopify_delete_collection` | Delete a collection - DELETE /custom_collections/&#123;collection_id&#125;.json. |
| `shopify_list_locations` | List locations (warehouses, stores) - GET /locations.json. |
| `shopify_get_location` | Get one location by ID - GET /locations/&#123;location_id&#125;.json. |
| `shopify_get_shop` | Get shop information (name, address, timezone, currency, etc.) - GET /shop.json. |
| `shopify_list_webhooks` | List webhooks - GET /webhooks.json. |
| `shopify_get_webhook` | Get one webhook by ID - GET /webhooks/&#123;webhook_id&#125;.json. |
| `shopify_create_webhook` | Create a webhook - POST /webhooks.json. |
| `shopify_update_webhook` | Update a webhook - PUT /webhooks/&#123;webhook_id&#125;.json. |
| `shopify_delete_webhook` | Delete a webhook - DELETE /webhooks/&#123;webhook_id&#125;.json. |
| `shopify_list_price_rules` | List price rules (discount rules) - GET /price_rules.json. |
| `shopify_get_price_rule` | Get one price rule by ID - GET /price_rules/&#123;price_rule_id&#125;.json. |
| `shopify_create_price_rule` | Create a price rule (discount) - POST /price_rules.json. |
| `shopify_update_price_rule` | Update a price rule - PUT /price_rules/&#123;price_rule_id&#125;.json. |
| `shopify_create_discount_code` | Create a discount code (voucher) - POST /price_rules/&#123;price_rule_id&#125;/discount_codes.json. |
| `shopify_list_discount_codes` | List discount codes for a price rule - GET /price_rules/&#123;price_rule_id&#125;/discount_codes.json. |

## How to get credentials

This connector uses an **API key / token**. Create one in the provider
dashboard, then paste it into FlyMyAI:

- **`SHOPIFY_SHOP`** - Your *.myshopify.com subdomain (e.g. 'myshop').

## Fields to fill in FlyMyAI

| FlyMyAI field | Where it comes from |
| --- | --- |
| `SHOPIFY_SHOP` | Your *.myshopify.com subdomain (e.g. 'myshop'). |

## Troubleshooting

- **`401 Unauthorized` / `403 Forbidden`** - the token is wrong, expired, or missing a required scope - regenerate it.
- **`429 Too Many Requests`** - you hit the provider rate limit; retry after a short backoff.
- **Unexpected `4xx` on writes** - double-check required fields; the agent confirms before write actions.

## Links

- [Shopify API documentation](https://shopify.dev/docs/api/admin-rest)
