---
schema_version: "1"
id: 8070cfb307be4cd146ce5c83f2322ac68d9ab2d43ff2d8bfb10102be376c7af0
title: Using Dynamic Customer Groups for Active Merchandising in B2C Commerce
collection: admin
version: current
locale: en-us
portal_url: https://docs.salesforce.com/admin/current/en-us/cc/264-0-0/b2c_using_dynamic_customer_groups_for_active_merchandising.md
canonical_url: https://help.salesforce.com/s/articleView?id=cc.b2c_using_dynamic_customer_groups_for_active_merchandising.htm&release=264.0.0&type=5
source_site: help.salesforce.com
content_type: documentation
content_hash: 398fc3557aa099241d4be846cc63a293146837222a54e6437a56b91ac4e0ec38
description: Dynamic customer groups enable you to create customer segments for targeted campaigns, micro-sites, and product lines.
products:
  - Commerce
  - B2C Commerce
release: "264"
---
# Using Dynamic Customer Groups for Active Merchandising in B2C Commerce

Dynamic customer groups enable you to create customer segments for targeted campaigns, micro-sites, and product lines.

For example, customer groups can include specific geographies, gender or enterprise profiles such as loyalty or store shoppers. Present such groups with relevant content (for example, information on new product arrivals to customers who are brand conscious); or offer promotions based on previous purchases (for example, offer 10% off orders for first-time customers). Dynamic customer groups are based on data and metrics derived from customer profiles or session data, so that each customer group expands or contracts depending on which customers meet the criteria at any given time.

Updating Group Membership

Salesforce B2C Commerce updates group membership in the following situations:

- Upon customer visit: for dynamic groups, B2C Commerce updates the membership when a known customer returns to the storefront with a new session.
- Upon customer login: for dynamic groups, B2C Commerce updates the membership of the customer upon login.
- Upon customer logout: for dynamic groups, B2C Commerce updates the membership of the customer upon logout.
- Periodically during a customer's session: after B2C Commerce calculates a membership on login, it caches the membership internally during the customer's session. Cached memberships have a lifetime of 1 minute. After they expire, recalculation begins automatically, ensuring that memberships stay up to date during customer sessions.

Defining Included and Excluded Clauses

Dynamic [customer group membership rules](https://help.salesforce.com/s/articleView?id=cc.b2c_creating_a_dynamic_customer_group.htm&release=264.0.0&type=5 "A dynamic customer group is a group with changing membership. Membership is based on purchase history, profile, address, or active data. You can also base membership on membership in system and static customer groups. You can't base membership on dynamic customer groups.") enable you to define included and excluded clauses for individual conditions. Though similar to B2C Commerce's product promotion rules, they’re closer to what iTunes uses to define "Smart Playlists" and Adobe Lightroom uses to define Smart Collections.

## Example

A merchant wants to define the following dynamic customer group:

```
"Customers from the US from states Alaska, Florida, and Alabama, and from Canada from states British Columbia and Nova Scotia. Any customer must be 18 years or older."
```

They specify the following rules:

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small "><colgroup><col> <col> <col></colgroup><tbody><tr class=""><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;"><em>Include (Match All)</em></td><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">&nbsp;</td><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">&nbsp;</td></tr><tr class=""><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">Country</td><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">contains</td><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">United States, Canada</td></tr><tr class=""><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">State</td><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">contains</td><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">Alaska, Florida, Alabama, British Columbia, Nova Scotia</td></tr><tr class=""><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">Age</td><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">is greater than or equal</td><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">18</td></tr></tbody></table>

The following rule also works:

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small "><colgroup><col> <col> <col></colgroup><tbody><tr class=""><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;"><em>Include One (Match all)</em></td><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">&nbsp;</td><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">&nbsp;</td></tr><tr class=""><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">Country</td><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">is equal</td><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">United States</td></tr><tr class=""><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">State</td><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">State</td><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">Alaska, Florida, Alabama</td></tr><tr class=""><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;"><em>Include Two (Match all)</em></td><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">&nbsp;</td><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">&nbsp;</td></tr><tr class=""><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">Country</td><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">is equal</td><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">Canada</td></tr><tr class=""><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">State</td><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">State</td><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">British Columbia, Nova Scotia</td></tr><tr class=""><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;"><em>Exclude (Match all)</em></td><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">&nbsp;</td><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">&nbsp;</td></tr><tr class=""><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">Age</td><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">is less than</td><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">18</td></tr></tbody></table>

"Customers from the US. Not for customers younger than 18 or of unknown age."

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small "><colgroup><col> <col> <col></colgroup><tbody><tr class=""><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;"><em>Include (Match all)</em></td><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">&nbsp;</td><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">&nbsp;</td></tr><tr class=""><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">Country</td><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">is equal</td><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">United States</td></tr><tr class=""><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;"><em>Exclude (Match all)</em></td><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">&nbsp;</td><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">&nbsp;</td></tr><tr class=""><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">Age</td><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">is less than</td><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">18</td></tr><tr class=""><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">Age</td><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">doesn't exist</td><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">&nbsp;</td></tr></tbody></table>

Or, simply:

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small "><colgroup><col> <col> <col></colgroup><tbody><tr class=""><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;"><em>Include (Match All)</em></td><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">&nbsp;</td><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">&nbsp;</td></tr><tr class=""><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">Country</td><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">is equal</td><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">United States</td></tr><tr class=""><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">Age</td><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">is greater than or equal</td><td class="slds-cell-wrap" style="text-align:left;vertical-align:top;">18</td></tr></tbody></table>

## Remember Me vs. Customer Segmentation

Using customer segmentation, you can direct promotions and slots to a customer if they are in an unknown/anonymous group; but you can't collect data on them. Data can only be collected on logged in customers.

The _LastVisitTime_ timestamp is part of the _Remember me_ feature. Remember me and customer segmentation are two different features.

- If a customer checks the _Remember me_ checkbox in a storefront, B2C Commerce places an entry in the customer's cookie.
- When returning to the storefront, the customer must log in again on the My Account page. The email address and password fields are pre-filled on this page with information retained in the cookie. B2C Commerce updates the "lastVisitTime" timestamp, a record that tracks customer return behavior, with the current time.

B2C Commerce starts customer segmentation for this particular customer in the following situations:

- A new, unknown/anonymous customer enters the shop (for promotions and slotting only).
- Customer logs in with login and password.
- Customer returns to the storefront and the Remember me feature recognizes them as a known customer. A customer who is remembered is not automatically authenticated and must explicitly log in to access any personal information.
- Customer logs out.

## Staging

Dynamic customer groups are part of the staging process, like any other customer group. Because B2C Commerce calculates memberships in dynamic groups in real-time, they aren’t persistent and therefore not subject to replication.

## Related Links

[Dynamic Customer Group Rules](https://help.salesforce.com/s/articleView?id=cc.b2c_dynamic_customer_group_rules.htm&release=264.0.0&type=5 "A dynamic customer group has exactly one rule with one or more conditions. A condition is an individual line in the editor, for example, Company equals ‘Salesforce’.")

[Customer Segmentation via Geolocation](https://help.salesforce.com/s/articleView?id=cc.b2c_customer_segmentation_via_geolocation.htm&release=264.0.0&type=5 "Define customer segments of registered and unregistered customers based on geolocation for targeted campaigns, micro-sites, and product lines.")

#### See Also

- [Create a Dynamic Customer Group in B2C Commerce (Video)](https://salesforce.vidyard.com/watch/zwGd7j2pQzjTbdpkjTRDwW)