B2B WooCommerce Optimization — Offline Orders & Invoicing
Discussed during [1]. Multiple B2B WooCommerce issues were triaged and resolved or scoped during this session, covering the full order lifecycle from checkout through ShipStation sync and invoicing.
Overview
Doodla Farms' B2B site (doodlafarms.biz) was undergoing pre-launch testing with real customers. A test order from Vitruvian surfaced several workflow gaps. Mark and Karly worked through each issue live on the call, resolving some immediately and scoping others for Eshock or client decision.
Issues & Resolutions
1. Offline Orders Not Syncing to ShipStation ✅ Resolved
Problem: WooCommerce sets offline payment methods (Check Payments, Direct Bank Transfer, etc.) to On Hold status by default. ShipStation only pulls orders with Completed status, so these orders were invisible to the fulfillment workflow.
Solution: Mark built and activated a custom PHP plugin during the call. The plugin hooks into the WooCommerce "thank you" page and automatically transitions orders from On Hold / Pending / Processing → Completed when the payment method is any configured offline type.
Test result: A live test order using Check Payments showed the following order note trail:
Order status changed from pending payment → on hold → completed (auto-completed offline orders plugin, check payment)
The order subsequently appeared in ShipStation. Plugin is active on the site.
Related cleanup: The "Pay with Link" button was appearing on the cart and checkout pages and should be removed. Tasked to Mark.
2. Invoicing for Offline Orders — Decision Pending
Problem: When a customer pays by check or on delivery, there is no automated invoice generated or tracked. Lucy needs a way to send invoices and reconcile payments in QuickBooks.
Proposed Solutions:
| Option | Cost | Notes |
|---|---|---|
| WooCommerce QuickBooks Integration Plugin | $100/year | Recurring cost; includes "send invoices to unpaid orders" feature; triggers automatically on purchase |
| Custom PHP Plugin (API integration) | ~$300 one-time | Full control; Mark builds WooCommerce ↔ QuickBooks API pipe; invoices created in QuickBooks, optionally emailed from WooCommerce |
The custom build requires QuickBooks Online API access (client must grant). Estimated 2–3 hours of development. Advantage: full flexibility for future automation (e.g., auto-send on shipment, custom invoice formatting).
Action: Karly to present both options to Lucy and request QuickBooks API access if she chooses the custom route. See [2].
3. Company Name Missing in ShipStation ✅ Scoped
Problem: The "Company Name" field is optional at WooCommerce checkout. When customers skip it, ShipStation receives the order without a company name, causing a validation error (name or company name must be specified).
Solution (two parts):
1. Make the Company Name field required at checkout.
2. Auto-populate the field from the customer's account profile — since all B2B customers are logged in with known company data, this can be pre-filled and confirmed rather than re-entered.
Action: Karly to task Eshock with both changes.
4. Product Quantity Ambiguity — No Change
Problem: Lucy (and possibly Jason) were confused that a quantity of "1" in an order meant "1 case," not "1 individual bag."
Decision: No site changes needed. The B2B site exclusively sells cases. The client team needs to internalize this convention. The SKU naming (e.g., CB1 = Cranberry Beans, 1 lb bag) and pricing make the case quantity clear. If needed, a simple SKU reference table can be provided offline.
5. Complex Multi-Kitchen Invoicing (Epic Customer) — Decision Pending
Problem: At least one customer (referenced as an "Epic" account) operates multiple kitchens and requires a separate invoice per kitchen, each with a unique invoice number.
Options:
| Option | Description |
|---|---|
| Manual | Client handles this edge case themselves (e.g., split orders, manual invoice creation) |
| Custom Plugin (~$500) | Build a flexible edge-case handler that can be configured per customer; handles this and future similar cases |
Mark's framing: this is a classic edge case — rare enough that manual handling may be acceptable, but if it recurs across customers, a configurable program is worth the investment.
Action: Karly to discuss options with Lucy and determine volume/frequency of this scenario.
6. Purchase Order (PO) Field — Scoped
Problem: B2B customers (e.g., Willie Street Co-op) have PO numbers they need to associate with orders. There is currently no PO field at checkout.
Solution: Add a custom, non-required text field labeled "Purchase Order" to the checkout page. The field value must be mapped to the WooCommerce order record so it flows through to ShipStation and any future invoicing integration.
Notes:
- Field should be optional — not all customers use POs.
- Mark noted this is likely already a standard field in the B2B WooCommerce plugin; Eshock should check before building custom.
Action: Karly to task Eshock with adding and mapping the PO field.
Action Items
- [ ] Mark — Remove "Pay with Link" from cart and checkout pages
- [ ] Karly — Email Lucy re: QuickBooks invoicing options ($100/yr plugin vs. $300 custom build); request API access if custom chosen
- [ ] Karly → Eshock — Make Company Name a required field at checkout
- [ ] Karly → Eshock — Auto-populate Company Name from customer account profile
- [ ] Karly → Eshock — Add non-required PO field to checkout; map to WooCommerce order
- [ ] Karly — Discuss multi-kitchen invoicing edge case with Lucy; determine if manual or automated solution is preferred
- [ ] Karly — Compile Lucy + Vitruvian feedback into consolidated B2B to-do list
Related
- [3]
- [1]