Order Sync
When customers place orders on your WooCommerce store, those orders reach Brother POS for fulfillment at your physical location. This page explains how the order sync process works, from online purchase to in-store fulfillment.
- Plugin push / pull (recommended, default): the moment a customer checks out, the Brother POS plugin pushes the order to Brother POS. There is no polling delay, and no Brother POS request has to reach into your website. See Order Push below.
- Legacy pull: Brother POS polls your website for new orders on a timer. The import, matching, reservation, and fulfillment behaviour described on this page is the same either way.
How Order Sync Works
In legacy pull mode, Brother POS periodically polls your WooCommerce store for orders with a "Processing" status, at your configured polling interval (default: every 15 minutes).
The process follows these steps:
- Brother POS fetches all orders with
processingstatus from WooCommerce. - Orders already imported (matched by WooCommerce order ID) are skipped.
- New orders are imported and products are matched to your local catalog.
- Stock reservations are created for each line item.
- Depending on your settings, orders are either auto-fulfilled or queued for manual fulfillment.
Brother POS fetches all processing orders on each sync cycle, not just orders since the last sync. Since most stores have a manageable number of processing orders at any given time (typically under 50), this approach ensures no orders are missed due to timing issues.
Order Push (Plugin Mode)
In plugin push / pull mode, the plugin sends each order to Brother POS as soon as it is placed — no waiting for the next poll. The push carries everything Brother POS needs to record the sale exactly as the customer paid it:
- Line item weights. For weight-priced flower, the grams are sent as the line quantity so the shared stock pool decrements by weight — the grams are never re-interpreted as "1 item" or misread as ounces.
- Line SKU. Each line carries its SKU, the stable key Brother POS matches on first. This means order sync survives a WooCommerce catalog rebuild that reassigns product IDs.
- Line tax. Each line's tax is sent so Brother POS records matching revenue.
- Tip, fulfillment choice, and payment method. The customer's tip, their delivery-or-pickup choice with the scheduled date and time slot, and how they paid all come across with the order.
- Customer and address snapshot, so the pooled order becomes a Sale attached to the right customer.
Duplicate pushes are harmless — Brother POS is idempotent per order, so a retry after a network blip never creates a second sale.
Online Payment Options
In plugin mode, the checkout payment options are configured once in Brother POS and applied to your website automatically (see Plugin Sync):
| Option | How it works |
|---|---|
| Interac e-Transfer | Enabled when you set an e-Transfer email in Brother POS. The customer is told to send an e-Transfer to that address using their order number as the reference; you pack once payment arrives. |
| Pay on Pickup | A cash-or-debit-on-pickup option, restricted to the Local Pickup shipping method so it only appears for pickup orders — never for delivery or shipped orders. Tied to pickup being enabled. |
Brother POS only offers e-Transfer when you have entered a dedicated e-Transfer email — it never falls back to your store's general email. If no e-Transfer email is set, the option is hidden rather than risk routing payments to the wrong address.
Order Import Process
Product Matching
When an order is imported, Brother POS matches each line item to a local product using batch-loaded lookups:
- SKU Match (first priority) -- Matches the SKU from the WooCommerce line item against local product SKUs.
- WooCommerce Product/Variation ID (fallback) -- If no SKU match, looks up the product via the
WoocommerceProductmapping table using the WooCommerce product ID (or variation ID for variable products).
Orders with some unmapped products are still imported (partial fulfillment). Only orders where no products can be matched are skipped.
Customer Matching
Brother POS creates or updates customer records from WooCommerce order data:
- Email is the primary identifier. If a customer with the same email exists, their record is updated.
- Customer name, phone number, and full address are synced from the billing information.
- WooCommerce customer IDs are linked to Brother POS customer records for future orders.
- If no email is provided, Brother POS falls back to matching by name.
Customer records created from WooCommerce orders are the same customers visible in your Brother POS customer list. Their purchase history includes both online and in-store transactions.
Stock Reservations
When an order is imported, Brother POS creates stock reservations for each product in the order. This ensures that the inventory for online orders is set aside and not sold to walk-in customers before the order is fulfilled.
Key details about stock reservations:
- Reservations reduce the available stock (current stock minus reserved) shown on the POS.
- WooCommerce order reservations have a 7-day expiration window.
- Reservations are automatically released when an order is fulfilled or cancelled.
- If stock is insufficient, the reservation is still created but a warning is logged.
Brother POS intentionally allows reservations that push stock negative. This tracks discrepancies naturally rather than silently dropping orders. Check the Health Monitor if you see frequent negative stock warnings.
Fulfillment Modes
Auto-Fulfillment
When Auto-Fulfill Orders is enabled in your WooCommerce settings:
- The order is imported and immediately converted to a completed sale.
- A dedicated system account processes the sale automatically.
- Inventory is deducted automatically.
- Stock reservations are released.
- The sale appears in your sales reports with the source marked as
woocommerce.
This mode is ideal for stores that want online orders to flow through without manual intervention.
Manual Fulfillment
When auto-fulfillment is disabled:
- The order is imported and appears in the WooCommerce Orders queue.
- Staff can review each order, verify stock availability, and prepare the items.
- When ready, a staff member manually fulfills the order.
- Upon fulfillment, the order is converted to a sale and inventory is deducted.
This mode gives your team control over the fulfillment process.
Automatic Label Printing
If you have a label printer configured and Auto-Print Labels on Import is enabled, Brother POS automatically prints product labels as orders are imported.
How Label Printing Works
- Each line item in the order is checked against your label printing rules.
- Labels are printed based on your Label Products Filter setting:
- All Products -- Every product gets a label.
- Weight-Based Only -- Only weight-based products (e.g., flower) get labels.
- By Category -- Only products in categories with auto-labeling enabled get labels.
- Per Product -- Only products individually flagged for auto-labeling get labels.
Weight-Based Labels
For weight-based products (typically cannabis flower), the label includes:
- The specific weight from the WooCommerce order (extracted from the order details).
- The calculated price for that weight.
- Example:
3.5g - $35.00
Unit-Based Labels
For unit-based products, one label is printed per unit ordered. If a customer orders 3 units of a product, 3 labels are printed.
Order Data Captured
Each imported WooCommerce order includes:
| Field | Description |
|---|---|
| Order Number | The WooCommerce order number for reference |
| Customer Name | Billing name from WooCommerce |
| Customer Email | Billing email address |
| Customer Phone | Billing phone number |
| Billing Address | Full address from billing fields |
| Payment Method | How the customer paid online |
| Line Items | Products, quantities, and prices |
| Discounts | Coupon codes and discount amounts applied |
| Tax Amount | Tax calculated by WooCommerce |
| Order Total | Final order total |
| Fulfillment Status | Starts as pending until fulfilled |
Viewing Imported Orders
From the Admin Panel
- Navigate to Admin > WooCommerce > Orders.
- You will see a list of imported orders with their fulfillment status.
- Click an order to view its full details, including line items, customer information, and the delivery/pickup choice with its scheduled date and time slot.
Completing or Voiding an Order
From the order detail page you can:
- Complete / Fulfill the order — converts it to a sale and deducts inventory.
- Void a pending order — this releases the stock reservation and marks the order cancelled, so the reserved inventory is freed back to your shelf. Only pending orders can be voided; a reason can be recorded.
Filtering Orders
Filter the order list by:
- Fulfillment Status: Pending, Fulfilled, Cancelled.
- Date Range: View orders from a specific time period.
- Customer: Search by customer name or email.
Order Lifecycle
WooCommerce: Order placed (Processing)
|
v
Brother POS: Order imported -> Stock reserved
|
v
[Auto-fulfill ON?]
/ \
YES NO
| |
v v
Sale created Order queued for
Stock deducted manual fulfillment
Reservations |
released v
Staff reviews & fulfills
|
v
Sale created
Stock deducted
Reservations released
Handling Duplicate Orders
Brother POS prevents duplicate imports by tracking the WooCommerce order ID. If an order with the same ID has already been imported, it is silently skipped during sync. This means you can safely run manual syncs without worrying about creating duplicate records.
Sales Attribution
Orders imported from WooCommerce are attributed as follows:
- User: The system user
WooCommerce System(automatically created). - Cash Drawer Session: Linked to the current open session, or a new session is created with a zero float.
- Source: Marked as
woocommercein the sale record. - Notes: Include the WooCommerce order number, customer info, and any discount details.
Troubleshooting
| Problem | Solution |
|---|---|
| Orders not importing | Verify orders have "Processing" status in WooCommerce. Completed or pending orders are not imported. |
| "Missing products" warning | Some products in the order could not be matched. Run a product sync first, or manually create the missing products. |
| Labels not printing | Ensure your label printer is configured and the auto-print setting is enabled. Check that the label template exists. |
| Duplicate customer records | This can happen if a customer uses different email addresses. Merge customer records manually in the admin panel. |
| Stock shows negative | Online orders may have been placed before in-store stock was updated. Perform a stock reconciliation. |
What's Next?
- Plugin Sync (Firewall-Proof) -- How orders and settings flow through the plugin.
- Inventory Sync -- Keep your WooCommerce stock levels accurate after in-store sales.
- Freebie Sync -- Sync freebie campaign rules to your online store.
- Health Monitor -- Monitor sync job status and troubleshoot failures.