*One of the winners of the Celigo Automation in Action Challenge
At ZangaBee, we often encounter integration challenges that go beyond standard connectors. In this case, our customer needed a custom return and exchange process that could support both web and point-of-sale (POS) orders — including upsells, downsells, and conditional exchange logic.
The challenge
The customer needed to manage the full returns lifecycle in NetSuite:
- Returns: Generate RMAs, Item Receipts (IRs), and Credit Memos (CMs).
- Exchanges: Create Sales Orders, Item Fulfillments, and Invoices — with support for financial adjustments such as additional payments or refunds.
The most significant complexity arose from web exchanges, which had to remain on hold in both Shopify and NetSuite until a manual Item Receipt was created in NetSuite. Only after this manual step could the exchange Sales Order move forward and the Shopify hold be lifted.
Why out-of-the-box connectors fell short
While the standard NetSuite-Shopify integration covers typical order-to-cash workflows, it doesn’t handle the nuanced logic required for complex return and exchange scenarios. The main limitations included:
1. Conditional exchange order release
There was no native mechanism to hold and release orders in Shopify based on a manual NetSuite action. The flow needed to wait for an IR to be created manually before proceeding — a dependency not typically supported in standard integration logic.
2. Manual step, automated chain reaction
The Item Receipt step was intentionally manual. But once confirmed, the integration needed to automatically trigger multiple downstream actions: updating NetSuite order statuses, generating financial documents, and releasing Shopify holds — all without user intervention.
3. Financial edge cases
Handling upsells, downsells, and pure exchanges, including tax adjustments, shipping fees, and discounts, required precise reconciliation logic. The financial flows needed to remain accurate and traceable across both platforms.
Our solution
We built a set of custom Celigo flows supported by Shopify’s GraphQL API and NetSuite scripting:
- The integration detects return and exchange updates in Shopify.
- Based on the return type, it automatically creates RMAs, Credit Memos, Refunds, or Payments.
- Custom fields, saved searches, and scripts in NetSuite support this process.
To handle the manual Item Receipt dependency:
- A User Event script watches for IR creation in NetSuite. Once detected, it updates the exchange Sales Order status to pending fulfillment.
- A dedicated Celigo flow removes the on-hold status in Shopify, allowing the exchange to continue.
This architecture keeps manual steps where they’re needed, but ensures everything else flows smoothly and automatically — even across edge cases.
The result
The customer now has a fully automated return and exchange workflow that’s tightly aligned with their operational and financial requirements. Shopify and NetSuite stay in sync, and manual intervention is only required at the right moments.
Their product export flow also required intricate scripting and a custom architecture. If you’re interested in how we approached that challenge, let us know — it was implemented by Srini and includes several advanced Celigo techniques.
Let us know if its is desired to take a look at exchange flow and scripts. Contact us here!