Skip to main content

Dataset and field reference

This is the exhaustive field catalog for all seven syncable datasets. For each dataset you get the Airtable column, what it holds, the Airtable cell type, and whether an edit in Airtable writes back into SKU.io. For the safety reasoning behind the inbound whitelists, see Inbound safety and the field whitelist.

How to read these tables

  • Airtable field — the column label SKU.io provisions in your base and shows in the mapping-grid field picker.
  • What it holds — the SKU.io value behind the column.
  • Cell type — the Airtable field type: Text, Number, Currency, Date, Checkbox, or Attachment.
  • Inbound-writable? — whether editing that column in Airtable can change SKU.io. Yes means the field is on the dataset's inbound whitelist; No (outbound-only) means SKU.io pushes it out but ignores any edit; No (read-only) / No (computed) are pushed but never accepted back; Key is the merge column and is never writable.

Only three datasets accept any inbound writes at all — Products, Sales Orders, and Suppliers. The other four (Inventory Levels, Sales Order Lines, Purchase Orders, PO Lines) are outbound-only: SKU.io writes them to Airtable and never reads edits back.

Every dataset's first field is the SKU.io ID key. SKU.io merges rows by matching this column, so it must stay unique per record — do not edit it in Airtable.

Datetimes are in UTC

Every date column — Order Date, Updated At, Purchase Order Date, and the rest — is written to Airtable in UTC. The SKU.io UI displays date-times in your account's timezone, so the same value reads differently in Airtable. Account for the offset when you build date filters, grouped views, or dashboards in your base.

Datasets at a glance

DatasetTwo-way?Merge keyWhen a record goes awayAuto-create?
ProductsYesProduct SKU (falls back to the SKU.io ID)Archived (has Archived)Yes (opt-in)
Inventory LevelsNo (outbound-only)The product and warehouse combinedRemoved outrightNo
Sales OrdersYesSales order numberArchived (has Archived)No
Sales Order LinesNo (outbound-only)The line's SKU.io IDRemoved outrightNo
Purchase OrdersNo (outbound-only)Purchase order numberArchived (has Archived)No
PO LinesNo (outbound-only)The line's SKU.io IDRemoved outrightNo
SuppliersYesThe supplier's numeric SKU.io IDArchived (has Archived)No

Two-way datasets accept edits back only for the narrow field sets listed under each dataset below. Everything else is outbound-only.

Products

The richest dataset, and the one with the widest inbound whitelist. The merge key is the product SKU — if a product has no SKU, SKU.io falls back to its SKU.io ID.

Airtable fieldWhat it holdsCell typeInbound-writable?
SKU.io IDThe product SKUTextKey
NameProduct nameTextYes
BarcodeBarcodeTextYes
MPNManufacturer part numberTextYes
HTS CodeHarmonized tariff codeTextYes
TypeProduct typeTextNo (outbound-only)
WeightWeightNumberYes
Weight UnitThe weight's unitTextNo (outbound-only)
LengthLengthNumberYes
WidthWidthNumberYes
HeightHeightNumberYes
Average CostAverage costCurrencyNo (read-only)
Unit CostUnit costCurrencyYes
PricePriceCurrencyNo (outbound-only)
BrandThe product's brand nameTextYes
ImagesProduct imagesAttachmentNo (outbound-only)
Gross Margin %Computed metricNumberNo (computed)
On HandComputed metricNumberNo (computed)
Units Sold (90d)Computed metricNumberNo (computed)
Days of CoverComputed metricNumberNo (computed)
Sell-through % (90d)Computed metricNumberNo (computed)
ArchivedWhether the product is archivedCheckboxNo (outbound-only)
Updated AtLast change in SKU.ioDateNo (outbound-only)

Inbound-only fields (no outbound column): two more fields — Tags and Category — accept inbound writes but have no catalog column that SKU.io pushes outbound. You map them explicitly to Airtable columns of your choosing. Their inbound behavior is described in the Notes below.

Products is the only dataset that accepts inbound writes to related records. Every field marked Yes above is written straight to the product, except Brand; Tags and Category behave as described below. Everything else — inventory, Average Cost, pricing, the computed metrics, Type, Weight Unit, Archived, and Updated At — is ignored inbound.

Notes:

  • Unit Cost is the only writable cost. Average Cost is read-only and Price is outbound-only, so SKU.io never lets Airtable overwrite either — both are excluded from inbound writes outright.
  • Brand goes out as the brand's name. An inbound brand write matches an existing brand by name, or creates one if it doesn't exist.
  • Tags syncs the full tag set. It accepts a list or a comma-separated string; values are trimmed, de-duplicated, sorted, and comma-joined so the same set always compares as unchanged.
  • Category attaches an existing category by exact name only. Categories form a path-based tree, so SKU.io never creates one — an unknown name is skipped.
  • Unmatched Airtable rows can auto-create a product when the mapping opts in: SKU.io creates a new product with its SKU set to the merge key and its type set to Standard, then applies the remaining fields. A merge key that collides with an existing SKU is rejected rather than overwriting the existing product.

Inventory Levels

Outbound-only — inventory is never writable from Airtable. Each row is a per-product, per-warehouse stock level. The merge key combines the product and the warehouse rather than using a single value.

Airtable fieldWhat it holdsCell typeInbound-writable?
SKU.io IDThe product and warehouse combinedTextKey
SKUThe product's SKUTextNo (outbound-only)
WarehouseWarehouse nameTextNo (outbound-only)
AvailableAvailable quantityNumberNo (outbound-only)
On HandOn-hand quantity in this warehouseNumberNo (outbound-only)
AllocatedAllocated quantityNumberNo (outbound-only)
Avg CostAverage costCurrencyNo (outbound-only)
Updated AtLast change in SKU.ioDateNo (outbound-only)

Levels here are removed outright rather than archived: the dataset has no Archived column, so a removed level is deleted from Airtable rather than flagged. If a mapping's delete mode is set to Flag, SKU.io switches it to Delete for this dataset. The On Hand column here is one warehouse's on-hand quantity — distinct from the product-level On Hand metric on the Products dataset, which adds up stock across warehouses.

Sales Orders

Inbound-capable, but only descriptive customer details flow back — never the statuses or dates that drive fulfillment and financials. The merge key is the sales order number.

Airtable fieldWhat it holdsCell typeInbound-writable?
SKU.io IDSales order numberTextKey
Order StatusOrder statusTextNo (outbound-only)
Fulfillment StatusFulfillment statusTextNo (outbound-only)
Payment StatusPayment statusTextNo (outbound-only)
Order DateOrder dateDateNo (outbound-only)
Customer NameCustomer nameTextYes (PII)
Customer EmailCustomer emailTextYes (PII)
Customer CompanyCustomer companyTextYes (PII)
Customer PhoneCustomer phoneTextYes (PII)
Customer POThe customer's PO numberTextYes
Customer MemoMemo for the customerTextYes
ArchivedWhether the order is archivedCheckboxNo (outbound-only)
Updated AtLast change in SKU.ioDateNo (outbound-only)

Notes:

  • Editing a status or the Order Date column in Airtable does nothing. Those fields are excluded from the inbound whitelist and never change the order.
  • No auto-create. An unmatched Airtable row is queued for review — SKU.io never conjures a sales order from a spreadsheet row. Writes match an order by its sales order number.
  • Only the six descriptive customer fields write back — the ones marked Yes above: Customer Name, Customer Email, Customer Company, Customer Phone, Customer PO, and Customer Memo. Order Status, Fulfillment Status, Payment Status, Order Date, and tracking are deliberately excluded — they drive fulfillment and financials, so an Airtable edit to any of them is ignored inbound.
  • The four Customer fields are flagged PII in the field picker (see PII-flagged fields).

Sales Order Lines

Outbound-only. Each row is a single line on a sales order. The merge key is the line's SKU.io ID.

Airtable fieldWhat it holdsCell typeInbound-writable?
SKU.io IDThe line's SKU.io IDTextKey
Order NumberThe order's sales order numberTextNo (outbound-only)
SKUThe product's SKUTextNo (outbound-only)
QuantityLine quantityNumberNo (outbound-only)
PriceLine amountCurrencyNo (outbound-only)
Updated AtLast change in SKU.ioDateNo (outbound-only)

Lines here are removed outright rather than archived — the dataset has no Archived column, so a removed line is deleted from Airtable, never flagged.

Purchase Orders

Outbound-only. The merge key is the purchase order number.

Airtable fieldWhat it holdsCell typeInbound-writable?
SKU.io IDPurchase order numberTextKey
Order StatusOrder statusTextNo (outbound-only)
Receipt StatusReceipt statusTextNo (outbound-only)
Total CostOrder total costCurrencyNo (outbound-only)
Total QuantityTotal quantity on the orderNumberNo (outbound-only)
SupplierSupplier nameTextNo (outbound-only)
Order DatePurchase order dateDateNo (outbound-only)
ArchivedWhether the PO is archivedCheckboxNo (outbound-only)
Updated AtLast change in SKU.ioDateNo (outbound-only)

Unlike the line datasets, Purchase Orders has an Archived column, so removed POs can be archived rather than deleted: a mapping's Flag delete mode works here and marks removed rows as archived.

PO Lines

Outbound-only. Each row is a single line on a purchase order. The merge key is the line's SKU.io ID.

Airtable fieldWhat it holdsCell typeInbound-writable?
SKU.io IDThe line's SKU.io IDTextKey
PO NumberThe order's purchase order numberTextNo (outbound-only)
SKUThe product's SKUTextNo (outbound-only)
QuantityLine quantityNumberNo (outbound-only)
Unit CostLine amountCurrencyNo (outbound-only)
Updated AtLast change in SKU.ioDateNo (outbound-only)

Lines here are removed outright rather than archived — no Archived column, so removed lines are deleted from Airtable, never flagged.

Suppliers

Inbound-capable, but only contact and company details flow back. The merge key is the supplier's numeric SKU.io ID.

Airtable fieldWhat it holdsCell typeInbound-writable?
SKU.io IDThe supplier's SKU.io IDTextKey
NameSupplier nameTextYes
CompanyCompany nameTextYes
Contact NamePrimary contact nameTextYes (PII)
EmailEmailTextYes (PII)
PhoneMessaging phoneTextYes (PII)
WebsiteWebsiteTextYes
ArchivedWhether the supplier is archivedCheckboxNo (outbound-only)
Updated AtLast change in SKU.ioDateNo (outbound-only)

Notes:

  • Operational settings are never editable from Airtable — lead times, PO automation, default warehouses, payment terms, and deposits have no column at all, so they can be neither exported nor written back.
  • No auto-create in v1. An unmatched Airtable row is queued for review, never created as a new supplier.
  • Only the six contact and company details write back — the ones marked Yes above: Name, Company, Contact Name, Email, Phone, and Website. Operational fields are excluded because there's no column to write, not merely because the whitelist omits them.
  • Because the merge key must be a numeric SKU.io ID, a non-numeric value in the key column matches no supplier.
  • The three contact fields are flagged PII (see PII-flagged fields).

Computed product metric columns

The Products dataset exposes five live read-only analytics columns. SKU.io recomputes them from live data on every sync and pushes them out, but never accepts them back — they're not on the Products inbound whitelist, so an Airtable edit to any of them is ignored. SKU.io only works these metrics out when the column is actually mapped.

Airtable fieldHow it is computed
Gross Margin %(PriceAverage Cost) ÷ Price × 100, rounded to 1 decimal. Empty when Price is 0.
On HandCurrent on-hand stock added up across warehouses.
Units Sold (90d)Fulfilled units over the trailing 90 days.
Days of CoverOn Hand ÷ (Units Sold (90d) ÷ 90), rounded to 1 decimal. Empty when no units sold.
Sell-through % (90d)Units Sold (90d) ÷ (Units Sold (90d) + On Hand) × 100, rounded to 1 decimal. Empty when there is no stock and no sales.

Days of Cover and Sell-through % are empty when there are no sales (or no stock and no sales) to divide by. Alongside Average Cost, Price, Images, Archived, and Updated At, these five metrics are outbound-only decoration — editing them in Airtable has no effect on SKU.io. Note that the Products On Hand metric adds up stock across warehouses, whereas the On Hand column on Inventory Levels is a single warehouse's quantity.

PII-flagged fields

Customer and contact fields — names, emails, phones, and companies — are flagged as PII in the mapping-grid field picker so you knowingly opt in before exporting personal data to Airtable.

DatasetPII fields
Sales OrdersCustomer Name, Customer Email, Customer Company, Customer Phone
SuppliersContact Name, Email, Phone
Last verified: