mirror of
https://github.com/forcedotcom/afv-library.git
synced 2026-07-30 03:09:50 +08:00
* Add instructions to create commerce b2b store from vibes * update rule and sf commands * Refactor Commerce B2B skill: rename and flatten directory structure - Rename skill from create-b2b-commerce-storefront to creating-b2b-commerce-store to better reflect what users actually create (the Store, not the Storefront) - Flatten directory from skills/commerce/create-b2b-commerce-storefront/ to skills/creating-b2b-commerce-store/ to match repository pattern - Remove old prompts and rules consolidated into skill - Remove Commerce prompt and rule entries from manifest.json (consolidated into skill)
4.9 KiB
4.9 KiB
Commerce Store vs Storefront: Technical Reference
Overview
Understanding the distinction between Commerce Store and Storefront is critical for successful Commerce B2B development. This document provides technical details about these two components and explains why they must be created in a specific order.
The Two Components
1. Commerce Store (Backend Data)
What it is:
- Runtime data and configuration created in the Salesforce org
- NOT source-controllable metadata
- Created through Commerce app UI
What it includes:
- Store configuration and settings
- Default buyer groups (associated with Accounts)
- Entitlement policies (who can see which products)
- Pricing policies and price book mappings
- Payment gateway configuration (Stripe, Adyen, etc.)
- Tax provider configuration (Avalara, Vertex, manual)
- Shipping methods and configurations
- Product catalog associations
- Inventory locations
- Search index configurations
Where it lives:
- Data records in standard Commerce objects:
WebStore- Store settings and configurationBuyerGroup- Account-based buyer segmentsEntitlementPolicy- Product visibility rulesCommerceEntitlementProduct- Product-policy associationsProductCatalog- Catalog definitionsPricebook2- Price books- Additional payment, tax, shipping records
How to create:
- Via UI: Setup → Commerce → Stores
- Cannot be created via Metadata API
- Cannot be deployed via
sf project deploy
2. Storefront (Frontend Metadata)
What it is:
- Digital Experience (LWR site) for buyer-facing shopping experience
- Source-controllable as ExperienceBundle metadata
- Created automatically when you create a Commerce Store
What it includes:
- ExperienceBundle metadata (
StorefrontName.digitalExperience-meta.xml) - URL routing configuration (
sfdc_cms__route) - Page definitions (
sfdc_cms__view)- Homepage
- Product List Pages (PLP)
- Product Detail Pages (PDP)
- Shopping cart
- Checkout flow
- Order confirmation
- Search results
- Lightning Web Components (product cards, cart components, checkout)
- Branding and theme configuration (
sfdc_cms__brandingSet,sfdc_cms__theme) - Page layouts (
sfdc_cms__themeLayout) - Navigation structure
- Custom LWCs for extensions
Where it lives:
force-app/main/default/digitalExperiences/site/StorefrontName/- Example:
force-app/main/default/digitalExperiences/site/My_B2B_Store1/
How to create:
- Automatically generated by Commerce Store setup wizard
- Retrieved from org using Salesforce CLI
- Cannot be manually created from scratch
How to deploy:
- Retrievable:
sf project retrieve start -m DigitalExperienceBundle:site/<name> - Deployable:
sf project deploy start -m DigitalExperienceBundle - Source-controllable in Git
Why You Cannot Create Storefront Metadata from Scratch
Technical Reasons
-
Complex Dependency Chain
- Create merchandisers store
- Create DigitalExperienceBundle
- Integrate both together
-
Hundreds of Auto-Generated Configurations
- Component IDs and region IDs (UUIDs)
- WebStore associations
- Commerce-managed component configurations
- Default routing rules
- Search configurations
- Cart and checkout flow definitions
- Payment integration settings
-
Commerce-Managed Components
- Product List Page (PLP) components
- Product Detail Page (PDP) components
- Cart components
- Checkout components
- Search components
- These require specific configurations from Store data
-
Metadata API Limitation
- Metadata API deploys metadata types (Apex, LWCs, objects)
- Metadata API CANNOT create SObject data (WebStore records)
- Store creation requires data operations, not metadata operations
The Required Creation Order
Step 1: Create Commerce Store (Must Be First)
User Interface (Commerce App)
↓
WebStore Record Created
↓
BuyerGroup Records Created
↓
EntitlementPolicy Records Created
↓
Digital Experience Auto-Generated
↓
Commerce Components Configured
Why this must be first:
- Generates WebStore record with unique ID
- Creates default configurations
- Auto-generates associated Digital Experience
- Configures Commerce component relationships
- Sets up default buyer access rules
Step 2: Retrieve Storefront Metadata
sf org list metadata --metadata-type DigitalExperienceConfig
↓
Select Store from List
↓
sf project retrieve start -m DigitalExperienceBundle:site/<name>
↓
Metadata Saved to Local Repository
↓
Now Editable and Source-Controllable
Key Takeaway
Commerce B2B = Store (data) + Storefront (metadata)
- Create Store → generates Storefront
- Retrieve Storefront → customize and version control if needed
- Deploy Storefront → only after creating Store in target org
Never skip the Store creation. Never create Storefront metadata from scratch.