dist/codex/salesforce-commerce/skills/sf-orders/SKILL.md
Manage Salesforce Commerce orders — B2C (SCAPI order objects, status lifecycle, order confirmation, returns) and B2B (Order object, OrderItem, splits, approval workflows, fulfillment). Use when implementing order management across either platform.
npx skillsauth add orcaqubits/agentic-commerce-claude-plugins sf-ordersInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Fetch live docs before implementing order management features.
Basket (cart)
-> Order Created (created)
-> open (confirmed, ready for fulfillment)
-> shipped -> completed
-> partially_shipped -> open
-> cancelled
-> failed (payment declined)
-> replaced (exchange)
B2C Order Status Definitions:
| Status | Meaning | |---|---| | created | Order object created, payment authorized | | new / open | Confirmed, ready for fulfillment (synonymous; varies by config) | | completed | All items fulfilled and delivered | | cancelled | Cancelled by customer or admin | | replaced | Replaced with new order (e.g., exchange) | | failed | Creation failed (payment or inventory) |
Key B2C Order Objects:
B2C Order Confirmation:
B2C Order Export for Fulfillment:
WebCart (persists across sessions)
-> Checkout Flow (multi-step)
-> Order (Draft)
-> Activated (submitted)
-> Approval Workflow (optional)
-> Fulfillment / Order Splits
-> completed
B2C vs B2B Order Model Differences:
| Aspect | B2C (SFCC) | B2B (Lightning) | |---|---|---| | Cart object | Basket (temporary) | WebCart (persistent) | | Order object | SFCC Order (proprietary) | Salesforce Order (standard) | | Line item | OrderItem (SFCC) | OrderItem (standard sObject) | | Initial status | created -> open | Draft -> Activated | | Approval | Not built-in | Flow / Process Builder approvals | | Payment | Cartridge-based processors | Apex PaymentGatewayAdapter | | Fulfillment tracking | XML export + status sync | OrderDeliveryGroup sObject | | Reorder | Clone items to new basket | Quick reorder button, bulk CSV upload | | Payment terms | Credit card at checkout | PO, net terms, credit limits | | Order splits | Not native | Parent-child order pattern via OrderSummary |
B2B Approval Workflow Concepts:
B2B Order Splits:
Optional paid add-on for unified order orchestration across B2C and B2B.
| OMS Object | Purpose | |---|---| | OrderSummary | Aggregate order (unifies B2C/B2B) | | FulfillmentOrder | Per-warehouse fulfillment view | | Order Broker | Routing engine for optimal location |
OMS Capabilities:
When to use OMS: Complex multi-location fulfillment, high order volume, omnichannel requirements, high return complexity. Evaluate ROI vs. native order management.
| Platform | Key Events | |---|---| | B2C | Order Created, Status Changed, Exported, Cancelled | | B2B | Order Submitted, Approved, Rejected, Shipped (via Platform Events / CDC) | | OMS | OrderSummary Created, FulfillmentOrder Created, Shipment Confirmed, Return Initiated |
// Pattern: B2C order status check
// Fetch live docs for SCAPI Shopper Orders endpoints
// GET /orders/{orderNo} -> check order.status
// Pattern: B2B approval trigger
// Fetch live docs for Process Builder / Flow order approvals
// Order.Status changes from Draft -> Activated -> triggers approval
Fetch the SCAPI Shopper Orders reference and Salesforce Order object docs for exact schemas and field names before implementing.
development
Build with Spree's headless Next.js storefront — the official `spree/storefront` repo (Next.js 16 App Router with Server Actions and Turbopack, React 19 Server Components, Tailwind CSS 4, TypeScript 5, `@spree/sdk`, Sentry), server-only auth (httpOnly JWT cookies + publishable key), MeiliSearch faceted catalog, one-page checkout with Apple/Google Pay/Klarna/Affirm/SEPA, multi-region market routing, GA4 + JSON-LD SEO, and Vercel/Docker deployment. Use when forking or customizing the storefront, or evaluating headless adoption.
tools
Build Spree extensions as Rails engines — gem scaffolding, `bin/rails g spree:extension`, mounting routes/migrations/assets, the modern `prepend` decorator pattern (`*_decorator.rb` with `self.prepended(base)`), generators (`spree:model_decorator`, `spree:controller_decorator`), the four customization surfaces in preference order (Events > Webhooks > Dependencies > Decorators), Spree::Dependencies for swapping service objects, gem release/versioning, and the deprecated Deface engine. Use when building a reusable Spree extension or adding non-trivial customization to an app.
development
Build with Spree's event bus and Webhooks 2.0 — `Spree::Events` publication, `Spree::Subscriber` DSL with `subscribes_to` and `on`, wildcard matching, lifecycle events (`{model}.created/.updated/.deleted` via `publishes_lifecycle_events`), the canonical event catalog (order.*, payment.*, shipment.*, product.*), Webhooks 2.0 endpoints, HMAC-SHA256 signing (`X-Spree-Webhook-Signature`), exponential-backoff retries, and Sidekiq job orchestration. Use when wiring event-driven business logic, building webhook consumers, or replacing ActiveSupport callback chains.
tools
Cross-cutting Spree development patterns — the customization preference hierarchy (Events > Webhooks > Dependencies > Decorators), `Spree::Dependencies` service-object swapping, the `_decorator.rb` + `prepend` + `self.prepended` idiom, idempotent subscribers and webhook receivers, multi-store scoping discipline, prefixed IDs, calculator polymorphism (shipping/promotion/tax share the base), service-object composition with `dry-monads` or simple results, why to avoid `class_eval` reopening and Deface, and Spree-on-Rails idioms (Hotwire/Turbo Stimulus, ActiveStorage, Action Cable, Sidekiq). Use when designing the architecture of a Spree extension or solving cross-cutting concerns.