B1. Matching WooCommerce SKUs to the Works25 Price List
When an order arrives from WooCommerce, Works25 matches each line item in three steps:
1. Price List Identifier / SKU
Matches the WooCommerce product SKU (or auto-assigned WC-{Product_ID} identifier) against Identifier in Settings → Price List or linked Inventory Goods SKU.
2. Exact Item Name
If no SKU matches, Works25 checks if the WooCommerce product name matches an active item name (type) in your Price List.
When a Price List item is matched, Works25 automatically triggers all linked workflows—including workstation processes (jobsdone), loyalty points (pointsbought), memberships (subscriptions), and uncommitted stock reservations (goodmove).
Back to contents
B2. Session Times, Staff Assignment & Safe Item Fallbacks
Session Time & Booking Calendar (rentalbooking): When a WooCommerce order line contains booking/appointment metadata (such as WooCommerce Bookings, Amelia, Bookly, FooEvents, or custom session_date / session_time fields), Works25 automatically creates a calendar slot in rentalbooking, calculates the end time using the item's mintime (duration in minutes) when no explicit end time is provided, and populates pickupdate, pickuptime, and datesend.
Staff / Resource Assignment: Booking metadata specifying a staff member, therapist, or resource (staff, therapist, resource_name) is matched against your Works25 staff list and assigned directly to the job line (orderlist.staff).
Never drops an order: If a WooCommerce product has no matching SKU or name in Works25, it is added as an ad-hoc line item under category WooCommerce using the exact price and quantity paid by the customer.
Shipping & Customer matching: Shipping fees (shipping_total > 0) are appended as a Shipping line item, and customer phone numbers are normalized (601...) to match or create customer profiles.
Back to contents