---
title: "Dock + Shopify: order pipelines and customer briefs your agents share"
excerpt: "Most Shopify teams already run agents for order summaries, refund triage, and customer briefs. The breakdown is where the agent's work lands. Here's the substrate pattern that fixes it: Shopify stays source of truth, Dock holds the agent output, consent gate fires the mutations back."
author: mei
category: Use Cases
date: "2026-05-30"
---

If you run a Shopify store with more than one agent in the loop, the question is not whether to use AI for order triage, refund drafts, and customer briefs. You already do. The real question is where the agent's work lives between the moment it drafts something and the moment a human (or another agent) acts on it. Slack threads vanish. Notion pages drift. The hand-off is where Shopify teams quietly lose the plot.

The pattern that holds up: keep Shopify as the system of record for commerce data, and put Dock underneath the agents as the substrate carrying their output, their partial decisions, and the consent gate that fires writes back. Three agents pick up the same order, each contribute a layer, and the whole chain is one auditable row.

## The architecture in one paragraph

Dock does not replace Shopify and does not hold a copy of its data. Shopify stays the system of record for products, orders, customers, payments. What Dock holds is the system of record for agent output: the recommendation the triage agent drafted, the partial decision the brief agent made, the work-in-progress the next agent picks up. Each Dock row carries a `shopify_order_id` pointer. Agents read fresh from Shopify Admin API; Dock's consent gate fires the mutations back. The data path loops through Dock; the data never leaves Shopify.

## One worked workflow: order triage at Acme Shopify Plus

Acme runs Shopify Plus with three agents on the order pipeline. A high-risk order lands. Five steps.

1. **Webhook in.** Shopify fires `orders/create` to Dock. Dock writes a row with `shopify_order_id`, `status: triage`, and an empty `agent_notes`. No copy of the order body is stored.
2. **Triage agent reads.** Agent one pulls the live order via the [GraphQL Admin API](https://shopify.dev/docs/api/admin-graphql/latest), checks fraud signals, billing-vs-shipping mismatches, chargeback history. It writes `hold for review` into the row, with reasoning.
3. **Customer brief agent picks up.** Agent two reads the row, pulls customer LTV and prior tickets from Shopify, drafts a 4-line brief into `customer_context`. It does not act.
4. **Resolution agent proposes.** Agent three reads triage + brief, decides `cancel and refund` or `release and ship`, stages the mutation. Dock's consent gate flags refund as a [dangerous operation](/blog/dangerous-ops-contract) and routes it for one-tap approve.
5. **Approve and write.** A human taps approve. Dock fires `refundCreate` against Shopify. The row closes with a signed audit trail: which agent drafted, which approved, which mutation hit Shopify, when.

The data lived in Shopify. The collaboration lived in Dock.

## Why this matters for Shopify teams

BFCM is the obvious case. Shopify merchants moved [$14.6 billion across BFCM 2025](https://www.shopify.com/news/bfcm-data-2025), peaking at $5.1 million per minute on Black Friday. At that velocity, a 4-agent pipeline without a shared substrate is one missed Slack message away from a duplicate refund or a stuck hold. Dock rows give every agent the same view of what is done, what is staged, what is open.

Chargeback defensibility is the quieter one. When a dispute lands six weeks after the order, the Dock row already has the signed chain: triage reasoning, brief context, the human who approved, the exact mutation. That is the artifact you submit.

For the wider pattern, see [running an ecommerce stack with AI](/blog/dock-for-ecommerce) and the [Dock for ecommerce overview](/blog/dock-for-ecommerce). The same substrate carries [Stripe payment flows](/blog/dock-stripe-payments) and the [BigCommerce enterprise pattern](/blog/dock-bigcommerce-enterprise). For the primitives, [agent collaboration](/blog/agent-collaboration-primer) and [agent audit and compliance](/blog/agent-audit-and-compliance) are the starting points.

## Try the pattern

Spin up a Dock workspace, point a webhook at it, let one agent draft into it. The hand-off problem dissolves the moment the second agent reads from the same row.

## FAQ

**Does this replace Shopify Flow?**
No. Flow is excellent for deterministic, condition-based automation inside Shopify. Dock sits next to Flow and carries the things Flow does not: an agent's reasoning, a partial draft, a multi-agent hand-off. Flow can trigger a Dock row; a Dock approval can trigger a Flow.

**What about Shopify Functions?**
Functions run inside Shopify's checkout and admin extensibility surface and stay there. Dock does not touch that layer. Agents that need to propose a Function change can draft the config into a Dock row for human review before it ships.

**Can an agent issue refunds without a human in the loop?**
Technically yes, practically no. Refunds are a dangerous operation in Dock's consent model and route to a human approve by default. You can lower the gate for refunds under a threshold, but the audit row still captures which agent drafted and which policy auto-approved.

**Does this work across multiple Shopify stores?**
Yes. Each store gets its own webhook and its own `shopify_shop_id` column on the Dock row. Agents scoped to one store cannot read another store's rows. Cross-store reporting is a separate workspace that reads aggregates, not order bodies.
