Skip to main content

Rush Production

This document covers the rush production timeline logic for Made-to-Order (MTO) products that offer expedited delivery.

Overviewโ€‹

Rush Production is an optional upgrade that allows customers to receive their made-to-order items faster than standard production. Customers pay a rush fee to expedite their order.

Metafieldsโ€‹

custom.rush_production_days (Product Level)โ€‹

A range of business days for rush production delivery, stored as a string (e.g., "3-6"). This is displayed as either days or weeks depending on site settings.

Metafield ValueBehaviorExample Display
Empty/undefinedFalls back to Builder site settings default (5-15 days, or 3-6 for suits)5-15 days
Range string (e.g., "3-6")Uses product-specific rush timeline3-6 days

custom.rush_fee (Product Level)โ€‹

Reference to a product variant that contains the rush fee price. When set to $0, rush production becomes free and standard production is hidden.

Timeline Displayโ€‹

Rush production timeline is displayed differently based on Builder.io site settings:

When productionWeeks is set (non-suits)โ€‹

Display: "{productionWeeks} weeks"
Example: "3 weeks"

When productionWeeks is not set or for suitsโ€‹

Display: "{rushProductionDays} days"
Example: "3-6 days"

Rush Fee Logicโ€‹

Standard Rush Feeโ€‹

  • Rush option shows +${rushFeePrice} (e.g., "+$19")
  • Both Standard and Rush options are available

Free Rush Fee ($0)โ€‹

When the rush fee is $0:

  • Rush option shows the price crossed out with "$0" (e.g., "+$19 $0")
  • Standard production option is hidden
  • Only Rush production is available to select

Availability Rulesโ€‹

Rush production availability depends on inventory:

// Rush is available when at least one rush variant has inventory
const rushAvailable = rushVariants.some(variant => variant.availableForSale);

// When all options selected, check specific rush variant
const specificRushVariant = findMatchingRushVariant(selectedOptions);
const rushAvailable = specificRushVariant?.availableForSale;

Standard Only Modeโ€‹

When no rush variants are available (standardOnly = true):

  • Rush option is visually disabled with diagonal line
  • Customer can only select Standard Production

Cart Attributesโ€‹

When adding rush production items to cart:

{
key: "_READY_TO_SHIP",
value: "Expected to arrive in ~{productionWeeks} weeks"
// or: "Expected to arrive in ~{rushProductionDays} business days"
}

{
key: "_RUSH_FEE_AMOUNT",
value: "{rushFeePrice}" // e.g., "19"
}

Suits-Specific Behaviorโ€‹

Suits use a separate production timeline configuration:

  • Uses siteSettings.suitsProducts.productionDays as the default
  • Always displays in days (not weeks)
  • Product types in SUIT_PRODUCTION_GROUP are treated as suits

Resolution Logicโ€‹

Rush production days are resolved in this order:

  1. If product has rush_production_days metafield โ†’ use product value
  2. If product is a suit โ†’ use siteSettings.suitsProducts.productionDays
  3. Otherwise โ†’ use siteSettings.dualSale.productionDays

Hydrogen Storefrontโ€‹

  • app/components/EstimatedArrivalOption/estimatedArrivalOption.component.tsx - Radio option display
  • app/components/EstimatedArrivalOptionGroup/utils.ts - Availability logic
  • app/lib/cart.ts - Cart attribute generation (prepareReadyToShipProperty, prepareRushFeeAmountProperty)
  • app/graphql/storefront/ProductQuery.ts - GraphQL query for metafields

Builder.io Site Settingsโ€‹

  • siteSettings.dualSale.productionDays - Default rush production days (default: 5-15)
  • siteSettings.dualSale.productionWeeks - Rush production in weeks (optional, no default). When set, rush timeline displays in weeks instead of days.
  • siteSettings.suitsProducts.productionDays - Suits-specific production days (default: 3-6)