Свежие статьи

Виджет мессенджеров для сайта бесплатно: делаем кнопки Telegram, Max и телефона без платных сервисов

Виджет мессенджеров для сайта бесплатно

Знакомая ситуация? Заходите на сайт конкурента, а там красивые кнопочки мессенджеров выезжают сбоку. Думаете: «Надо бы и себе такое». Лезете искать — а там подписка от 500 рублей в месяц. За три кнопки. Серьёзно?

Сегодня покажу, как сделать такой виджет бесплатно. Без сервисов, без плагинов, без ежемесячных платежей. Просто кусок кода, который работает на любом сайте.

Что получится в итоге

Виджет выглядит так: через 5 секунд после загрузки страницы снизу справа выезжает плашка «Мы на связи» и аккуратно прячется обратно. При наведении мышкой появляются кнопки:

  • Телефон — при наведении показывает номер, на мобильном сразу открывает звонилку
  • Telegram — переход в ваш профиль или бот
  • Max  — прямой переход в чат

На мобильном всё работает адаптивно. Кнопки не выскакивают сами — чтобы не закрывать контент. Аккуратненько висят в углу.

Куда вставлять код

Работает везде:

  • Elementor — через виджет HTML
  • Tilda — через блок с кодом
  • Любой конструктор — ищите блок «вставить HTML»
  • Чистый сайт — вставляете перед закрывающим тегом </body>

Я обычно кидаю в футер. Один раз вставил — работает на всех страницах.

Как настроить ссылки

Max

Открываете Max, идёте в профиль → «Пригласить друзей» → «Скопировать ссылку».

Важный момент: когда копируете ссылку, иногда захватывается лишний текст. Проверяйте — должен быть только адрес, никаких слов типа «Присоединяйтесь».

Telegram

Самый простой способ — загуглить «генератор ссылки на Telegram». Вводите свой номер или username — получаете готовую ссылку вида t.me/ваш_ник.

Телефон

Тут два места для редактирования:

  1. Сам номер для звонилки — пишется слитно: +79182377272
  2. Номер для отображения — можно красиво разрядить: +7 (918) 237-72-72

Как поменять цвета

В коде есть блок со стилями. Цвета задаются в формате HEX (шестизначный код).

Шпаргалка:

Хотите корпоративные цвета? Откройте любой онлайн-пипетку, ткните в свой логотип — получите нужный код.

Про иконки

В коде уже зашиты иконки мессенджеров. Но если хотите свои — легко.

  1. Скачиваете иконку в формате SVG (на том же flaticon.com полно бесплатных)
  2. Загружаете к себе на сайт через медиабиблиотеку
  3. Копируете ссылку на файл
  4. Вставляете в код вместо старой

Кстати, иконку Max я тоже приложу к исходникам. Она пока не везде есть в бесплатных наборах.

Где забрать код

Просто копируйте! Если код не отображается ниже ссылка.

<div class="contact-widget-container">
    <div class="sub-buttons">
        <a href="https://max.ru/u/f9LHodD0cOKaEynhV63iey1SKV2a2S-HnKMPz7XVp67eJrlYsPLNMFsRaMs"
           class="sub-button max-btn"
           target="_blank"
           rel="noopener noreferrer"
           title="Написать в MAX">
            <img src="https://e-integrate.ru/wp-content/uploads/2026/03/MAX.svg" alt="MAX">
        </a>

        <a href="https://t.me/+79181823872"
           class="sub-button tg-btn"
           target="_blank"
           rel="noopener noreferrer"
           title="Telegram">
            <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
                <path fill="currentColor" d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm4.64 6.8c-.15 1.58-.8 5.42-1.13 7.19-.14.75-.42 1-.68 1.03-.58.05-1.02-.38-1.58-.75-.88-.58-1.38-.94-2.23-1.5-.99-.65-.35-1.01.22-1.59.15-.15 2.71-2.48 2.76-2.69a.2.2 0 00-.05-.18c-.06-.05-.14-.03-.21-.02-.09.02-1.49.95-4.22 2.79-.4.27-.76.41-1.08.4-.36-.01-1.04-.2-1.55-.37-.63-.2-1.12-.31-1.08-.66.02-.18.27-.36.74-.55 2.92-1.27 4.86-2.11 5.83-2.51 2.78-1.16 3.35-1.36 3.73-1.36.08 0 .27.02.39.12.1.08.13.19.14.27-.01.06.01.24 0 .38z"/>
            </svg>
        </a>

        <div class="phone-wrapper">
            <a href="tel:+7123456789"
               class="sub-button phone-btn"
               title="Позвонить">
                <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
                    <path fill="currentColor" d="M6.62 10.79c1.44 2.83 3.76 5.14 6.59 6.59l2.2-2.2c.27-.27.67-.36 1.02-.24 1.12.37 2.33.57 3.57.57.55 0 1 .45 1 1V20c0 .55-.45 1-1 1-9.39 0-17-7.61-17-17 0-.55.45-1 1-1h3.5c.55 0 1 .45 1 1 0 1.25.2 2.45.57 3.57.11.35.03.74-.25 1.02l-2.2 2.2z"/>
                </svg>
            </a>
            <div class="phone-tooltip">+7 (123) 456-789</div>
        </div>
    </div>

    <button class="main-contact-btn" id="mainContactBtn" type="button" aria-label="Контакты">
        <span class="contact-label">Мы на связи</span>
        <span class="main-icon">
            <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
                <path fill="white" d="M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2z"/>
            </svg>
        </span>
    </button>
</div>

<style>
:root {
    --widget-main: #ff0000;
    --widget-dark: #3E4A40;
    --widget-light: #667368;
    --widget-soft: rgba(76, 89, 79, 0.22);
    --widget-shadow: rgba(0, 0, 0, 0.18);
}

.contact-widget-container {
    position: fixed;
    right: 30px;
    bottom: 70px;
    z-index: 99999;
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    font-family: sans-serif;
}

/* Блок дополнительных кнопок */
.contact-widget-container .sub-buttons {
    display: flex;
    flex-direction: column;
    gap: 12px;
    margin-bottom: 14px;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transform: translateY(16px);
    transition: opacity 0.3s ease, transform 0.3s ease, visibility 0.3s ease;
}

.contact-widget-container:hover .sub-buttons,
.contact-widget-container.active .sub-buttons {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transform: translateY(0);
}

/* Основная кнопка */
.contact-widget-container .main-contact-btn {
    appearance: none;
    -webkit-appearance: none;
    border: 0;
    outline: none;
    display: inline-flex;
    align-items: center;
    justify-content: flex-end;
    cursor: pointer;
    background: var(--widget-main);
    padding: 0;
    width: 58px;
    height: 58px;
    border-radius: 999px !important;
    overflow: hidden !important;
    box-shadow: 0 8px 24px var(--widget-shadow);
    transition: width 0.35s ease, background 0.3s ease, transform 0.3s ease, box-shadow 0.3s ease;
    animation: widgetPulse 2.8s infinite;
    -webkit-tap-highlight-color: transparent;
}

.contact-widget-container .main-contact-btn:hover {
    background: var(--widget-dark);
    transform: translateY(-1px);
}

.contact-widget-container.active .main-contact-btn {
    background: var(--widget-dark);
}

/* Раскрытое состояние надписи */
.contact-widget-container.label-visible .main-contact-btn,
.contact-widget-container:hover .main-contact-btn {
    width: 178px;
    padding-left: 18px;
}

/* Надпись */
.contact-widget-container .contact-label {
    color: #fff;
    font-weight: 600;
    font-size: 14px;
    line-height: 1;
    white-space: nowrap;
    letter-spacing: 0.2px;
    opacity: 0;
    max-width: 0;
    overflow: hidden;
    transform: translateX(8px);
    transition: opacity 0.25s ease, transform 0.25s ease, max-width 0.35s ease;
}

.contact-widget-container.label-visible .contact-label,
.contact-widget-container:hover .contact-label {
    opacity: 1;
    max-width: 120px;
    transform: translateX(0);
}

/* Иконка */
.contact-widget-container .main-icon {
    width: 58px;
    height: 58px;
    min-width: 58px;
    margin-left: 0;
    border-radius: 50% !important;
    overflow: hidden !important;
    background: var(--widget-dark);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.contact-widget-container .main-icon svg {
    width: 24px;
    height: 24px;
    display: block;
}

/* Кнопки контактов */
.contact-widget-container .sub-button {
    width: 52px;
    height: 52px;
    border-radius: 50% !important;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    text-decoration: none;
    color: #fff;
    box-shadow: 0 6px 18px rgba(0,0,0,0.16);
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.contact-widget-container .sub-button:hover {
    transform: scale(1.08);
    box-shadow: 0 8px 22px rgba(0,0,0,0.2);
}

.contact-widget-container .sub-button svg,
.contact-widget-container .sub-button img {
    width: 24px;
    height: 24px;
    display: block;
}

.contact-widget-container .max-btn {
    background: var(--widget-dark);
}

.contact-widget-container .max-btn img {
    width: 24px;
    height: 24px;
    object-fit: contain;
}

.contact-widget-container .tg-btn {
    background: var(--widget-light);
}

.contact-widget-container .phone-btn {
    background: var(--widget-main);
}

/* Обертка телефона */
.contact-widget-container .phone-wrapper {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: flex-end;
}

/* Плашка с номером */
.contact-widget-container .phone-tooltip {
    position: absolute;
    right: 64px;
    top: 50%;
    transform: translateY(-50%) translateX(10px);
    background: var(--widget-dark);
    color: #fff;
    font-size: 13px;
    font-weight: 600;
    line-height: 1;
    white-space: nowrap;
    padding: 12px 16px;
    border-radius: 999px;
    box-shadow: 0 6px 18px rgba(0,0,0,0.16);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity 0.25s ease, transform 0.25s ease, visibility 0.25s ease;
}

/* Показ номера только на десктопе при наведении */
.contact-widget-container .phone-wrapper:hover .phone-tooltip {
    opacity: 1;
    visibility: visible;
    transform: translateY(-50%) translateX(0);
}

/* Пульсация */
@keyframes widgetPulse {
    0% {
        box-shadow: 0 8px 24px rgba(0,0,0,0.18), 0 0 0 0 var(--widget-soft);
    }
    70% {
        box-shadow: 0 8px 24px rgba(0,0,0,0.18), 0 0 0 14px rgba(76, 89, 79, 0);
    }
    100% {
        box-shadow: 0 8px 24px rgba(0,0,0,0.18), 0 0 0 0 rgba(76, 89, 79, 0);
    }
}

/* Мобильная версия */
@media (max-width: 768px) {
    .contact-widget-container {
        right: 16px;
        bottom: 16px;
    }

    .contact-widget-container .main-contact-btn,
    .contact-widget-container.label-visible .main-contact-btn,
    .contact-widget-container:hover .main-contact-btn {
        width: 58px;
        height: 58px;
        padding: 0;
        border-radius: 50% !important;
    }

    .contact-widget-container .contact-label,
    .contact-widget-container.label-visible .contact-label,
    .contact-widget-container:hover .contact-label {
        display: none;
    }

    .contact-widget-container .main-icon {
        width: 58px;
        height: 58px;
        min-width: 58px;
        margin-left: 0;
    }

    .contact-widget-container .sub-button {
        width: 50px;
        height: 50px;
    }

    .contact-widget-container .sub-button svg,
    .contact-widget-container .sub-button img {
        width: 22px;
        height: 22px;
    }

    .contact-widget-container .phone-tooltip {
        display: none;
    }
}

/* Отключение анимации для тех, кто этого хочет */
@media (prefers-reduced-motion: reduce) {
    .contact-widget-container .main-contact-btn {
        animation: none;
    }

    .contact-widget-container .main-contact-btn,
    .contact-widget-container .sub-buttons,
    .contact-widget-container .sub-button,
    .contact-widget-container .phone-tooltip,
    .contact-widget-container .contact-label {
        transition: none;
    }
}
</style>

<script>
document.addEventListener('DOMContentLoaded', function () {
    const widget = document.querySelector('.contact-widget-container');
    const mainBtn = document.getElementById('mainContactBtn');

    if (!widget || !mainBtn) return;

    // Автопоказ надписи через 5 сек на десктопе
    if (window.innerWidth > 768) {
        setTimeout(function () {
            widget.classList.add('label-visible');

            setTimeout(function () {
                widget.classList.remove('label-visible');
            }, 2000);
        }, 5000);
    }

    // Открытие контактных кнопок на мобильных
    mainBtn.addEventListener('click', function (e) {
        if (window.innerWidth <= 768) {
            e.preventDefault();
            widget.classList.toggle('active');
        }
    });

    // Закрытие при клике вне виджета на мобильных
    document.addEventListener('click', function (e) {
        if (window.innerWidth <= 768 && !widget.contains(e.target)) {
            widget.classList.remove('active');
        }
    });
});
</script>

Ссылка на код сразу в документе если код выше не отображается СКАЧАТЬ
Ссылка на иконку Макса   Скачать

Скачиваете, открываете в блокноте, меняете ссылки на свои, вставляете на сайт. Дел на 10 минут.

Если нужна помощь

Не хотите разбираться сами? Понимаю. Можете написать мне напрямую — сделаю за вас. Или если нужен кастомный виджет: с калькулятором, формой, чат-ботом — тоже обращайтесь. Контакты ниже.

Скачать исходники: https://e-integrate.ru/Kod-vidzheta.zip

Друзья, если смог помочь, перечислите 100 рублей на постройку кораблей!

Хотите разбор именно вашего проекта

Запишитесь на консультацию за 2 500 ₽

Заполните бриф для обсуждения вашего проекта:

📞 Телефон: +7 (918) 182-38-72

Вы можете прямо сейчас заполнить краткий бриф — это поможет понять основные задачи и масштаб будущего сайта. Детальная смета формируется после согласования всех нюансов и ваших пожеланий.

Запись на бесплатное пробное занятие

Вы очень любознательны. Иначе бы не нажали на эту кнопку