Shopify

Shopify is a leading e-commerce platform for online stores.

Overview

The Shopify connector lets your Spojit workflows read and write data in your Shopify store: orders, products, customers, inventory, collections, and discounts. It speaks to both the REST Admin API and the GraphQL Admin API, and exposes a raw-graphql escape hatch for queries that aren't covered by a dedicated tool.

Use it as the source-of-truth side of a multi-channel setup (pushing data into NetSuite or BI), as the destination for syncs from other storefronts, or as the trigger surface for fulfilment, marketing, and finance automations.

What You Can Do

The Shopify connector exposes these tools:

  • list-orders - List orders with filters (status, date range, financial status).
  • get-order - Fetch a single order with line items, customer, and shipping detail.
  • update-order - Update tags, notes, fulfilment status, or metafields on an order.
  • cancel-order - Cancel an order (optionally refund and restock).
  • close-order - Close a completed order so it stops appearing in active queries.
  • list-products - List products with filters (collection, vendor, status).
  • get-product - Fetch a single product with variants and images.
  • create-product / update-product / delete-product - Full product CRUD.
  • list-customers / get-customer / create-customer / update-customer - Customer CRUD.
  • list-collections / get-collection / create-collection - Collections (smart and custom).
  • list-discounts / create-discount / delete-discount - Discount codes and price rules.
  • get-inventory-levels / adjust-inventory - Per-location inventory read and adjust.
  • get-shop - Shop metadata (timezone, currency, plan, primary location).
  • raw-graphql - Run any GraphQL query against the Shopify Admin GraphQL API for fields not covered by the dedicated tools.

Authentication

Shopify supports two paths into the connector. Pick one when you create the connection:

  • Custom app (recommended) - In Shopify admin, go to Settings -> Apps and sales channels -> Develop apps -> Create an app, configure the Admin API access scopes you need, then install the app to mint an Admin API access token. Paste the token into Spojit. This is the simplest path for a single store.
  • OAuth - For multi-store setups, the OAuth flow installs the Spojit app on each store. Click through the consent screen and tokens are stored and refreshed automatically.

Scopes to request depend on what your workflows do. A read-only sync only needs read_orders, read_products, read_customers, read_inventory. A two-way sync also needs the matching write_* scopes plus write_inventory for stock adjustments. You can re-authorize an existing connection to add scopes later.

Setting Up Your Connection

  1. Mint a custom-app access token in Shopify admin (or prepare your OAuth flow).
  2. Go to Connections in Spojit and click + Add Connection.
  3. Search for Shopify and select it.
  4. Enter the access token and your shop domain (e.g. your-store.myshopify.com).
  5. Name the connection descriptively (e.g. Shopify - AU Production) so workflows pick the right store in multi-store setups.
  6. Click Save. Spojit calls get-shop to verify the token works and marks the connection Active.

Using in a Workflow

Add a Connector node, select your Shopify connection, and pick a mode:

  • Direct Mode - You name the tool and pass the inputs. Use this for deterministic syncs (e.g. always call list-orders with the same filter). Faster, cheaper, predictable.
  • Agent Mode - The AI agent picks tools to satisfy a goal you describe in prose ("find this customer's last three orders, draft a refund summary"). Use this for ad-hoc lookups, AI agents that work the store, and where the right sequence of tool calls depends on data.

For high-volume product or order pulls, prefer raw-graphql over the REST tools - one GraphQL call returns the fields you actually need instead of three REST hops.

Tips

  • Use the bulk operations API via raw-graphql for syncs over thousands of records. It uses one job rather than pagination and is dramatically faster.
  • Tag orders with their downstream state (e.g. synced-to-netsuite) using update-order. It's the cheapest way to make a sync idempotent.
  • Read the shop timezone once with get-shop and reuse it - Shopify timestamps are in shop TZ for some endpoints and UTC for others.
  • Webhooks beat polling for new-order workflows. Use the Shopify Webhook Trigger connector to start a workflow the moment an order is created.

Common Pitfalls

  • Insufficient scopes - A token created with read-only scopes will silently fail writes. Re-authorize the connection with the full scope set if you start hitting 403s.
  • Rate limits - Shopify uses a leaky bucket per shop. Bursts of small REST calls trip rate limiting faster than fewer GraphQL calls. The connector retries on 429 with backoff, but you can avoid it by batching.
  • Variant SKUs vs product IDs - update-product operates on the product; inventory and order line items reference variants. Don't conflate them.
  • Tax-inclusive prices - Stores in AU, UK, and EU return prices inclusive of tax. If you sync to a system that expects pre-tax (NetSuite, Stripe Tax), convert before writing.
  • Test vs production - Always use a separate connection (and a separate Shopify development store) for testing. Create-product calls don't have an undo.

Common Use Cases

Related Articles

For technical API details and field specifications, see the Shopify connector documentation.

Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.