Customize the chat widget

Simple customizing

Open the widget by clicking on a button

<!-- Custom button anywhere on the page -->
<button onclick="BrevoConversations('openChat', true)">Chat with us</button>

Or you can create a link with the address #brevoConversationsExpanded:

<!-- Link anywhere on the page -->
<a href="#brevoConversationsExpanded">Chat with us</a>

Also, you can use any valid CSS selector as the customWidgetButton to assign the chat button behavior to the element of your choice (this will also hide the default chat button). The first step is to place the following snippet before the main widget code:

<script>
    window.BrevoConversationsSetup = {
        customWidgetButton: '.custom-chat-button'
};
</script>

<!-- Brevo Conversations widget code -->

Then add this selector to any element on the page:

<!-- Custom button anywhere on the page -->
<button class="custom-chat-button">Chat with us</button>

Change the widget’s width and height

Specify chatWidth and chatHeight (in pixels) before the widget code:

<script>
    window.BrevoConversationsSetup = {
        chatWidth: 400,
        chatHeight: 550
    };
</script>

<!-- Brevo Conversations widget code -->

Change the widget’s z-index

Use the zIndex setting to update the default z-index (set to 9999):

<script>
window.BrevoConversationsSetup = {
    zIndex: 10
};
</script>

<!-- Brevo Conversations widget code -->

See also the setZIndex method.

Change the chat button colors

Specify the colors before the widget code:

<script>
    window.BrevoConversationsSetup = {
        colors: {
            buttonText: '#f0f0f0', /* chat button text color */
            buttonBg: '#565656'    /* chat button background color */
        }
    };
</script>

<!-- Brevo Conversations widget code -->

Use a color picker to generate hex color codes.

Change the chat button position based on the screen width

<script>
window.BrevoConversationsSetup = {
    buttonPosition: window.innerWidth < 1024 ? /* width threshold */
        'bl' : /* chat button position on small screens */
        'br'  /* chat button position on big screens */
};
</script>

<!-- Brevo Conversations widget code -->

Use the following codes to set the chat button position:

  • 'bl' – at the bottom of the screen, on the left
  • 'bc' – at the bottom of the screen, in the middle
  • 'br' – at the bottom of the screen, on the right
  • 'lt' – on the left side of the screen, at the top
  • 'lm' – on the left side of the screen, in the middle
  • 'lb' – on the left side of the screen, at the bottom
  • 'rt' – on the right side of the screen, at the top
  • 'rm' – on the right side of the screen, in the middle
  • 'rb' – on the right side of the screen, at the bottom

📘

On mobile devices, the “tab” button will always be positioned at the bottom on the screen. The “round” button will have the same position on both desktop and mobile devices.

Embed the widget into a block

Specify id of the block you want to embed the chat widget into before the widget code:

<script>
window.BrevoConversationsSetup = {
    mode: 'frame',
    /* id of the block you want to embed chat into */
    injectTo: 'conversations-wrapper'
};
</script>

<!-- Brevo Conversations widget code -->

injectTo also accepts direct links to HTML nodes and array-like node collections (including NodeLists and jQuery collections). See injectTo description.

Place the block anywhere on the page:

<div id="conversations-wrapper"></div>

The only thing left is to set an appropriate block size, e.g.

<div id="conversations-wrapper" style="width: 100%; height: 500px;"></div>

Conversations will occupy the whole block.

Disable Conversations on mobile devices

Insert this code before the widget code:

<script>
window.BrevoConversationsSetup = {
    disabledOnMobile: true
};
</script>

<!-- Brevo Conversations widget code -->

Or look for “Mobile button” option in your widget settings and uncheck it.

Identifying existing users

Passing user details to Conversations

Use the updateIntegrationData method to update the visitor's details in Conversation's right pane. Use null to remove properties.

/* Anywhere after Brevo Conversations widget code */
BrevoConversations('updateIntegrationData', {
    email: '[email protected]', /* e-mail changed */
    firstName: 'John', /* first name changed */
    lastName: 'Doe', /* last name changed */
    phone: null, /* phone number removed */
    notes: 'Looking for courage...', /* notes property created */

    /* any number of custom properties */
    'trip wish list': 'Going to Oz with friends'
});

If custom properties set in updateIntegrationData match existing contact attributes, they will be synced in your Contacts database. If not, they will be available in Conversations only.

📘

Any tech-savvy person can change the data identifying them sent to Conversations using JS API. Therefore, any data sent to Conversations using JS API must be considered as auxiliary information, not as a method of unambiguous user identification.

Binding conversations to user accounts

Conversations can recognize logged-in users regardless of the device or browser they use, so that a single conversation thread will be maintained. Also, if the user logs out and another logs in on the same device, the two different conversation threads will be kept separated.

To bind the widget to user accounts on your site:

  1. Generate a unique random string for each user and save it to your database.

  2. When the user is logged in, specify their string before the widget code like this:

    <script>
    window.BrevoConversationsSetup = {
        /* current user’s generated string */
        visitorId: 'kZMvWhf8npAu3H6qd57w2Hv6nh6rnxvg'
    };
    </script>
    
    <!-- Brevo Conversations widget code -->
    

❗️

visitorId must be unique and secret (i.e. not available to other users) as someone might use it to get access to a private conversation. It’s best to use randomly generated string. Do not use publicly known data such as user’s ID, name, email, etc.

Translating the widget

You can choose the widget language from Conversations’ settings and use Javascript API for more granular control (see language setting).

If the desired language is not supported or you wish to change some of the strings of an existing language, you can override one of the existing languages with your set of strings.

Note, that adding unsupported languages as new properties to the locale object ("fi", "sv", "pl" etc.) is not possible.

Here’s our current locale file:
locale.json

Let’s say you want to change chat input placeholder text. Here’s how you can do it:

<script>
window.BrevoConversationsSetup = {
    locale: {
        chat: {
            input: {
                placeholder: 'Meddelande...'
            }
        }
    }
};
</script>

<!-- Brevo Conversations widget code -->

To change more strings, just add all of them to the locale property of BrevoConversationsSetup (adhere to the structure of the original locale file). If the language code key is not specified, phrases will be changed in all language versions.

<script>
window.BrevoConversationsSetup = {
    locale: {
        chat: {
            input: {
                placeholder: {
                    en: 'Message...',
                    /* overriding only the French phrase with the Swedish translation */
                    fr: 'Meddelande...'
                }
            }
        },
        contactAttributes: {
            firstName: 'Namn',
            lastName: 'Efternamn',
        },
        messageTypes: {
            joinedFirst: 'ansluten,
            joined: '{{#username}} anslöt',
            agentsOffline: 'Agents är offline'
        }
    }
};
</script>

<!-- Brevo Conversations widget code -->

You can change as many strings as you want. Bear in mind that strings with keys starting with _ are protected from changing.

You can also change the locale dynamically using setLocale method:

/* Anywhere after Brevo Conversations widget code */

BrevoConversations('setLocale', {
    chat: {
        input: {
            placeholder: 'Meddelande...'
        }
    }
});