Plugin: mam-woocommerce-product-vendors

What it does

mam-woocommerce-product-vendors is the MAM Suite plugin that turns a WooCommerce store into a multi-vendor marketplace your app users can both shop and sell on. It builds on the official WooCommerce Product Vendors extension (vendors are wcpv_product_vendors taxonomy terms, commissions are PV commission records) and adds the app-facing layer:

  • Vendor onboarding & registration — app users apply to become sellers from a registration form; new sellers land in a pending state (or are auto-approved, your choice) and get a home-screen onboarding checklist (set up Stripe, complete your store profile, add a location, add a product).
  • Staff management — a vendor admin manages their own staff from the app (invite by email, change role), restricted to a server-side role whitelist so app input can never grant privileged roles.
  • Vendor storefronts & product management — storefront screens, product lists, vendor profiles, and add/edit-product forms driven from the app; vendors maintain their own catalog, locations, hours, and profile colors.
  • Order routing per vendor — open-orders and all-orders screens scoped to the acting vendor, order status management, completion notifications to vendor admins, and calendar (.ics) invites on order emails.
  • Commissions & payouts — PV commission records are settled and paid per vendor, via Stripe Connect transfers (through mam-stripe-manager’s mam_stripe_connect_transfer hook) or PV’s PayPal MassPay. Payouts respect the suite’s hold-on-order / settle-days checkout options, run idempotently, and can be triggered by cron, by a manual settle action, or by the review/tips flow.
  • Reviews & tips — when a customer reviews a completed order they can add a tip; the tip is validated against a cap, charged (or folded into a held charge capture), attached to a vendor-scoped hidden Tip product, optionally split (e.g. with a delivery driver), and paid out.

The plugin is HPOS-compatible (it declares custom_order_tables compatibility and uses CRUD order access), so it works whether or not WooCommerce High-Performance Order Storage is enabled.


Where it appears in the app

App screens are MAM content classes — assign them to tabs/screens by content-type name in the app builder:

Content type (admin label) Class key What it shows
WC PV – Storefront mam_wc_pv_storefront A vendor’s storefront (menu-lane layout)
WC PV – Storefront Home mam_wc_pv_storefront_home Storefront home-screen button
WC PV – All Sellers for Storefront pv_offdirectory_all_sellers Browse all sellers
WP PV – All Stores List mam_pv_all_stores All vendor stores
WC PV – Product Vendors List WooCommerceProductVendors Vendor directory list
WC PV – All Products for Product Vendors WooCommerceProductVendorsAll All products across vendors
WC PV – All Products for a Single Product Vendor WooCommerceProductVendorProducts One vendor’s products (shopper view)
WC PV – Vendor Products mam_wc_pv_vendor_products The acting vendor’s products (seller view)
WC PV – All Products for offDirectory mam_wc_pv_all_products Products in off-directory layout
WC PV – Peer to Peer marketplace mam_wc_peer_to_peer_marketplace Peer-to-peer marketplace listing
WP PV – Open Orders mam_pv_open_orders The acting vendor’s open orders
WC PV – All Orders mam_pv_all_orders The acting vendor’s order history
WC PV – Admin Open Orders mam_pv_admin_pv_open_orders Store-manager view of open orders
WC PV – Admin PV Manager mam_pv_admin_pv_manager Store-manager vendor approval/edit screens
WC PV – Earnings wc_pv_earnings Vendor earnings report
WP PV – Profile mam_pv_profile Vendor profile editor
WC PV – Staff Manager mam_pv_staff_manager Vendor staff list + invite/edit
WC PV – Seller Subscription mam_wc_pv_subscription Seller subscription detail

How the pieces fit together

  1. A shopper or seller signs in through the app (mam-main app token). Every vendor-scoped screen and form resolves the acting user server-side and checks vendor membership through the mam_pv_check_user filter and the mam_wc_pv_user_can_* authorization rules — request parameters never decide who you are or what you own.
  2. Vendors are PV taxonomy terms. Staff membership lives in the term’s vendor_data meta (admins list); vendor profile data (address, phone, colors, the synthetic Tip/Fees product ids) lives in the vendor’s term metas.
  3. Forms come from mam-main’s form manager. Each app flow (register as seller, edit vendor, staff manager, add/edit product, add location, approve vendor, cancel order…) is a form whose id you map under the plugin’s form settings; submissions dispatch through mam_gravity_forms_after_form_processed_<form id> into this plugin’s handlers.
  4. Money flows through hooks. Charges/captures go through mam_pmt_charge_card (mam-stripe-manager), Stripe Connect transfers through mam_stripe_connect_transfer, and payouts are triggered by the mam_wcpv_vendor_commission_payout action — cron auto-settle, the manual settle endpoint, and the tips flow all converge on that one action.

Setup paths

  1. Install and activate WooCommerce, WooCommerce Product Vendors, and mam-main. This plugin no-ops if Product Vendors is not active.
  2. Activate mam-woocommerce-product-vendors. It registers its content classes, forms, settings page, crons (auto-settle every 10 minutes, order-complete reminder daily at 08:00), and the pv-location post type.
  3. Configure WP Admin → Mobile App Manager → Product Vendors (page mam-product-vendors): seller approval mode, master vendor, payout method, timezone defaults, tips behavior, QR codes, custom product fields.
  4. Map the app forms (register as seller, edit vendor, staff manager, add/edit product, add location, approve vendor) to form ids in the plugin’s form settings — see the recipes.
  5. For Stripe payouts, activate mam-stripe-manager and have each vendor complete Stripe Connect onboarding (the onboarding home-screen button walks them through it).

Key concepts to know

  • Vendor = taxonomy term. A “store” is a wcpv_product_vendors term; products are assigned to it; the term meta holds staff and profile data.
  • Roles. wc_product_vendors_pending_vendor (applied, awaiting approval), wc_product_vendors_admin_vendor (approved vendor admin), wc_product_vendors_manager_vendor (staff). Role grants from the app are restricted by the mam_pv_assignable_roles whitelist.
  • Current vendor account. A user who belongs to multiple vendors has a mam_current_vendor_account user meta selecting which vendor the seller screens act as.
  • Hold & settle. With MAM WooCommerce’s place hold on order enabled, charges are authorized at checkout and captured at settle time; settle order days delays vendor payout after order completion. See the commission/payout recipe.
  • Authorization is deny-by-default. All state-changing app flows pass through mam_wc_pv_authorization; each decision is filterable via mam_wc_pv_user_can_*.


Metadata

Field Value
Article type Plugin Overview
Plugin slug mam-woocommerce-product-vendors
Applies to plugin version 26.19.1+
Category Plugin Reference
Depends on MAM Main, WooCommerce, WooCommerce Product Vendors (the official WooCommerce extension)
Works with MAM Stripe Manager (Stripe Connect payouts), MAM WooCommerce (checkout, hold/settle), MAM WooCommerce Delivery (pickup/delivery locations, driver tips), MAM Reviews Manager (order reviews + tips)
Hooks exposed mam_wc_pv_locations_for_vendor, mam_wc_pv_process_vendor_registration, mam_pv_check_user, mam_pv_assignable_roles, mam_wcpv_vendor_commission_payout, mam_wc_pv_max_tip_amount, mam_wc_vendor_get_tip_product, mam_wc_vendor_split_tip, the mam_wc_pv_user_can_* authorization filters, plus ~40 more mam_wc_pv_* display/behavior filters
Last verified 2026-06-10
Contents

    Need Support?

    Can't find the answer you're looking for? Don't worry we're here to help!