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_transferhook) 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
- 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_userfilter and themam_wc_pv_user_can_*authorization rules — request parameters never decide who you are or what you own. - Vendors are PV taxonomy terms. Staff membership lives in the term’s
vendor_datameta (adminslist); vendor profile data (address, phone, colors, the synthetic Tip/Fees product ids) lives in the vendor’s term metas. - 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. - Money flows through hooks. Charges/captures go through
mam_pmt_charge_card(mam-stripe-manager), Stripe Connect transfers throughmam_stripe_connect_transfer, and payouts are triggered by themam_wcpv_vendor_commission_payoutaction — cron auto-settle, the manual settle endpoint, and the tips flow all converge on that one action.
Setup paths
- Install and activate WooCommerce, WooCommerce Product Vendors, and mam-main. This plugin no-ops if Product Vendors is not active.
- 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 thepv-locationpost type. - 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. - 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.
- 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_vendorsterm; 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 themam_pv_assignable_roleswhitelist. - Current vendor account. A user who belongs to multiple vendors has a
mam_current_vendor_accountuser 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 viamam_wc_pv_user_can_*.
Related articles
- Recipe: Vendor onboarding and registration
- Recipe: Staff manager configuration
- Recipe: Commissions, settlement, and payouts
- Recipe: Storefront and vendor screens
- Hook:
mam_wc_pv_locations_for_vendor - Hook:
mam_wc_pv_process_vendor_registration - Hook:
mam_pv_assignable_roles - Hook:
mam_wcpv_vendor_commission_payout - Hooks: `mam_wc_pv_usercan` authorization filters*
- Hook:
mam_pv_check_user - Hooks:
mam_wc_vendor_get_tip_productandmam_wc_vendor_split_tip - Hook:
mam_wc_pv_max_tip_amount
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 |
