# Shopify > NetSuite - sync all price lists

## Introduction

If prices are updated in Shopify, you can use this flow to sync with NetSuite.&#x20;

The flow pulls price lists and associated prices from Shopify, and removes duplicate items. We then retrieve items from NetSuite (using UPC codes). Next, a script matches Shopify SKUs to NetSuite items, and inventory item price lists are updated.

{% hint style="warning" %}
Catalog syncing is highly custom - every business has different product data structures, matching rules, and business logic. For example, some businesses match on SKU, others on UPC code, or custom fields. This flow provides base functionality however, updates may be required to meet your specific business needs.
{% endhint %}

{% hint style="warning" %}
This flow updates all prices for a product, so if a catalog is associated with multiple products, all of those product prices will be changed in NetSuite.
{% endhint %}

## Process flow snapshot

<details>

<summary><img src="https://2440044887-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLYNcUBVQwSkOMG6KjZfz%2Fuploads%2FSUvxsp8XwrC9qsafJMIe%2Ficon%20process%20flow.svg?alt=media&#x26;token=ad1dc886-4a4e-4cad-9ad0-3d755e0f3b5a" alt="" data-size="line"> Click to view process flow snapshot</summary>

![](https://2440044887-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLYNcUBVQwSkOMG6KjZfz%2Fuploads%2FNs4StzRc05GqQK5vY9su%2FShopify%20%3E%20NetSuite%20-%20sync%20all%20price%20lists%20full%20flow.png?alt=media\&token=bd88d9d6-986b-4a54-b6d3-27894696fa03)

</details>

## Limitations

<table><thead><tr><th width="316.98828125">Limitation</th><th>Summary</th></tr></thead><tbody><tr><td>Shopify GraphQL for price lists</td><td>Shopify GraphQL for price lists does not have an <code>updated at</code> timestamp, therefore this flow needs to run manually, or on a daily schedule. </td></tr><tr><td>Catalogues</td><td><p>The general limitation of catalogs in NetSuite means that if a product price is updated in Shopify, that </p><p>same price level might be used by multiple catalogs in NetSuite. As such, NetSuite updates all products using that price level as 'changed'.</p></td></tr><tr><td>Price levels</td><td>Currency page price level and quantity are hard coded and will need to be updated or developed further to handle multiple currencies.</td></tr><tr><td>Shopify GraphQL error handling</td><td>There is a known limitation with error handling for Shopify GraphQL. Please refer to the <a href="../../installation-guide-shopify-and-netsuite/stage-5-review-update-and-test-process-flows-shopify-and-netsuite#error-handling-for-shopify-graphql">Error handling for Shopify GraphQL</a> section for more information and a suggested approach that you may wish to adopt in your flows. </td></tr></tbody></table>

## Assumptions

This flow assumes that SKUs are stored in NetSuite's `upccode` field. If you use a different field to store this value, any connector queries, mappings and scripts referencing the `upccode` field must be updated. Please see the [Customisation ➤ process flow shapes](#process-flow-shapes) section for details.

## Customisation

To ensure that this process flow runs as required, some customisation options are available. These are documented in the following sections:

* [Flow variables](#flow-variables)
* [Process shape shapes](#process-flow-shapes)

### Flow variables

This process flow does not use flow variables.

### Process flow shapes

This process flow includes some shapes that can be configured with your own settings. Please see guidelines in the table below.

{% hint style="warning" %}
Shape settings determine the outcome of process flows. Do not change shape settings unless they are listed below.&#x20;
{% endhint %}

<table data-full-width="false"><thead><tr><th width="165.34375">Shape</th><th>Notes</th></tr></thead><tbody><tr><td>Trigger</td><td>This process flow is designed to be run manually.</td></tr><tr><td>Notify</td><td>This flow is designed in a try/catch structure, so notifications are generated if any part of the flow fails. To achieve this, the <code>catch</code> route includes a <a href="../../../../process-flows/building-process-flows/process-flow-shapes/standard-shapes/notify-shape">notify shape</a>, which must be configured for your own notification preferences. <br><br><code>Alert level</code>: Defaults to <code>error</code> but can be changed if needed<br><code>Channel</code>: Defaults to <code>email + log</code> but can be changed if needed<br><code>Email Limit</code>: Defaults to <code>5</code> but can be changed if needed<br><code>Notification Group</code>: Replace the <code>notify</code> placeholder which your required notification group. <br><code>Message</code>: If required, you can change the placeholder message.<br><br>For more information, please refer to our <a href="../../../../process-flows/building-process-flows/process-flow-shapes/standard-shapes/notify-shape">Notify shape</a> and <a href="../../../../general-settings/notification-groups">Notification groups</a> pages.</td></tr><tr><td>Connector (Shopify)</td><td>If you did not add or select a Shopify instance during the blueprint <a href="../installation-guide-shopify-and-netsuite/stage-4-install-the-blueprint-shopify-and-netsuite">installation process</a>, the following settings must be configured:<br><br><code>Source instance</code> : Set to your required <code>Shopify</code> instance.<br><code>Source endpoint</code> :  Set to <code>POST Get all price lists</code>           </td></tr><tr><td>Connector (Shopify)</td><td>If you did not add or select a Shopify instance during the blueprint <a href="../installation-guide-shopify-and-netsuite/stage-4-install-the-blueprint-shopify-and-netsuite">installation process</a>, the following settings must be configured:<br><br><code>Source instance</code> : Set to your required <code>Shopify</code> instance.<br><code>Source endpoint</code> :  Set to <code>POST Get all prices from price list</code> <br><code>Variables</code> : Leave the <code>Price List</code> variable as it defaults. </td></tr><tr><td>Connector (NetSuite)</td><td><p>If you did not add or select a NetSuite instance during the blueprint <a href="../installation-guide-shopify-and-netsuite/stage-4-install-the-blueprint-shopify-and-netsuite">installation process</a>, the following settings must be configured:<br><br><code>Source instance</code> : Set to your required <code>NetSuite</code> instance.<br><code>Source endpoint</code> :  Set to <code>POST suiteQL</code></p><p><code>Query</code>: SuiteQL compares SKUs to a value in NetSuite. This NetSuite connector is configured with a query that expects the comparison value in <code>upccode</code>. If you use a different field, please update the query accordingly.</p></td></tr><tr><td>Script</td><td>The <code>Match upc for price update</code> script expects NetSuite comparison values in <code>upccode</code>. Updates will be required if your system is configured differently.</td></tr></tbody></table>

## Reference

Reference information for this process flow is documented in the following sections:

* [Scripts used in this process flow](#scripts-in-this-process-flow)
* [Cross-reference lookups used in this process flow](#cross-reference-lookups-in-this-process-flow)

### Scripts in this process flow

<table><thead><tr><th width="293">Script</th><th>Summary</th></tr></thead><tbody><tr><td>Dedupe items</td><td>Extracts SKUs from items, removes duplicates. Returns a payload with SKUs in a formatted SQL parameter, to be consumed by the subsequent NetSuite query.</td></tr><tr><td>Match upc for price update</td><td>Matches Shopify product prices with NetSuite items (via <code>upccode</code>) and prepares a de-duplicated list for price updates. </td></tr></tbody></table>

### Cross-reference lookups in this process flow

There are no cross-reference lookups to note for this flow.
