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

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

Field
Who decides
What a sync does

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:

Source
Takes the value 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.

In Shopify
In pyck after the sync

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:

In Shopify
In pyck after the sync

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.

If
Then

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.

Last updated

Was this helpful?