What a sync overwrites in pyck
Which fields a sync overwrites in pyck, which it leaves alone, and how files are handled
Audience: Logistics Manager
Every time a product, customer or order changes in Shopify, the app updates the matching record in pyck. It does that field by field: it changes only the fields that come from Shopify and leaves everything else on the record as it is.
This page explains which fields count as "coming from Shopify", what happens when a value is cleared there, and how you keep a field under pyck's control.
The rules at a glance
Standard Shopify fields (title, price, vendor, addresses, order totals, …)
Shopify
Overwrites it. If Shopify no longer has a value, the field is removed in pyck.
A field you mapped to a Shopify source
Shopify
Overwrites it. If the value is cleared in Shopify, the field is removed in pyck.
A field set to Not synced
pyck
Never touches it.
A field with no source, or any field your warehouse adds itself
pyck
Never touches it.
Files (product images, file metafields)
Shopify, always
Replaced when the file changes in Shopify, deleted when it is deleted there.
In short: Shopify owns what you connected to Shopify. pyck owns everything else. Files always follow Shopify.
The same rules are shown in the app, in the banner What a sync overwrites in pyck above the data mapping.
Where you choose a field's source
Open Settings, expand Advanced and open the connection's Data mapping. With Mapping mode set to Custom, you pick a pyck schema for products, customers and orders, and the app lists every field of that schema that has no standard Shopify counterpart. For each of those fields you choose where its value comes from:
Shopify field
A built-in Shopify field, such as the product's vendor or the order's total
Shopify metafield
One of your metafields, for example custom.color
Product tags / Customer tags / Order tags
The record's tags, as a list
Product image / Shopify file metafield
A file (see Files below)
Not synced
Nowhere. The field is maintained in pyck.
Choosing a source is a decision about ownership, not just about where a value is copied from. Once a field has a Shopify source, Shopify is in charge of it.
Fields named exactly like a standard Shopify field do not appear in this list: the app fills them itself. How to name schema fields so that as few as possible need mapping is described in Designing pyck schemas for Shopify.
Fields with a Shopify source
A mapped field always mirrors Shopify.
Example. Your product schema has a field color, mapped to the metafield custom.color.
custom.color is set to blue
color is blue
You change it to red
color is red
Someone edits color to green in pyck
The next sync sets it back to red
You delete the metafield custom.color
color is removed from the record
Two things follow from this:
Changes made in pyck to a mapped field do not last. The next time the record changes in Shopify, Shopify's value is written again. Make the change in Shopify instead.
Clearing a value in Shopify clears it in pyck. If your warehouse needs the value to stay, the field should not be mapped. Set it to Not synced.
A metafield is cleared by deleting it. Some Shopify fields work differently: a text field you empty in the Shopify admin may still arrive as empty text, in which case the field stays in pyck with an empty value instead of being removed.
Fields set to Not synced
A field set to Not synced belongs to pyck. The app never writes it and never removes it, whatever happens in Shopify.
Use it for anything your warehouse maintains: a storage zone, a pallet type, a handling note, a unit of measure that only matters on the shop floor.
Example. Your product schema has palletType, set to Not synced. Your team sets it to EUR in pyck. You then change the product's title, price and tags in Shopify. After each sync, palletType is still EUR.
Switching a field to Not synced keeps its value. If ean was mapped to a metafield and you switch it to Not synced, the value already in pyck stays, even if you later delete the metafield in Shopify. From then on, pyck owns it.
Fields with no source, and your own fields
Fields with no source behave exactly like Not synced: the app leaves them alone. This happens when your pyck schema gains a new field that has not been mapped yet.
The same goes for anything your warehouse writes to a record that has no Shopify source. A workflow that stamps an order with a status or a hold reason keeps that value through every later order update from Shopify, as long as that field is not mapped to a Shopify source.
Standard Shopify fields
The fields the app always sends (title, price, vendor, weight, addresses, order totals and so on) are owned by Shopify, whatever your mapping says. They are overwritten on every sync and removed when Shopify stops sending them. A note deleted on an order in Shopify, for example, disappears from the order in pyck.
Do not use these fields for warehouse information. Add a field of your own to the pyck schema and set it to Not synced.
Files
Files are the one exception to "only what you mapped". A file always follows Shopify, whether you mapped it or not:
You attach a file to a file metafield (e.g. an Amazon label on an order)
The file is attached to the record
The same order syncs again with nothing changed
Still one file, no duplicates
You swap the file for a new one
The new file is attached and the old one is deleted
You clear the file metafield
The file is deleted from the record
You remove an image from a product
The image is deleted from the item
Files your team attaches in pyck directly are never deleted by the app, even when Shopify's files change. The app only removes files it delivered itself. You recognise those by their description: Shopify metafield <namespace.key>, for example Shopify metafield custom.amazon_labels.
Single image files are supported. Other file types in a file metafield, such as PDFs, and metafields holding a list of files are not delivered yet. Files that were never delivered are not deleted either.
When Shopify cannot be read
If the app cannot read a value from Shopify, for example because Shopify is briefly unavailable or rate-limits the request, it does not treat the value as cleared. The field or file stays exactly as it is in pyck, and the next successful sync brings it up to date. A temporary problem never empties your data.
A metafield definition that no longer exists is different. You pick metafields from a list, but if a definition is later deleted or renamed in Shopify, the mapping still names the old one and the app marks it as stale in Data mapping. Shopify then answers normally and reports no such metafield on the record, so the app treats that as an empty value and removes the field in pyck. After deleting or renaming a metafield definition in Shopify, update the mapping before the next sync.
Choosing between a Shopify source and Not synced
Ask who should be able to change the value.
The value is maintained in the Shopify admin, and pyck should always show what the shop shows
Give it a Shopify source
The value is maintained by the warehouse, or set by a pyck workflow
Set it to Not synced
Both sides need to edit it
Pick one owner. Edits on the other side are overwritten (Shopify source) or never reach pyck (Not synced).
Values pyck rejects
A mapped value has to fit the field in your pyck schema. If your schema only allows three characters and the Shopify source sends POUNDS, or expects a single value and the source sends a list of tags, pyck rejects the whole record. Nothing on it is updated, not even the fields that would have fit.
The same happens when your schema marks a mapped field as required and the value is cleared in Shopify: the app removes the field, pyck refuses a record without it, and the record stops updating until Shopify has a value again. Map required fields only to sources that are always filled, or set them to Not synced.
Activity shows a failed entry naming the field for orders, customers, new products and every record a Sync now run touches. When an existing product is updated because it changed in Shopify, a rejection only appears there after you choose Record every attempt on the Activity page.
What to do. Map the field to a source whose values fit, or set it to Not synced. For example, a product's Weight unit is not a unit of measure like PCS, and Order tags always arrive as a list.
Connections in Auto mode
With Mapping mode set to Auto, there is no per-field mapping: the app fills the standard Shopify schemas. If you add your own metafields to those schemas through the metafield banner in Data mapping, they behave like mapped fields. They follow Shopify and are removed in pyck when the metafield is deleted in Shopify. Files follow Shopify here too.
Related pages
Setup: connecting your first tenant.
Sending data to several pyck tenants: which tenant receives what.
When something looks wrong: symptoms and what they mean.
Last updated
Was this helpful?
