Skip to content

Smart Flows Methods

Overview

Smart Flows enables merchants to create dynamic, rule-based customer engagement experiences. Build automated flows that trigger popups, website banners, discounts, and product recommendations based on user behavior, cart state, and other conditions.

Key Features

  • Rule-based triggers - Show content based on cart value, user type, date ranges, and more
  • Multiple component types - Popups, website banners, redirects, Buy X Get Y offers
  • Session persistence - Track user interactions across page loads using IndexedDB
  • Link-based flows - Trigger flows via URL parameters for marketing campaigns
  • Preview mode - Test flows in the admin before going live

Quick Start

Smart Flows initializes automatically when configured in your Rebuy dashboard. For programmatic access:

// Check if Smart Flows is ready
if (Rebuy.SmartFlows.status === 'ready') {
  // Get all available flows
  const flows = Rebuy.SmartFlows.getFlows();
  console.log('Available flows:', flows);
}

// Listen for Smart Flows to be ready
document.addEventListener('rebuy:smartflows.ready', (event) => {
  console.log('Smart Flows initialized');
});

Load a Flow by Short Code

Flows can be loaded dynamically using their short code:

// Add a flow by its short code (useful for marketing links)
const flow = await Rebuy.SmartFlows.addFlowByCode('SUMMER2026');

if (flow) {
  console.log('Flow loaded:', flow.name);
  // Process the flow
  Rebuy.SmartFlows.processFlows();
}

Check Session Activity

Access user session data to understand engagement:

// Get session activity metrics
const activity = await Rebuy.SmartFlows.session.getSessionActivity();

console.log('Active time:', activity.activeTime, 'ms');
console.log('Is returning user:', activity.isReturningUser);

Methods Reference

Access the Smart Flows module via window.Rebuy.SmartFlows.

SmartFlows.initialized : boolean

Smart Flows module initialization flag

SmartFlows.session : SmartFlowSession

Smart Flow Session module for session persistence and state management

SmartFlows.status : SmartFlowsStatus

Smart Flows module status. Helps determine when flows are ready to be processed.

'initializing' | 'redirecting' | 'ready'

SmartFlows.addFlow(flow) ⇒ void

Add a new Smart Flow

Param Type Description
flow SmartFlow Smart Flow to add

SmartFlows.addFlowByCode(shortCode) ⇒ Promise<(SmartFlow|void)>

Add a new Smart Flow via shortCode

Param Type Description
shortCode string Smart Flow shortCode

SmartFlows.getActiveGlobalFlow() ⇒ SmartFlow | undefined

Get the currently active global flow

SmartFlows.getFlowById(flowId) ⇒ SmartFlow | undefined

Find a Smart Flow by ID

Param Type Description
flowId number Smart Flow ID

SmartFlows.getFlowByShortCode(shortCode) ⇒ SmartFlow | undefined

Find a Smart Flow by short code

Param Type Description
shortCode string Smart Flow shortCode

SmartFlows.getFlows() ⇒ Array<SmartFlow>

Get a list of available flows

NOTE: Useful for filtering or lookups by ID / shortCode

SmartFlows.getPreviewFlow() ⇒ SmartFlow | undefined

Get the flow currently being previewed

SmartFlows.goToModalPage(componentId, pageNumber) ⇒ boolean

Navigate to a specific page in a modal for a given component ID

Returns: boolean - True if successful, false otherwise

Param Type Description
componentId string The ID of the component containing the modal
pageNumber number The page number to navigate to (1-based)

SmartFlows.goToModalProduct(componentId, productId) ⇒ boolean

Navigate to a specific product page in a modal for a given component ID

Returns: boolean - True if successful, false otherwise

Param Type Description
componentId string The ID of the component containing the modal
productId string The product ID to navigate to

SmartFlows.handleLinkBasedFlow() ⇒ Promise<void>

Handle link-based Smart Flow initialization

SmartFlows.init(flows) ⇒ SmartFlowsModule

Smart Flow module initialization

Param Type Description
flows Array<SmartFlow> Array of Smart Flows to initialize

SmartFlows.processFlows() ⇒ void

Process all available Smart Flows

SmartFlows.removeFlow(flowId) ⇒ void

Removes a flow + cleans up associated component observers

Param Type Description
flowId number The ID of the flow to remove

SmartFlows.runComponent(component, flow) ⇒ void

Executes a specific Smart Flow component

Param Type Description
component SmartFlowComponent Execute a component in the Smart Flow tree
flow SmartFlow Smart Flow being ran

SmartFlows.runFlow(flow) ⇒ void

Run a given Smart Flow, traversing its tree and rendering the first components

Param Type Description
flow SmartFlow Smart Flow to run

SmartFlows.setFlows(flows) ⇒ void

Apply the Smart Flows to make available

Param Type Description
flows Array<SmartFlow> Array of Smart Flows

SmartFlows.sync() ⇒ void

Sync the active UI component state

See something that needs updating? Suggest an edit