Docs / Columns and sync direction
Every column syncs in exactly one of three directions, and you choose which one — per column, not per sheet.
| Direction | Meaning |
|---|---|
| Two-way | The default for most fields. An edit on either side reaches the other. |
| Shopify → Sheet | Read-only in the sheet. Used for identity columns and any field where writing back isn't safe — description HTML, and Shopify-calculated inventory. |
| Sheet → Shopify | Available where it makes sense; most fields default to two-way instead. |
These two aren't a choice in the picker. They're what let Syncline recognise a row as an existing variant rather than treating every sync as a fresh comparison.
| Column | Notes |
|---|---|
| Variant ID | Row identity. Clearing this on a filled row creates a new variant — always included, never a choice. |
| Product ID | Groups variant rows into products. Always included. |
| Column | Notes |
|---|---|
| Title | Repeated on every variant row; only the first row of a product is authoritative. |
| Status | ACTIVE, DRAFT or ARCHIVED. |
| Vendor | — |
| Product type | — |
| Tags | Comma-separated. Off by default. |
| Description | HTML. One-way from Shopify by default — a spreadsheet cell mangles rich HTML, so writing it back is opt-in. |
| Column | Notes |
|---|---|
| Option 1 / 2 | — |
| Option 3 | Off by default. |
| SKU | — |
| Barcode | Off by default. |
| Price | — |
| Compare-at price | Off by default. |
Generated per location rather than listed statically — one store might have two locations, another twenty. Each gets an on-hand column, editable, plus an optional available column that reads out of Shopify only.
Reordering or removing a column is applied to the spreadsheet directly — Google moves the column with its data intact, so nothing is lost and nothing needs re-exporting.
Adding a column, or changing what a mapping means, is different: it invalidates every stored comparison hash for the shop. That's deliberate, not a side effect to route around — a hash computed under the old set of columns can't be compared against a row read under the new one, and treating them as comparable was an actual production bug: editing a single variant reported four rows as "changed" because the export had seeded hashes under a previous mapping. Re-export after a mapping change to write the sheet under the new layout.
Conflicts and troubleshooting — what happens when both sides change the same field, and what to do about the messages you'll actually see.