Skip to main content

Last updated: May 2026

Practice Exam

Arch-303Salesforce B2C Commerce Architect

Test your knowledge with official exam-style questions

Questions25Passing68%Exam time120 min

Questions and options are shuffled each attempt

Salesforce Certified B2C Commerce ArchitectPractice Set 1: All Questions & Explanations

Full question text, answer options, and explanations for this practice set — a spoiler-free alternative is the interactive quiz above for scored, shuffled practice.

  1. 1. A global retailer wants to serve 12 countries from a single B2C Commerce platform instance with different languages, currencies, and tax rules per country. What is the recommended B2C Commerce architecture to achieve this?

    • A. One Site per country, each with its own realm and separate Business Manager instance
    • B. One realm with multiple Sites using Site Groups, configuring locale, currency, and tax classes per site(correct)
    • C. One Site with country-detection middleware that dynamically swaps locale data at the CDN layer
    • D. Deploy 12 separate B2C Commerce orgs, one per country, with a shared order database

    Explanation: B2C Commerce supports multiple Sites within a single realm (shared Business Manager instance). Each Site can be configured with its own locale, currency, and tax class. Site Groups allow shared catalog and pricing data across sites while permitting per-site overrides. This is the standard, cost-effective multi-country architecture — separate realms per country creates unnecessary overhead and complexity.

  2. 2. A B2C Commerce architect is designing a system where a single product catalog must be shared across three brands (Sites A, B, and C) but each brand can override product names and descriptions. What catalog strategy should the architect recommend?

    • A. Create a separate catalog for each brand with shared product IDs
    • B. Use a shared master catalog for products and a site-specific storefront catalog per brand for category assignments and overrides(correct)
    • C. Use a single storefront catalog assigned to all three sites simultaneously
    • D. Synchronise product data nightly from a PIM to three separate catalogs using import feeds

    Explanation: B2C Commerce separates the master catalog (defines all products, attributes, and variations) from storefront catalogs (define category trees and can override display attributes). Each site is assigned its own storefront catalog that references the shared master catalog. This allows each brand to control its category structure and localised names without duplicating product master data.

  3. 3. A B2C Commerce architect is reviewing a performance bottleneck on the product detail page during peak traffic. Which two architectural changes would most effectively improve page response times? (Choose 2)

    • A. Move all product data rendering server-side using ISML and eliminate AJAX calls
    • B. Configure Page Designer full-page caching with response.setExpires() in ISML controllers(correct)
    • C. Implement Akamai (or equivalent CDN) edge caching for the product detail page with appropriate cache-control headers(correct)
    • D. Add a second web adapter tier to horizontally scale the application server

    Explanation: Caching is the most impactful performance lever in B2C Commerce. response.setExpires() on ISML controllers caches full page responses at the B2C Commerce cache layer, dramatically reducing application server load. CDN edge caching (Akamai, Fastly, etc.) serves cached content from geographically distributed nodes, reducing latency for end users. Adding web adapters helps with concurrency but does not reduce response times if the origin is slow.

  4. 4. A B2C Commerce architect is asked to design a solution for real-time inventory display on product pages (showing 'Only 3 left!'). The inventory data lives in an ERP that can respond in under 200ms. Which is the most appropriate architectural pattern?

    • A. Import ERP inventory nightly into the B2C Commerce inventory list and display the count from B2C Commerce
    • B. On page load, a client-side JavaScript AJAX call hits a custom B2C Commerce endpoint that proxies to the ERP API and returns the live count(correct)
    • C. Use B2C Commerce's standard inventory availability message configured in Business Manager
    • D. Cache the ERP inventory count in the B2C Commerce product attribute, refreshed every 5 minutes via a job

    Explanation: For real-time data that changes frequently (inventory counts), the recommended pattern is a client-side AJAX call after page load that invokes a server-side B2C Commerce endpoint (a lightweight controller). The controller calls the ERP API and returns the live count. This avoids caching stale inventory and keeps the page HTML cacheable, while real-time data is fetched asynchronously after the cached shell loads.

  5. 5. A B2C Commerce architect is designing the cartridge stack for a large implementation with a base SFRA reference cartridge, a third-party payment cartridge, and a brand-specific customisation cartridge. In what order should the cartridges appear in the cartridge path?

    • A. base_sfra:payment_cartridge:brand_customisation
    • B. brand_customisation:payment_cartridge:app_storefront_base(correct)
    • C. app_storefront_base:payment_cartridge:brand_customisation
    • D. payment_cartridge:brand_customisation:app_storefront_base

    Explanation: B2C Commerce resolves the cartridge path left to right. The most specific (highest priority) cartridge must appear first. Brand customisations override everything, so they go first. Third-party cartridges (payment) extend the base and go next. The SFRA base cartridge (app_storefront_base) is the fallback and goes last. Putting the base cartridge first would mean base files shadow customisations.

  6. 6. An architect is designing the integration between B2C Commerce and Salesforce CRM. Customer profiles created during registration in the storefront should sync to Salesforce CRM in real time. Which is the recommended integration pattern?

    • A. Use B2C Commerce's built-in Salesforce CRM sync setting in Business Manager
    • B. Use a B2C Commerce custom hook (dw.system.HookMgr) in the account registration pipeline to call a Salesforce REST API (or middleware) to create the Contact/Person Account(correct)
    • C. Export customer CSV files nightly from Business Manager and import into Salesforce via Data Loader
    • D. Use Salesforce Connect to create an External Object that queries B2C Commerce customer data in real time

    Explanation: B2C Commerce does not have a native real-time CRM sync. The recommended pattern is to use a custom hook registered in the account registration flow (app_customer_registration hook) that calls a Salesforce Connected App REST API (directly or via middleware like MuleSoft). The hook fires synchronously during registration, creating the Contact/Person Account in CRM in real time. Nightly CSV imports add unacceptable latency for real-time requirements.

  7. 7. A B2C Commerce implementation uses SFRA with a custom tax calculation cartridge. During a performance review, the architect finds that the tax calculation is called 8 times per page on cart pages, each call taking 300ms. Total page load is 2.4 seconds just from tax calls. What is the best architectural fix?

    • A. Replace the custom tax cartridge with a Salesforce-native tax table
    • B. Cache the tax calculation result per basket using a session variable and invalidate it only when the cart contents change(correct)
    • C. Move the tax calculation from the controller to a client-side JavaScript call to avoid blocking page rendering
    • D. Reduce the number of tax calculation hooks by consolidating them into a single scheduled job

    Explanation: External tax API calls are expensive. The correct architectural pattern is to cache the tax result at the basket level (using a transient/session attribute) and invalidate the cache only on cart mutations (add/remove item, change quantity, address change). Most page loads on the cart page do not modify the cart and can reuse the cached result, eliminating redundant external API calls.

  8. 8. A B2C Commerce architect must recommend a search solution for a 2-million-product catalog with advanced faceted search, merchandising rules, and personalised ranking. Which two Salesforce-recommended search technologies should the architect evaluate? (Choose 2)

    • A. B2C Commerce native Einstein Search (built-in)(correct)
    • B. Salesforce Commerce Cloud Einstein Search with AI-based personalised ranking(correct)
    • C. Solr-based search via a custom B2C Commerce cartridge pointing to a self-hosted Solr cluster
    • D. Einstein Product Recommendations with a custom search index overlay

    Explanation: B2C Commerce has a native built-in search engine (internally powered by a Solr-based stack) that supports faceted search and basic merchandising rules. Salesforce also offers Commerce Cloud Einstein Search as an AI-powered overlay that adds personalised ranking, AI-driven sort, and advanced merchandising. For a 2-million-product catalog with personalisation requirements, evaluating both the native search capability and Einstein Search is the recommended architect approach.

  9. 9. A B2C Commerce architect is defining the data residency strategy for a European retailer subject to GDPR. Customer PII stored in B2C Commerce must remain in the EU. What must the architect verify?

    • A. That the B2C Commerce realm is provisioned in an EU data centre (e.g., EMEA point of delivery)(correct)
    • B. That GDPR compliance is enforced via a custom cartridge that encrypts PII fields before storage
    • C. That all B2C Commerce realms are EU-resident by default
    • D. That Salesforce Shield Platform Encryption is enabled on the B2C Commerce instance

    Explanation: B2C Commerce is provisioned in geographically specific Points of Delivery (PoDs). For GDPR compliance the architect must ensure the realm is provisioned in an EU PoD (e.g., eu01, eu02). Salesforce Shield is for the core Salesforce Platform, not B2C Commerce. Custom encryption cartridges are not a substitute for data residency at the infrastructure level.

  10. 10. A B2C Commerce architect is reviewing the SFRA middleware pipeline for the cart route. A developer has used server.replace() to override the cart route handler. What is the impact of this choice versus using server.append()?

    • A. server.replace() removes all previous middleware steps and route handlers; server.append() adds a step after existing handlers(correct)
    • B. server.replace() and server.append() are identical in behaviour for route handlers
    • C. server.replace() is used for ISML overrides; server.append() is used for controller overrides
    • D. server.replace() must be called before the route is registered; server.append() can be called at any time

    Explanation: In SFRA's server module, server.replace() completely replaces the existing route chain — removing all middleware and logic from previous cartridges for that route. server.append() adds a new middleware function after all existing functions in the chain. Architects must choose replace() when prior logic should not run (e.g., replacing broken upstream logic) and append() when extending without removing existing functionality.

  11. 11. A merchandiser needs to display a 'Summer Sale' banner on the homepage only between July 1st and August 31st, targeting customers in the UK locale. Which B2C Commerce feature should an architect recommend?

    • A. A global content slot with a content asset scheduled via a Campaign → Experience → Promotion → Schedule
    • B. A global content slot scheduled via a Campaign → Experience → Schedule, with a locale qualifier(correct)
    • C. A custom ISML template condition checking the current date and locale
    • D. A Page Designer page variant targeting the en-GB locale with date scheduling

    Explanation: B2C Commerce's content slot scheduling is controlled via the Campaign → Experience → Schedule chain. A Campaign holds Experiences that can target specific customer groups, locales, and date ranges. A global content slot on the homepage can display different content per locale and date range using Experience qualifiers. This is the merchandising-team-managed, code-free approach.

  12. 12. A B2C Commerce implementation uses the Data-Driven Orchestration (DDO) pattern. What is the purpose of the DDO layer (window.pageContext) in SFRA?

    • A. It provides server-side caching instructions to the B2C Commerce cache layer
    • B. It exposes page-level data (product, category, search context) as a structured JavaScript object consumed by client-side scripts and analytics tags(correct)
    • C. It is a mapping layer that routes server requests to the correct cartridge controller
    • D. It stores the user's session data for personalisation decisions

    Explanation: window.pageContext (DDO) is a structured JavaScript object injected into the page HTML by server-side ISML. It exposes page type, product ID, category, search terms, and other structured data for client-side analytics (e.g., Google Analytics, Adobe Analytics) and marketing tag managers. This decouples analytics tag implementation from server-side data access.

  13. 13. A B2C Commerce architect discovers that a third-party personalisation cartridge is causing checkout conversion issues. The cartridge modifies the order pipeline and wraps the CreateBasket script call. The architect needs to remove the cartridge's intervention on the checkout pipeline without removing the cartridge entirely. What is the most precise fix?

    • A. Move the personalisation cartridge after app_storefront_base in the cartridge path so it cannot intercept checkout
    • B. Use server.replace() in a custom cartridge to override the affected checkout route, reimplementing the original logic without calling the personalisation cartridge's module(correct)
    • C. Disable the personalisation cartridge in Business Manager Site Preferences
    • D. Remove the personalisation cartridge from the cartridge path, deploy, and retest all personalisation features

    Explanation: The most surgical fix is a custom cartridge that uses server.replace() on the affected checkout route to bypass the personalisation cartridge's middleware. The replacement route reimplements the checkout logic using module.superModule from app_storefront_base directly. This isolates the fix to the problematic route without removing the personalisation cartridge from other pages where it works correctly.

  14. 14. An architect needs to implement CSRF protection for a custom AJAX endpoint in an SFRA cartridge. Which two steps are required? (Choose 2)

    • A. Include a CSRF token in the AJAX request using the csrfProtection.generateToken() method rendered into the page(correct)
    • B. Validate the token server-side using the csrfProtection.validateRequest() method in the route middleware(correct)
    • C. Set the Content-Type header to 'application/json' to automatically enable CSRF protection
    • D. Enable CSRF protection in Business Manager Site Preferences for the affected site

    Explanation: SFRA CSRF protection requires: (1) generate a CSRF token server-side using csrfProtection.generateToken() and embed it in the page (in an ISML template or JSON response); (2) include the token in all AJAX POST requests (typically as a request header or body parameter); (3) validate the token server-side in the route using csrfProtection.validateRequest(). Setting Content-Type does not trigger CSRF protection, and there is no Business Manager Site Preference for CSRF.

  15. 15. A B2C Commerce architect is reviewing a custom ServiceRegistry call in a cartridge. The developer has hardcoded a 5,000ms timeout and set maxConnections=1. What architecture risk does this create?

    • A. A single slow external API response can block the only available connection, causing queued requests to time out and degrade the entire storefront(correct)
    • B. The ServiceRegistry does not support custom timeouts — only the default 3,000ms is applied
    • C. Setting maxConnections=1 triggers a B2C Commerce circuit breaker that disables the service automatically
    • D. A 5,000ms timeout is within the B2C Commerce SLA and does not require remediation

    Explanation: ServiceRegistry maxConnections limits the concurrent connections to an external service. maxConnections=1 means only one request can be in-flight at a time — any additional requests queue behind it. Combined with a 5,000ms timeout, a slow external API response holds the connection for 5 seconds, causing all queued requests to wait or fail. Architects should set maxConnections to match the external service's capacity and keep timeouts as short as the SLA allows.

  16. 16. A B2C Commerce site is being migrated from a legacy platform. The legacy site has 500,000 product URLs that must continue to resolve after migration. An architect must preserve SEO equity. What is the most scalable approach?

    • A. Create 500,000 redirect rules in Business Manager URL Rules
    • B. Implement a B2C Commerce pipeline custom endpoint that reads a mapping table from Custom Objects and issues 301 redirects for legacy URLs at the storefront layer
    • C. Configure 301 redirects at the CDN or load balancer level using a URL mapping file, handling redirects before they reach B2C Commerce(correct)
    • D. Add a Sitemaps XML file listing all old URLs and submit to Google Search Console to force re-indexing

    Explanation: 500,000 URL redirect rules in Business Manager would be operationally unmanageable and would add latency on every request. The most scalable approach is to handle redirects at the CDN or load balancer tier (before requests reach B2C Commerce) using a URL mapping file loaded into the CDN's edge logic. This offloads the processing from the application tier and leverages CDN caching and global distribution for near-zero latency redirects.

  17. 17. A B2C Commerce site must display prices in the customer's local currency. The customer's billing address is in Germany (EUR), but they are browsing from a UK IP address. Which B2C Commerce mechanism determines the display currency?

    • A. The IP geolocation of the user's request automatically sets the session currency
    • B. The site's configured allowed currencies list, combined with the locale resolved from the URL or session, determines the active currency(correct)
    • C. The currency on the customer's registered billing address always overrides the site currency
    • D. B2C Commerce uses Salesforce's exchange rate table to dynamically convert all prices at runtime

    Explanation: B2C Commerce resolves currency based on the site's configured allowed currencies and the active locale. The locale is determined by the site URL (e.g., /en-GB/ vs /de-DE/) or session settings. The customer's billing address currency does not override the session currency — currency is a site-level and session-level configuration. Architects must ensure the site's price books contain entries for each allowed currency.

  18. 18. A B2C Commerce architect is configuring a multi-locale site for French (fr-FR) and English (en-US). Product descriptions need to be stored in both languages. How does B2C Commerce manage locale-specific product content?

    • A. Create separate Product2 records for each locale, linked by a shared product ID
    • B. Store locale-specific attribute values (name, description, etc.) on the same product record using B2C Commerce's localisation framework, which stores one value per locale per attribute(correct)
    • C. Use a CMS connected to B2C Commerce to serve locale-specific product content
    • D. Use custom attributes with a locale suffix (e.g., name_fr_FR, name_en_US) and display the correct attribute based on session locale

    Explanation: B2C Commerce has a built-in localisation framework where localizable product attributes (like name and description) store one value per locale. When a customer browses in fr-FR, B2C Commerce automatically returns the fr-FR attribute value. Architects use the import/export framework (XML with locale attribute tags) to load localised content. Custom locale-suffixed attributes are a workaround that bypasses the framework and creates maintenance complexity.

  19. 19. A B2C Commerce architect is designing the tax strategy for a multi-country deployment. Different countries require different tax display rules: some show tax-inclusive prices, others show tax-exclusive prices. Which two configurations must the architect set per site? (Choose 2)

    • A. Tax Basis — set to 'Net' (exclusive) or 'Gross' (inclusive) per site in Business Manager(correct)
    • B. Tax Class — assign the appropriate jurisdiction-based tax class to products and categories per site(correct)
    • C. Tax Rate Table — configure jurisdiction tax rates in the TaxTable XML and import per site
    • D. Set the session.taxClass variable in a custom controller to override the site default

    Explanation: Tax display (inclusive vs exclusive) is controlled by the Tax Basis setting (Net/Gross) configured per site in Business Manager. Tax Class determines which tax rate table applies to a product based on its category and the customer's jurisdiction. Both must be correctly configured per site for accurate multi-country tax display. TaxTable XML contains the rates but is imported globally, not per-site — per-site differentiation is achieved via Tax Class assignments.

  20. 20. A retailer wants to build a headless B2C Commerce implementation where a React SPA serves as the storefront front-end. Which Salesforce-recommended API should the front-end use to access B2C Commerce product, cart, and checkout functionality?

    • A. OCAPI (Open Commerce API) data and shop resources
    • B. Salesforce Commerce API (SCAPI) — the modern REST APIs including Shopper APIs(correct)
    • C. B2C Commerce SOAP API via a custom Node.js proxy
    • D. Direct ISML rendering with JSON output mode

    Explanation: Salesforce Commerce API (SCAPI) is the modern, supported API for headless B2C Commerce implementations. It includes Shopper APIs (products, baskets, orders, customers) optimised for client-side consumption, with OAuth 2.0 SLAS authentication. OCAPI is the older API and is being replaced by SCAPI. New headless implementations should use SCAPI.

  21. 21. A B2C Commerce architect is designing a composable storefront using the Salesforce PWA Kit. Which authentication flow must the architect configure for shoppers to access personalised SCAPI Shopper APIs?

    • A. OAuth 2.0 Client Credentials flow using a trusted server-side client ID and secret
    • B. Shopper Login and API Access Service (SLAS) — using OAuth 2.0 PKCE for public clients or client credentials for trusted agents(correct)
    • C. API Key authentication passed in a custom HTTP header per SCAPI request
    • D. OCAPI JWT tokens obtained from the /customers/auth endpoint

    Explanation: SLAS (Shopper Login and API Access Service) is the required authentication system for SCAPI Shopper APIs. For browser-based storefronts (public clients), SLAS uses OAuth 2.0 with PKCE. For trusted server-side contexts (e.g., a Node.js BFF), SLAS uses client credentials. SLAS manages guest and registered shopper sessions, PKCE tokens, and token refresh. OCAPI JWT tokens are not used with SCAPI.

  22. 22. A B2C Commerce architect is evaluating a request to render product pages server-side (SSR) in a PWA Kit implementation for SEO. What must the architect configure to ensure SSR works with authenticated SCAPI calls on the server?

    • A. Configure SLAS with a trusted server-side client ID and secret so the SSR Node.js server can obtain shopper tokens without exposing credentials to the browser(correct)
    • B. Use the guest shopper token obtained via PKCE in the browser and pass it to the SSR server via a cookie
    • C. Disable SLAS authentication for SSR routes and allow unauthenticated SCAPI access for product data
    • D. Deploy a B2C Commerce ISML cartridge to serve product data to the SSR server via a custom REST endpoint

    Explanation: For SSR in PWA Kit, the Node.js server-side renderer must authenticate with SCAPI on behalf of the shopper without exposing client secrets to the browser. SLAS supports a Private Client (trusted agent) configuration where the server holds the client_id and client_secret and uses the client credentials + token exchange flow to obtain shopper-context tokens. This is the secure SSR authentication pattern documented by Salesforce for PWA Kit.

  23. 23. A retailer is adopting a composable commerce approach and wants to replace the B2C Commerce native search with a best-of-breed third-party search engine (e.g., Algolia). Which two integration touchpoints must the architect address? (Choose 2)

    • A. Product catalog indexing — export B2C Commerce product data to the third-party search index via a custom feed job or SCAPI catalog export(correct)
    • B. Search query routing — configure the PWA Kit or headless front-end to call the third-party search API instead of SCAPI search endpoints for search and faceting(correct)
    • C. Disable B2C Commerce native search in Business Manager to prevent index conflicts
    • D. Configure B2C Commerce to use the third-party search engine as a search provider via a search cartridge

    Explanation: Replacing native search with a third-party engine requires two integrations: (1) a data pipeline to export B2C Commerce catalog data (products, attributes, inventory, pricing) to the third-party search index — typically via a scheduled B2C Commerce job using OCAPI/SCAPI catalog export or a custom feed; (2) re-routing search queries in the front-end (PWA Kit) to call the third-party search API for results and facets rather than SCAPI search. The native B2C Commerce index can remain enabled without conflict, as it is simply not called.

  24. 24. A B2C Commerce store uses Salesforce Order Management (OMS) for post-purchase fulfillment. An architect must design how orders placed in B2C Commerce are passed to OMS. What is the correct integration approach?

    • A. Configure B2C Commerce to write completed orders directly to the Salesforce Platform Order object via a connected app
    • B. Use the B2C Commerce Order export job to publish completed orders to a Platform Event, which triggers an OMS Flow to create the OrderSummary
    • C. B2C Commerce's SCAPI Checkout automatically creates an OMS OrderSummary when an order is placed
    • D. Use B2C Commerce's Mule Connector to send order data to MuleSoft, which transforms and posts to the OMS /commerce/orders/actions/create endpoint(correct)

    Explanation: B2C Commerce does not natively write to Salesforce OMS. The recommended integration pattern uses middleware (MuleSoft, the Salesforce B2C Commerce Connector, or a custom integration) that listens for completed orders from B2C Commerce (via a webhook, Platform Event, or export job) and posts the order payload to the OMS /commerce/orders/actions/create REST endpoint. The MuleSoft B2C Commerce Connector is the Salesforce-recommended pre-built integration asset for this scenario.

  25. 25. A customer places an order on a B2C Commerce storefront and receives a confirmation email. Later, OMS cancels one item because it is out of stock. The customer expects to receive an updated order notification showing the cancellation and revised total. How should an architect design this notification flow?

    • A. Configure OMS to write the cancellation back to B2C Commerce customer order history, which then sends the notification
    • B. Use an OMS orchestration Flow triggered by the OrderItemSummary cancellation to call an external email service (or Salesforce Marketing Cloud) with the revised order data(correct)
    • C. Poll the OMS OrderItemSummary status from B2C Commerce every 15 minutes and send email when status = Cancelled
    • D. Enable the B2C Commerce order notification email template for cancellations in Business Manager

    Explanation: Post-purchase transactional notifications (cancellation, shipment updates) are owned by OMS, not B2C Commerce. The OMS orchestration Flow is the right place to trigger cancellation notifications — using a record-triggered Flow on OrderItemSummary (when status changes to Cancelled) to call Salesforce Marketing Cloud via the Marketing Cloud API action, or an external email service via External Services. This keeps the notification logic close to the event source and avoids polling.