Guide · Shopify stores on InfiPlex

Run Shopify fulfillment with an AI agent on InfiPlex: where each order routed, why, whether stock reached the store, and which location a fulfillment order landed at

Shopify's fulfillment API separates the FulfillmentOrder, the location assignment, from the Fulfillment, the shipment, and since the 2024-10 API version an app can only fulfill what is assigned to its own location. InfiPlex already moves fulfillment orders to the location your rules define, on push and on pull, and keeps stock in sync across one store, several stores, or a store and its 3PLs through its Shopify integration. An AI agent on the InfiPlex MCP server answers the questions that used to mean opening three admin screens: where did this order route and why, did the inventory send reach Shopify, and why does a SKU show zero on the storefront when the warehouse has it.

  • Routing ExplainedThe write-once routing record for any order: the zip rule, the default warehouse, the stock at that moment.
  • Stock VerifiedInventory sends to Shopify, and their failures, from the shop log by type and SKU.
  • Stores ConnectedA one-time connect link for a new store, push or pull, issued by the agent for a 3PL onboarding a client.

Why Shopify

Shopify decides a location. InfiPlex decides the warehouse. The agent explains both

The Fulfillment Orders and multi-location routing guide covers the mechanics: Shopify's order routing assigns each line to a location automatically, assigned_location is the field that matters, and InfiPlex moves the fulfillment order to the location your rules name. Underneath that, InfiPlex routes every line to an InfiPlex warehouse and writes a routing record once, at pull time, that never changes. The agent reads that record and the log around it.

What your team asks the agent Tools it calls What it hands back
"Which Shopify orders are unshipped, and where did each route?" order_search on the Shopify channel, not fully shipped, oldest first Order ids, hours since placement, ship-to state, and the warehouse each line routed to
"Why did 4419040 go to Columbus? We stock that in Reno." order_warehouse_routing_explanation_get The zip rule check, the default warehouse, and the Reno stock after buffers at the moment routing ran
"Did the inventory send to the store go through this morning?" log_types_get, then log_search on the Shopify send inventory types Last successful send, or the failed sends with Shopify's error text
"Why does GL-410 show 0 on the storefront when Reno has 60?" inventory_get, inventory_change_history_get, shop_setting_search on the Shopify buffer, log_search Which of the three it is: a buffer, a failed send, or a location mapping
"Connect the new client's store so we can pull their orders." marketplace_connect_link_get with eal__shopify_connect_pull A one-time authorization link for the store owner, expiring the same day
"How many orders did store B send us this week versus store A?" order_search with order_source_eq per store and just_count Counts per connection, since each store is its own order source

Every tool above is documented on the tools reference. The multi-warehouse order routing page explains the rules the routing record reflects.

Routing

Where did it route, and why, from the record InfiPlex wrote at pull time

Every order line gets a routing record when InfiPlex pulls it: the zip rule that matched, the warehouses considered, the stock each had after its buffer, and where the units were taken from. It is written once and never changed, so it explains the decision as it was made, not as stock stands now. A customer service lead on a read-only key:

you Customer on Shopify order #10422 was told 2-day and it went to Columbus. Why not Reno? tool order_search {"order_source_eq":"<the Shopify store exactly as stored>","text_search":"10422","just_basic_order_data_results":1} result 1 order, InfiPlex id 4419040 tool order_warehouse_routing_explanation_get {"orderid":4419040} agent Routing ran at 16:12 yesterday. Ship-to zip 89502 matched the Reno zip rule, so Reno was checked first. Reno had 2 of GL-410 available after the Shopify buffer of 3, so the line could not be filled there; Columbus had 24 and took it. Reno has since received 60, so a new order today would route to Reno. you Was Reno really at 2, or was the buffer hiding stock? tool inventory_change_history_get {"sku":"GL-410"} agent At 16:12 yesterday Reno was at 5 on hand; the buffer of 3 leaves 2 available, and the line needed 1, so it could have filled. The routing event shows quantity_to_process_at_warehouse 0 for Reno with the note that the available quantity was below the rule's minimum. That minimum is a warehouse routing setting; want me to read the current value? you Yes, and note the order. tool warehouse_get {"warehouse_id":2} tool order_note_create {"orderid":4419040,"order_note":"Routed to Columbus at 16:12 9/27: Reno available 2 was below the routing minimum. Customer told 2-day; Columbus ship is UPS Ground."} agent Reno's routing settings are read; the note is on the order.

On a Shopify pull connection InfiPlex can move every pulled order's fulfillment order to one location in Shopify, so the store shows the order fulfilled from the InfiPlex-managed location; on a push connection it can move the resulting fulfillment order to a client-defined location. Those are connection settings the agent can read with shop_setting_search, described on the Shopify location router page.

Inventory

Zero on the storefront, sixty in the warehouse

That gap has three usual causes: a per-channel buffer, an inventory send Shopify rejected, or a location mapping where InfiPlex is updating one Shopify location and the storefront is selling from another. The agent checks all three in one pass.

you GL-410 shows sold out on the site. We have 60 in Reno. tool inventory_get {"sku":"GL-410"} tool shop_setting_search {"search_term":"shopify"} tool log_search {"log_type":<Shopify Send Inventory: Failed>,"search_term":"GL-410","start_date":"2026-09-28 12:00:00 AM"} agent InfiPlex has 60 in Reno and 24 in Columbus. The Shopify buffer is 3, so the store should show 81. The send inventory log has three failures for GL-410 this morning, the last at 09:40: Shopify returned that the inventory item is not stocked at the location InfiPlex is updating. That is the location mapping case: the variant is stocked at a different Shopify location than the one the connection is set to. The connection's location setting is what to check; I can show its current value on this key. you Show it. tool shop_setting_get {"setting_name":"<shopify push location setting>"} agent The connection sends inventory to location id 6120099. If the storefront sells GL-410 from another location, either stock it at 6120099 in Shopify or change this setting; changing it is a setting write, which needs a key with Write Settings and MCP Allow Setting Writes.

The re-create inventory webhook article covers the other common cause on push connections. For stores syncing to each other, the Shopify-to-Shopify inventory sync page explains why each store is its own connection and therefore its own log types and settings.

3PLs

Onboarding a Shopify client from the chat

A 3PL onboarding a new Shopify brand needs the store owner to authorize the connection. marketplace_connect_link_get issues that link from the agent, for the pull direction (orders out to the 3PL) or the push direction (orders in from the brand's other channels), and the link expires the same day. The account manager sends it; the owner authorizes without an InfiPlex login. From there the questions on this page work per client, because each store is its own order source. The AI agents for 3PL clients page covers per-client read-only keys and the first 3PL for Shopify sellers guide covers the brand's side.

Keys by role

Three keys, three levels of autonomy

The MCP server publishes a tool only when the key carries its scope, so the key is the whole permission model. Create each at Tools > Admin API on your instance with MCP Enabled, and send the URL and header from the set-up guide.

Customer service key: read-only

Read Orders, Read Inventory, Read Warehouse, Read Log, Read Settings. Both MCP flags No. Every routing, stock, and send question on this page works, including issuing a connect link; nothing can change.

Warehouse key: confirm-in-chat

Add Write Orders and Write Inventory. Tracking back to the store and stock corrections stop at a preview the person approves; notes and status write directly.

Scheduled agent key: autonomous

Same scopes as the warehouse key, used by an unattended agent from cron. The morning unshipped orders agent builds the day's ship queue per store; the failed sync watch agent reports every failed inventory and tracking send to Shopify each morning.

Prompts

Prompts that work on a Shopify instance

Orders and routing
  • "List unshipped Shopify orders oldest first with the warehouse each routed to."
  • "Why did #10422 route to Columbus?"
  • "Which orders today routed to the default warehouse because nothing else could fill them?"
  • "Set 4419034 to needs review and add a note: address needs a suite number."
Inventory sends
  • "Did the inventory send to the store succeed in the last hour?"
  • "Which SKUs failed to send to Shopify today, and why?"
  • "What is the Shopify buffer set to?"
  • "Show the change history for GL-410 today."
Tracking
  • "Which Shopify orders have a marketplace fulfillment error, and what does the log say?"
  • "Record tracking on 4418977: UPS Ground, 1Z999AA10123456784, all lines, one carton."
  • "Where is Shopify order #10418?"
  • "Which carriers did we record on Shopify orders this week, with counts?"
Stores and clients
  • "How many orders from each Shopify store this week?"
  • "Issue a pull connect link for the new client's store."
  • "Which Shopify connections have inventory send enabled?"
  • "Which Shopify log types exist on this instance?"

The agent reads each store's stored channel name from your order data rather than guessing it, so "the UK store" in a prompt resolves to whatever your instance calls that connection. More prompts by role are on the prompts page.

Frequently asked

Questions, answered

Does the agent send tracking to Shopify?

The agent records the shipment in InfiPlex with order_tracking_create, and InfiPlex creates the Fulfillment in Shopify against the fulfillment order it owns, the same way a shipment recorded in the admin or by a connected shipping tool does. It is a previewed write on a key with Write Orders.

Can the agent read the Shopify admin directly?

Not through InfiPlex. It reads the InfiPlex side of every exchange with the store: the pulled order, the routing record, the inventory and tracking sends and their results in the log. That is enough to say whether the store and InfiPlex agree and, when they do not, which send failed.

Does it work with more than one Shopify store?

Yes. Each store is its own connection with its own order source, log types, and settings, so the agent can answer per store or across all of them. A 3PL with many client stores can hand each client a read-only key scoped to its own orders.

What does a read-only key block?

Everything that writes. Write tools are not published to a key without write scopes, so an agent on a read-only key has no tracking, inventory, note, or setting tool to call. It can read orders, routing records, inventory, warehouses, settings, and the log, which covers every question on this page.

Does this cost extra?

No. The MCP server is included with API access on every InfiPlex plan. Keys are unlimited and MCP calls are not metered. Your AI vendor bills model usage.

Resources

Related pages

Bring a "why did it ship from there" order to the call

We will connect an agent to a Shopify instance on a read-only key and read that order's routing record back to you, tool by tool.

Already running Shopify through InfiPlex?

Open Tools > Admin API, create a read-only key with MCP Enabled, and connect the assistant your team already uses. Questions: Contact us, email info@infiplex.com, or call 888‑770‑0857.

Order numbers, SKUs, quantities, times, location ids, and warehouse names are examples. Shopify is a trademark of Shopify Inc. Model Context Protocol is an open standard.