website logo
Product FeedCommunity Forum
API Docs
Template JS
Headless SDK
Navigate through spaces
API Docs
Template JS
Headless SDK
⌘K
Introduction
Getting Started
Quickstart : Smart Search
Quickstart : Smart Category Merchandising
Quickstart : Smart Recommendations
Apps/Plug-ins
Guide
Structure
Configuration
JS Library
Versioning
Template Reference
Build UI
Custom Overrides
Recommendations Webhooks
Styling CSS
Analytics/Tracking
How To
Add Filters To URL
Add Pagination To URL
Add-To-Cart Function
Customer Groups
Infinite Scroll Results
Magento B2B MSI
Ratings / Reviews
SortBy Options
Docs powered by archbee 
6min

Customer Groups



To accommodate pricing and visibility per a designated Customer Group we will introduce two parameters to every API request made by Klevu Quick Search, SRLP and Category Pages:

  • priceFieldSuffix
  • visibilityGroupID

See : Custom Overrides for details on preparing for Klevu JS overriding

See : Klevu API Documentation for Customer Groups

Indexing

The customer group and pricing data must be supplied at the product level during catalog indexing.

XML FEED example

XML
|
            <group>
                <id>vip_customer_group</id>
                
                <sale_price>49.99 GBP</sale_price>

                <additional_currencies>
                    <additional_currency>
                        <sale_price>61.74 USD</sale_price>
                    </additional_currency>
                    <additional_currency>
                        <sale_price>6171 JPY</sale_price>
                    </additional_currency>
                </additional_currencies>
            </group>


See : XML FEED Example and Documentation for Customer Groups



API Reference

Parameter

Description

Format

priceFieldSuffix

Fetch prices specific to a particular group

{CURRENCY}-{GROUPID}

visibilityGroupID

Exclude all records which do not belong to the group

{GROUPID}

See : Klevu API Documentation for Customer Groups



Template JS Override

The desired currency and visibility are applied to all queries via overrides.

JavaScript
|
<script type="text/javascript">

// the currency and group of the currently logged in customer
    var klevu_currency = 'GBP';
    var klevu_loginCustomerGroup = 'vip_customer_group';

// Defer initialization (powerUp) of the Klevu components
    klevu({
         powerUp: {
            quick: false,
            landing: false,
            catnav: false
        }
    });

// OVERRIDE : QUICKSEARCH 
    klevu.coreEvent.build({
        name: "myQuicksearchOverride",
        fire: function () {
            if (klevu.getGlobalSetting("flags.setRemoteConfigQuick.build", false)) {
                return true;
            }
            return false;
        },
        maxCount: 150,
        delay: 100
    });

    klevu.coreEvent.attach("myQuicksearchOverride", {
        name: "attachToMyQuicksearchOverride",
        fire: function () {

            // override query
            klevu.search.quick.getScope().chains.request.control.addAfter("initRequest", {
                name: "modifyQuickQuery",
                fire: function (data, scope) {
                    klevu.search.modules.addCustomerGroupToQuery(data, scope);
                }
            });
            
            // power up
            klevu({
                powerUp: {
                    quick: true
                }
            });
        }
    });

// OVERRIDE : LANDING PAGE 
    klevu.coreEvent.build({
        name: "myLandingPageOverride",
        fire: function () {
            if (klevu.getGlobalSetting("flags.setRemoteConfigLanding.build", false)) {
                return true;
            }
            return false;
        },
        maxCount: 150,
        delay: 100
    });

    klevu.coreEvent.attach("myLandingPageOverride", {
        name: "attachToMyLandingPageOverride",
        fire: function () {

            // override query
            klevu.search.landing.getScope().chains.request.control.addAfter("initRequest", {
                name: "modifyLandingQuery",
                fire: function (data, scope) {
                    klevu.search.modules.addCustomerGroupToQuery(data, scope);
                }
            });

            // power up
            klevu({
                powerUp: {
                    landing: true
                }
            });
        }
    });

// OVERRIDE : CATEGORY PAGE
    klevu.coreEvent.build({
        name: "myCategoryPageOverride",
        fire: function () {
            if (klevu.getGlobalSetting("flags.setRemoteConfigCatnav.build", false)) {
                return true;
            }
            return false;
        },
        maxCount: 150,
        delay: 100
    });
    
    klevu.coreEvent.attach("myCategoryPageOverride", {
        name: "attachToMyCategoryPageOverride",
        fire: function () {

            // Override Query
            klevu.search.catnav.getScope().chains.request.control.addAfter("initRequest", {
                name: "modifyCatnavQuery",
                fire: function (data, scope) {
                    klevu.search.modules.addCustomerGroupToQuery(data, scope);
                }
            });

            // power up
            klevu({
                powerUp: {
                    catnav: true
                }
            });
        }
    });

    
// COMMON FUNCTION to append priceFieldSuffix and visibilityGroupID to every request
    (function (klevu) {
        klevu.extend(true, klevu.search.modules, {
            addCustomerGroupToQuery: function (data, scope) {
                klevu.each(data.request.current.recordQueries,function(key, query){

                    /* IMPORTANT FOR BIGCOMMERCE APP USERS ONLY 
                     * The login groupid will need an ajustment for the delimeter
                     * 
                     * klevu_loginCustomerGroup = klevu_loginCustomerGroup.replace("_", "--");
                     * 
                     */


                    // set group with currency
                    klevu.setObjectPath(
                        data,
                        "localOverrides.query." + query.id + ".settings.priceFieldSuffix",
                        klevu_currency + '-' + klevu_loginCustomerGroup
                    );


                    // set group catalog visibility
                    klevu.setObjectPath(
                        data,
                        "localOverrides.query." + query.id + ".settings.visibilityGroupID",
                        klevu_loginCustomerGroup
                    );
                });
            }
        });
    })(klevu);
</script>




Updated 03 Mar 2023
Did this page help you?
Yes
No
UP NEXT
Infinite Scroll Results
Docs powered by archbee 
TABLE OF CONTENTS
Indexing
API Reference
Template JS Override