Customer groups

This module adds customer groups, in which you can put customers.



  • Copy the module into the <thelia_root>/local/modules/ directory and make sure that the name of the module is CustomerGroup
  • Activate it in your Thelia administration panel


Add it in your main Thelia composer.json file

composer require thelia/customer-group-module:~0.1


Modules that use customer groups must define them in the customer-group.xml file in the module configuration directory. The groups will be created when the module is activated.

One the groups can be defined as the default group. All new customers will be automatically added to this group.

<?xml version="1.0" encoding="UTF-8" ?>
<customergroups xmlns="urn:thelia:module:customer-group">
    <customergroup code="customer">
        <descriptive locale="en_US">
            <description>Basic customer<description>
        <descriptive locale="fr_FR">
            <description>Client de base<description>

    <customergroup code="vip">
        <descriptive locale="en_US">
            <description>VIP customer !<description>
        <descriptive locale="fr_FR">
            <description>Client VIP !<description>



Events should be used to perform actions related to customer groups.

The CustomerGroup\Event\CustomerGroupEvents class contains event name constants for this module. Event classes are also in the CustomerGroup\Event namespace.

Add a customer to a group

$event = new AddCustomerToCustomerGroupEvent();



The customer_group.handler service provide functions to check if a customer belongs to a group. See the CustomerGroupHandler class for available methods.

Get handler (service)

$groupHandler = $container->get("customer_group.handler");

Get session customer's customerGroup info

// get customerGroup of the current customer (session)
// get customerGroup code of the current customer (session)

Check if a customer belongs to a group

// check a customer
$groupHandler->checkCustomerHasGroup($myCustomer, "vip");

// check the customer currently logged-in



This loop list customer groups.

Input arguments

Argument Description
id Id or list of customer group ids.
is_default List only the default group.
code Code or list of customer group codes.
order Order of the results.
lang Locale of the results.

The order can be one of these:

  • position (default)
  • position-reverse
  • id
  • id-reverse
  • code
  • code-reverse
  • title
  • title-reverse
  • is_default
  • is_default-reverse

Output variables

Variable Description
$CODE Group code.
$TITLE Group title in the selected locale.
$DESCRIPTION Group description in the selected locale.
$IS_DEFAULT Whether the group is the default group or not.
$POSITION Group position.
$LOCALE Locale of the results.


This group lists the associations between customers and customer groups.

Input arguments

Argument Description
customer Id or list of customer ids.
customer_group Id or list of customer group ids.

Output variables

Variable Description
$CUSTOMER_ID Id of the customer.
$CUSTOMER_GROUP_ID Id of the group the customer belongs to.


This module also adds group information to the customer loop and allows filtering the customers using groups.

Additional input arguments

Argument Description
customer_group_id Id or list of customer group ids.
customer_group_code Code or list of customer group codes.
customer_group_is_default List only customers in the default group.

Additional output variables

Variable Description
$CUSTOMER_GROUP_ID Id of the customer's group.
$CUSTOMER_GROUP_CODE Code of the customer's group.
$CUSTOMER_GROUP_DEFAULT Whether the customer's group is the default group.



This module provides a CustomerQuery class that extends the base Thelia query and provides methods to filter customers by group.

It can be used in replacement of the base CustomerQuery.

use CustomerGroup\Model\CustomerQuery as CustomerGroupCustomerQuery;

$customers = CustomerGroupCustomerQuery::create()

Or mixed in your own query class by using the static methods. These methods take a ModelCriteria query class and will act on it.

They assume that the customer table is already present in the query scope, so your query must for exemple extends CustomerQuery or make a join to the customer table.

use CustomerGroup\Model\CustomerQuery as CustomerGroupCustomerQuery;

// MyQuery extends CustomerQuery
// or MyQuery has a join to the customer table somewhere
$myQuery = MyQuery::create();

CustomerGroupCustomerQuery::addCustomerGroupFilter($myQuery, "myGroup");

Customer groups

With this module you will be able to create customer groups, in which you can put customers.

Author :

Say Hi & Get in Touch - +33(0)4 44 05 31 00

Thelia Network English
E-commerce solution

E-commerce software, useful to create and manage online stores, published under a free license. Discover our new version, based on many modern technologies !

Download Thelia

A team of experts at your service.


Over 7000 online stores powered by Thelia


Customize your Thelia.


Thelia editor