wiki/clients/current/doudlah-farms/2026-01-16-b2b-woocommerce-optimization.md Layer 2 article Client: Doudlah Farms 942 words Updated: 2026-01-16
↓ MD ↓ PDF
woocommerce shipstation quickbooks php-plugin b2b invoicing doodla-farms

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 / ProcessingCompleted 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