Skill Dropshipping Fulfillment
Automates order fulfillment by pushing WooCommerce orders to CJ Dropshipping. Fetches "Processing" orders, matches line items to CJ variants via a supplier s...
Description
name: skill-dropshipping-fulfillment description: Automates order fulfillment by pushing WooCommerce orders to CJ Dropshipping. Fetches "Processing" orders, matches line items to CJ variants via a supplier selection map, submits orders to CJ API, updates WooCommerce order status, and logs results. Supports dry-run and single-order modes. metadata: openclaw: requires: { bins: ["node"] }
CJ Fulfillment Engine
Automates the WooCommerce → CJ Dropshipping order flow. No manual copy-paste.
What it does
- Fetches all
processingorders from WooCommerce - Maps line items to CJ variant IDs via
cj-supplier-selection.json - Submits matched items to CJ API as a dropship order
- Updates WooCommerce order status to
on-hold(awaiting CJ dispatch) - Adds an order note with the CJ order ID
- Logs all results to
cj-fulfillment-log.json
Credentials / paths
| File | Contents |
|---|---|
woo-api.json |
{ url, consumerKey, consumerSecret } |
cj-api.json |
{ apiKey, baseUrl, accessToken, tokenExpiry } |
cj-supplier-selection.json |
Array of { sku, cjProductId, variantId, ... } |
Usage
# Dry run — preview without placing orders
node {baseDir}/scripts/fulfill.js --dry-run
# Fulfill all processing orders
node {baseDir}/scripts/fulfill.js
# Fulfill a single WooCommerce order
node {baseDir}/scripts/fulfill.js --order 1234
cj-supplier-selection.json format
Full 6-field schema — one entry per product variant. Matching is SKU-first with fallback to wooProductId:wooVariationId.
[
{
"wooProductId": 77261,
"wooVariationId": 77265,
"sku": "CJYD2360896-BLACK",
"cjProductId": "CJ-PRODUCT-ID",
"variantId": "CJ-VARIANT-ID",
"productName": "My Product — Black"
}
]
Generate or rebuild this file from CJ API automatically:
node {baseDir}/scripts/rebuild-mapping.js
FBA / excluded products
Products that should never be fulfilled via CJ (e.g. FBA, in-house). Set via env var:
FBA_PRODUCT_IDS=75927,75808,2382 node fulfill.js
These are skipped with a log entry: "FBA product — manual fulfillment required".
Output
- Console: per-order summary with matched/unmatched items and CJ order ID
cj-fulfillment-log.json: append-only log with{ orderId, status, cjOrderId, timestamp }cj-rejection-log.json: unmatched/skipped items for manual review
Unmatched items
If a line item has no SKU match and no wooProductId:wooVariationId match, it's logged to the rejection log and the order is skipped. Fix by running rebuild-mapping.js or adding the entry manually.
Environment overrides
CJ_SELECTION_PATH=/custom/path/selection.json node fulfill.js
FULFILL_LOG_PATH=/custom/path/log.json node fulfill.js
Reviews (0)
No reviews yet. Be the first to review!
Comments (0)
No comments yet. Be the first to share your thoughts!