Athenian Order Fulfillment
Overview
Product overview
WooCommerce is strong at catalog, cart, checkout, payment, and order storage, but hybrid fulfillment introduces operational complexity that WooCommerce does not solve on its own. A single order may include items fulfilled by the merchant, items routed to a vendor, items that require special acknowledgement, products that can only ship by specific services, and out-of-stock products that need notification capture.
Athenian Order Fulfillment solves that gap by giving WooCommerce a fulfillment planning and control surface. The core AOF layer reads order line items, groups them by fulfillment source, persists those groups as private fulfillment tasks, and lets operations staff review, plan, reserve, pack, and hand off fulfillment work from a dedicated admin interface. The bundled modules extend that same workflow with configurable order-level fulfillment statuses, customer back-in-stock subscriptions, product acknowledgement requirements, and shipping-rule controls for heat-sensitive or otherwise restricted products.
For Athenian Platform builds, this plugin becomes the bridge between checkout and real-world fulfillment execution.
Use cases
- Mixed store and vendor fulfillment
- Warehouse and inventory planning
- Shipment Manager handoff
- Back-in-stock and product acknowledgement workflows
Developer
Developer starting point
This baseline was generated from the local athenian-order-fulfillment source folder and the linked product record. The source folder is the reviewed implementation boundary for this pass; runtime behavior remains deployment-dependent; the GitHub repository identity for this documentation baseline is verified.
Technical Architecture
Plugin identity
- Plugin name: Athenian Order Fulfillment
- Plugin slug:
athenian-order-fulfillment - Version:
0.2.0 - Primary file:
athenian-order-fulfillment.php - Requires PHP:
8.0 - Requires plugin: WooCommerce
- Text domain:
athenian-order-fulfillment - Core CPT:
ath_fulfillment - Core capability:
aof_manage
Main file structure
athenian-order-fulfillment.php
assets/admin/admin.css
assets/admin/admin.js
docs/aof-marketing-document.md
docs/athenian-platform-marketing.md
docs/athenian-platform-technical.md
includes/Plugin.php
includes/Setup.php
includes/Admin/Assets.php
includes/Admin/Menu.php
includes/Admin/Tabs.php
includes/Admin/Pages/Dashboard.php
includes/Admin/Pages/Queue.php
includes/Admin/Pages/Settings.php
includes/Ajax/Tasks.php
includes/Models/Fulfillment.php
includes/Services/Inventory.php
includes/Services/Planner.php
includes/Services/Shipping.php
modules/fulfillment-rules/
modules/notify-back-in-stock/
modules/order-fulfillment-statuses/
modules/product-acknowledgements/Boot process
The main plugin file loads includes/Plugin.php and includes/Setup.php, initializes activation handling, and boots the singleton on plugins_loaded.
The Plugin class then:
- Defines constants for AOF and bundled module paths/URLs.
- Loads the core model, service, admin, and AJAX classes.
- Includes consolidated module code.
- Registers the
ath_fulfillmentCPT oninit. - Registers the
aof_managecapability on administrator and shop manager roles. - Adds the Fulfillment admin menu and submenus.
- Registers AJAX task endpoints.
- Hooks fulfillment planning into WooCommerce order lifecycle events.
- Declares WooCommerce HPOS compatibility when WooCommerce’s
FeaturesUtilclass is available.
Namespaces and primary classes
Core namespaces:
Athenian\OrderFulfillmentAthenian\OrderFulfillment\AdminAthenian\OrderFulfillment\Admin\PagesAthenian\OrderFulfillment\AjaxAthenian\OrderFulfillment\ModelsAthenian\OrderFulfillment\Services
Bundled module namespaces:
Athenian\OrderFulfillmentStatusColumbiaCoatings\NotifyBackInStockColumbiaCoatings\NotifyBackInStock\AdminColumbiaCoatings\NotifyBackInStock\CLIColumbiaCoatings\HeatHoldCCPACCPA\AdminCCPA\Frontend
Primary classes:
Athenian\OrderFulfillment\PluginAthenian\OrderFulfillment\SetupAthenian\OrderFulfillment\Models\FulfillmentAthenian\OrderFulfillment\Services\PlannerAthenian\OrderFulfillment\Services\InventoryAthenian\OrderFulfillment\Services\ShippingAthenian\OrderFulfillment\Ajax\TasksAthenian\OrderFulfillment\Admin\MenuAthenian\OrderFulfillment\Admin\TabsAthenian\OrderFulfillment\Admin\AssetsAthenian\OrderFulfillment\Admin\Pages\DashboardAthenian\OrderFulfillment\Admin\Pages\QueueAthenian\OrderFulfillment\Admin\Pages\SettingsAthenian\OrderFulfillmentStatus\PluginColumbiaCoatings\NotifyBackInStock\PluginColumbiaCoatings\NotifyBackInStock\RepositoryColumbiaCoatings\NotifyBackInStock\StockWatcherColumbiaCoatings\NotifyBackInStock\MailerColumbiaCoatings\HeatHold\OptionsColumbiaCoatings\HeatHold\ShippingColumbiaCoatings\HeatHold\FrontendCCPA\PluginCCPA\Admin\AdminCCPA\Frontend\FrontendCCPA\Frontend\WC_AJAX
Data Model
Fulfillment task CPT
AOF stores fulfillment work as private WordPress posts using the ath_fulfillment post type.
The CPT is registered as:
public => falseshow_ui => falseshow_in_menu => falsesupports => ['title', 'custom-fields']rewrite => false
The queue and dashboard use custom admin pages rather than exposing the CPT’s native edit screen.
Fulfillment task meta schema
Each task stores operational metadata:
| Meta key | Type | Purpose | |---|---:|---| | _order_id | integer | Source WooCommerce order ID. | | _group_key | string | Idempotent task grouping key such as store:wh:default or vendor:123. | | _group_type | string | store or vendor. | | _vendor_id | integer | Vendor ID for vendor tasks; 0 for store tasks. | | _warehouse_id | string | Warehouse handle for store tasks. | | _status | string | Operational task status. | | _items_json | JSON string | Simplified fulfillment lines for the task. | | _shipment_id | integer | Shipment Manager shipment record ID, when created. | | _notes | string | Internal notes. |
Fulfillment line schema
The planner normalizes each order line into a compact structure:
| Field | Purpose | |---|---| | item_id | WooCommerce order item ID. | | product_id | Product or variation product ID. | | variation_id | Variation ID when the line is a variation. | | sku | Product SKU. | | name | Order item name. | | qty | Quantity to fulfill. |
The line array is filterable through aof_fulfillment_line.
Fulfillment task statuses
The model and queue support statuses such as:
pendingreservedpickingpackedshippeddonehold
The current UI exposes quick actions for packed, done, and shipment creation. Inventory reservation can move a store task to reserved; failed reservation moves it to hold.
Order fulfillment-status meta
The fulfillment-status module stores one or more values on the WooCommerce order under:
_cofs_fulfillment_statusThe module deletes and re-adds this metadata when statuses are saved, allowing a single order to hold multiple operational status slugs.
Fulfillment-status option storage
Configured fulfillment statuses are stored in:
cofs_statusesEach status definition contains a label and slug.
Back-in-stock custom table
The notify-back-in-stock module creates a custom database table:
{$wpdb->prefix}cc_nbis_signupsTable fields include:
| Column | Purpose | |---|---| | id | Signup ID. | | email | Subscriber email. | | user_id | Logged-in user ID, when available. | | product_id | Product ID. | | variation_id | Variation ID, when relevant. | | status | pending, confirmed, notified, unsubscribed, or related admin-managed states. | | token | Unique public confirm/unsubscribe token. | | created_at | Signup timestamp. | | confirmed_at | Double opt-in confirmation timestamp. | | notified_at | Back-in-stock notification timestamp. | | ip | Signup IP address. | | user_agent | Signup user agent. | | note | Admin note. |
The table includes indexes for email, product, variation, status, token, product/status, and variation/status lookups.
Product acknowledgement option storage
The product acknowledgements module stores settings in:
ccpa_settingsSettings include enable state, base CSS, and an ordered list of acknowledgement rules. Each rule can contain tag IDs, title, message, confirmation button text, custom CSS, and enabled state.
Fulfillment rules option storage
The fulfillment-rules module stores settings in:
cchh_settingsSettings include global enable state, accent color, and rule definitions. Each rule can define priority, active date range, product matchers, package handling, shipping action, service patterns, customer messaging, acknowledgement behavior, line-item labels, and internal notes.
AJAX, Admin Actions & Shortcodes
Core AOF AJAX actions
All core AOF AJAX actions require the aof_manage capability and verify the aof_nonce nonce.
| Action | Purpose | |---|---| | aof_lookup_order | Load order status, total, currency, shipping/billing address, line items, vendor IDs, and existing fulfillment tasks. | | aof_plan_order | Manually run fulfillment planning for an order. | | aof_list_tasks | Return recent fulfillment tasks for the dashboard or queue. | | aof_mark_done | Update a task status, commonly to done or packed. | | aof_create_shipment | Reserve inventory for store tasks, create Shipment Manager shipment, attach shipment ID, and open packing workflow. |
Notify Back In Stock AJAX and public actions
| Surface | Purpose | |---|---| | wp_ajax_cc_nbis_subscribe | Logged-in customer signup. | | wp_ajax_nopriv_cc_nbis_subscribe | Guest signup. | | ?cc_nbis_confirm={token} | Public confirmation endpoint. | | ?cc_nbis_unsub={token} | Public unsubscribe endpoint. |
Product acknowledgement AJAX actions
| Action | Purpose | |---|---| | ccpa_should_ack | Returns whether a product requires acknowledgement and provides modal payload. |
This endpoint is registered for both logged-in and logged-out customers. The add-to-cart validation also checks request data server-side so the confirmation requirement is not purely cosmetic.
Admin post actions
The bundled modules use admin-post handlers for exports and back-in-stock management:
| Action | Purpose | |---|---| | aofs_export_orders_csv | Export fulfillment-status-filtered orders to CSV. | | cofs_export_orders_csv | Legacy export action retained for compatibility. | | cc_nbis_save_settings | Save back-in-stock settings. | | cc_nbis_create | Create a back-in-stock signup from admin. | | cc_nbis_update | Update a signup. | | cc_nbis_delete | Delete a signup. | | cc_nbis_send | Manually send a notification. | | cc_nbis_bulk | Bulk-manage signup rows. |
Shortcodes
| Shortcode | Purpose | |---|---| | [cc_notify_back_in_stock] | Render a back-in-stock signup form for a product or variation. |
Supported shortcode attributes include product_id and variation_id.
WP-CLI commands
The notify-back-in-stock module registers a cc-nbis WP-CLI command when WP-CLI is available.
Examples:
wp cc-nbis dispatch 123
wp cc-nbis dispatch 123 --variation=456
wp cc-nbis list --status=pending
wp cc-nbis list [email protected]WooCommerce Integration Points
Order lifecycle hooks
The core planner hooks into:
woocommerce_payment_completewoocommerce_order_status_changed
These hooks allow automatic fulfillment task creation after payment or when an order enters configured statuses such as processing.
Order admin hooks
The fulfillment-status module integrates with both legacy and HPOS order admin experiences:
- Adds order edit metaboxes.
- Saves fulfillment statuses during order meta processing.
- Adds fulfillment-status columns to order lists.
- Adds order list filters.
- Filters legacy and HPOS order queries.
- Exports filtered order sets.
Product and cart hooks
The acknowledgement and fulfillment-rule modules integrate with product and cart flows through hooks such as:
woocommerce_single_product_summarywoocommerce_after_add_to_cart_formwoocommerce_loop_add_to_cart_linkwoocommerce_add_to_cart_validationwoocommerce_get_item_datawoocommerce_before_cartwoocommerce_before_checkout_form
These hooks allow the plugin to display notices, inject acknowledgement payloads, and prevent add-to-cart when customer confirmation is missing.
Shipping hooks
The fulfillment-rules module modifies shipping behavior through:
woocommerce_cart_shipping_packageswoocommerce_package_rateswoocommerce_shipping_package_name
This allows matching products to be split into their own packages, lets rules filter available package rates, and updates package names for customer clarity.
Stock hooks
The back-in-stock module listens for:
woocommerce_product_set_stock_statuswoocommerce_variation_set_stock_status
When an item returns to stock, the module finds pending or confirmed signups and sends configured back-in-stock emails.
Inventory & Warehouse Adapter Layer
The Inventory service is deliberately hook-based. It does not assume a specific ERP, warehouse table, or inventory plugin.
Warehouse discovery
apply_filters('aof_get_warehouses', [])Expected result examples:
[
['id' => 'main', 'name' => 'Main Warehouse'],
['id' => 'west', 'name' => 'West Coast Warehouse'],
]String-only values are also normalized into id/name pairs.
Warehouse selection
apply_filters('aof_select_warehouse_for_order', $default, $order_id, $lines)A warehouse integration can choose the best warehouse based on destination, stock availability, product type, or operational rules.
Inventory reservation
apply_filters('aof_reserve_inventory', null, $warehouse_id, $lines, $context)Expected response:
[
'ok' => true,
'holds' => [],
'message' => 'reserved'
]If no integration handles the filter, the default behavior returns success with an empty hold list. This keeps the core planner usable even before a warehouse adapter is connected.
Inventory release
do_action('aof_release_inventory', $warehouse_id, $holds, $context)The release action gives external inventory systems a path to clear holds when a task changes state, fails, or is cancelled.
Shipment Manager Integration
The Shipping service checks for:
Athenian\ShipmentManager\Shipment_Store
Athenian\ShipmentManager\PluginWhen available, AOF can call:
Athenian\ShipmentManager\Shipment_Store::create_from_order($order, $meta)The current shipment creation path uses _status => packed by default, then attaches the returned shipment ID to the fulfillment task and opens the Shipment Manager packing page with the source order ID.
This makes AOF the planning layer and Shipment Manager the physical packing/shipment execution layer.
Extension Points
Core AOF filters and actions
| Hook | Type | Purpose | |---|---|---| | aof_fulfillment_line | Filter | Modify a normalized fulfillment line before grouping. | | aof_fulfillment_groups | Filter | Modify final fulfillment groups before tasks are created. | | aof_get_warehouses | Filter | Provide warehouse choices to the settings UI and planner. | | aof_select_warehouse_for_order | Filter | Select a warehouse for store-fulfilled lines. | | aof_reserve_inventory | Filter | Reserve inventory for a task before creating a shipment. | | aof_release_inventory | Action | Release inventory holds from an external system. |
Fulfillment status module hooks
| Hook | Type | Purpose | |---|---|---| | aofs/status_options | Filter | Modify normalized status options keyed by slug. | | aofs/status_definitions | Filter | Modify raw status definitions before normalization. | | aofs/default_status_definitions | Filter | Modify seeded default status definitions. | | aofs/order_fulfillment_statuses_updated | Action | Respond after statuses are updated on an order. |
Live fleet review — 2026-10-07
Order Fulfillment is not a single fleet version. Athenian Spa is active on 0.1.0 with installed main-file SHA-256 946b2f5c3c5210b1101efec9725490dcfdd64f644baec3ce7ce15a658cf78319; CatMilk is active on 0.2.1 with installed main-file SHA-256 cf9990cb83032e65d77ef47c1715f231fb97c22ce1163fce73a6307a45061354. The documented source baseline is baseline/devdocs-0.2.1-20261006 at commit 22700022a3a6c59fb76b247c215ed6c710d8e29c; its reviewed canonical main-file hash is 89ade71aeff498eabe072dd9737d15b18c38dca24f648864a70883bb027335ce.
Read-only runtime inspection found 418 ath_fulfillment records on Spa and 3 on CatMilk. Both variants expose the AOF AJAX actions for lookup, listing, planning, completion, and shipment creation. CatMilk also has aof_auto_plan_enabled=yes, a configured auto-plan status list, an empty default warehouse, and a scheduled license-check hook; Spa did not expose those AOF options in the captured option boundary.
The live main-file hashes differ from the documented canonical source and from each other. Treat Spa 0.1.0 and CatMilk 0.2.1 as separate variants; no shared promotion or fulfillment mutation was performed.
Normalized fleet parity — 2026-10-07
The canonical comparison used the reviewed baseline/devdocs-0.2.1-20261006 source at commit 22700022a3a6c59fb76b247c215ed6c710d8e29c. The comparison normalized text line endings and excluded vendor, cache, backup, archive, and site-generated log/task artifacts.
Athenian Spa — reduced 0.1.0 variant
The live tree contains 16 comparable files versus 68 canonical files: 52 canonical files are absent, 11 common files have normalized content differences, and 5 differ only by line endings. This is a materially reduced 0.1.0 implementation, not a packaging-only fork. It does not include the license client bootstrap, consolidated-module boot, Batch Print/Tabs admin surfaces, fulfillment rules, back-in-stock notifications, order-fulfillment statuses, or product acknowledgements present in the 0.2.1 source baseline. The site currently contains 418 ath_fulfillment records.
CatMilk — full-tree fork with three content differences
The live tree has the same 68-file shape as the canonical comparison. 64 raw differences are line-ending-only; 3 normalized content forks remain:
includes/Plugin.php: the live internal version constant is0.2.0while the plugin header is active as0.2.1; the CCPA constant is1.2.2versus the canonical1.2.1; the Batch Print include is removed.modules/product-acknowledgements/assets/frontend/popup.js: the live fork preserves the clicked submitter usingrequestSubmit()or a hidden fallback and carries that submitter through product-ID resolution and modal paths.modules/product-acknowledgements/columbia-coatings-product-acknowledgements.php: the live module version is1.2.2versus the canonical1.2.1.
CatMilk currently contains 3 ath_fulfillment records, exposes aof_auto_plan_enabled=yes with an auto-plan status list and empty default warehouse, and has the scheduled athenian-order-fulfillment_license_check hook. These differences require owner confirmation before treating the tree as a shared release identity.
Promotion boundary
The 0.2.1 GitHub source remains the authoritative documentation reference, but Spa 0.1.0 and CatMilk's live fork remain separate deployment variants. No plugin files, task records, options, queues, order statuses, shipment calls, or fulfillment data were changed during this parity review.
Install
- Reviewed source folder: athenian-order-fulfillment
- Plugin version reviewed: 0.2.1
- Local source inventory: 69 files (vendor, temporary, and test fixtures excluded).
- WordPress with PHP 8.0 or newer.
- WooCommerce is required by the plugin header.
- Optional Shipment Manager and Athenian vendor modules extend handoff and routing behavior.
Athenian Spa runtime: active
0.1.0, main-file SHA-256946b2f5c3c5210b1101efec9725490dcfdd64f644baec3ce7ce15a658cf78319, with 418 storedath_fulfillmentrecords observed.CatMilk runtime: active
0.2.1, main-file SHA-256cf9990cb83032e65d77ef47c1715f231fb97c22ce1163fce73a6307a45061354, with 3 storedath_fulfillmentrecords observed.- Treat the two deployments as separate variants until normalized full-tree parity and queue/status behavior are proven.
- Canonical comparison scope: 68 normalized non-vendor/non-backup/non-archive/non-log source files.
- Athenian Spa: 16 live files, 52 canonical files missing; retain as a reduced 0.1.0 variant until its support owner decides otherwise.
- CatMilk: 68 live files with 3 normalized content forks and 64 line-ending-only raw differences; retain as a separate live fork.
- Do not infer a fleet-wide upgrade from the CatMilk deployment or from the repository source baseline.
Configuration
- Technical Architecture — see the linked technical reference excerpt.
- Data Model — see the linked technical reference excerpt.
- AJAX, Admin Actions & Shortcodes — see the linked technical reference excerpt.
- WooCommerce Integration Points — see the linked technical reference excerpt.
- Inventory & Warehouse Adapter Layer — see the linked technical reference excerpt.
- Shipment Manager Integration — see the linked technical reference excerpt.
- Extension Points — see the linked technical reference excerpt.
Athenian Spa runtime: active
0.1.0, main-file SHA-256946b2f5c3c5210b1101efec9725490dcfdd64f644baec3ce7ce15a658cf78319, with 418 storedath_fulfillmentrecords observed.CatMilk runtime: active
0.2.1, main-file SHA-256cf9990cb83032e65d77ef47c1715f231fb97c22ce1163fce73a6307a45061354, with 3 storedath_fulfillmentrecords observed.- Treat the two deployments as separate variants until normalized full-tree parity and queue/status behavior are proven.
Usage
- Shortcodes detected in local PHP source: 1
- Static action/filter hooks detected in local PHP source: 79
- REST route registrations detected in local PHP source: 0
Shortcodes
- cc_notify_back_in_stock — modules/notify-back-in-stock/includes/Frontend.php
REST Endpoints
- No register_rest_route calls were detected by the baseline scanner.
Hooks
- add_meta_boxes — modules/order-fulfillment-statuses/includes/class-cofs-plugin.php
- admin_enqueue_scripts — includes/Plugin.php
- admin_enqueue_scripts — modules/fulfillment-rules/includes/Admin.php
- admin_enqueue_scripts — modules/notify-back-in-stock/includes/Admin/AdminController.php
- admin_enqueue_scripts — modules/order-fulfillment-statuses/includes/class-cofs-plugin.php
- admin_enqueue_scripts — modules/product-acknowledgements/includes/admin/class-ccpa-admin.php
- admin_init — modules/fulfillment-rules/includes/Admin.php
- admin_init — modules/order-fulfillment-statuses/includes/class-cofs-plugin.php
- admin_init — modules/product-acknowledgements/includes/admin/class-ccpa-admin.php
- admin_menu — includes/Plugin.php
- admin_menu — modules/fulfillment-rules/includes/Admin.php
- admin_menu — modules/notify-back-in-stock/includes/Admin/AdminController.php
- admin_menu — modules/order-fulfillment-statuses/includes/class-cofs-plugin.php
- admin_menu — modules/product-acknowledgements/includes/admin/class-ccpa-admin.php
- admin_notices — modules/order-fulfillment-statuses/includes/class-cofs-plugin.php
- admin_post_cc_nbis_bulk — modules/notify-back-in-stock/includes/Admin/AdminController.php
- admin_post_cc_nbis_create — modules/notify-back-in-stock/includes/Admin/AdminController.php
- admin_post_cc_nbis_delete — modules/notify-back-in-stock/includes/Admin/AdminController.php
- admin_post_cc_nbis_save_settings — modules/notify-back-in-stock/includes/Admin/AdminController.php
- admin_post_cc_nbis_send — modules/notify-back-in-stock/includes/Admin/AdminController.php
- admin_post_cc_nbis_update — modules/notify-back-in-stock/includes/Admin/AdminController.php
- admin_post_ — modules/order-fulfillment-statuses/includes/class-cofs-plugin.php
- before_woocommerce_init — includes/Plugin.php
- before_woocommerce_init — modules/fulfillment-rules/columbia-coatings-heat-hold.php
- before_woocommerce_init — modules/notify-back-in-stock/columbia-coatings-notify-back-in-stock.php
- before_woocommerce_init — modules/order-fulfillment-statuses/custom-order-fulfillment-statuses.php
- init — includes/Plugin.php
- init — includes/Setup.php
- init — modules/notify-back-in-stock/includes/Plugin.php
- init — modules/product-acknowledgements/includes/class-ccpa-plugin.php
- manage_edit-shop_order_columns — modules/order-fulfillment-statuses/includes/class-cofs-plugin.php
- manage_shop_order_posts_custom_column — modules/order-fulfillment-statuses/includes/class-cofs-plugin.php
- manage_woocommerce_page_wc-orders_columns — modules/order-fulfillment-statuses/includes/class-cofs-plugin.php
- manage_woocommerce_page_wc-orders_custom_column — modules/order-fulfillment-statuses/includes/class-cofs-plugin.php
- plugins_loaded — athenian-order-fulfillment.php
- plugins_loaded — modules/fulfillment-rules/columbia-coatings-heat-hold.php
- plugins_loaded — modules/notify-back-in-stock/columbia-coatings-notify-back-in-stock.php
- plugins_loaded — modules/order-fulfillment-statuses/custom-order-fulfillment-statuses.php
- plugins_loaded — modules/product-acknowledgements/columbia-coatings-product-acknowledgements.php
- plugin_action_links_ — modules/order-fulfillment-statuses/includes/class-cofs-plugin.php
- pre_get_posts — modules/order-fulfillment-statuses/includes/class-cofs-plugin.php
- restrict_manage_posts — modules/order-fulfillment-statuses/includes/class-cofs-plugin.php
- woocommerce_add_to_cart_validation — modules/fulfillment-rules/includes/Frontend.php
- woocommerce_add_to_cart_validation — modules/product-acknowledgements/includes/frontend/class-ccpa-frontend.php
- woocommerce_after_add_to_cart_form — modules/notify-back-in-stock/includes/Frontend.php
- woocommerce_before_cart — modules/fulfillment-rules/includes/Frontend.php
- woocommerce_before_checkout_form — modules/fulfillment-rules/includes/Frontend.php
- woocommerce_cart_shipping_packages — modules/fulfillment-rules/includes/Shipping.php
- woocommerce_get_item_data — modules/fulfillment-rules/includes/Frontend.php
- woocommerce_loop_add_to_cart_link — modules/fulfillment-rules/includes/Frontend.php
- woocommerce_loop_add_to_cart_link — modules/product-acknowledgements/includes/frontend/class-ccpa-frontend.php
- woocommerce_order_list_table_prepare_items_query_args — modules/order-fulfillment-statuses/includes/class-cofs-plugin.php
- woocommerce_order_list_table_restrict_manage_orders — modules/order-fulfillment-statuses/includes/class-cofs-plugin.php
- woocommerce_order_status_changed — includes/Plugin.php
- woocommerce_package_rates — modules/fulfillment-rules/includes/Shipping.php
- woocommerce_payment_complete — includes/Plugin.php
- woocommerce_process_shop_order_meta — modules/order-fulfillment-statuses/includes/class-cofs-plugin.php
- woocommerce_product_set_stock_status — modules/notify-back-in-stock/includes/StockWatcher.php
- woocommerce_shipping_package_name — modules/fulfillment-rules/includes/Shipping.php
- woocommerce_single_product_summary — modules/fulfillment-rules/includes/Frontend.php
- woocommerce_single_product_summary — modules/notify-back-in-stock/includes/Frontend.php
- woocommerce_variation_set_stock_status — modules/notify-back-in-stock/includes/StockWatcher.php
- wp_ajax_aof_create_shipment — includes/Plugin.php
- wp_ajax_aof_list_tasks — includes/Plugin.php
- wp_ajax_aof_lookup_order — includes/Plugin.php
- wp_ajax_aof_mark_done — includes/Plugin.php
- wp_ajax_aof_plan_order — includes/Plugin.php
- wp_ajax_ccpa_should_ack — modules/fulfillment-rules/includes/Frontend.php
- wp_ajax_ccpa_should_ack — modules/product-acknowledgements/includes/frontend/class-ccpa-wc-ajax.php
- wp_ajax_cc_nbis_subscribe — modules/notify-back-in-stock/includes/Frontend.php
- wp_ajax_nopriv_ccpa_should_ack — modules/fulfillment-rules/includes/Frontend.php
- wp_ajax_nopriv_ccpa_should_ack — modules/product-acknowledgements/includes/frontend/class-ccpa-wc-ajax.php
- wp_ajax_nopriv_cc_nbis_subscribe — modules/notify-back-in-stock/includes/Frontend.php
- wp_enqueue_scripts — modules/fulfillment-rules/includes/Frontend.php
- wp_enqueue_scripts — modules/notify-back-in-stock/includes/Frontend.php
- wp_enqueue_scripts — modules/product-acknowledgements/includes/frontend/class-ccpa-frontend.php
- wp_footer — modules/fulfillment-rules/includes/Frontend.php
- wp_footer — modules/product-acknowledgements/includes/frontend/class-ccpa-frontend.php
- wp_mail_failed — modules/notify-back-in-stock/includes/Mailer.php
Data Model
- Data Model — described in the local technical reference.
- WooCommerce Integration Points — described in the local technical reference.
- Inventory & Warehouse Adapter Layer — described in the local technical reference.
- Shipment Manager Integration — described in the local technical reference.
API Reference
- Local source digest: def83bcd85c4b002c654b814b7b37ff5e05ebaa2381d67b9ae783b72dfe3fc7e
Repository commit: 22700022a3a6c59fb76b247c215ed6c710d8e29c (verified GitHub baseline branch
baseline/devdocs-0.2.1-20261006).Source files include: README.md, assets/admin/admin.css, assets/admin/admin.js, athenian-order-fulfillment-icon.png, athenian-order-fulfillment.php, athenian-order-fulfillment.zip, docs/aof-marketing-document.md, docs/athenian-platform-marketing.md, docs/athenian-platform-technical.md, docs/technical-marketing.md, includes/Admin/Assets.php, includes/Admin/Menu.php, includes/Admin/Pages/Batch_Print.php, includes/Admin/Pages/Dashboard.php, includes/Admin/Pages/Queue.php, includes/Admin/Pages/Settings.php, includes/Admin/Tabs.php, includes/Ajax/Tasks.php, includes/Models/Fulfillment.php, includes/Plugin.php, includes/Services/Inventory.php, includes/Services/Planner.php, …
Observed AOF AJAX actions:
aof_lookup_order,aof_list_tasks,aof_plan_order,aof_mark_done, andaof_create_shipment.The private
ath_fulfillmentCPT is registered on both sites with admin UI disabled; stored task counts differ materially between Spa and CatMilk.CatMilk exposes
aof_auto_plan_enabled=yes, an auto-plan status list, an emptyaof_default_warehouse, and a scheduledathenian-order-fulfillment_license_checkhook.
- Canonical source: 68 comparable files; main-file SHA-256 89ade71aeff498eabe072dd9737d15b18c38dca24f648864a70883bb027335ce.
Spa live main-file SHA-256: 946b2f5c3c5210b1101efec9725490dcfdd64f644baec3ce7ce15a658cf78319; CatMilk live main-file SHA-256: cf9990cb83032e65d77ef47c1715f231fb97c22ce1163fce73a6307a45061354.
- Common AOF AJAX actions observed on both sites: aof_lookup_order, aof_list_tasks, aof_plan_order, aof_mark_done, aof_create_shipment.
- The complete normalized fork list is documented in the Fleet parity section above; version, CCPA, Batch Print, and submitter-preservation differences remain owner-review items.
Troubleshooting
- This is a published baseline generated from local source documentation and the linked WooCommerce product record.
- Confirm the deployed plugin version, active dependencies, and current repository commit before using implementation details as a release contract.
- Treat pricing, payment, vendor, shipment, inventory, and external-provider behavior as integration-dependent until exercised in the target environment.
Do not use the newer CatMilk version as a fleet-wide upgrade recommendation; its live main-file hash does not match the recorded canonical source hash and its stored task population is different.
- Planning, reserve, complete, shipment, queue, inventory, order-status, and vendor effects were not invoked during this review.
If a feature is documented in the 0.2.1 source but absent on Spa, first confirm the site is still on the reduced 0.1.0 tree; do not treat the absence as a runtime outage without an owner-approved rollout.
If CatMilk reports a version mismatch, inspect both the plugin header and the internal Plugin.php constant; the live fork contains 0.2.0 internally while the active header reports 0.2.1.
- Before reconciling either site, capture a new rollback archive and separately verify task counts, auto-plan settings, scheduled hooks, and shipment/provider boundaries.
FAQ
What is this page intended to establish?
A versioned, product-linked starting point for iterative developer documentation. It combines the local implementation reference with a compact detected-code inventory so later passes can refine exact contracts.
Is the linked repository commit verified?
Verified GitHub baseline: https://github.com/Athenian-Brands/athenian-order-fulfillment at branch baseline/devdocs-0.2.1-20261006 and commit 22700022a3a6c59fb76b247c215ed6c710d8e29c.
Which Order Fulfillment version is authoritative for the fleet?
None is promoted fleet-wide yet. The documentation keeps the GitHub 0.2.1 baseline authoritative for source reference while explicitly recording Spa 0.1.0 and CatMilk 0.2.1 as separate live variants requiring normalized parity and behavior review.
Which Order Fulfillment variant is authoritative?
The GitHub baseline/devdocs-0.2.1-20261006 source remains the authoritative documentation reference. Spa 0.1.0 and CatMilk remain separate live variants until their owners approve a shared release decision.
Does normalized parity mean the live sites should be upgraded now?
No. Spa is a reduced 0.1.0 tree and CatMilk has three normalized content forks. Parity evidence improves the documentation baseline; it does not authorize promotion, task migration, queue replay, or configuration changes.