How to create WhatsApp Chat widget using HTML, CSS & JavaScript

How to create WhatsApp Chat widget using HTML, CSS & JavaScript

Learn how to create a WhatsApp chat widget for your website using HTML, CSS, and JavaScript. This is a great way to provide customer support and sales assistance to your visitors. In this tutorial, I will show you how to create a simple chat widget that you can add to any website.

Tutorial Video

Free Source Code:

index.html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>WhatsApp Chat Widget</title>
    <link rel="stylesheet" href="style.css">
</head>

<body>
    <div class="WA_Chat_Widget" data-position="bottom-right">
        <div class="WA_ChatBox">
            <div class="WA_ChatBox_Header">
                <div class="avatarBox">
                    <img src="./default-image.png" alt="Chat Avatar">
                </div>
                <div class="infoBox">
                    <h4 class="name">Saif Ur Rehman</h4>
                    <span class="answer_time">Typically replies within a day</span>
                </div>
                <button class="WA_Close" onclick="hideChatbox()"><svg xmlns="http://www.w3.org/2000/svg" height="1em"
                        viewBox="0 0 512 512"><!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. -->
                        <path
                            d="M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM175 175c-9.4 9.4-9.4 24.6 0 33.9l47 47-47 47c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l47-47 47 47c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-47-47 47-47c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-47 47-47-47c-9.4-9.4-24.6-9.4-33.9 0z" />
                    </svg></button>
            </div>
            <div class="WA_ChatBox_Body">
                <div class="message">
                    <h4 class="username">Saif Ur Rehman</h4>
                    <div class="message_content">
                        <p>Hey There, How can I help you?</p>
                    </div>
                </div>
            </div>
            <div class="WA_ChatBox_Footer">
                <a class="btn btn-whatsapp" href="http://wa.me/92123435464" target="_blank">Start Chat</a>
            </div>
        </div>
        <div class="WA_FloatingButton" onclick="toggleChatbox()">
            <svg xmlns="http://www.w3.org/2000/svg" fill="#4FCE5D" viewBox="0 0 90 90">
                <path
                    d="M90 43.841c0 24.213-19.779 43.841-44.182 43.841a44.256 44.256 0 01-21.357-5.455L0 90l7.975-23.522a43.38 43.38 0 01-6.34-22.637C1.635 19.628 21.416 0 45.818 0 70.223 0 90 19.628 90 43.841zM45.818 6.982c-20.484 0-37.146 16.535-37.146 36.859 0 8.065 2.629 15.534 7.076 21.61L11.107 79.14l14.275-4.537A37.122 37.122 0 0045.819 80.7c20.481 0 37.146-16.533 37.146-36.857S66.301 6.982 45.818 6.982zm22.311 46.956c-.273-.447-.994-.717-2.076-1.254-1.084-.537-6.41-3.138-7.4-3.495-.993-.358-1.717-.538-2.438.537-.721 1.076-2.797 3.495-3.43 4.212-.632.719-1.263.809-2.347.271-1.082-.537-4.571-1.673-8.708-5.333-3.219-2.848-5.393-6.364-6.025-7.441-.631-1.075-.066-1.656.475-2.191.488-.482 1.084-1.255 1.625-1.882.543-.628.723-1.075 1.082-1.793.363-.717.182-1.344-.09-1.883-.27-.537-2.438-5.825-3.34-7.977-.902-2.15-1.803-1.792-2.436-1.792-.631 0-1.354-.09-2.076-.09s-1.896.269-2.889 1.344c-.992 1.076-3.789 3.676-3.789 8.963 0 5.288 3.879 10.397 4.422 11.113.541.716 7.49 11.92 18.5 16.223C58.2 65.771 58.2 64.336 60.186 64.156c1.984-.179 6.406-2.599 7.312-5.107.9-2.512.9-4.663.631-5.111z">
                </path>
            </svg>
        </div>
    </div>
    <script>
        let isChatboxVisible = false;
        const chatbox = document.querySelector(".WA_Chat_Widget .WA_ChatBox");
        function hideChatbox() {
            isChatboxVisible = false;
            chatbox.style.display = "none";
        }

        function toggleChatbox() {
            isChatboxVisible = !isChatboxVisible;
            chatbox.style.display = isChatboxVisible ? "block" : "none";
        }


    </script>
</body>

</html>
 

style.css

@import url(https://fonts.googleapis.com/css?family=Poppins:100,100italic,200,200italic,300,300italic,regular,italic,500,500italic,600,600italic,700,700italic,800,800italic,900,900italic);
.WA_Chat_Widget *{
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    font-family: "Poppins", sans-serif;
}
.WA_Chat_Widget .WA_FloatingButton{
    position: fixed;
    width: 70px;
    height: 70px;
    display: flex;
    justify-content: center;
    align-items: center;
    box-shadow: 0 4px 10px 0px rgba(0, 0, 0, 0.185);
    border-radius: 50%;
    background: #fff;
    cursor: pointer;
    z-index: 1000;
}
.WA_Chat_Widget .WA_FloatingButton svg{
    width: 40px;
    height: 40px;
    fill: #4fce5d;
}
.WA_Chat_Widget[data-position^="top-"] .WA_FloatingButton{
    top: 20px;
}
.WA_Chat_Widget[data-position^="bottom-"] .WA_FloatingButton{
    bottom: 20px;
}
.WA_Chat_Widget[data-position$="-left"] .WA_FloatingButton{
    left: 20px;
}
.WA_Chat_Widget[data-position$="-right"] .WA_FloatingButton{
    right: 20px;
}
.WA_Chat_Widget[data-position$="-center"] .WA_FloatingButton{
    left: 50%;
    transform: translateX(-50%);
}

.WA_Chat_Widget[data-position^="top-"] .WA_ChatBox{
    top: 110px;
}
.WA_Chat_Widget[data-position^="bottom-"] .WA_ChatBox{
    bottom: 110px;
}
.WA_Chat_Widget[data-position$="-left"] .WA_ChatBox{
    left: 30px;
}
.WA_Chat_Widget[data-position$="-right"] .WA_ChatBox{
    right: 30px;
}
.WA_Chat_Widget[data-position$="-center"] .WA_ChatBox{
    left: 50%;
    transform: translateX(-50%);
}


.WA_Chat_Widget .WA_ChatBox{
    position: fixed;
    width: 360px;
    height: auto;
    overflow: hidden;
    border-radius: 8px;
    background-color: #fff;
    box-shadow: 0 5px 25px 0px rgba(0, 0, 0, 0.1);
    display: none;
}

.WA_Chat_Widget .WA_ChatBox .WA_ChatBox_Header{
    width: auto;
    background: #095e54;
    padding: 20px;
    display: flex;
    justify-content: flex-start;
    align-items: center;
    flex-wrap: wrap;
    gap: 20px;
}
.WA_Chat_Widget .WA_ChatBox .WA_ChatBox_Header .avatarBox{
    width: 65px;
    height: 65px;
    border-radius: 50%;
    overflow: hidden;
}
.WA_Chat_Widget .WA_ChatBox .WA_ChatBox_Header .avatarBox img{
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.WA_Chat_Widget .WA_ChatBox .WA_ChatBox_Header .infoBox .name{
    color: #fff;
    font-weight: 600;
}

.WA_Chat_Widget .WA_ChatBox .WA_ChatBox_Header .infoBox .answer_time{
    color: #e4e4e4;
    font-size: 14px;
}
.WA_Chat_Widget .WA_ChatBox .WA_ChatBox_Header .WA_Close{
    background: transparent;
    color: #fff;
    border: none;
    outline: none;
    font-size: 20px;
    position: absolute;
    top: 10px;
    right: 10px;
    cursor: pointer;
}
.WA_Chat_Widget .WA_ChatBox .WA_ChatBox_Header .WA_Close svg{
    fill: #ffff;
}
.WA_Chat_Widget .WA_ChatBox .WA_ChatBox_Body{
    padding: 20px;
    background: #e6ddd4;
    position: relative;
}
.WA_Chat_Widget .WA_ChatBox .WA_ChatBox_Body::before{
    content: '';
    position: absolute;
    top: 0px;
    left: 0px;
    width: 100%;
    height: 100%;
    background: url(./bg-pattern.png);
    opacity: 0.1;
    z-index: 0;
}
.WA_Chat_Widget .WA_ChatBox .WA_ChatBox_Body .message{
    max-width: 280px;
    background: #fff;
    padding: 20px;
    padding-top: 10px;
    border-radius: 8px;
    z-index: 1;
    position: relative;
}
.WA_Chat_Widget .WA_ChatBox .WA_ChatBox_Body .message::before{
    content: '';
    position: absolute;
    width: 20px;
    height: 20px;
    background: #fff;
    left: -10px;
    top: 0px;
    border-radius: 3px;
    clip-path: polygon(100% 0, 0 0, 100% 100%);
}
.WA_Chat_Widget .WA_ChatBox .WA_ChatBox_Body .message .username{
    color: darkgray;
    font-weight: 500;
}
.WA_Chat_Widget .WA_ChatBox .WA_ChatBox_Body .message .message_content{
    font-size: 14px;
    color: #000;
}

.WA_Chat_Widget .WA_ChatBox .WA_ChatBox_Footer{
    padding: 20px;
    background-color: #fff;
    width: 100%;
}
.WA_Chat_Widget .WA_ChatBox .WA_ChatBox_Footer .btn{
    width: 100%;
    outline: none;
    border: none;
    padding: 10px;
    border-radius: 1000px;
    font-size: 16px;
    cursor: pointer;
    text-decoration: none;
}
.WA_Chat_Widget .WA_ChatBox .WA_ChatBox_Footer .btn.btn-whatsapp{
    background: #095e54;
    color: #fff;
    display: block;
    text-align: center;
}
Leave a Comment

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *