Field Mappings
Reference for all fields in the PIM — source, destination, and Supabase column.
NS NetSuite syncSHOPIFY Shopify syncPIM PIM managed
NetSuite Fields — 61 fields
| Label | Supabase Column | Source Field | Channel | Source | Notes |
|---|---|---|---|---|---|
| SKU | ns_sku | itemid | both | NS | Primary key from NS |
| Display Name | ns_display_name | displayname | both | NS | |
| Manufacturer | ns_manufacturer | manufacturer | both | NS | |
| MPN | ns_mpn | mpn | both | NS | |
| UPC | ns_upc_code | upccode | both | NS | |
| Vendor Name | ns_vendor_name | vendorname | internal | NS | |
| Vendor Code | ns_vendor_code | vendorcode (itemvendor JOIN) | internal | NS | |
| Preferred Vendor | ns_preferred_vendor | preferred_vendor_name (itemvendor JOIN) | internal | NS | |
| DEPO | ns_depo | custitem_surgo_depo | internal | NS | |
| UNSPSC Code | ns_unspsc_code | custitem_surgo_unspsc_code | internal | NS | Used for government procurement |
| Country of Origin | ns_country_of_origin | custitem_surgo_coiuntryoforigin | internal | NS | Note: typo in NS field name |
| Base Price | ns_base_price | unitprice (pricing JOIN, pricelevel=1) | internal | NS | |
| Average Cost | ns_average_cost | averagecost | internal | NS | |
| Vendor Price | ns_vendor_price | cost | internal | NS | |
| FX Cost | ns_fx_cost | fxCost | internal | NS | |
| Qty on Hand | ns_quantity_on_hand | totalQuantityOnHand | internal | NS | |
| Stock Unit | ns_primary_stock_unit | stockUnit | internal | NS | |
| Stocking Indicator | ns_stocking_indicator | custitem_netstock_item_stock_indicator | internal | NS | |
| Units — 3 Months | ns_velocity_3m | custitem_surgo_3monthtotal2 | internal | NS | OUT velocity only |
| Units — 12 Months | ns_velocity_12m | custitem_surgo_12monthtotal2 | internal | NS | OUT velocity only |
| Orders — 12 Months | ns_orders_12m | custitemcustitem_surgo_numnerorders_12 | internal | NS | Note: double prefix in NS field name |
| Web Description Name | ns_web_description_name | custitem_surgo_webdescription | surgo.com | NS | |
| Meta Title (surgo.com) | ns_meta_title | custitem_surgo_metatitleevo | surgo.com | NS | |
| Meta Description (surgo.com) | ns_meta_description | custitem_surgo_metadescription | surgo.com | NS | |
| Meta Keywords | ns_meta_keywords | custitem_surgo_metakeywordsevo | surgo.com | NS | |
| Keywords (EvoX Search) | ns_keywords_evox | custitem_surgo_keywordsevosearch | surgo.com | NS | |
| Category (EvoX) | ns_category_evox | custitem_surgo_defaultcategoryevox | surgo.com | NS | |
| Priority (EvoX) | ns_priority_evox | custitem_surgo_priorityevox | surgo.com | NS | |
| HTML Description | ns_html_description | custitem_surgo_htmlevox | surgo.com | NS | |
| Sell Point 1 | ns_sell_point_1 | custitem_surgo_sellpoint1evox | surgo.com | NS | |
| Sell Point 2 | ns_sell_point_2 | custitem_surgo_sellpoint2evox | surgo.com | NS | |
| Sell Point 3 | ns_sell_point_3 | custitem_surgo_sellpoint3evox | surgo.com | NS | |
| Sell Point 4 | ns_sell_point_4 | custitem_surgo_sellpoint4evox | surgo.com | NS | |
| Sell Point 5 | ns_sell_point_5 | custitem_surgo_sellpoint5evox | surgo.com | NS | |
| Image 1 | ns_image_1 | custitem_surgo_image1evo | both | NS | EvoX CDN filename |
| Image 2 | ns_image_2 | custitem_surgo_image2nameevox | both | NS | |
| Image 3 | ns_image_3 | custitem_surgo_image3evo | both | NS | |
| Image 4 | ns_image_4 | custitem_surgo_image4evo | both | NS | |
| Image 5 | ns_image_5 | custitem_surgo_image5evo | both | NS | |
| Document 1 (PDF) | ns_document_1 | custitem_surgo_document1evo | surgo.com | NS | |
| Document 2 (PDF) | ns_document_2 | custitem_surgo_document2evo | surgo.com | NS | |
| Document 3 (PDF) | ns_document_3 | custitem_surgo_document3evo | surgo.com | NS | |
| Video URL | ns_product_video | custitem_surgo_productvideo_evox | surgo.com | NS | |
| FAQ HTML (EvoX) | ns_faq_html | custitem_surgo_faq_html_body | surgo.com | NS | |
| Warranty Included | ns_warranty | custitem_surgo_warranty | surgo.com | NS | Boolean T/F |
| Warranty Length | ns_warranty_length | custitem_surgo_warranty_length | surgo.com | NS | |
| Publish surgo.com | ns_publish_surgo | custitem_surgo_publish_surgo_web | internal | NS | Boolean |
| Brand (Shopify) | ns_shopify_brand | custitem_surgo_shopify_brand | surgomed.com | NS | Maintained in NS, synced to Shopify |
| Manufacturer (Shopify) | ns_shopify_manufacturer | custitem_surgo_shopify_manufacturer | surgomed.com | NS | |
| Product Type | ns_shopify_item_type | custitem_surgo_shopify_item_type → Shopify productType | surgomed.com | NS | Written to pim2_products by sync-metafields route |
| Template Suffix | ns_shopify_template | custitem_surgo_shopify_template → Shopify templateSuffix | surgomed.com | NS | Written to pim2_products by sync-metafields route |
| Meta Title (surgomed.com) | ns_shopify_meta_title | custitem_surgo_meta_title_parent_shop | surgomed.com | NS | |
| Meta Description (surgomed.com) | ns_shopify_meta_desc | custitem_surgo_metadesc_shopify | surgomed.com | NS | |
| Publish surgomed.com | ns_publish_littmann_usa | custitem_surgo_publish_1152_evo | internal | NS | Boolean |
| Variant 1 Name | ns_variant_1_name | custitem_surgo_variant_1_name | both | NS | |
| Variant 1 Value | ns_variant_1_value | custitem_surgo_variant_1_value | both | NS | |
| Variant 2 Name | ns_variant_2_name | custitem_surgo_variant_2_name | both | NS | |
| Variant 2 Value | ns_variant_2_value | custitem_surgo_variant_2_value | both | NS | |
| Variant 3 Name | ns_variant_3_name | custitem_surgo_variant_3_name | both | NS | |
| Variant 3 Value | ns_variant_3_value | custitem_surgo_shopify_3_value | both | NS | |
| Parent ID | ns_parent_id | custitem_surgo_parent_id | both | NS | Links variants to parent SKU |
Shopify Core Fields — written by sync-metafields route
| Label | Supabase Column | Source Field | Channel | Source | Notes |
|---|---|---|---|---|---|
| Shopify Product ID | shopify_product_id | products.id (GraphQL) | surgomed.com | SHOPIFY | Written by sync-metafields route |
| Shopify Handle | shopify_handle | products.handle (GraphQL) | surgomed.com | SHOPIFY | Written by sync-metafields route |
| Tags | shopify_tags | products.tags (GraphQL) | surgomed.com | SHOPIFY | Comma-separated string. Written by sync-metafields route |
| Product Type | ns_shopify_item_type | products.productType (GraphQL) | surgomed.com | SHOPIFY | Pulled from Shopify on sync, also maintained in NS |
| Template Suffix | ns_shopify_template | products.templateSuffix (GraphQL) | surgomed.com | SHOPIFY | Pulled from Shopify on sync |
| Shopify Last Synced | shopify_last_synced_at | Set by sync-metafields route | internal | SHOPIFY |
Shopify Metafield Definitions — live from Shopify
Loading metafield definitions…
PIM-managed Fields
| Label | Supabase Column | Source Field | Channel | Source | Notes |
|---|---|---|---|---|---|
| PIM Status | pim_status | pim2_products.pim_status | internal | PIM | draft / in_review / approved / published |
| FAQ Pairs | pim_faq_pairs | pim2_products.pim_faq_pairs (jsonb) | both | PIM | Q&A pairs stored as JSON. Source of truth for FAQ HTML generation |
| FAQ HTML (Shopify) | pim2_product_metafields (custom.faq_html) | Generated from pim_faq_pairs → <h3><p> format | surgomed.com | PIM | Pushed to Shopify custom.faq_html metafield via FAQs tab |
| FAQ HTML (EvoX) | pim2_product_metafields (evox.faq_html) | Generated from pim_faq_pairs → <details><summary> format | surgo.com | PIM | EvoX format TBD — not yet wired |