We’re looking for a future-proof, merchant-obsessed, and scalable way to integrate Bigblue with external returns solutions (the Solution in the rest of the doc).
The Solution notifies Bigblue of a new return coming our way.
This will happen a lot for onboarding merchants redirecting returns to our warehouse.
Bigblue notifies the Solution that the inspection is complete and forwards the results.
Use our TMS or other ways to get a shipping label from our accounts. This won’t always be the case because some returns solutions cover more use cases and geographies than we can offer.
There are three possible approaches:
The main advantages of this approach are that 1) we have a common identifier for everything that we already understand (the Shopify identifiers), 2) it’s not partner-dependent for both the Solution and Bigblue, and 3) we want to build that integration anyways.
A reverse fulfillment order is a group of one or more items in a return that will be processed by a merchant or a third-party fulfillment service. Creating a return or approving a return creates a reverse fulfillment order. There can be more than one reverse fulfillment order for a return at a given location.
Whoever (Bigblue or the Solution) generates the reverse delivery label creates a ReverseDelivery using the reverseDeliveryCreateWithShipping mutation, adding the tracking number, carrier, and tracking label URL.
Bigblue listens to REVERSE_DELIVERIES_ATTACH_DELIVERABLE webhook events (payload reference) and creates the return in our system.
Limits:
returns/approve events instead.Bigblue declares the expected return to our WMS.
<aside> 💡 Return shipments are identified at the warehouse using the carrier tracking number. External solutions also add an identifier they generate; as an MVP, we don’t do anything about it.
</aside>
When a Bigblue warehouse identifies and inspects a return, Bigblue calls the reverseFulfillmentOrderDispose mutation. That adds Dispositions to the ReverseFulfillmentOrderLineItems. The disposition type is MISSING for missing items, NOT_RESTOCKED for damaged items, and RESTOCKED for OK items.
The Solution subscribes to the reverse_fulfillment_orders/dispose webhook events and uses them as a trigger for the rest of the flow, including merchant approval or refunds.