README
Widget Options
This object contains options for customizing the WhatsApp floating widget. It has six main properties: gdprStatus
, accounts
, timezone
, defaultAvatar
, urlSettings
and options
.
gdprStatus
This property is used to set the GDPR status of the user. It is currently not used in the script you provided, so it can be left empty.
Note: The field "gdprStatus" is optional and has a default value of empty. If you want to indicate GDPR compliance, set the value to "1".
accounts
This property is an array of WhatsApp accounts that will be displayed in the floating widget. Each account has the following properties:
daysOfWeekWorking
: Each day has the following properties:isWorkingOnDay
: whether the account is working on this day.workHours
: an array of objects that specify the start and end times for each working period on this day. Each object has the following properties:startTime
: the start time of the working period, inHH:mm
format.endTime
: the end time of the working period, inHH:mm
format.
// Example code
[{
"accountId": 1,
"accountName": "Dennis",
"avatar": "",
"number": "+14203030923",
"title": "Support",
"predefinedText": "Chat on WhatsApp [njwa_page_title] in page: [njwa_page_url]",
"willBeBackText": "I will be back in [njwa_time_work]",
"dayOffsText": "I will be back soon",
"isAlwaysAvailable": "OFF",
"daysOfWeekWorking": {
"sunday": {
"isWorkingOnDay": "OFF",
"workHours": [{
"startTime": "08:00",
"endTime": "17:30"
}]
},
"monday": {
"isWorkingOnDay": "ON",
"workHours": [{
"startTime": "08:00",
"endTime": "17:30"
}]
},
"tuesday": {
"isWorkingOnDay": "ON",
"workHours": [{
"startTime": "08:00",
"endTime": "17:30"
}]
},
"wednesday": {
"isWorkingOnDay": "ON",
"workHours": [{
"startTime": "08:00",
"endTime": "17:30"
}]
},
"thursday": {
"isWorkingOnDay": "OFF",
"workHours": [{
"startTime": "08:00",
"endTime": "17:30"
}]
},
"friday": {
"isWorkingOnDay": "OFF",
"workHours": [{
"startTime": "08:00",
"endTime": "17:30"
}]
},
"saturday": {
"isWorkingOnDay": "OFF",
"workHours": [{
"startTime": "08:00",
"endTime": "17:30"
}]
}
}
},
{
"accountId": 2,
"accountName": "Tommy",
"avatar": "",
"number": "+4302422121322",
"title": "Director",
"predefinedText": "We order [njwa_page_title] and [njwa_page_url]. Give me an advice?",
"willBeBackText": "I will be back in [njwa_time_work]",
"dayOffsText": "I will be back soon",
"isAlwaysAvailable": "ON",
"daysOfWeekWorking": {
"sunday": {
"isWorkingOnDay": "OFF",
"workHours": [{
"startTime": "08:00",
"endTime": "17:30"
}]
},
"monday": {
"isWorkingOnDay": "OFF",
"workHours": [{
"startTime": "08:00",
"endTime": "17:30"
}]
},
"tuesday": {
"isWorkingOnDay": "OFF",
"workHours": [{
"startTime": "08:00",
"endTime": "17:30"
}]
},
"wednesday": {
"isWorkingOnDay": "OFF",
"workHours": [{
"startTime": "08:00",
"endTime": "17:30"
}]
},
"thursday": {
"isWorkingOnDay": "OFF",
"workHours": [{
"startTime": "08:00",
"endTime": "17:30"
}]
},
"friday": {
"isWorkingOnDay": "OFF",
"workHours": [{
"startTime": "08:00",
"endTime": "17:30"
}]
},
"saturday": {
"isWorkingOnDay": "OFF",
"workHours": [{
"startTime": "08:00",
"endTime": "17:30"
}]
}
}
}
]
Notes:
"[njwa_time_work]" is the shortcode to display the time when he is offline.
"[njwa_page_title]" displays the page title of the current page he clicks on in the account.
"[njwa_page_url]" adds the current URL to the WhatsApp message.
options
This property is an object that contains various options for customizing the appearance and behavior of the widget. It has three sub-properties: display
, styles
, and analytics
.
display
This sub-property contains options related to when and where the widget is displayed. It has the following properties:
styles
This sub-property contains options related to the appearance of the widget. It has the following properties:
analytics
The analytics
field is an optional parameter that can be used to enable analytics tracking for the chat widget. This field contains two sub-fields, enabledGoogle
and enabledFacebook
, which can be set to either "ON"
or "OFF"
depending on whether you want to enable tracking for Google Analytics or Facebook Pixel respectively.
Note: that if both enabledGoogle
and enabledFacebook
are set to "OFF", no analytics tracking will be performed. Also, enabling tracking for these analytics services requires setting up accounts and configuring the tracking code appropriately.
timezone
timezone
The
timezone
field sets the default timezone for the widget, which is used to display the time of messages and events within the widget.In this case, the timezone is set to
+07:00
, which represents the time zone for Bangkok, Thailand.
defaultAvatar
defaultAvatar
The
defaultAvatar
field sets the default avatar image for users who do not have a profile picture.In this case, the default avatar is a SVG image of a green circle with a white phone icon in the center.
urlSettings
urlSettings
The
urlSettings
field sets various options related to how links within the widget should behave.
// Example code
{
options: {
"display": {
"showOnDesktop": "ON",
"showOnMobile": "ON",
"time_symbols": "h:m"
},
"styles": {
"title": "Start a Conversation",
"responseText": "The team typically replies in a <strong>few minutes</strong>.",
"description": "Hi! Click one of our member below to chat on <strong>WhatsApp</strong>",
"backgroundColor": "#2db742",
"textColor": "#fff",
"scrollHeight": "500",
"isShowScroll": "OFF",
"isShowResponseText": "OFF",
"isShowPoweredBy": "ON",
"btnLabel": "Need Help? <strong>Chat with us</strong>",
"btnLabelWidth": "156",
"btnPosition": "right",
"btnLeftDistance": "30",
"btnRightDistance": "30",
"btnBottomDistance": "30",
"isShowBtnLabel": "ON",
"isShowGDPR": "OFF",
"gdprContent": "Please accept our <a href=\"https://ninjateam.org/privacy-policy/\">privacy policy</a> first to start a conversation.",
"widgetType": "expandable"
},
"analytics": {
"enabledGoogle": "OFF",
"enabledFacebook": "OFF",
"enabledGoogleGA4": "OFF"
},
},
timezone: "+07:00",
defaultAvatar: `<svg width="48px" height="48px" class="nta-whatsapp-default-avatar" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<path style="fill:#EDEDED;" d="M0,512l35.31-128C12.359,344.276,0,300.138,0,254.234C0,114.759,114.759,0,255.117,0
S512,114.759,512,254.234S395.476,512,255.117,512c-44.138,0-86.51-14.124-124.469-35.31L0,512z"/>
<path style="fill:#55CD6C;" d="M137.71,430.786l7.945,4.414c32.662,20.303,70.621,32.662,110.345,32.662
c115.641,0,211.862-96.221,211.862-213.628S371.641,44.138,255.117,44.138S44.138,137.71,44.138,254.234
c0,40.607,11.476,80.331,32.662,113.876l5.297,7.945l-20.303,74.152L137.71,430.786z"/>
<path style="fill:#FEFEFE;" d="M187.145,135.945l-16.772-0.883c-5.297,0-10.593,1.766-14.124,5.297
c-7.945,7.062-21.186,20.303-24.717,37.959c-6.179,26.483,3.531,58.262,26.483,90.041s67.09,82.979,144.772,105.048
c24.717,7.062,44.138,2.648,60.028-7.062c12.359-7.945,20.303-20.303,22.952-33.545l2.648-12.359
c0.883-3.531-0.883-7.945-4.414-9.71l-55.614-25.6c-3.531-1.766-7.945-0.883-10.593,2.648l-22.069,28.248
c-1.766,1.766-4.414,2.648-7.062,1.766c-15.007-5.297-65.324-26.483-92.69-79.448c-0.883-2.648-0.883-5.297,0.883-7.062
l21.186-23.834c1.766-2.648,2.648-6.179,1.766-8.828l-25.6-57.379C193.324,138.593,190.676,135.945,187.145,135.945"/>
</svg>`,
urlSettings: {
"onDesktop": "api",
"onMobile": "api",
"openInNewTab": "ON"
}
}
How To Use Script
Create Widget
To use the WhatsApp widget, follow these steps:
Create an element for the widget to mount:
<div id="wa"></div>
Load the widget script and styles in your HTML:
<script src="njt-whatsapp.js"></script> <link rel="stylesheet" href="njt-whatsapp.css">
Add the following code to your script:
var widgetOption = { gdprStatus: "", accounts: [{ "accountId": 1, "accountName": "Dennis", "avatar": "", "number": "+14203030923", "title": "Support", "predefinedText": "Chat on WhatsApp [njwa_page_title] in page: [njwa_page_url]", "willBeBackText": "I will be back in [njwa_time_work]", "dayOffsText": "I will be back soon", "isAlwaysAvailable": "OFF", "daysOfWeekWorking": { "sunday": { "isWorkingOnDay": "OFF", "workHours": [{ "startTime": "08:00", "endTime": "17:30" }] }, "monday": { "isWorkingOnDay": "ON", "workHours": [{ "startTime": "08:00", "endTime": "17:30" }] }, "tuesday": { "isWorkingOnDay": "ON", "workHours": [{ "startTime": "08:00", "endTime": "17:30" }] }, "wednesday": { "isWorkingOnDay": "ON", "workHours": [{ "startTime": "08:00", "endTime": "17:30" }] }, "thursday": { "isWorkingOnDay": "OFF", "workHours": [{ "startTime": "08:00", "endTime": "17:30" }] }, "friday": { "isWorkingOnDay": "OFF", "workHours": [{ "startTime": "08:00", "endTime": "17:30" }] }, "saturday": { "isWorkingOnDay": "OFF", "workHours": [{ "startTime": "08:00", "endTime": "17:30" }] } } }, { "accountId": 2, "accountName": "Tommy", "avatar": "", "number": "+4302422121322", "title": "Director", "predefinedText": "We order [njwa_page_title] and [njwa_page_url]. Give me an advice?", "willBeBackText": "I will be back in [njwa_time_work]", "dayOffsText": "I will be back soon", "isAlwaysAvailable": "ON", "daysOfWeekWorking": { "sunday": { "isWorkingOnDay": "OFF", "workHours": [{ "startTime": "08:00", "endTime": "17:30" }] }, "monday": { "isWorkingOnDay": "OFF", "workHours": [{ "startTime": "08:00", "endTime": "17:30" }] }, "tuesday": { "isWorkingOnDay": "OFF", "workHours": [{ "startTime": "08:00", "endTime": "17:30" }] }, "wednesday": { "isWorkingOnDay": "OFF", "workHours": [{ "startTime": "08:00", "endTime": "17:30" }] }, "thursday": { "isWorkingOnDay": "OFF", "workHours": [{ "startTime": "08:00", "endTime": "17:30" }] }, "friday": { "isWorkingOnDay": "OFF", "workHours": [{ "startTime": "08:00", "endTime": "17:30" }] }, "saturday": { "isWorkingOnDay": "OFF", "workHours": [{ "startTime": "08:00", "endTime": "17:30" }] } } } ], options: { "display": { "showOnDesktop": "ON", "showOnMobile": "ON", "time_symbols": "h:m" }, "styles": { "title": "Start a Conversation", "responseText": "The team typically replies in a <strong>few minutes</strong>.", "description": "Hi! Click one of our member below to chat on <strong>WhatsApp</strong>", "backgroundColor": "#2db742", "textColor": "#fff", "scrollHeight": "500", "isShowScroll": "OFF", "isShowResponseText": "OFF", "isShowPoweredBy": "ON", "btnLabel": "Need Help? <strong>Chat with us</strong>", "btnLabelWidth": "156", "btnPosition": "right", "btnLeftDistance": "30", "btnRightDistance": "30", "btnBottomDistance": "30", "isShowBtnLabel": "ON", "isShowGDPR": "OFF", "gdprContent": "Please accept our <a href=\"https://ninjateam.org/privacy-policy/\">privacy policy</a> first to start a conversation.", "widgetType": "expandable" }, "analytics": { "enabledGoogle": "OFF", "enabledFacebook": "OFF", "enabledGoogleGA4": "OFF" }, }, timezone: "+07:00", defaultAvatar: `<svg width="48px" height="48px" class="nta-whatsapp-default-avatar" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve"> <path style="fill:#EDEDED;" d="M0,512l35.31-128C12.359,344.276,0,300.138,0,254.234C0,114.759,114.759,0,255.117,0 S512,114.759,512,254.234S395.476,512,255.117,512c-44.138,0-86.51-14.124-124.469-35.31L0,512z"/> <path style="fill:#55CD6C;" d="M137.71,430.786l7.945,4.414c32.662,20.303,70.621,32.662,110.345,32.662 c115.641,0,211.862-96.221,211.862-213.628S371.641,44.138,255.117,44.138S44.138,137.71,44.138,254.234 c0,40.607,11.476,80.331,32.662,113.876l5.297,7.945l-20.303,74.152L137.71,430.786z"/> <path style="fill:#FEFEFE;" d="M187.145,135.945l-16.772-0.883c-5.297,0-10.593,1.766-14.124,5.297 c-7.945,7.062-21.186,20.303-24.717,37.959c-6.179,26.483,3.531,58.262,26.483,90.041s67.09,82.979,144.772,105.048 c24.717,7.062,44.138,2.648,60.028-7.062c12.359-7.945,20.303-20.303,22.952-33.545l2.648-12.359 c0.883-3.531-0.883-7.945-4.414-9.71l-55.614-25.6c-3.531-1.766-7.945-0.883-10.593,2.648l-22.069,28.248 c-1.766,1.766-4.414,2.648-7.062,1.766c-15.007-5.297-65.324-26.483-92.69-79.448c-0.883-2.648-0.883-5.297,0.883-7.062 l21.186-23.834c1.766-2.648,2.648-6.179,1.766-8.828l-25.6-57.379C193.324,138.593,190.676,135.945,187.145,135.945"/> </svg>`, urlSettings: { "onDesktop": "api", "onMobile": "api", "openInNewTab": "ON" } } document.addEventListener("DOMContentLoaded", function() { njtWhatsApp.ready(function() { // #wa is the element we created in step 1. njtWhatsApp.createWidget(document.querySelector("#wa"), widgetOption); }) })
Create Button
var buttonOption = {
name: "Dennis",
info: {
number: "+123456789",
title: "Sale Support",
predefinedText: "Hello, I need help with [njwa_page_title] and [njwa_page_url] shortcodes to output the page's title and URL respectively.",
willBeBackText: "I will be back in time [njwa_time_work]",
dayOffsText: "I will be back soon",
isAlwaysAvailable: "OFF",
daysOfWeekWorking: {
sunday: {
isWorkingOnDay: "OFF",
workHours: [
{
startTime: "14:00",
endTime: "17:30",
},
{
startTime: "02:30",
endTime: "09:00",
},
{
startTime: "03:00",
endTime: "10:00",
},
],
},
monday: {
isWorkingOnDay: "ON",
workHours: [
{
startTime: "21:00",
endTime: "17:30",
},
{
startTime: "03:30",
endTime: "17:30",
},
],
},
tuesday: {
isWorkingOnDay: "OFF",
workHours: [
{
startTime: "14:00",
endTime: "17:30",
},
],
},
wednesday: {
isWorkingOnDay: "ON",
workHours: [
{
startTime: "15:00",
endTime: "17:30",
},
],
},
thursday: {
isWorkingOnDay: "ON",
workHours: [
{
startTime: "14:00",
endTime: "17:30",
},
],
},
friday: {
isWorkingOnDay: "ON",
workHours: [
{
startTime: "14:00",
endTime: "17:30",
},
],
},
saturday: {
isWorkingOnDay: "OFF",
workHours: [
{
startTime: "14:00",
endTime: "17:30",
},
],
},
},
},
styles: {
type: "square", // round | square
backgroundColor: "#962e4a",
textColor: "#eeee22",
label: "Chat with me",
width: 300,
height: 64,
},
avatar: "https://wp.test/wp-content/uploads/2021/02/LkFrSynw-filebird-ninja.png",
options: {
showOnDesktop: "ON",
showOnMobile: "ON",
time_symbols: "h:m",
},
gdprStatus: "1",
defaultAvatar: `<svg width="48px" height="48px" class="nta-whatsapp-default-avatar" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<path style="fill:#EDEDED;" d="M0,512l35.31-128C12.359,344.276,0,300.138,0,254.234C0,114.759,114.759,0,255.117,0
S512,114.759,512,254.234S395.476,512,255.117,512c-44.138,0-86.51-14.124-124.469-35.31L0,512z"/>
<path style="fill:#55CD6C;" d="M137.71,430.786l7.945,4.414c32.662,20.303,70.621,32.662,110.345,32.662
c115.641,0,211.862-96.221,211.862-213.628S371.641,44.138,255.117,44.138S44.138,137.71,44.138,254.234
c0,40.607,11.476,80.331,32.662,113.876l5.297,7.945l-20.303,74.152L137.71,430.786z"/>
<path style="fill:#FEFEFE;" d="M187.145,135.945l-16.772-0.883c-5.297,0-10.593,1.766-14.124,5.297
c-7.945,7.062-21.186,20.303-24.717,37.959c-6.179,26.483,3.531,58.262,26.483,90.041s67.09,82.979,144.772,105.048
c24.717,7.062,44.138,2.648,60.028-7.062c12.359-7.945,20.303-20.303,22.952-33.545l2.648-12.359
c0.883-3.531-0.883-7.945-4.414-9.71l-55.614-25.6c-3.531-1.766-7.945-0.883-10.593,2.648l-22.069,28.248
c-1.766,1.766-4.414,2.648-7.062,1.766c-15.007-5.297-65.324-26.483-92.69-79.448c-0.883-2.648-0.883-5.297,0.883-7.062
l21.186-23.834c1.766-2.648,2.648-6.179,1.766-8.828l-25.6-57.379C193.324,138.593,190.676,135.945,187.145,135.945"/>
</svg>`,
timezone: "+07:00",
i18n: {
online: "Online",
offline: "Offline",
},
options: {
display: {
showOnDesktop: "ON",
showOnMobile: "ON",
time_symbols: "h:m",
},
styles: {
title: "Start a Conversation",
responseText: "The team typically replies in a <strong>few minutes</strong>.",
description: "Hi! Click one of our member below to chat on <strong>WhatsApp</strong>",
backgroundColor: "#2db742",
textColor: "#fff",
scrollHeight: "500",
isShowScroll: "OFF",
isShowResponseText: "OFF",
isShowPoweredBy: "ON",
btnLabel: "Need Help? <strong>Chat with us</strong>",
btnLabelWidth: "156",
btnPosition: "right",
btnLeftDistance: "30",
btnRightDistance: "30",
btnBottomDistance: "30",
isShowBtnLabel: "ON",
isShowGDPR: "OFF",
gdprContent: 'Please accept our <a href="https://ninjateam.org/privacy-policy/">privacy policy</a> first to start a conversation.',
},
analytics: {
enabledGoogle: "OFF",
enabledFacebook: "OFF",
enabledGoogleGA4: "OFF",
},
},
urlSettings: {
onDesktop: "api",
onMobile: "api",
openInNewTab: "ON",
},
};
document.addEventListener("DOMContentLoaded", function () {
njtWhatsApp.ready(function () {
document.querySelectorAll(".nta_wa_button").forEach(function (element) {
njtWhatsApp.createButton(element, buttonOption);
});
})
})
Last updated