Articles in this section

Sync orders from Shopify to NetSuite

Overview

The Order flows import orders and associated customer information from Shopify and saves them in NetSuite. As soon as a buyer places an order on your Shopify website or an order is created by your Shopify admin in the Shopify admin portal, a real-time request is made by Shopify APIs to Celigo’s iPaaS platform integrator.io which then makes a request to NetSuite to transfer information pertaining to order and customer as defined in the Field Mappings option associated with the Order flow. The customer data flow is automatically triggered every time the Shopify Order to NetSuite Order Add flow runs.

You can add orders from Shopify into NetSuite in two different ways:

  • Sales Order: To add an order as Sales Order, enable the Shopify Order to NetSuite Order Add flow in the Order section. Sales Orders provide a way for customers to purchase items using one or more partial payments. Payment is accepted when the sales associate fulfills the order and hands over the product.
  • Cash Sale: To add an order as a cash sale, enable the Shopify Order to NetSuite Cash Sale Add flow in the Order section. A cash sale is an order type for when the customer orders, picks up, and pays for the goods immediately. The delivery is processed as soon as the order has been entered. A cash invoice can be printed immediately from the order and billing is related to the order. Enter a cash sale when payment for goods or services has been received at the time of delivery.

This section talks about all the integration flows related to the order processing in NetSuite. Navigate to the "Shopify - NetSuite Integration App" tile on your dashboard inside integrator.io and click on the gear icon "Settings" to the top right of the tile. On the next page that appears i.e. the settings page for the Integration App, you will see multiple sections under "Data Flows" in the left nav, click on the "Order" section to understand more about the order processing workflows.

Order Flows

1. Shopify Order to NetSuite Order Add

  • Adds new orders received on Shopify store into NetSuite as sales orders in real-time.
  • Orders from all your different channels like web, social channels, POS are synced with NetSuite.

2. Shopify Order to Netsuite Cash Sale Add

  • Adds new orders received on Shopify store into NetSuite as cash sales in real-time.
  • Typically used by service companies that are not selling physical inventory or companies that perform fulfillment through an external 3PL directly integrated with Shopify.
  • Allows you to skip the order fulfillment process in NetSuite but still decrement the inventory in NetSuite as sales occur.

3. Shopify Order to NetSuite Order/CashSale Add

  • Syncs orders from Shopify to NetSuite as per the scheduled time.
  • This flow is introduced to address the following scenarios:
    • If you use any third-party tool to detect fraud detection, insert any tags, or make any other modification immediately to the order after it is created. In that case, you must only use the scheduled flow instead of the real-time flow as real-time flows do not capture third-party details.
    • If you want to sync orders to NetSuite that the real-time flow is missed.
  • When syncing Shopify orders to NetSuite, if Shopify Order to NetSuite Order/CashSale (Scheduled Flow) is enabled, its mappings remain similar to the real-time flow (Shopify Order to NetSuite Order Add or Shopify Order to NetSuite Cash Sale Add) whichever is enabled. Any modification made in the real-time flow automatically reflects in the scheduled flow.
  • In a scheduled flow, if you want to get Shopify orders for a date range in the past and import them into NetSuite, click the Run button and it opens a Delta flow screen in which you can enter the date and time you wanted to run.
  • If real-time flows are disabled, all the advanced settings of the real-time flows are applied to the scheduled flow. Also, you can make modify mappings in the scheduled flow.
  • If real-time flows are disabled and you are using only the Shopify Order to NetSuite Order/CashSale Add flow, use the Import order on schedule basis as setting present under Setting > Integration Flows > Order > Order to sync the order as a Sales Order or Cash Sale.
  • You can use the below batch flow settings to filter orders.

2020-10-23_11-15-12.jpg 

2020-10-23_11-19-03.jpg

      • Understanding flow settings and URI adjustments: In the Shopify – NetSuite integration app, understanding the order synchronization flow settings is crucial to success. When configuring the Shopify order to NetSuite order (cash sale or sales order) flow, you have the option to filter orders based on either Last updated time (recommended) or Creation time. This selection determines which orders are considered for syncing within a specified timeframe, known as the delta duration.

        The following additional settings enable further refinement of the order selection process.
        • Filter order by Last Updated or Creation Time: Carefully choose whether to fetch orders based on their last updated timestamp or their creation timestamp in Shopify. The selected criterion determines the pool of orders that will be synced to NetSuite. By default, you can filter orders by their “Creation time.” Based on the value selected, the associated orders within the specified duration are imported from Shopify to NetSuite.
        • Lag for the next flow run: The flow deducts the value you enter in the textbox from the last flow run time to pick those orders created or updated within that lag. Specifying a lag helps you make any necessary adjustments to an order after it is created in Shopify and before the flow picks it. Example: If you provide a lag of 30, and your previous flow run time and date is 5:00 PM Nov 5th and the present time and date is 5:00 PM Nov 10th, the flow processes the orders from 4:30 PM Nov 5th to 5:00 PM Nov 10th.
        • Sync orders created prior to: helps manage orders created within a specific timeframe, ensuring they are included in the sync process. This setting allows you to sync all orders created since the last export time to NetSuite, including orders added while the flow is running. You can set the delta date lag offset, in minutes, on the "CurrentExportDatetime" node to sync the records created prior to the current flow runtime. 

      • Understanding the Relative URI: The relative URI plays a key role in the syncing process. It changes dynamically based on the values specified in the flow settings. In the relative URI, you can see the exact filter criteria for selecting orders. 
          • updated_at_min: This parameter in the URI ensures that only orders updated after a specific timestamp are considered. The timestamp is derived from "lastExportDateTime," representing the last export time for the flow. The updated_at_min parameter is retrieved from the relative URI. Based on the values selected or provided in various settings, the relative URI will automatically adjust to filter the appropriate orders for synchronization.
          • created_at_max: This parameter specifies that orders must be created before a certain timestamp, derived from "currentExportDateTime," which is the current time when the export is performed.
mceclip0.png
      • Sync Shopify edited order data to NetSuite:  When you enable the setting and run the “Shopify Order to NetSuite Order/CashSale Add” flow, the flow syncs all the edited orders from the last run. The sales order in NetSuite is updated to reflect the latest order edits. The updated sales order in NetSuite helps the warehouse team to plan inventory appropriately so that the removed items are not fulfilled. For more information, see Sync modified Shopify orders to NetSuite sales orders .

4. Shopify order transaction to NetSuite custom transaction record (add)

  • Adds all the successful payment transactions associated with a Shopify order into NetSuite only upon order creation by the order import flow. The flow doesn't update back to NetSuite when a capture transaction record is created in Shopify after the order is authorized and fulfilled.
  • Allows you to bring transaction ids directly to NetSuite to reconcile payments received against Shopify orders with the payment gateway provider.

5. Shopify Order to Shopify Order Add

  • Adds a customer deposit to a sales order for Shopify orders that are captured at the time of sale.

Customer Flows

1. Shopify Customer to NetSuite Customer Add/Update

  • Adds as well as updates customers from Shopify into NetSuite.
  • Includes syncing the basic customer information as well as their billing and shipping address etc.

2. NetSuite Customer to Shopify Customer Add

  • Adds customers from NetSuite to Shopify.

The following diagram displays the transfer of data between Shopify and NetSuite:

Order_flow_imgae_presentation.jpg

Importing Your First Order Into NetSuite

Prerequisites

  1. Ensure you have an SKU in Shopify that also exists in NetSuite with the same SKU name/number. If you don't already have one, use the steps as follows:
    • In Shopify, Go to Products tab > Add product and create a new product and populate the "SKU" field as "Celigo Test SKU 1".
    • In NetSuite, Go to Lists > Accounting > Items > New > Inventory Item and create a new an inventory item and enter "Celigo Test SKU 1" in the Item Name/Number field.
  2. In Shopify, go to Orders > Create order and create a test sales order for product “Celigo Test SKU 1” and enter the necessary order details. Click on the Mark as Paid button and create an order. Once the order is created, you are redirected to the order details page on Shopify. From the URL of this page, make a note of the Shopify order id in the URL bar. For example in the URL https:// demo-store.myshopify.com/admin/orders/4222562059, the order id is 422562059.
  3. Navigate to the Integration App settings page in the integrator.io, In the Settings section, click Order and perform the following steps:
    1. Click the Shipping tab and click Map Ship Methods.
    2. Select the option Use Custom Default Value to see other option.
    3. From the dropdown, choose a value in the Default Lookup Value field.
    4. Click Save.
      115006289128_img1.jpg
  4. Click the Payment tab and perform the following steps to select a default payment method:
    1. Click Map Payment Methods.
    2. Select a value in the Default Lookup Value field.
    3. Click Save.
  5. Click the Off /On switch to the enable any one of the Shopify Order to NetSuite Order Add or Shopify Order to NetSuite Cash Sale Add flow depending upon whether you want to add the Shopify order as a sales order or cash sale in NetSuite.

Now, you are ready to import your first order!

Import your first order

  1. In the Settings section, under Order click the Order tab.
  2. Enter the Shopify Order Id (noted in Step 2 of the prerequisites) in the Shopify Order Id(s) text box.
    Note: Ensure that you provide the Shopify order id and not the Shopify order number.
    115006289128_img2.png
  3. Click Save. This action triggers the Integration App to pull the specified order details from Shopify and push it into NetSuite.
  4. To monitor the success or failure of this action, click on the speedometer icon to the top right of the Integration App Settings page to open up the Dashboard page. On this page, you should see a new job in few seconds that changes its status from Queued -> In Progress -> Completed.
    • If the job status shows "Completed" with a success count as 1, this indicates that the order has been successfully added into NetSuite and you can directly go to Step #5.
    • If the job status shows "Errored" with an error count of 1, this indicates the order import has failed. In this case, use the following steps to resolve the error:
    • Click on the View button next to the error count on the same job to know why the order import failed.
    • Fix the error by using our troubleshooting guide and retry the same job using the Retry button.

      Note: As NetSuite does not report all errors with an order at once, you may need to fix errors one by one as they appear till the order is successfully added into NetSuite.

  5. Navigate to your NetSuite account and put the same "Shopify Order Id" in the global search box to find the sales order/cash sale for the corresponding order in Shopify.

Understanding The Settings

The Integration App includes a lot of powerful advanced settings that empower you to fine-tune the out of the box Integration App per your business needs. To understand each of the available advanced settings in detail, click Settings > Order.

Information flow for the Order section in the Shopify-NetSuite Integration App

1. Export customer and order information from Shopify to integrator.io

Once an order is placed in Shopify, the necessary information is moved from Shopify to Integrator.io using webhooks (Webhooks are "user-defined HTTP callbacks"). Webhooks are usually triggered by some event like once an order is in Paid status on Shopify. The order flow is triggered and using webhooks the necessary customer and order information based on the settings in order flow is moved to integrator.io.

2. Import customer information from integrator.io to NetSuite

Once the information comes to the integrator.io, the customer information is first imported into your NetSuite in real-time. When either of Shopify Order to NetSuite Order Add or Shopify Order to NetSuite Cash Sale Add flow runs, the Shopify Customer to NetSuite Customer Add/Update flow automatically gets triggered. The customer data flow is a real-time data flow and is automatically triggered every time the order data flow runs. The flow imports customer information from Shopify to NetSuite every 15 mins.

When this flow is triggered, integrator.io sends the customer information from Shopify as defined in Field Mapping to the NetSuite. Once this information reaches NetSuite, a check is made to see if the customer exists in NetSuite. If the customer doesn’t exist, a new customer record is created in NetSuite. If the customer already exists, the remaining information pertaining to the customer record is matched with new customer details, and updates are made if needed. Once this process is completed, a confirmation is sent to Integrator.io. If the process runs without any error, either of the order flow gets executed.

Note: The flow may generate an error if the customer already exists in your NetSuite account. To fix this issue, see Customer Import Prerequisites.

The actions performed by the system for moving customer information

The following actions are performed when moving customer information from Shopify to NetSuite:

  1. The customer information as displayed in the following image based on the field Mapping setting is exported from Shopify to NetSuite:
    Shopify_cust_id.jpg
  2. Check for creating or updating a customer record in NetSuite

    A duplicate customer check is performed as soon as the information reaches Integrator.io.  The following two customer details are verified in the mentioned order to check if the Customer records already exist in NetSuite:
      1. Customer ID
      2. Customer e-mail ID

    The following table lists different actions performed by the system due to the status of checks in NetSuite:

    Scenario 1

    Check

    NetSuite

    Action performed by the system

    Customer ID

    Already Exists 

    Checks for other customer details. Add customer information, like address and contact number that does not match with value in NetSuite. No new customer record is created in NetSuite.

    E-mail

    Already Exists 

    No check is performed for e-mail

    Scenario 2

    Check

    NetSuite

    Action performed by the system

    Customer ID

    Does not exist 

    Checks for email

    E-mail

    Already Exists 

    Updates the Customer ID associated with email in NetSuite and other customer details that do not match with the value in NetSuite.

    Scenario 3

    Check

    NetSuite

    Action performed by the system

    Customer ID

    Does not exist 

    Checks for email

    E-mail

    Does not exist 

    Creates new customer records and stores all the necessary details associated with the customer in NetSuite.

  3. After the check is performed, a record is created for a new customer or informed is updated in the NetSuite. The following image displays the updated information taken from Shopify and updated in NetSuite:
    NetSuite_Customer_import.jpg
    Once any of the aforementioned action is performed, the confirmation is sent to Integrator.io if the customer information is updated or a new record is created. If not an error is generated. In this case, you can resolve the issue and retry the flow to update the customer record in NetSuite.
    Apart from the process described in the aforementioned section, there are a few more options you can leverage for importing the customer information using the Customer tab in Settings > Order.

3. Add Order information from integrator.io to NetSuite

Once the customer information is processed, either the Shopify Order to NetSuite Order Add flow or Shopify Order to NetSuite Cash Sale Add flow is run. Based on the flow which is enabled, an order is added as a sales order or cash sale. Other than the flow that is enabled, field mapping settings and advanced settings options control the information that is transferred to the NetSuite.

Actions performed by the system for moving the order information

The following actions are performed when moving order information from Shopify to NetSuite:

  1. Order information in exported from Shopify to Integrator.io based on the Add web orders into NetSuite drop-down list value in Settings. If the order in Shopify is in the state as selected in the drop-down list, the order information is moved to integrator.io.
  2. The order information (as shown below) along with more order details is retrieved from Shopify and moved to integrator.io.
    Ordr_on_SHopify.jpg
  3. Before moving order information from Shopify to NetSuite the following checks are performed:
    • Duplicate order Check: The Integration App creates custom fields in NetSuite labeled “eTail OrderID” and “eTail Channel”. The order’s ID in Shopify is be mapped to the “eTail Order ID” and the “P/O Number” fields in NetSuite. In addition, the Integration App generates a special ExternalID for the order that indicates it was added by the Integration App. While adding a new sales order, the Integration App first checks whether there is an existing sales order in NetSuite with the same ExternalID as the mapped sales order. If the search finds a match, the new order is considered a duplicate and not added to NetSuite.
    • Shipping method mappings: Ship methods must be configured separately in both systems by clients. The Integration App allows unlimited ship method mappings.
    • Payment Method mappings: Payment methods must be configured separately in both systems by clients. The Integration App allows unlimited payment method mappings.
    • Multi-Currency Support: If you are running a NetSuite multi-currency account, the Integration App also checks the currency on the added order and sets that currency on the NetSuite customer record while adding the order, and NetSuite will automatically source the order’s currency from the attached customer record. NetSuite only allows this field to be set while no transactions exist for the given customer, so it is usually not possible to update the currency of a customer added from Shopify. In the case where a customer already exists in NetSuite and the currency is not known, the Integration App sets the correct currency when an order arrives. The Integration App also reports an error if a customer attempts to change his or her currency setting and that operation is not allowed by NetSuite.

4. Once the order information passes these checks, the order is added into the NetSuite based on your assigned settings defined for Field Mappings and Settings. If an order does not pass these checks an error is generated in Dashboard.

The following images display the various order information added from Shopify to NetSuite:

NSOrder-Items_tab.jpg

NSOrder-Etailtab.jpg

Additional features supported by this flow:
The Settings section setting allows you to leverage the following add-on features while adding information from integrator.io to NetSuite:

  • Report Variance: Variances in taxes, discounts, shipping costs, order totals between NetSuite and Shopify can be reported on the sales order. It is possible that the order total might not match between the two systems if information such as tax rates do not match. The Integration App calculates the variance related to the order total. After each order is added into NetSuite, the Integration App immediately compares the calculated totals with what was sent from Shopify. These fields include Tax Total, Ship Total, and Order Total. If there is a difference between the values calculated by NetSuite and the values sent from Shopify, the difference is stored in one of the variance custom fields on the sales order. You may report on these fields in NetSuite on a periodic basis and adjust your G/L with a journal entry if variance values exist.
  • Creating line item entity: This Integration App allows you to create different line items records for the following features:
    • Shopify gift card redemption
    • Shopify shipping cost
    • Shopify tax amount
  • Import POS order as sales order even when the Shopify Order to NetSuite Cash Sale Add flow is enabled. You can use the POS tab option to use this feature. When you select this checkbox and the Shopify Order to NetSuite Cash Sale Add flow is enabled, all your orders will get recorded in NetSuite as a sales order. This allows you to handle the order fulfillment in NetSuite for the sales order.
  • Taxes: Tax codes must be configured separately in both NetSuite and Shopify by you. If you choose to turn off the native NetSuite tax engine, the Integration App also allows tracking the total tax from Shopify as a line item on NetSuite sales orders. Tax can be added as a single line or multiple lines, one each for county/state/country tax.

    Limitation: The order flow in the integration app does not support setting different default tax codes based on country. However, you can hardcode the HST or PST tax values to zero and club them under GST for collective reporting.

  • Coupon Codes, Discount Item - Discount Codes: Discount codes in Shopify are either matched against existing coupon/promo codes in NetSuite or a single discount item can also be used to track discounts in NetSuite. There are multiple ways you can handle discounts in NetSuite via the out-of-the-box Integration App: You can either have the NetSuite promo/coupon codes map to Shopify discount codes. Otherwise, you can create a single discount item in NetSuite & that would apply to all the discounted orders from Shopify. The Discount Code used on the Shopify order is mapped to the "Shopify Discount Code" custom field on the Sales Order record in NetSuite & the discount item, the discount rate is applied on the body level in NetSuite.
  • Gift Cards: The Integration App supports both sale and redemption. Gift Card Redemption in Shopify can be tracked as an additional Non-Inventory line item on the NetSuite sales order. The Integration App allows mapping Gift Card code on Shopify Order to a custom field on a sales order in NetSuite.

    Note: The integration app supports orders imported with the gift card transaction type "kind": "sale". However, orders imported with the gift card transaction types "kind": "capture" and "kind": "authorization" are not supported.

  • Order Risks: Adds risk information (risk level, risk analysis) from Shopify order into NetSuite in real-time and ties it to the corresponding NetSuite sales order/cash sale. The Integration App provides integrated risk resolution capabilities to help store owners regain order processing efficiency and eliminate losses due to fulfillment delays. As and when risk information is generated in Shopify, the Integration App automatically adds the associated risk data into NetSuite.
    Orders that are perceived as risky can be validated for approval, canceled/closed, or refunded from within NetSuite. The Integration App prebuilt data flow then instantly send back cancellation and refund information to Shopify customers. Automated billing ensures that canceled orders and invoices are appropriately tagged with a credit or cash refunds, leaving no room for human errors or delays due to disputes.

4. Order Transactions

The Shopify order transaction to NetSuite custom transaction record (add) is an optional flow. If you enable this flow, the integration app adds all the successful transaction records for a Shopify order into NetSuite and ties them to the sales order for reconciliation purposes with the payment gateway. The flow doesn't update back to NetSuite when a capture transaction record is created in Shopify after the order is authorized and fulfilled.

The transaction whose status in Shopify is successful only gets added. Valid values of the transaction status are pending, failure, success, or error. This imported information includes authorization Code/transaction Id, payment gateway, and gross amount, and so on for each individual successful payment.

A separate data flow is used for processing transactions to ensure minimal impact on the throughput of the order imports.

The following image displays the transaction record updated in the eTail tab in NetSuite:
NS_transaction.jpg

How to

Each of the article below covers details into how you can perform the most common tasks and self-manage your integration:

Was this article helpful?
2 out of 2 found this helpful

Comments

1 comment
Date Votes
  • Can you map the sales representative from a POS sales transaction?  We track sales by sales representative for various analytic reports.  Cheers 

    0

Please sign in to leave a comment.