Shopify Automation
Connect your store, sync your catalog, and let Commify handle product Q&A, abandoned checkouts, orders, and fulfillment.
What gets synced
- Products — title, description, images, variants, prices, SKU, inventory.
- Orders — financial & fulfillment status, customer, shipping address, line items.
- Carts & abandoned checkouts — surfaced in the dashboard so you can recover lost sales.
- Webhook events — product create/update/delete, carts, checkouts, orders.
Connecting Shopify
- Go to Workspaces → Connect Shopify.
- Enter your shop domain. You'll be redirected to Shopify to approve scopes:
read_products, write_products, read_orders, write_orders, read_all_orders, read_customers, read_checkouts, write_checkouts - On approval, Shopify redirects back and we exchange the code for an offline access token. The first sync runs immediately.
Initial product sync
After OAuth, we paginate through your full product catalog using the Shopify GraphQL Admin API and store products + images locally. A progress indicator appears on the workspace header. Catalogs of 10k+ products can take a few minutes.
We never duplicate sync runs — if you trigger a manual sync while one is in progress, the new request is dropped and the existing run finishes.
Real-time webhooks
On connect, we register Shopify webhooks for:
products/create,products/update,products/deletecarts/create,carts/updatecheckouts/create,checkouts/updateorders/create,orders/updated,orders/cancelled
Each webhook is HMAC-verified using the Shopify shared secret. Idempotency is handled by storing each delivery's X-Shopify-Webhook-Id, so retries don't double-process.
Orders dashboard
The Orders page lists every Shopify order with payment status, fulfillment status, customer, and total. Click a row to see:
- Line items with variant title, SKU, price, and image
- Subtotal / shipping / tax / total breakdown
- Customer name, email, phone
- Shipping address
- Order note and tags
From the row actions you can Mark fulfilled (with optional tracking number/carrier/URL) or Delete the order. Deleting handles both directly-deletable orders and those that require a cancel-then-delete dance.
Abandoned checkouts
The Abandoned Checkouts page (sidebar) live-fetches from Shopify's checkouts API. Each row shows the customer's cart, total, and a Recover button that opens Shopify's native recovery URL — perfect for sending recovery messages over WhatsApp or Messenger.
Placing orders from chat
When a customer says "order this" in chat, the bot collects name, email, phone, and shipping address (one field at a time), reads the summary back, and on confirmation creates a Shopify order with all line items in a single order — marked Pending for Cash on Delivery.
Protected Customer Data
Shopify requires apps to be approved for Protected Customer Data before they can return customer names, emails, phone numbers, or shipping addresses. Commify is approved at Level 1 (basic) and Level 2 (extended fields) — but if you connect a store and see "Protected Customer / hidden" in order details, the access token was issued before approval. Disconnect and reconnect the workspace to get a fresh token with full permissions.
Note: The read_all_orders scope is required to access orders older than 60 days. Without it Shopify returns the most recent 60 days of orders only — this is a Shopify rule, not a Commify limit.