Lifecycle of a Bag
A Bag
is an object that wraps all the data for an Order
related to a single merchant in Violet. They live within Orders
and mirror the information required by underlying e-commerce store. To a merchant, this bag is synonymous to an order in their merchant store.
Similar to the Lifecycle of a Cart, there are three stages we need to dive into for Bags
:
- Pre-Submission
- Submission
- Post-Submission
During each of these stages, Violet provides different statuses to reflect the state of the parallel order in the merchant’s store.
Pre-Submission
Bag management is automatic. You do not need to interact with Bags directly.
Bags are automatically created and managed when items are added to a Cart
. If an offer is from a different merchant to existing items in a Cart
, a new bag is created and the offer is added to that bag. As you go through the Checkout process and add customer details, shipping methods, etc. Pre-Submission Bags will reflect the following states:
IN_PROGRESS
— Upon creation, aBag
is automatically in progress and will remain in that state until submission.
Submission
Submission is the act of submitting the Bag
to the external commerce platform for the purpose of creating an external order. During submission and immediately following submission Bags will reflect the following states:
-
SUBMITTED
— ABag
is moved to this state when submitted by Violet to the Merchant store. This state is short-lived (in most cases you won’t notice it), as aBag
moves fromSUBMITTED
toACCEPTED
when a successful response is returned from the e-commerce platform.Once a cart that contains the
Bag
is submitted, the Bag gets associated with the order placed on the merchant’s eCommerce platform. It then also contains the applicable external order ID, status and tracking information. -
ACCEPTED
— When theBag
is received by the e-commerce platform and returns a success response to Violet, it moves to theACCEPTED
state. If a Merchant were to look in their Dashboard they would see that this order exists.
If there are any issues during processing, the errors are reflected at the Order
level in the errors
field. If the error is recoverable the Bag
will return to an IN_PROGRESS
state and submission can be tried again.
Duplicate Submissions
Some commerce platforms do not provide the concept of an external cart. For these platforms we emulate the cart experience using cart calculation endpoints to retrieve available shipping methods and to price orders. Since there is no external cart, there is no built-in mechanism within these commerce platforms to prevent duplicate order creation if the Violet order is submitted multiple times in quick succession. To accommodate these commerce platforms Violet will change the status
property of any Bags linked to these platforms to SUBMITTED
when the Violet cart is submitted. The Bag will remain in this state until the submission on the commerce platform completes with a success or failure response.
If you attempt to submit a Violet cart that is already in the process of submitting you will receive the following error response with a 409 Conflict
HTTP status:
When this occurs you can poll the Get Cart by ID endpoint until the status
property changes to ACCEPTED
upon successful order submission. If the external commerce platform did not accept the order and the Bag status
transitions back to IN_PROGRESS
you can then attempt to submit the cart again.
Post-Submission
Once a Bag
has been accepted by the e-commerce platform, state management is managed by the e-com platform as the merchant makes changes. Violet tracks these changes and updates the bag in our system as needed. A Bag
can end up in one of the following states as a merchant makes updates:
-
COMPLETED
— Once all fulfillments on a Bag are shipped, the Bag enters the state. This state signifies that the Bag is finished and, except for refunds or returns, no further actions will be taken on it. -
REFUNDED
— If all items in theBag
were returned to the merchant by the shopper and a refund was processed, the bag ends up in this state. Violet refunds payments made to the shopper and reverses any payouts to parties involved. -
PARTIALLY_REFUNDED
— When only some items in a bag are returned by the shopper (if multiple items were purchased), aBag
ends up in this state. Violet refunds the amount of money refunded by the merchant to the the shopper and partially reverses any payouts to parties involved. -
CANCELED
— Many e-commerce platforms allow for the cancellation of orders, but it is not often used since it does not trigger a refund to the shopper. When a merchant cancels an order in their e-commerce platform, the order will be updated to theCANCELED
status. -
REJECTED
— Although rare, it is possible for an e-commerce platform to reject a Bag. In such cases, the Bag is moved to aREJECTED
state. Violet will attempt to retry the bag a few times before accepting theREJECTED
state.Multi-Merchant Order
In the event of a multi-merchant Order, if one of the bags is truly rejected after retries Violet will decrease the Order total by the Bag amount to appropriately charge the Shopper and submit the rest of the Order.
Single Merchant Order
When an Order only has a single Bag and the Bag is rejected, the entire order will be in an error state and should be tried at a different time.
-
BACKORDERED
— If a merchant and the platform they are on allow products to be backordered, a bag will end up in this state.
In addition to a top-level status, Bags
also have two additional status fields to better reflect the state that they are in. You can learn more about them in the States of a Bag page.
Was this page helpful?