Group buys in Tribuy are real WooCommerce products with the Group buy product type, so your theme, payment gateways, shipping, taxes, and reports keep working as usual. This page covers setting up a campaign, what happens during its life, and the tools you manage it with.
The Group buy tab
Create or edit a product, set Product data to Group buy, and open the Group buy tab:
| Field | What it does |
|---|---|
| Group price | The price every participant pays. Required. It can’t be negative or higher than the Regular price on the General tab. Set a regular price to show the saving. |
| Goal quantity | The total number of units all customers together must buy for the group buy to succeed. At least 1. |
| Maximum quantity | Optional. The most units the campaign can sell, for example your stock or supplier limit. The campaign closes when it’s reached. It can’t be lower than the goal. Leave empty for no limit. |
| Minimum per customer | The fewest units one customer can order. Defaults to 1. |
| Maximum per customer | Optional. The most units one customer can order across all their orders. Leave empty for no limit. |
| Starts | When customers can start joining. Leave empty to start immediately. |
| Ends | The deadline. Required. If the goal isn’t reached by then, every waiting order is refunded. |
Both dates use your site timezone, which is shown under the date fields. When you save, Tribuy validates the campaign and shows an admin notice for each problem, for example a missing group price, a goal below 1, a maximum below the goal, a maximum per customer below the minimum, a minimum per customer above the maximum quantity, or an end date that isn’t after the start date. The group buy fields are only saved once everything is valid.
How the group price works
The group price is stored as the product’s WooCommerce sale price, so the cart, the checkout, price filters, sorting and the Store API all charge and show it with no extra code. The normal sale price field and its schedule are hidden for group buys, because the campaign dates take their place.
Stock
If the product manages stock and doesn’t allow backorders, the stock quantity also limits how many units are left: the campaign never offers more than the lower of the stock and the remaining maximum quantity. Stock is reduced when an order joins the campaign and restocked when a failed campaign’s order is refunded.
Campaign statuses
| Status | Meaning |
|---|---|
| Draft | The product has no end date yet, so no campaign is running. |
| Scheduled | The start date is in the future. Shoppers can see the campaign and a “Starts in” countdown, but can’t join yet. |
| Active | Customers can join. |
| Successful | The campaign closed with the goal reached. Waiting orders are confirmed. |
| Failed | The campaign closed without reaching the goal. Waiting orders are refunded or cancelled. |
Once a campaign is Successful or Failed it’s closed for good: its settings stay visible for your records but can no longer be changed, and the committed quantity is frozen, so the result stays visible after refunds go through.
How campaigns start and close
Action Scheduler runs a task at each campaign’s start and end time. A campaign closes when the first of these happens:
- The end date passes.
- The maximum quantity is reached. Because the maximum can’t be lower than the goal, a campaign that sells out is always successful.
- The goal is reached, but only if When the goal is reached is set to Close the campaign straight away in Settings. By default the campaign keeps selling until the end date or the maximum, so more customers can still join at the group price.
When a campaign closes, Tribuy recounts the committed units from the paid orders, decides the outcome (goal reached → Successful, otherwise Failed), and processes the waiting orders in the background, 20 at a time, so even campaigns with thousands of orders never time out.
As a safety net, an hourly sweep looks for campaigns that should have started or closed, and a campaign is also checked whenever its product page is viewed or it’s added to the cart. Visitors always see the correct state, even if a scheduled task runs late.
Orders and the Awaiting group status
A customer joins a group buy simply by placing an order. When the order is paid:
- It moves to the Awaiting group order status instead of Processing. Cash on delivery orders move there too.
- Each group buy line item is recorded as a participant with its quantity and the price paid, and the campaign’s committed quantity goes up.
- The customer gets the joined email (once per order), and you get WooCommerce’s usual New order email.
Awaiting group counts as a paid status. It shows in your order list and WooCommerce reports, reduces stock, and keeps downloads locked until the deal is confirmed. Each group buy item in the order shows its state on the admin order screen and in the customer’s order view: Awaiting goal, Confirmed, Refunded, Refund pending or Cancelled.
If you cancel or refund a waiting order, or its payment fails, its units are released and the committed quantity is recalculated, so the spot opens up for another customer.
When the goal is reached
Every waiting order is confirmed:
- The order gets a note — Group buy “Coffee beans” reached its goal. The order is confirmed.
- It moves to Processing, or straight to Completed if it only contains items that don’t need processing (virtual downloadable products).
- Downloads unlock, and the customer gets the successful email.
When the goal is missed
Every waiting order is refunded or cancelled, depending on how it was paid:
| Payment | What happens |
|---|---|
| A gateway that supports refunds (Stripe, PayPal, WooPayments, …) | The group buy items are refunded automatically through the gateway and restocked. If nothing else is left in the order, the rest of it is refunded too, shipping included. |
| Cash on delivery, or a free order | Nothing was paid, so the order is cancelled. In a mixed order, only the group buy items are cancelled and a note is added. |
| Anything else (bank transfer, cheque, a gateway without refunds, or an automatic refund that fails) | The participant is marked Refund pending, the order is put On hold, and a note tells you exactly how much to refund by hand. |
Customers get the failed email, which says whether their payment was refunded, cancelled, or will be refunded shortly.
Late payments: if an order is paid after its campaign has already failed (for example, a slow bank payment), it’s refunded straight away by the same rules.
Mixed orders
By default, group buy items must be ordered separately from regular products. If you allow Mixed carts in the settings, an order that holds both waits in Awaiting group until every group buy in it closes, so the regular products ship later. If the group buy fails, only its items are refunded, and the rest of the order carries on.
Managing campaigns in the admin
WooCommerce → Group Buys
Every campaign on one screen, with its status, a progress bar, the number of orders, the revenue so far, and the start and end dates (with the time left). Filter by Active, Scheduled, Successful or Failed, search by name, and sort by name, progress or end date. Campaigns that have been run more than once show their Round.
Hover a campaign for its row actions:
| Action | What it does |
|---|---|
| Edit | Opens the product. |
| Participants | Lists every order line that joined the campaign, see below. |
| View | Opens the product page. |
| Extend 1 day | Moves the end date one day later. Running campaigns only. |
| End now | Closes the campaign now. It succeeds if the goal has been reached; otherwise every waiting order is refunded. |
| Mark successful | Closes the campaign now and confirms every waiting order, even if the goal was not reached. Use it when you decide to go ahead anyway. |
| Mark failed | Closes the campaign now and refunds every waiting order, even if the goal was reached. Use it when the supplier can’t deliver. |
The three closing actions ask for confirmation first. Orders are processed in the background, and a notice confirms the outcome.
Participants
WooCommerce → Group Buys → Participants lists every order line that joined a group buy: the order and its status, the customer and their email, the units, the unit price paid, the participant status and the date. Open it from a campaign to see only that campaign, with links to its earlier rounds. With Pro, an Export participants (CSV) button appears above the list.
The campaign summary
Once a product has an end date, the top of its Group buy tab shows:
- Status and Committed: the campaign status, and the units committed out of the goal.
- Orders: participants by state, for example Awaiting goal: 12 · Refunded: 1.
- Actions: End campaign now and Recalculate.
- Extend: +1 day, +3 days and +7 days.
- Participants: a link to the participants of the current round.
Recalculate rebuilds the committed quantity from the paid orders. Use it if the progress ever looks wrong, for example after editing orders by hand. A closed campaign’s quantity is final. Save any changes on the page before using these buttons, because unsaved edits are lost.
Extending a campaign
Extending moves the end date and reschedules the campaign, and the participants keep their place. An overdue campaign is extended from now, not from its old end date. You can extend from the campaign summary, from the Group Buys screen, with WP-CLI, or with the Pro REST API. Pro can also extend campaigns automatically when they are close to the goal.
Products screen
The Products list gains a Group buy column with each campaign’s status and its progress, for example Active — 140 / 200 units.
Dashboard widget
The Group buys widget on the WordPress dashboard shows how many campaigns are active, scheduled, successful and failed, and the five campaigns that end next with their progress and time left.
WooCommerce → Status
WooCommerce → Status gains a Group buy section with the plugin and database versions, the number of campaigns in each status, the next run of the hourly sweep, any actions that are more than 10 minutes late (a sign that WP-Cron isn’t running), and your theme’s overrides of the group buy templates, with outdated ones flagged.
Background tasks
Every scheduled action (campaign start, campaign end, the ending soon reminder, order batches and the hourly sweep) runs on Action Scheduler in the tribuy-group-buy-for-woocommerce group. You can inspect them under WooCommerce → Status → Scheduled Actions.
WP-CLI
wp tribuy list [--status=active|scheduled|successful|failed|any] [--format=table|csv|json|ids]
wp tribuy recalc [<id>...] [--all]
wp tribuy resolve <id>... [--outcome=successful|failed] [--yes]
wp tribuy extend <id>... [--days=<days>]
resolve closes campaigns now (with the goal deciding the outcome unless you pass --outcome) and queues their orders. Run on an already closed campaign, it queues any orders still waiting.
Deleting orders
Trashing or deleting an order removes its participants and recalculates the campaign. Restoring a trashed order does not add them back, so cancel orders instead of trashing them while a campaign is running.
Running a campaign again
A closed campaign can’t be edited. To run the same deal again, duplicate the product (Products → Duplicate) and set new dates. With Pro, click Relaunch to start a new round of the same product and keep its history, or let it relaunch automatically.