# Inbound sync data structures

Inbound syncs uses Shopify's GraphQL endpoints to sync data into Snowflake. Each object has been predefined to sync certain fields and objects. Below are breakdowns of how Shopify fields and objects are fetch by Omnata.

Once the data is landed by Omnata in the Raw Table, fields and objects are split into columns with corresponding data type in Snowflake in the Normalized View created by Omnata.

{% hint style="warning" %}
Access scope permissions are required to allow Omnata to sync from Shopify.

For a smooth experience, granting all **read** permissions ensures Omnata has the necessary access to sync data successfully.
{% endhint %}

***

## Customer

{% hint style="info" %}
Required access scopes:

* read\_customers
  {% endhint %}

### Fields

* canDelete
* createdAt
* dataSaleOptOut
* displayName
* firstName
* id
* lastName
* lifetimeDuration
* locale
* multipassIdentifier
* note
* numberOfOrders
* productSubscriberStatus
* state
* tags
* taxExempt
* taxExemptions
* updatedAt
* verifiedEmail

### Objects

<details>

<summary>addresses</summary>

* address1
* address2
* city
* company
* coordinatesValidated
* country
* countryCodeV2
* firstName
* formatted
* formattedArea
* id
* lastName
* latitude
* longitude
* name
* phone
* province
* provinceCode
* timeZone
* validationResultSummary

</details>

<details>

<summary>defaultAddress</summary>

* address1
* address2
* city
* company
* coordinatesValidated
* country
* countryCodeV2
* firstName
* formatted
* formattedArea
* id
* lastName
* latitude
* longitude
* name
* phone
* province
* provinceCode
* timeZone
* validationResultSummary
* zip

</details>

<details>

<summary>defaultEmailAddress</summary>

* emailAddress
* marketingOptInLevel
* marketingState
* marketingUnsubscribeUrl
* marketingUpdatedAt
* openTrackingLevel
* openTrackingUrl
* validFormat

</details>

<details>

<summary>defaultPhoneNumber</summary>

* marketingCollectedFrom
* marketingOptInLevel
* marketingState
* marketingUpdatedAt
* phoneNumber

</details>

<details>

<summary>amountSpent</summary>

* amount
* currencyCode

</details>

<details>

<summary>metafields</summary>

* compareDigest
* createdAt
* id
* jsonValue
* key
* legacyResourceId

</details>

<details>

<summary>statistics</summary>

* predictedSpendTier
* rfmGroup

</details>

***

## Products

{% hint style="info" %}
Required access scopes:

* read\_products
* read\_publications
  {% endhint %}

### Fields

* combinedListingRole
* createdAt
* defaultCursor
* description
* descriptionHtml
* giftCardTemplateSuffix
* handle
* hasOnlyDefaultVariant
* hasOutOfStockVariants
* hasVariantsThatRequiresComponents
* id
* isGiftCard
* onlineStorePreviewUrl
* onlineStoreUrl
* productType
* publishedAt
* requiresSellingPlan
* status
* tags
* templateSuffix
* title
* totalInventory
* tracksInventory
* updatedAt
* vendor

### Objects

<details>

<summary>availablePublicationsCount</summary>

* count
* precision

</details>

<details>

<summary>category</summary>

* ancestorIds
* childrenIds
* fullName
* id
* isArchived
* isLeaf
* isRoot
* level
* name

</details>

<details>

<summary>compareAtPriceRange</summary>

* maxVariantCompareAtPrice
  * amount
  * currencyCode
* minVariantCompareAtPrice
  * amount
  * currencyCode

</details>

<details>

<summary>feedback</summary>

* details
  * feedbackGeneratedAt
  * link
    * label
    * url
  * messages
    * field
    * message
  * state
* summary

</details>

<details>

<summary>mediaCount</summary>

* count
* precision

</details>

<details>

<summary>metafields</summary>

* compareDigest
* createdAt
* id
* jsonValue
* key
* legacyResourceId
* namespace
* ownerType
* type
* updatedAt
* value

</details>

<details>

<summary>options</summary>

* id
* linkedMetafield
  * key
  * namespace
* name
* optionValues
  * hasVariants
  * id
  * linkedMetafieldValue
  * name
  * swatch
    * color
* position
* values

</details>

<details>

<summary>priceRangeV2</summary>

* maxVariantPrice
  * amount
  * currencyCode
* minVariantPrice
  * amount
  * currencyCode

</details>

<details>

<summary>sellingPlanGroupsCount</summary>

* count
* precision

</details>

<details>

<summary>seo</summary>

* description
* title

</details>

<details>

<summary>variantsCount</summary>

* count
* precision

</details>

***

## Product Variants

{% hint style="info" %}
Required access scopes:

* read\_products
* read\_inventory
* read\_shipping
  {% endhint %}

### Fields

* availableForSale
* barcode
* compareAtPrice
* createdAt
* defaultCursor
* displayName
* id
* inventoryPolicy
* inventoryQuantity
* position
* price
* requiresComponents
* sellableOnlineQuantity
* sku
* taxable
* taxCode
* title

### Objects

<details>

<summary>deliveryProfile</summary>

* activeMethodDefinitionsCount
* default
* id
* legacyMode
* locationsWithoutRatesCount
* name
* originLocationCount
* productVariantsCount
  * count
  * precision
* unassignedLocations
  * activatable
  * addresses
    * address1
    * address2
    * city
    * country
    * countryCode
    * formatted
    * latitude
    * longitude
    * phone
    * province
    * provinceCode
    * zip
  * addressVerified
  * createdAt
  * deactivatable
  * deactivatedAt
  * deletable
  * fulfillmentService
    * callbackUrl
    * handle
    * id
    * inventoryManagement
    * permitsSkuSharing
    * serviceName
    * trackingSupport
    * type
  * fulfillsOnlineOrders
  * hasActiveInventory
  * hasUnfulfilledOrders
  * id
  * isActive
  * isFulfillmentService
  * legacyResourceId
  * localPickupSettingsV2
    * instructions
    * pickupTime
  * name
  * shipsInventory
  * suggestedAddresses
    * address1
    * address2
    * city
    * country
    * countryCode
    * formatted
    * province
    * provinceCode
    * zip
  * updatedAt
  * isPrimary
* zoneCountryCount

</details>

<details>

<summary>inventoryItem</summary>

* countryCodeOfOrigin
* countryHarmonizedSystemCodes
  * countryCode
  * harmonizedSystemCode
* createdAt
* duplicateSkuCount
* harmonizedSystemCode
* id
* inventoryHistoryUrl
* legacyResourceId
* locationsCount
  * count
  * precision
* measurement
  * id
  * weight
    * unit
    * value
* provinceCodeOfOrigin
* requiresShipping
* sku
* tracked
* trackedEditable
  * locked
  * reason
* unitCost
  * amount
  * currencyCode
* updatedAt

</details>

<details>

<summary>metafields</summary>

* compareDigest
* createdAt
* id
* jsonValue
* key
* legacyResourceId
* namespace
* ownerType
* type
* updatedAt
* value

</details>

<details>

<summary>selectedOptions</summary>

* name
* optionValue
  * hasVariants
  * id
  * linkedMetafieldValue
  * name
  * swatch
    * color
* value

</details>

<details>

<summary>unitPriceMeasurement</summary>

* measuredType
* quantityUnit
* quantityValue
* referenceUnit
* referenceValue

</details>

***

## Locations

{% hint style="info" %}
Required access scopes:

* read\_locations
  {% endhint %}

### Fields

* activatable
* addressVerified
* createdAt
* deactivatable
* deactivatedAt
* deletable
* fulfillsOnlineOrders
* hasActiveInventory
* hasUnfulfilledOrders
* id
* isActive
* isFulfillmentService
* legacyResourceId
* name
* shipsInventory
* updatedAt
* isPrimary

### Objects

<details>

<summary>addresses</summary>

* address1
* address2
* city
* country
* countryCode
* formatted
* latitude
* longitude
* phone
* province
* provinceCode
* zip

</details>

<details>

<summary>fulfillmentService</summary>

* callbackUrl
* handle
* id
* inventoryManagement
* permitsSkuSharing
* serviceName
* trackingSupport
* type

</details>

<details>

<summary>localPickupSettingsV2</summary>

* instructions
* pickupTime

</details>

<details>

<summary>suggestedAddresses</summary>

* address1
* address2
* city
* country
* countryCode
* formatted
* province
* provinceCode
* zip

</details>

***

## Shop

{% hint style="info" %}
Required access scopes:

* read\_products
* read\_locations
* read\_markets
* read\_legal\_policies
* read\_locales
  {% endhint %}

### Fields

* checkoutApiSupported
* contactEmail
* createdAt
* currencyCode
* description
* email
* enabledPresentmentCurrencies
* ianaTimezone
* id
* marketingSmsConsentEnabledAtCheckout
* myshopifyDomain
* name
* orderNumberFormatPrefix
* orderNumberFormatSuffix
* richTextEditorUrl
* setupRequired
* shipsToCountries
* shopOwnerName
* taxesIncluded
* taxShipping
* timezoneAbbreviation
* timezoneOffset
* timezoneOffsetMinutes
* transactionalSmsDisabled
* unitSystem
* updatedAt
* url

### Objects

<details>

<summary>alerts</summary>

* action
  * title
  * url
* description

</details>

<details>

<summary>allProductCategoriesList</summary>

* ancestorIds
* childrenIds
* fullName
* id
* isArchived
* isLeaf
* isRoot
* level
* name
* parent

</details>

<details>

<summary>billingAddress</summary>

* address1
* address2
* city
* company
* coordinatesValidated
* country
* countryCodeV2
* formatted
* formattedArea
* id
* latitude
* longitude
* phone
* province
* provinceCode

</details>

<details>

<summary>channelDefinitionsForInstalledChannels</summary>

* channelDefinitions
  * channelName
  * handle
  * id
  * isMarketplace
  * subChannelName
* channelName

</details>

<details>

<summary>countriesInShippingZones</summary>

* countryCodes
* includeRestOfWorld

</details>

<details>

<summary>currencyFormats</summary>

* moneyFormat
* moneyInEmailsFormat
* moneyWithCurrencyFormat
* moneyWithCurrencyInEmailsFormat

</details>

<details>

<summary>customerAccountsV2</summary>

* customerAccountsVersion
* loginLinksVisibleOnStorefrontAndCheckout
* loginRequiredAtCheckout
* url

</details>

<details>

<summary>entitlements</summary>

* Markets
  * B2B
    * Catalogs
      * Enabled
    * Enabled
  * Regions
    * Catalogs
      * Enabled
    * Enabled
  * Retail
    * Catalogs
      * Enabled
    * Enabled
  * Themes
    * Enabled

</details>

<details>

<summary>features</summary>

* avalaraAvatax
* branding
* bundles
  * eligibleForBundles
  * ineligibilityReason
  * sellsBundles
* captcha
* cartTransform
  * eligibleOperations
    * expandOperation
    * mergeOperation
    * updateOperation
* dynamicRemarketing
* eligibleForSubscriptionMigration
* eligibleForSubscriptions
* giftCards
* harmonizedSystemCode
* legacySubscriptionGatewayEnabled
* liveView
* paypalExpressSubscriptionGatewayStatus
* reports
* sellsSubscriptions
* showMetrics
* storefront
* unifiedMarkets

</details>

<details>

<summary>fulfillmentServices</summary>

* callbackUrl
* handle
* id
* inventoryManagement
* location
  * activatable
  * addresses
    * address1
    * address2
    * city
    * country
    * countryCode
    * formatted
    * latitude
    * longitude
    * phone
    * province
    * provinceCode
    * zip
  * addressVerified
  * createdAt
  * deactivatable
  * deactivatedAt
  * deletable
  * fulfillmentService
    * callbackUrl
    * handle
    * id
    * inventoryManagement
    * permitsSkuSharing
    * serviceName
    * trackingSupport
    * type
  * fulfillsOnlineOrders
  * hasActiveInventory
  * hasUnfulfilledOrders
  * id
  * isActive
  * isFulfillmentService
  * legacyResourceId
  * localPickupSettingsV2
    * instructions
    * pickupTime
  * name
  * shipsInventory
  * suggestedAddresses
    * address1
    * address2
    * city
    * country
    * countryCode
    * formatted
    * province
    * provinceCode
    * zip
  * updatedAt
  * isPrimary
* permitsSkuSharing
* requiresShippingMethod
* serviceName
* trackingSupport
* type

</details>

<details>

<summary>navigationSettings</summary>

* id
* title
* url

</details>

<details>

<summary>paymentSettings</summary>

* supportedDigitalWallets

</details>

<details>

<summary>plan</summary>

* partnerDevelopment
* shopifyPlus

</details>

<details>

<summary>primaryDomain</summary>

* host
* id
* localization
  * alternateLocales
  * country
  * defaultLocale
* marketWebPresence
  * alternateLocales
    * locale
    * name
    * primary
    * published
  * defaultLocale
    * locale
    * name
    * primary
    * published
  * domain
    * host
    * id
    * localization
      * alternateLocales
      * country
      * defaultLocale
    * sslEnabled
    * url
  * id
  * rootUrls
    * locale
    * url
  * subfolderSuffix
* sslEnabled
* url

</details>

<details>

<summary>resourceLimits</summary>

* locationLimit
* maxProductOptions
* maxProductVariants
* redirectLimitReached

</details>

<details>

<summary>searchFilters</summary>

* productAvailability
  * label
  * value

</details>

<details>

<summary>shopPolicies</summary>

* body
* createdAt
* id
* title
* type
* updated

</details>

***

### Inventory Items

{% hint style="info" %}
Required access scopes:

* read\_inventory
  {% endhint %}

***

### Inventory Levels

> Dependent on [Inventory Items](#inventory-items)

{% hint style="info" %}
Required access scopes:

* read\_inventory
* read\_locations
  {% endhint %}

***

### Shopify Payments Account

{% hint style="info" %}
Required access scopes:

* read\_shopify\_payments\_accounts
  {% endhint %}

***

### Balance Transactions

{% hint style="info" %}
Required access scopes:

* read\_shopify\_payments\_accounts
  {% endhint %}

***

### Payouts

{% hint style="info" %}
Required access scopes:

* read\_shopify\_payments\_accounts
  {% endhint %}

***

### Orders

{% hint style="info" %}
Required access scopes:

* read\_orders
* read\_customer
* read\_products
* read\_payment\_terms
  {% endhint %}

***

### Returns

> Dependent on [Orders](#orders)

{% hint style="info" %}
Required access scopes:

* read\_orders
* read\_customer
* read\_products
* read\_payment\_terms
* read\_returns
  {% endhint %}

***

### Fulfillments

> Dependent on [Orders](#orders)

{% hint style="info" %}
Required access scopes:

* read\_orders
* read\_customer
* read\_products
* read\_payment\_terms
* read\_fulfillments
* read\_locations
  {% endhint %}

***

### Shipping Line

> Dependent on [Orders](#orders)

{% hint style="info" %}
Required access scopes:

* read\_orders
* read\_customer
* read\_products
* read\_payment\_terms
  {% endhint %}

***


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.omnata.com/omnata-product-documentation/omnata-sync-for-snowflake/apps/shopify/inbound-sync-data-structures.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
