Skip to content

Flow Name: Zero Dollar Checkout

Last Updated: 2025-10-22 Source Code: Zero_Dollar_Checkout.flow-meta.xml

API Name: Zero_Dollar_Checkout Status: Active Type: Custom Trigger: Auto-Launched Flow (invoked from external systems or other flows)

Business Purpose

This flow processes zero-dollar orders (free products, promotional offers, membership benefits) through the complete Salesforce Commerce checkout pipeline without requiring payment processing. It handles cart conversion to order, activation, and order summary creation for $0 value transactions.

Process Flow

1. Cart Data Retrieval

  • Retrieves WebCart details using the provided cartId input parameter
  • Gets CartDeliveryGroup to retrieve delivery information for the cart

2. Cart Address Update

  • Synchronizes billing address from delivery group to cart:
  • BillingCity from DeliverToCity
  • BillingCountryCode from DeliverToCountryCode
  • BillingPostalCode from BillingPostalCode (WebCart)
  • BillingStateCode from DeliverToStateCode
  • BillingStreet from BillingStreet (WebCart)

3. Checkout Session Management (Sequential State Progression)

Executes Salesforce Commerce actions in proper sequence: - checkoutSessionAction - Initializes the checkout session - updateCheckoutSessionStateAction - Updates state to "Cart To Order" - cartToOrderAction - Converts cart to order - updateCheckoutSessionStateAction - Updates state to "Activate Order" - activateOrderAction - Activates order with Status="Activated" and OrderLifeCycleType="MANAGED" - updateCheckoutSessionStateAction - Updates state to "Complete"

4. Order Summary Creation

  • Retrieves CartCheckoutSession to get the created OrderId
  • Retrieves OrderSummary by OriginalOrderId
  • Assigns OrderNumber to output variable for reference
📊 Click to view Process Flow Diagram
flowchart TD
    Start([Start: Auto-Launched<br/>with cartId]) --> GetCart[Get WebCart<br/>and DeliveryGroup]

    GetCart --> UpdateAddr[Update Cart<br/>Billing Address]
    UpdateAddr --> InitSession[Initialize<br/>Checkout Session]

    InitSession --> StateCartOrder[Update State:<br/>Cart To Order]
    StateCartOrder --> ConvertCart[Convert Cart<br/>to Order]

    ConvertCart --> StateActivate[Update State:<br/>Activate Order]
    StateActivate --> ActivateOrder[Activate Order<br/>Status=Activated<br/>Lifecycle=Managed]

    ActivateOrder --> StateComplete[Update State:<br/>Complete]
    StateComplete --> GetSession[Get Checkout Session<br/>with OrderId]

    GetSession --> GetSummary[Get OrderSummary<br/>by OriginalOrderId]
    GetSummary --> ReturnNumber[Return OrderSummary<br/>Number]

    ReturnNumber --> End([End])

    style Start fill:#e1f5ff
    style GetCart fill:#f0e1ff
    style UpdateAddr fill:#ffe1e1
    style InitSession fill:#ffe1e1
    style StateCartOrder fill:#e1ffe1
    style ConvertCart fill:#ffe1e1
    style StateActivate fill:#e1ffe1
    style ActivateOrder fill:#ffe1e1
    style StateComplete fill:#e1ffe1
    style GetSession fill:#f0e1ff
    style GetSummary fill:#f0e1ff
    style ReturnNumber fill:#e1ffe1
    style End fill:#e1f5ff

Key Business Rules

  • Input required: cartId (String)
  • Output provided: orderSummaryNumber (String)
  • Bypasses all payment processing steps
  • Directly activates orders without payment validation
  • Suitable for: Free products, samples, promotional items, membership benefits, lead magnets
  • Follows proper Salesforce Commerce checkout state progression
  • Hard-coded OrderLifeCycleType: "MANAGED"
  • Address synchronization ensures billing address populated from delivery address
  • No validation that cart total is actually $0.00

Dependencies

  • Salesforce Commerce Cloud or B2C Commerce license
  • WebCart and CartDeliveryGroup objects properly configured
  • CartCheckoutSession object and related configurations
  • Order Management setup for order activation
  • Salesforce Commerce actions: checkoutSessionAction, updateCheckoutSessionStateAction, cartToOrderAction, activateOrderAction

Changes

No specific pull requests or changes noted in the flow metadata.

Pre-Go-Live Concerns

CRITICAL - Fix Before Go-Live

  • Add validation to ensure cart total is actually $0.00 before processing (prevent bypassing payment for paid orders)
  • Implement comprehensive error handling for all commerce actions with fault connectors
  • Add validation for required cart data (delivery address, cart items) before processing

HIGH - Address Soon After Go-Live

  • Implement rollback logic for partial failures across the multi-step checkout process
  • Add logging for debugging failed zero-dollar checkouts
  • Add transaction boundary management to ensure atomicity
  • Implement customer eligibility checks if zero-dollar products are restricted

MEDIUM - Future Enhancement

  • Add validation that products in cart are eligible for zero-dollar checkout
  • Implement configuration for OrderLifeCycleType instead of hard-coding
  • Add support for mixed carts (zero-dollar and regular items separation)
  • Create monitoring dashboard for zero-dollar checkout volume
  • Add business rules for maximum zero-dollar orders per customer

LOW - Monitor

  • Track success/failure rates of zero-dollar checkouts
  • Monitor for stuck checkout sessions
  • Alert on unusual volumes of zero-dollar orders
  • Verify cart total validations are working correctly
  • Monitor for carts with incorrect $0 totals

Maintenance Notes

  • Complexity: Medium - multi-step commerce process with state management
  • Auto-launched flow requires proper invocation from calling systems
  • No explicit error handling implemented (relies on Salesforce Commerce action fault handling)
  • Multiple commerce actions without explicit transaction management could lead to partial completions
  • Address data dependencies assume delivery address exists and is valid
  • Review quarterly to ensure zero-dollar checkout policies align with business requirements
  • Test thoroughly for all use cases: free products, promotions, membership benefits, campaigns
  • Coordinate with marketing and sales teams on zero-dollar product strategies