• Shopify
  • WooCommerce
  • eBay
  • BigCommerce

Omnichannel Sales Agent

The LinkyFlow Omnichannel Sales Agent applies the sales your other channels make — WooCommerce, eBay, BigCommerce or another Shopify store — to the stock of your master store, exactly once, every 5 minutes. Depending on the mode you choose, it reports each stock movement, proposes it, or writes it to the master and reads it back; once the master is confirmed, it has your Inventory Stock Sync push the new stock to the channels. The master stays the only stock of record.

Launch agent

Sign in or create your LinkyFlow account, then set this agent up.

Omnichannel Sales AgentSales channels → LinkyFlow Omnichannel sales agent → Master store, Inventory Stock SyncCHANNELSSales channelsShopify, WooCommerce,eBay or BigCommerce —their orders are readLINKYFLOWOmnichannel sales agentEvery 5 minutes · exact SKUMASTERMaster storeShopify or BigCommerce — theonly stock writtenTHENInventory Stock SyncRuns on the SKUs that movedOmnichannel Sales AgentSales channels → LinkyFlow Omnichannel sales agent → Master store, Inventory Stock SyncCHANNELSSales channelsShopify, WooCommerce, eBay orBigCommerce — their orders arereadLINKYFLOWOmnichannel sales agentEvery 5 minutes · exact SKUMASTERMaster storeShopify or BigCommerce — the onlystock writtenTHENInventory Stock SyncRuns on the SKUs that moved

Channels

  • Reads the orders changed since the last read
  • Keeps one journal row per order line
  • Never applies an order placed before it started

Master

  • Applies only what the master has not counted
  • Compare-and-set or atomic adjustment, then a read-back
  • Never creates an order in the master

Stock Sync

  • Announces the change once the master confirms it
  • Starts the linked Stock Sync on those SKUs
  • The hourly full Stock Sync stays

Examples

What the agent returns in real situations

  1. 1. An eBay sale reaches the master

    APPLIED

    eBay order
    2 × SKU MUG-1
    Master (Shopify)
    10 → 8 units, read back 8
    Then
    Stock Sync on MUG-1

    Applied once and confirmed. The linked Stock Sync then sets WooCommerce to 8; eBay already holds 8 and is not written.

  2. 2. A sale on the master itself

    COUNTED_BY_MASTER

    Shopify master order
    2 × SKU MUG-1
    Master
    10 → 8, by Shopify itself
    Agent write
    None

    The master counted its own sale, so nothing is taken off a second time. In Auto mode the linked Stock Sync is still started on MUG-1, so the channels get 8 sooner.

  3. 3. A movement in Approval mode

    PROPOSED

    WooCommerce order
    3 × SKU TS-BLK-M
    Proposed
    Master 12 → 9
    Written
    Not until you approve

    The movement waits for you. Approving it reads the master again and writes it exactly as Auto mode would; rejecting it leaves the master as it is.

  4. 4. The master already records a channel

    DOUBLE_COUNT_SUSPECTED

    Channel
    eBay, not stated
    Master
    Holds orders that came from eBay
    Action
    Channel held

    The master seems to import this channel's orders already. Its sales are held until you say whether the master counts them — guessing would take one sale off twice.

ResultWhat it means
APPLIEDWhat the line holds out of stock is on the master: the agent wrote the difference, read the master back, and the quantity read back is the one wanted.
NOTHING_TO_APPLYThe line holds no stock and nothing was ever applied for it — awaiting payment, or cancelled before it counted.
COUNTED_BY_MASTERThe master counts this sale itself — one of its own orders, or a channel you said it records. Observed, never applied.
BASELINEThe order was placed before the agent first read this channel, or before it was allowed to write. Observed, never applied: there is no backfill.
PENDINGMonitor mode: the master would move by this difference. Nothing is written.
PROPOSEDApproval mode: the movement waits for you. Nothing is written until you approve it.
REJECTEDYou rejected the movement. It stays rejected as long as the orders behind it do not change.
WRITE_BLOCKEDThe movement is larger than the guard-rail allows (50 units per SKU by default). Nothing is written until you approve it.
WRITE_FAILEDThe master refused the write, or could not be read before it. Nothing was applied, and the next run tries again.
WRITE_UNCONFIRMEDThe write was sent and nobody could learn whether it landed, even by reading the master back. It is never sent again on its own: you say whether it landed.
OVERSOLDThe sale is applied and the master went below zero: the SKU was sold more times than it was in stock.
SKU_MISSINGThe order line carries no SKU, so nothing on the master can be named.
SKU_NOT_FOUNDThe SKU names no stockable item on the master, and no SKU mapping says what it stands for.
SKU_AMBIGUOUSThe SKU names more than one item on the master. It is never guessed.
NOT_TRACKEDThe master does not track stock for this item. The agent never switches tracking on.
LOCATION_NOT_FOUNDThe item is not stocked at the master's location.
MASTER_UNSUPPORTEDThe master's platform offers no stock adjustment that is safe against a concurrent sale (WooCommerce, eBay). The difference is reported, never written.
DOUBLE_COUNT_SUSPECTEDThe master seems to record this channel's orders already. Its sales are held until you say whether it does.
SYNC_TRIGGER_FAILEDThe master is right, but the Stock Sync could not be started for these SKUs after every retry. The hourly Stock Sync still covers them.

What you can do with the results

From result to action

Review exceptions

See the order lines and SKUs that could not be applied — a SKU missing on the master, a write that failed or was blocked, a channel held for double counting — with the order, the quantities and the reason.

Approve or reject movements

In Approval mode, approve or reject each master movement from ChatGPT or Claude, or through the API. An approved movement is written exactly as Auto mode would write it.

Open in Excel

Review the current sales, open exceptions, runs and the detail of a past run in a live workbook.

Run again now

Start a read on demand after fixing a SKU, adding a SKU mapping or saying whether the master records a channel.

One write, at the master only

The only thing this agent can change is the stock quantity of your master store, by the difference a sale or a cancellation owes — in Auto mode, or when you approve a movement. It writes only where a concurrent sale cannot be lost (Shopify compare-and-set, BigCommerce atomic adjustment), reads every write back, and never creates an order, a refund or a product. The channels' stock is the Stock Sync's job, and every agent starts in Monitor mode, which writes nothing.

  • Applies stock differences to the master only
  • Runs every 5 minutes
  • Runs on demand
  • Incremental: re-reads only what changed
  • Approval mode before writing
  • Every write read back
  • Live Excel workbook views
  • ChatGPT and Claude, via MCP

What is the Omnichannel Sales Agent?

Selling the same products on Shopify, WooCommerce, eBay and BigCommerce means every sale has to reach one stock count — or the next customer buys a unit that is already gone. The Omnichannel Sales Agent reads the orders of your sales channels, takes each sale off your master store's stock exactly once, and then has your Inventory Stock Sync push the new quantity to every channel.

You choose a master store and the channels whose sales should reach it. Every 5 minutes, for every order line that changed, the agent works out how many units the line holds out of stock, compares that with what it already applied, and — depending on the mode — reports the difference, proposes it, or writes it to the master and reads it back.

The rule for one order line is deliberately simple:

difference owed = units the line holds now × units per item − units already applied

A sale takes units off, a cancellation puts them back, and a line seen again that has not changed owes nothing.

The master stays the only stock of record

LinkyFlow does not become your stock system. The master store holds the only stock that counts. LinkyFlow keeps a journal of the order lines it applied, the movements it wrote and where each channel's reading stands — never a quantity of its own. Every movement is computed from a fresh reading of the master, and every write is read back from it.

The agent never creates an order in the master: an eBay sale does not become a Shopify order, so your master's sales, revenue, taxes, payments and fulfilment stay exactly as they were. It only moves the stock.

How a sale reaches the master

  1. The channels are read — the orders changed since the previous read, oldest change first, with a five-minute overlap so that an order indexed late is not missed. A Shopify order notification starts a read at once; the other platforms are read on the 5-minute schedule.
  2. Each order line is journaled, keyed by the channel, the order and the line. Reading the same order twice lands on the same row.
  3. The differences are grouped per master SKU — one movement per SKU, so a sale and a cancellation of the same SKU net out.
  4. Each movement is handled by the mode — reported, proposed, or written.
  5. The write is read back. A movement counts as applied only when the quantity read back is the one wanted.
  6. Only then is the change announced. The agent publishes inventory.master_changed for the confirmed SKUs, and your linked Inventory Stock Sync runs on those SKUs alone.

A run reads at most six hours of orders per channel: after a downtime, the backlog is caught up over the next runs, and a channel's reading moves forward only once a window has been read and journaled to its end. Nothing is lost while LinkyFlow is unreachable.

Never counted twice

  • The same order read again — the overlap between runs, a notification and the schedule seeing the same change, an order modified later — applies only the part of the line that changed.
  • The master's own sales are already on its stock: they are observed as COUNTED_BY_MASTER and never applied.
  • A channel the master already records — an app or an OMS that imports its orders into the master — is set as such on that channel, and its sales are observed, never applied.
  • A channel you have not stated, whose orders the master seems to record (an order on the master that came from that channel's platform), is held as DOUBLE_COUNT_SUSPECTED until you say which it is.
  • One channel, one agent. Two agents that write cannot apply the same channel's sales to the same master: the second configuration is refused, naming the first.

Orders placed before the agent started

The first time the agent reads a channel, it notes the moment: orders placed before it are observed as BASELINE and never applied, whatever happens to them later — a cancellation of a sale the agent never took off must not put stock back. There is no backfill of past sales.

The same holds when you switch modes: sales watched in Monitor mode are not applied later. When you switch to Approval or Auto, the agent applies the orders placed from then on — if the master missed some before, correct it there.

Which stores are supported?

PlatformAs a channelAs the master
ShopifyYesWritten by a compare-and-set at one location: Shopify refuses the write if the stock moved since it was read.
BigCommerceYesWritten by an atomic relative adjustment at one location.
WooCommerceYesMonitored only: no adjustment safe against a concurrent sale. Differences are reported as MASTER_UNSUPPORTED.
eBayYesMonitored only, for the same reason.

The same platform can be used for several channels — two eBay accounts, say. A channel cannot be the master itself, and a channel cannot be listed twice.

A master with several locations holding stock must be told which one the agent writes; the agent never sums locations and never picks one for you.

Three modes

ModeWhat happens with a differenceWrites to the master?
MonitorIt is reported as PENDING.Never.
ApprovalThe movement is recorded as PROPOSED, with the SKU, the difference and the orders behind it.Only a movement you approve.
AutoThe difference is written, then the master is read back. Only then is it APPLIED.Yes — the master's stock quantity, and nothing else.

Every agent starts in Monitor. Switching to Auto is the one setting that lets the agent change your master's stock on its own.

An approval is for the exact movement you were shown: before writing, the agent reads the master again and writes the movement exactly as Auto mode would. If another order changed the SKU since, nothing is written and a fresh proposal replaces it. Approving the same proposal twice writes nothing the second time, and a rejection stands as long as the orders behind it do not change.

Safe writes and guard-rails

  • One movement, at most 50 units per SKU by default. A larger one — a channel pointed at the wrong store, a quantity typed 200 instead of 2 — is WRITE_BLOCKED and waits for you. You can change the limit per agent.
  • A sale during the write. On Shopify the write carries the quantity just read and is refused if it moved; the agent reads again and retries, up to three times. On BigCommerce the difference is applied to whatever the location holds when it arrives.
  • A write the master refused, or a master that could not be read first, is WRITE_FAILED: nothing was applied, and the next run tries again.
  • A write whose outcome nobody can know — a timeout, an answer lost — is settled by reading the master back. When even that cannot tell, the movement is WRITE_UNCONFIRMED and is never sent again on its own, since a second write could take the sale off twice: you say whether it landed.
  • Nothing is announced before it is confirmed. A movement proposed, blocked, failed or unconfirmed starts no Stock Sync.

Cancellations, returns and refunds

What a line holds out of stock follows the order's state, as each platform states it:

The orderUnits the line holds
Placed and awaiting payment where the store holds no stock yet (WooCommerce pending, BigCommerce incomplete)None yet
Placed, paid or shippedAll of them
CancelledNone — the units go back to the master
Refunded, fully or in partAll of them, unless the store states the units were restocked

A refund is not a return. Money going back says nothing about the goods: units go back to the master only when the order is cancelled or the store states they were restocked.

Packs and bundles

A channel may sell a pack that the master stocks as separate units. Tell the agent with a SKU mapping — the channel SKU and the master SKUs one unit of it takes, each with a quantity — and a sale of the pack takes those units off. Nothing is inferred: without a mapping, a SKU the master does not hold is SKU_NOT_FOUND, and nothing is written.

Then the Stock Sync

Link the agent to the Inventory Stock Sync that replicates this master — the same store, at the same location; any other is refused, and so is a link that would make agents trigger one another in a loop. Each time the master is confirmed, the agent announces the SKUs that moved, and the Stock Sync runs on those SKUs alone — reading them fresh at the master and every target, with its own guard-rails and read-back — rather than walking 100,000 SKUs for one sale.

Announcements are grouped, so a hundred orders of a few SKUs start a few targeted runs, not a hundred full ones. A Stock Sync that is busy or unreachable is retried after 1 minute, 5 minutes, 15 minutes, 1 hour and 3 hours; after six attempts the agent opens a SYNC_TRIGGER_FAILED case. The hourly full Stock Sync stays in any case, as a safety net. In Auto mode, a sale the master counted itself also starts the Stock Sync on that SKU, so the channels hear of it sooner.

Without a linked Stock Sync, the master is still kept exact, and your hourly Stock Sync propagates it.

Overselling, honestly

Reading an order after it was placed can never make two sales of the last unit impossible. This agent shortens the window in which it can happen — from an hour to minutes — but it does not reserve stock, and a safety stock on the Stock Sync is a buffer, not a reservation. When it happens, the master goes below zero and the agent reports OVERSOLD, so you can act on it.

Exceptions are cases, not alerts

Every result that needs you is a case about one thing: a master SKU (not found, ambiguous, a write that failed or was blocked, an oversell), an order line with no SKU, a channel held for double counting, or a Stock Sync that could not be started. A thousand orders of an unknown SKU are one case with a count, and a case closes itself when a later run finds the problem gone.

What a run did, later

What one run decided — every order line it saw, how it was accounted for, the movement it went out in, the master quantity before and after, and the announcement it was part of — is kept as that run's own record for 30 days, and does not change afterwards.

Reviewing results in Excel and on the web

Four live views are available, in the web workspace and as a connected Excel workbook:

  • Current sales — one row per order line and master SKU: the channel, the order, the quantities, whether the master or the agent accounts for it, what it moved the master by, and the result.
  • Open exceptions — the cases that need you.
  • Runs — one row per run: lines read, lines applied, movements by result, units moved, and the Stock Sync runs started.
  • Historical run detail — the rows of one specific run, kept for 30 days.

Asking ChatGPT or Claude

With LinkyFlow connected to ChatGPT, Claude or any MCP client:

Set up omnichannel sales: master "EU boutique", channels my eBay account and "Outlet", linked to my stock sync, in monitor mode.

Which sales are waiting to be applied to the master?

Show me the order lines that could not be applied, and why.

Approve the proposed master movements for MUG-1.

Switch omnichannel sales to auto mode.

The last one lets the agent change your master's stock on its own, and the assistant tells you so before it is made.

Current limitations

  • The master is written on Shopify and BigCommerce only. A WooCommerce or eBay master is monitored, never written.
  • Notifications from Shopify only. WooCommerce, eBay and BigCommerce orders are read every 5 minutes.
  • No backfill. Orders placed before the agent first read a channel, or before it was allowed to write, are never applied.
  • Exact SKU only. Packs and bundles through explicit mappings; no matching by title, barcode or similarity.
  • One location per master. Locations are never summed.
  • The only write is the master's stock quantity. No order, refund, price, product or listing is touched, and the channels' stock is the Stock Sync's job.
  • It does not reserve stock. It shortens the overselling window; it cannot close it.
  • Detailed run data is kept for 30 days. Run summaries and the current sales stay.

Next steps

Does LinkyFlow become my stock system?

No. Your master store stays the only stock of record. LinkyFlow keeps a journal of the order lines it applied — never a stock of its own — and every quantity it acts on is read from the master first.

How does it avoid counting a sale twice?

Each order line is one journal row, keyed by the channel, the order and the line, holding what was already applied. Reading the same order again — the overlap between runs, a Shopify notification, an order that changed — applies only what changed. The master's own orders are never applied, and neither are the sales of a channel you say the master records. A channel you have not stated, whose orders the master seems to record, is held until you say.

What happens to orders placed before I switched it on?

They are observed and never applied: the agent starts from the moment it first reads each channel, and sales watched in Monitor mode are not applied later either. There is no backfill of past sales.

Which stores can be the master or a channel?

Any of Shopify, WooCommerce, eBay and BigCommerce can be a channel, the same platform several times. The master is written on Shopify (a compare-and-set at one location) and BigCommerce (an atomic adjustment at one location). A WooCommerce or eBay master offers no adjustment that is safe against a concurrent sale, so it is monitored only: the differences are reported, never written.

What if a sale lands while the agent writes the master?

On Shopify the write carries the quantity just read, and Shopify refuses it if the stock moved; the agent reads again and retries, up to three times. On BigCommerce the difference is added to whatever the location holds when it arrives. A write whose outcome cannot be known is never sent again blindly: it becomes WRITE_UNCONFIRMED and you say whether it landed.

Does a refund put the stock back?

No. A refund is money, not goods: units go back to the master only when the order is cancelled or the store states they were restocked.

How fast do the other channels get the new stock?

The channels are read every 5 minutes, and a Shopify order notification starts a read at once. Once the master is confirmed, the linked Stock Sync runs on the SKUs that moved, not on the whole catalogue. If it cannot be started it is retried, and the hourly full Stock Sync covers those SKUs anyway.

Does it stop overselling completely?

No, and nothing that reads orders after they are placed can. It shortens the window in which two channels can sell the same unit; it does not reserve stock, and a safety stock is a buffer, not a reservation. A master that goes below zero is reported as OVERSOLD.

Is AI involved?

No model decides a quantity or a match. Lines are matched by exact SKU, packs only through the mappings you write, and every difference is plain arithmetic.

Launch this agent

Add it to your LinkyFlow account in a few steps. It starts running as soon as its setup is complete.

Launch agent