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.
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.
IMPORTANT: If you want the customer records created in Shopify to be synced to NetSuite with all the custom meta fields defined, we recommend scheduling the Shopify customer to NetSuite customer (add or update) flow first and then the order flow. If you schedule/run the Shopify order flow first, the customer flow runs as part of this flow and creates the customer records in NetSuite with the minimum fields such as first name, last name, email, Shipping/Billing addresses, subsidiary, and currency.
The Order section consists of the following flows:
- Shopify Order to NetSuite Order Add
- Adds new orders received on the Shopify store into NetSuite as sales orders in real-time.
- Orders from all your different channels like web, social channels, and POS are synced with NetSuite.
- Creates customer record in NetSuite, if a customer is not found in NetSuite. If a customer is found in NetSuite, the flow ignores it. If the flow fails to create a customer, an error message is displayed on the integration.io Dashboard. Any updates to the customer record such as Shopify ID or address are synced via the Shopify customer to NetSuite customer (add or update) flow.
- Shopify Order to Netsuite Cash Sale Add
- Adds new orders received on the 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.
Note: For the above order flows, the "Get order fulfillment info from Shopify" page processor (export) is added if you check the Buy online, pick up in-store checkbox in the Settings > Order > POS tab.
- Shopify Customer to NetSuite Customer Add/Update
- Adds or updates customers from Shopify to NetSuite. The Shopify order to NetSuite cash sale (add) flow only creates customers and any updates to the customer record such as Shopify ID or address are synced via the Shopify customer to NetSuite customer (add or update) flow.
- Includes syncing the basic customer information as well as their billing and shipping address etc.
- Shopify Order Transaction to NetSuite Bulk Add
- Adds all the successful payment transactions associated with a Shopify order into NetSuite.
- Allows you to bring transaction ids directly in NetSuite to reconcile payments received against Shopify orders with the payment gateway provider.
- Shopify Order Transaction to NetSuite Customer Deposit Add
- Coming Soon! Stay tuned for our next product release.
The following diagram displays the transfer of data between Shopify and NetSuite:
Each of the articles below covers details on how you can perform the most common tasks & self-manage your integration:
- Map the shipping methods between Shopify and NetSuite
- Map the payment methods between Shopify and NetSuite
- Map the SKU field between Shopify and NetSuite
- Handle order discounts in NetSuite
- Handle order shipping costs in NetSuite
- Handle order taxes in NetSuite
- Handle order total variances in NetSuite
- Flag high-risk orders in NetSuite
Prerequisite settings to run order flow
The following are the recommended configurations and setting that should be completed in the Shopify-NetSuite integration app before you execute the order flow:
- Ensure that the item on your Shopify also exists in the NetSuite. You can use Celigo’s effective product flows, NetSuite Item to Shopify Product Add/Update and NetSuite Matrix Item to Shopify Product Add/Update, in the Product section to ensure all your products in Shopify and NetSuite are always in sync with each other. For more information, see the Product Section.
- Click on the Off /On switch against each flow to enable them for importing the necessary information to NetSuite.
- Verify, update, and add field mappings as per your requirements. For more information on field mapping, see xxxxxxxxxxxx.
- From the Shopify Customer to NetSuite Customer Add/Update flow, click on the Settings icon and define the Primary Customer Lookup Criteria and Secondary Customer Lookup Criteria. Click Save.
Note: The conditional mapping is supported only if the record is identified via Primary Customer Lookup Criteria.
- From Settings > Order, configure settings available in the Shipping tab and Click Save.
- From Settings > Order, configure settings available in the Payment tab and click Save.
- From Settings > Order, select a value from the Add web orders into NetSuite drop-down list available in the Order tab and click Save. The following are the available options in the Add web orders into NetSuite drop-down list: When they are authorized in Shopify - The setting resembles the Shopify option Setting > Payments > Payment authorization > Manually capture payment for orders. In this case, if the card is valid and has enough funds, the issuer authorizes the payment. Once the authorization is confirmed, the order is placed with the Payment Status set as “Pending”. As soon as the order’s payment status is pending, the flow gets triggered and the order is imported from Shopify to NetSuite.When a user selects the setting as "Authorized", the integration app allows an order import for any of the orders with the financial status of Authorized or Paid. This is due to the fact that if a user has set their Shopify account to "manual capture of payment" then orders placed via the storefront would have a financial status of Authorized. On the other hand, a merchant can place an order through the admin panel directly in a Paid status. Considering the practical use case that the merchant would want orders to be imported in both scenarios, the integration app allows the "Paid" financial status orders as well. When they are captured in Shopify - The setting resembles the Shopify option Setting > Payments > Payment authorization > Automatically capture payment for orders. Once an order is placed, the payment gateway checks with the bank to make sure the credit card is valid. If the card is valid and has enough funds, then the issuer authorizes the payment. Once the authorization is confirmed and the customer is automatically charged for the order, the Payment Status is displayed as “Paid”. When the payment status is paid the flow gets triggered and the order is imported from Shopify to NetSuite.
When they are fulfilled in Shopify- Select this option if you only want to move orders that have the fulfillment status set as Fulfilled. Once the fulfillment information is added to an order and the status of Fulfillment Status changes from Unfulfilled to Fulfilled the order flow gets triggered and the order is imported from Shopify to NetSuite.
Important: If you want the initial sales order in NetSuite to be created as a Pending Approval State (for example) for all orders, use the Lookup mapping instead of Hard-coded. In order to update the status settings, refer to Map source data fields to destination.
Information flow for the Order section in the Shopify-NetSuite integration app
Add Customer information from Integrator.io to NetSuite
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 Addition Prerequisites.
The actions performed by the system for moving customer information
The following actions are performed when moving customer information from Shopify to NetSuite:
- The customer information as displayed in the following image based on field Mapping setting is exported from Shopify to NetSuite:
- Check for creating or updating a customer record in NetSuiteDuplicate customer check is performed as soon as the information reaches the Integrator.io.
The following two customer details are verified in the mentioned order to check if the Customer records already exist in NetSuite:
i. Customer ID
ii. Customer e-mail ID
The following table lists different actions performed by the system due to the status of checks in NetSuite:
- 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:
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 adding the customer information using the Customer tab in Settings.
Add Order information from Integrator.io to NetSuite
Once the customer information is processed, either of 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:
- Order information in exported from Shopify to Integrator.io based on the Add web orders into NetSuite drop-down list value in Settings > Order > Order tab. If the order in Shopify is in the state as selected in the drop-down list, the order information is moved to integrator.io.
- The order information (as shown below) along with more order details is retrieved from Shopify and moved to integrator.io.
- 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 for 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:
Additional features supported by this flow:
The Setting section 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 a 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 the NetSuite sales order. Tax can be added as a single line or multiple lines, one each for county/state/country tax.
- 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. Else, 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.
- 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 credit or cash refunds, leaving no room for human errors or delays due to disputes.
Order Transactions - Order Transactions
This 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 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:
Importing Your First Order Into NetSuite
- 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, follow these steps:
- In Shopify, create a new simple "Product" and populate the "SKU" field as "Celigo Test SKU 1".
- In NetSuite, create a new "Inventory Item" and populate the "Item Name/Number" field also as "Celigo Test SKU 1".
- In Shopify, create a test sales order with the SKU from the above step and also mark the order as paid in Shopify. Make a note of the Shopify order id in the URL bar since we will need it shortly.
- Now navigate to the integration app settings page in the integrator.io, click on the "Settings > Order" section page, and perform these steps:
- Click on the "Shipping" tab & open up the "Map Ship Methods" section.
- Click on the refresh icon next to the "NetSuite Ship Method" label to pull all the shipping methods set up in your NetSuite account.
- Once the refresh icon stops revolving, select a value in the "Default Lookup Value" field, then Save.
- Now, perform the same steps for choosing a default payment method:
- Click on the "Payment" tab & open up the "Map Payment Methods" section.
- Click on the refresh icon next to the "NetSuite Payment Method" label to pull all the payment methods set up in your NetSuite account.
- Once the refresh icon stops revolving, select a value in the "Default Lookup Value" field.
- Hit Save.
- Enable one of “Shopify Order to NetSuite Order Add” OR “Shopify Order to NetSuite Cash Sale Add” flows depending upon whether you want to add the Shopify order as a sales order or cash sale in NetSuite. You can do this by clicking the "Off /On" switch next to the integration flow.
- You are ready to import your first order!
Importing The Order Into NetSuite
- Under the "Settings > Order" only, click the "Order" tab now.
- Provide the Shopify Order Id (noted in Step 2 of the prerequisites above) in the "Shopify Order Id(s)" text box. Make sure you provide the Shopify Order Id and not the Shopify Order #.
- Hit Save. This action will trigger the integration app to pull that specific order from Shopify and push it into NetSuite.
- To monitor the success/failure of this action, click on the speedometer icon to the top right of the "Settings" page to open up the integration app "Dashboard" page. On this page, you should see a new job in a few seconds that will change the status from Queued -> In Progress -> Completed.
- If the job status shows "Completed" with success count as 1, this means the order is successfully pushed into NetSuite and you can directly go to Step #5.
- If the job status shows "Errored" with an error count as 1, this means the order failed to push to NetSuite. You can follow the below steps to resolve the error:
- Click on the "View" button next to the error count on the same job & it should tell why the order failed.
- Fix the error by using our troubleshooting guide & retry the same job using the "Retry" button.
- And since 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 pushed. This is the normal process to follow when importing an order.
- Navigate to your NetSuite account and put the same "Shopify Order Id" in the global search box for NetSuite. You should see a sales order/cash sale for the corresponding order in Shopify.