Sending data to several pyck tenants
Directing products, customers and orders at particular pyck tenants
Audience: Logistics Manager
One Shopify store can sync to several pyck tenants at once — a live warehouse and a test tenant, or two warehouses in different regions. Each of them is a connection, and each connection has a short label such as production, stage or eu-prod.
By default every tenant gets everything. Labels are how you narrow that down.
The default: everything goes everywhere
A product, customer or order that carries no label at all is broadcast — delivered to every connection that is switched on and accepts broadcast.
That is the right behaviour most of the time. If you only have one connection, this is all that ever happens and you can stop reading here.
Narrowing with a label
Put a label on a record and it stops broadcasting. It goes to exactly the connections you named, and nowhere else. Naming a connection reaches it even if that connection has broadcast switched off.
There are two ways to write a label, and you can use either.
The pyck route field
The pyck route field on the product, customer or order page in the Shopify admin. It is a list, so you can pick several.
stage
A tag
The record's tags
pyck-route-stage
Both do the same job. Use whichever fits how you already work — the field is easier to read at a glance, tags are easier to apply in bulk.
The two ways add up — neither overrules the other
This is the part that surprises people.
The two signals are combined, not ranked. A record carrying the field stage and the tag pyck-route-demo goes to both stage and demo.
There is no way to say "ignore the tag, use the field". To stop a record reaching a tenant, remove the label that names it. Adding a different label somewhere else only adds a destination.
Orders also inherit from their customer
Orders take a third signal: the labels recorded for their customer the last time that customer synced.
So an order tagged pyck-route-demo, placed by a customer labelled stage, is delivered to both. Again, they add up.
This exists because Shopify no longer includes customer tags in the order notification, so the only way an order can follow its customer's routing is from what was recorded at the customer's last sync.
A label nobody recognises stops the sync
If you write a label that matches no connection on your store — a typo like pyck-route-stagg, or a connection that was deleted — the record does not sync at all. It is not partially delivered, and it does not quietly fall back to broadcast.
That is deliberate. You wrote a label because you wanted to restrict where the record goes. Treating an unrecognised label as "send it everywhere" would do the exact opposite of what you asked for and put your data in tenants you meant to exclude. Failing loudly is the safer answer.
The same applies to a label that names a connection you have switched off: the sync fails and says so, rather than delivering somewhere you did not name.
You will see the failure in Activity, with the offending label named. Fix the label and the record syncs on its next change, or run a Full sync.
Being sent an order and owning it are different things
Several tenants can hold the same order. Only one of them may ship it.
When an order syncs, exactly one of its destinations is recorded as the owner. Every other tenant holding that order is a copy: it has the data so it can be displayed or tested against, and if it tries to report the order as shipped it is refused. This is what stops one order being packed and posted twice.
The owner is the production connection whenever production is among the destinations.
Ownership is frozen once it is set. Re-labelling an order afterwards moves where copies are delivered, but it does not move the owner — an order already being picked does not change hands mid-pick. Ownership is only recalculated if the owning connection is deleted or switched off.
An order whose owner has been switched off cannot be shipped by anyone until it syncs again. A copy does not inherit an order by outliving its owner.
Test orders never reach production
An order Shopify marks as a test — placed through the Bogus gateway or Shopify Payments test mode — is excluded from the production connection no matter what labels it carries. It still reaches your other tenants, which is usually the point of placing it.
Only production writes stock back
Stock only ever travels back to Shopify from the production connection. A staging or demo tenant's quantities are not real, and two tenants writing the same Shopify numbers would overwrite each other. See Warehouse stock.
Summary
No label anywhere
Every switched-on connection that accepts broadcast
Field says stage
stage only
Tag says pyck-route-stage
stage only
Field says stage, tag says pyck-route-demo
Both stage and demo
Order tagged demo, its customer labelled stage
Both demo and stage
Label matches nothing
Nothing — the sync fails and is listed in Activity
Label names a switched-off connection
Nothing — the sync fails and is listed in Activity
Test order
Everywhere it is routed, except production
Last updated
Was this helpful?
