Back to Top

Multivendor Marketplace for Shopify: Global Product Distribution Algorithm

Updated 23 January 2020

Most of the Merchants might be well aware of the Multi-Vendor Marketplace ‘Global Product‘ feature. Providing a quick review: Enabling this feature allows the Merchant to add products globally on his Multivendor Marketplace which can be sold by one or more sellers added on his marketplace. Thus, if the Merchant wants his sellers to sell the same products, he can do so by enabling this feature.

Now, we have introduced a new feature to the Global Product concept by the name Global Product Distribution Algorithm.

If you want to know more about the workflow of enabling the global product feature & how the sellers can sell this product, then please head over to the provided blog: Multivendor Marketplace Global Product
In this blog, we are only concentrating on the Global Product variants & distribution algorithm.

Code Pasting

After enabling the ‘Global Product’ feature app, the Admin needs to do some code pasting. Admin can get all the instructions and codes from the following page: Multivendor Marketplace Admin Panel > Configuration > Instructions for Marketplace:

Instructions-Admin
1. Display the Global Product on your store’s product description:
  • To display the seller listing on the global product description page then you need to paste this code in the product.liquid template.
<div class="wk_global_product" data-prod ="{{product.id}}" data-var ="{{product.selected_or_first_available_variant.id}}" style="display:none; border-bottom:1px solid #ddd; border-top:1px solid ddd; padding:5px;" data-tags="{{ product.tags }}" >
2. Next, To hide the “Add to Cart” button on your store’s product description page:
  • If the admin wants to hide the ‘Add to Cart’ button from his global product description page then he needs to paste the following code into the product.liquid template > AddToCart button.
{% if product.tags contains 'wk_global' %}style='display:none;'{% endif %}
Instructions-Admin-1
3. To hide the “Add to Cart” button for the seller’s product on your store’s product description page:
  • If the admin wants to hide the ‘Add to Cart’ button from Seller’s global product description page then he needs the paste the code into the product.liquid template > AddToCart button.
{% if product.tags contains 'se_global' %}style='display:none;'{% endif %}
4. To display the “Sell this product” button on the store’s product description page in case the C2C marketplace feature is enabled with the global product:
  • If the admin has enabled the C2C feature of Multivendor Marketplace and wants to display the ‘sell this product’ button on his global product description page also, then he needs to paste the following code into the product.liquid template.

    When a customer who isn’t logged-in on your store frontend clicks on the ‘sell this product’ button, he will be taken to the customer login page. And after login, he will again land on that global product’s description page.
    When a logged-in customer will click on the ‘sell this product’ button, he will be straightaway taken to that multivendor marketplace global product’s page where he can choose to sell it without the hassle of finding that product on the seller panel by their own.
{% if product.tags contains 'wk_global' %}<div class="wk-global-sell-btn" data-wk_customer_id="{{customer.id}}" data-wk_shop="{{shop.permanent_domain}}" data-wk_sell_label="Sell this product" style="display: none;">>{% endif %}

Global Product Configuration

Go to Multi vendor Marketplace Admin Panel > Configuration > Global Configuration:

Searching for a Shopify
Headless solution ?
Find out More
Dashboard-Admin
Image: Multivendor Marketplace Admin Dashboard

On the redirected page, Merchant will have the following configurations. Let’s dive into each one at a time.

screencapture-sp-seller-webkul-admin-index-php-2019-06-17-10_45_19
Image: Multivendor Marketplace Admin Panel: Global Product Configuration

Sort By

Admin can choose whether he wants to display the sellers of the global product on frontend according to the ascending or descending manner depending on the prices they have set.

Different sellers selling the same global product can set different prices. In other words, sellers can edit the price of the global product once they started selling it.

Frontend View

Global-Product-2-–-demo-store
Global Product: Price Descending
Global-Product-2-–-demo-store-1
Global Product: Price Ascending

Manage Variants For Global Product

Using this option, the Admin can add variants to the global products and furthermore, the sellers can sell any particular variant of that global product.

Earlier, we haven’t provided the functionality to add variants to the global products or to import products with variants as global products but now we have introduced this feature also.

So, to add variants, the admin can simply add a new global product & on the ‘add product’ form, he will get an option to add variants.

Add-Product-Admin
Multivendor Admin Panel > Products > Global Products > Add Global Product

After the admin adds variants, the seller can choose whichever variant he wants to sell. Multivendor Marketplace Seller Panel > Global Products > Sell Product.

Global-Product-Seller-•-Multivendor-MarketPlace

Now, on the following page, the seller will have the list of all the added variants which he is not selling in the Unlisted Variants section.

Sell-Global-Products-Seller-•-Multivendor-MarketPlace
Single Variant Selection
Sell-Global-Products-Seller-•-Multivendor-MarketPlace-1
Multiple Variant Selection

After clicking on the ‘Sell Variant’ button, the seller will have a pop-up where he can change the price, compare at price, inventory tracking option & quantity of the variant.

Sell-Global-Products-Seller-•-Multivendor-MarketPlace-2

Note

If the seller disabled the ‘Track Inventory’ option then the customers can place an order for n number of quantities. But if the seller has enabled this option then he needs to provide the number of quantity of that variant. Thus, customers can only buy the product within a given quantity.

Next, the variants which the seller is selling will now list in the Variants Details section and rest will remain in the Unlisted Variants section. (The seller can edit(update price/quantity) the variants he is selling anytime.)

Sell-Global-Products-Seller-•-Multivendor-MarketPlace-3

Moving on, if the seller doesn’t want to sell a particular variant of the product anymore then he can unlist the variants from the Variants Details Section anytime.

Note

To unlist the variants from the Variants Details section, the seller needs to have at least one variant other than the one he wants to unlist.

Sell-Global-Products-Seller-•-Multivendor-MarketPlace-4

Now, if the seller wants to stop selling that particular global product then instead of unlisted the variants, he needs to unlist the whole product from Multivendor Seller Panel > Global Products > Unlist

Global-Product-Seller-•-Multivendor-MarketPlace-1

Global Product Variants: Frontend View

Global-Product-2-–-demo-store-2
Variant Rich Apple is sold by Seller 1 & Seller 2
Global-Product-2-–-demo-store-3
Variant More Fibre is sold by Seller 2 only.

Please make a note:

The admin can’t add more than 100 variants to a product & each product can have only 3 option. (This is according to Shopify’s limitations.)

Allow Sellers to Manage Global Product Price

Enable this option if you want to grant your sellers the rights to change the global product price. Disable if you don’t want sellers to change the global product/variant price & sell on the same price as mentioned by you (admin).

Allow Sellers to Manage Global Product Inventory

Enable this option if you want your sellers to update the global product/variant quantity else keep it disabled.

Label Configuration

On the same page, the admin can customize the frontend labels as per his requirements.

Global-Product-Configuration-Admin-1

Global Product: Order Distribution Algorithm

The main functionality of this algorithm:

Using this, the admin can apply the distribution algorithm based on which global product orders will get distributed among sellers on the basis of seller priority.

The admin needs to define the maximum order acceptance time (applicable to all the sellers) under which the seller on the highest priority has to accept the order. Otherwise, the order request will expire and will go to the next seller on the priority list.

What are the criteria for defining the seller priority list?

The seller priority list will define on the basis of who will start selling the particular global product first. Having said that, it’s obvious that each global product will have a different seller priority list.

In which condition will the seller priority list will update?

The seller priority list will update in two scenarios:

  • If the seller declines the global product order request then that particular seller will go down to the bottom of the priority list.
  • If the global product order request remains unanswered from the seller’s end, i.e., the request expires then similarly that seller will go to the end of the priority queue.
How to configure the Distribution Algorithm?

From the multivendor marketplace admin panel, go to Configuration > Global Product Configuration:

Global-Product-Configuration-Admin-2

Enable the given option, provide the maximum time for order acceptance and save.

Note: The time provided should be a whole number and can’t be in fractions or decimals. Example: You can set 1,2,3,..100 hours but can’t set 1.5, 2.9, etc.

The workflow of Order Distribution Algorithm

When the admin enables the Distribution Algorithm, the seller listing on the product description page will not be displayed on the frontend as it was displaying before. The product will simply display as the Admin’s product.

To hide the “Add to Cart” button for the seller’s global products on your store’s product description page, copy the following code into the product.liquid template > AddToCart button:

{% if product.tags contains 'se_global' %}style='display:none;'{% endif %}

Suppose a customer places an order for three different Global Products, an order will create on Shopify backend (say order name #101).

Consider that a different seller is selling each product. So, after this, the sellers on the top of the seller priority list for each particular global product will be checked for the quantity. Now, if the Seller on top priority has sufficient product quantity then the order requests will go to him otherwise it will go to the next seller on the priority queue. (This will not affect the priority position of the top-ranking seller.)

#Case 1

All the sellers have accepted the order requests.
(To accept the order request, sellers need to go to multivendor seller panel > Orders > Global Product Order Requests)

Order-Requests-Seller-•-Multivendor-MarketPlace

Three more orders will create on Multivendor Marketplace Admin Panel & Shopify backend (say order name #102, #103 & # 104). Each seller will have the particular order listed on their seller panel that they are selling.
The line item of order #101 will be refunded with $0 on Shopify backend and the orders on the multivendor marketplace will always remain in pending status.

#Case 2

Any of the sellers denies the request or the request expires then that particular request will go to the next seller on the priority list. Further, the process goes as defined in case 1.

#Case 3

In case, after all, the customer cancels the order, the Admin has to manually refund the #101 order from Shopify backend.

Points to note in regards to the Order Distribution Algorithm

  • It is advisable to disable the ‘Allow sellers to manage global product price’ option from the global product configuration section. This is because to make this algorithm work properly, the sellers must not change the product/variant price.
Let’s understand this with an example:

When a customer places an order for a product, the same order request will be sent to the seller on the top of the priority list who is selling it for $100. Now suppose, that particular seller denies the order request then the request will be sent to the second seller on the priority list who is selling it for $120. In this case, the customer has placed the order at $100 but now the price is changed to $120 which should be handled by the Admin himself.
So, to avoid this chaos, it is advisable to disable the price update option.

  • Another advice is that the admin should enable the ‘Allow Sellers to Manage Global Product Inventory’ option from the global product configuration section and advice his sellers to enable the ‘track inventory’ option.
Let’s understand why.

If the seller on the top of the seller priority list has disabled the ‘track inventory’ option while updating the global product then whenever an order request is generated, it will be sent to that seller only because he doesn’t have quantity issue. Likewise, all the future order requests will go to this particular seller only until and unless he denies the order or request expires. This reduces the chances of other sellers to receive the order request.
The acceptable flow should be that if the seller doesn’t have the quantity, the request will go to the next in the priority queue.

  • Auto-pay methods don’t work in the case of global products.
  • In case, a seller receives an order request which has two or more global products that he is selling then he will only have the option to deny the whole order. That is, he can’t choose to fulfill just one product from the whole order. It’s all or none.
  • We don’t manage Multivendor Marketplace shipping methods (Multivendor Marketplace Shipping, USPS Shipping, Ecom Express Shipping, Canada Post Shipping, Airspeed or Australia Post Shipping) if the admin has enabled the distribution algorithm. Though, it works well with Shopify Shipping.
  • Also, we don’t manage the Shipping & discounts for the new orders created after a seller accepts the global product order request.
  • If a seller has 3 order requests at a time and he denies one order request then it doesn’t mean that all the other order requests will also get auto-denied. The seller can choose to accept/deny the other order request. Though, this will affect the seller priority list.
  • Whenever the Seller updates the product/variant quantity, the same will be updated on the admin end.

Distribution Algorithm has four different scenarios

#Scenario 1

The admin has three sellers on his multivendor marketplace (say, seller #A, #B & #C). Also, consider a product #1 for which #A has 5 quantity for this product, #B has 5 quantity for this product and #C has 3 quantity for this product. The seller priority list for product #1 goes like: #A > #B > #C

Now, suppose a customer places an order for product #1 (2 quantities). An order will be created on Shopify end (say #101). The seller priority will be checked & #A will be checked for quantity as it has the highest priority. #A has the required quantity so an order request will be sent to #A.

#A now has two options, either he can accept the order request or deny it (or let it expire).

  • If #A accepts the order request, an order will be created (say #102). The line item of order #101 will refund with $0 of this particular line item.
  • If #A denies the order request, the seller priority will be changed to #B > #C > #A. Now, #B will be checked for quantity and after this, the process will go as defined above.

#Scenario 2

Consider a product #2 for which Seller #A has 0 quantity, #B has 5 quantity & #C has 3 quantity.

Now, a customer places an order for product #2 (2 quantities) thus, creating an order #101 on Shopify backend. Similarly, the sellers will be checked for priority which is #A > #B > #C. Now, #A with the highest priority will be checked for quantity.
#A doesn’t have the required quantity so the order request will go to #B, who is second in the queue. (The priority queue will remain the same because the quantity doesn’t affect the priority list).
We will check #B for quantity.

Since #B has the quantity, an order request will go to him. He will have two options, either to accept or deny.

  • If accepted, the process will go as defined earlier.
  • On denial, the priority list will change to #A > #C > #B. Now we will again look for the quantity from #A. As #A doesn’t have the required quantity, #C will be checked for the same. And on having the quantity, a request will go to #C. Later, following the same process as defined above.

Another case: If #A updates product #2 quantity before #B denies the order request. In this case, #A will check again for the quantity. Then, the request will go to #A instead of moving to #C.

#Scenario 3

For a product #1, seller #A has 2 quantity, #B has 5 quantity & #C has 6 quantity.

A customer places an order for product #1 (5 quantity). As per the seller priority list (#A > #B > #C), #A will be checked for quantity. Seller #A has 2 quantity so an order request for 2 quantity will go to #A. Next, #B will be checked for quantity and an order request for 3 quantity will be sent to #B.

  • Now, if #A accepts the request, the flow will be the same. Or if denies, the priority will change to #B > #C > #A and an order request will be sent to #B for 2 quantities. If #B accepts the request, the flow will go as defined above.
  • If #B denies the request for 3 quantity, the priority list will be changed to #C > #A > #B and the request will be sent to #C for 3 quantity. And so on.

#Scenario 4

Suppose an order #101 has 2 different products, 1 normal product, and 1 global product. Then, the process for the normal product will go as it is defined in Multivendor Marketplace. And for the global product, the process will go as per the distribution algorithm stated above.

Once the global product order request is accepted by the seller, this line item of order #101 will be refunded with $0 from Shopify backend.

Cases when the Admin needs to manage the orders himself

  • If the main order gets refunded/canceled/deleted then no action will be taken, i.e., no order will be created & the generated order request will be canceled.
  • In case no seller accepts the order request then the request will terminate and Admin needs to manage that order.
  • If a seller with the required quantity denies the order request and no other seller has the quantity then the request will be canceled. And admin needs to take care of the order himself.
  • If seller 1 has 2 quantity and seller 2 has 3 quantity for a product A, and a customer places an order for 4 quantity. Then order request for 2 quantity sent to seller 1 (having higher priority) is accepted but order request for 2 quantity sent to seller 2 is denied. In this case, it’s not possible to manage the whole order quantity thus, the request will auto-cancel. Further, the admin needs to manage it.
  • If the main order gets canceled or partially canceled then refund will be managed by the Admin.
  • In case of auto-fulfillment, refunded/canceled/deleted orders will be managed by the Admin himself.

Demo Details

Use the following link for demo details:
https://multivendor-global-product.myshopify.com/pages/demo

💡 Need help?

Drop your query at [email protected] or Webkul UV Desk.

. . .

Leave a Comment

Your email address will not be published. Required fields are marked*


2 comments

  • amald
    • Mansi Rana (Moderator)
  • Back to Top

    Message Sent!

    If you have more details or questions, you can reply to the received confirmation email.

    Back to Home