Product Vendors FAQ

Extensions Compatible with Product Vendors ↑ Back to top

add_filter( 'wc_customer_order_csv_export_order_headers', 'wc_product_vendors_csv_export_integration_add_column_headers' );
add_filter( 'wc_customer_order_csv_export_order_line_item', 'wc_product_vendors_csv_export_integration_modify_line_item', 10, 5 );
add_filter( 'wc_customer_order_csv_export_order_row_one_row_per_item', 'wc_product_vendors_csv_export_integration_add_row_data', 10, 4 );
function wc_product_vendors_csv_export_integration_add_column_headers( $headers ) {
$headers['vendor'] = 'Vendor';
return $headers;
function wc_product_vendors_csv_export_integration_modify_line_item( $line_item, $item, $product, $order, $csv_generator ) {
// bail out as we only need this data if it's one row per item
if ( ! wc_product_vendors_csv_export_integration_is_one_row_per_item( $csv_generator ) ) {
return $order_data;
if ( $product instanceof WC_Product && 'product' === get_post_type( $product->id ) ) {
// add product id to line_item
$line_item['product_vendors_product_id'] = $product->id;
return $line_item;
function wc_product_vendors_csv_export_integration_add_row_data( $order_data, $item, $order, $csv_generator ) {
// bail out as this only works with one row per item
if ( ! wc_product_vendors_csv_export_integration_is_one_row_per_item( $csv_generator ) ) {
return $order_data;
if ( ! empty( $item['product_vendors_product_id'] ) ) {
$vendor = WC_Product_Vendors_Utils::is_vendor_product( $item['product_vendors_product_id'] );
if ( ! empty( $vendor[0] ) ) {
$vendor_data = WC_Product_Vendors_Utils::get_vendor_data_by_id( $vendor[0]->term_id );
if ( ! empty( $vendor_data ) ) {
$order_data['vendor'] = $vendor_data['name'];
return $order_data;
function wc_product_vendors_csv_export_integration_is_one_row_per_item( $csv_generator ) {
// sanity check – bail if CSV Export is not active, or if the provided paramater is not as expected
if ( ! function_exists( 'wc_customer_order_csv_export' ) || ! $csv_generator instanceof WC_Customer_Order_CSV_Export_Generator ) {
return false;
$one_row_per_item = false;
// determine if the selected format is "one row per item"
if ( version_compare( wc_customer_order_csv_export()->get_version(), '4.0.0', '<' ) ) {
$one_row_per_item = ( 'default_one_row_per_item' === $csv_generator->order_format || 'legacy_one_row_per_item' === $csv_generator->order_format );
// v4.0.0 – 4.0.2
} elseif ( ! isset( $csv_generator->format_definition ) ) {
// get the CSV Export format definition
$format_definition = wc_customer_order_csv_export()->get_formats_instance()->get_format( $csv_generator->export_type, $csv_generator->export_format );
$one_row_per_item = isset( $format_definition['row_type'] ) && 'item' === $format_definition['row_type'];
// v4.0.3+
} else {
$one_row_per_item = 'item' === $csv_generator->format_definition['row_type'];
return $one_row_per_item;

view raw
hosted with ❤ by GitHub

Which payment gateways can I use? ↑ Back to top

Any payment gateway can be used to accept payments from customers in the front end at checkout.

In WP Admin, for vendors to receive automated payment of commissions, PayPal must be used.

How do refunds work? ↑ Back to top

Currently there is no easy way to track refunds by customers/product as WooCommerce does not have line-level refunds. Therefore you have to take note of this manually and work with the vendors to retrieve the cost.

One way to manage this is to establish a system in which vendors make a deposit to your account and any time there is a refund, you can deduct it from their balance. This saves you from chasing vendors for reimbursement. Instead you would request that vendors top up their deposit balance.

What happens when an order is canceled? ↑ Back to top

When an order is canceled, a cancellation email is sent to vendors to notify them. Depending on if they have already shipped the item or commission has already been paid, you would need to contact the vendor and work out the details.

Is it possible to display a list of all vendors, or create a page of vendor profiles? ↑ Back to top

Yes, you can use a shortcode shown here Vendor List Shortcode.

Why is there no product submission from the frontend? ↑ Back to top

Going into this project we thought about this but later decided against it for now. The reason is WooCommerce core already has code in place to add products.

If we were to add this again on the frontend, it would bloat the plugin making it slower and potentially introduce more bugs due to having to now maintain additional code base for adding products. And if you think about, what is the difference between adding a product in the frontend vs backend? If aesthetics is what you’re after, you can certainly style the admin dashboard to fit your needs and does not require a frontend submission.

However with things ever so changing, we are thinking of re-designing how a product is added. We realize it is quite difficult for a vendor to understand how everything works when presented with so many settings/options when adding a product. With this said, we may add an on-boarding type interface where it will have step by step guide on adding a product for ease of use.

Why can’t I assign multiple vendors to a single product? ↑ Back to top

This is more of a marketing decision than anything else.

If you look at the bigger box stores such as Amazon, they also don’t allow this. The reason is simple. If you’re a vendor selling the same item as another vendor, you would want YOUR item to stand out, yes? So you would perhaps adjust the price. Make your product images more clear. Add more images than your competitor. Add a better item description than your vendor. And more.

So if you were able to add multiple vendors to the same item, then you would not be able to create a competitive market.

Can I change the URL vendor slug from “vendor” to something else? ↑ Back to top

Yes! You can use the filter here wcpv_vendor_slug.
So in your child theme’s functions.php file you can add the following:
add_filter( 'wcpv_vendor_slug', 'change_product_vendors_slug' );
function change_product_vendors_slug() {
return 'YOUR NEW SLUG';

Can I remove fields from the vendor registration page? ↑ Back to top

Yes! You can achieve this by overriding the shortcode-registration-form.php file found in Product vendors woocommerce-product-vendors/templates folder.

Copy the shortcode-registration-form.php file from there and put it into a directory within your theme, keeping the same file structure but removing the /templates/ subdirectory from the product vendors folder.

It should look like this: wp-content/themes/YOUR_THEME/woocommerce-product-vendors/shortcode-registration-form.php

Remove the field/s you don’t want, and save the file.

The copied file will now override the default template file.

Vendors can’t search for all customers. ↑ Back to top

By default, that is an expected behavior. Vendors are only allow to search for customers of theirs whom have either purchased a product from them or is created by them. Vendors cannot search for customers that are not theirs or other vendors.

Vendors can’t import/export products. ↑ Back to top

Vendors do not have the ability to mass import/export their products at this time. The core WooCommerce Import/Export buttons are shown on the Products page, and are non-functional. We are currently looking for a way to remove them.

Payouts are not processing with response code 422 ↑ Back to top

If payouts are not processing and you have a similar log to the below in your logs, this means your PayPal account does not have sufficient funds to complete the payout.

Got Http response code 422 when accessing

Questions & Support ↑ Back to top

Have a question before you buy? Please fill out this pre-sales form.

Already purchased and need assistance? Get in touch with a Happiness Engineer via the Help Desk.

WooCommerce - the most customizable eCommerce platform for building your online business.

Back to the top