For the complete documentation index, see llms.txt. This page is also available as Markdown.

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.

Way
Where you set it
Looks like

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

Situation
Where it goes

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?