Привет! Я — Григорий, автор сервиса защиты от поведенческих ботов KillBot, который продвигаю и делюсь опытом.

Содержание:

  • Как пользователя сделать тёплым;

  • Стратегии промокода для тёплых и холодных пользователей;

  • Как избежать чтобы промокод стал левым;

  • Создаём Telegram бота, который дарит промокод за подписку [php код];

  • Пример рабочего Telegram бота;


На меня постоянно таргетируются и ВКонтакте и в РСЯ с просьбой подписаться на Telegram канал.

НО, я для них - холодная аудитория

Они делают одну и ту же эту ошибку. Когда предложение делается "в лоб", без какого-либо предварительного взаимодействия, это не приводит к хорошим результатам — отдача минимальна, а подписчик обойдётся очень дорого.

Честно говоря, сам регулярно этим балуюсь и результат всегда никакой)

Из всех блогеров что предлагали мне подписку, только Строков (блог Строкова о Директе) делал это правильно, обращаясь ко мне как к тёплой аудитории. Поэтому, если выбираете специалиста по таргетингу, стоит обязательно обратить внимание на то, как они сами настраивают рекламу и какие результаты получают.

Чтобы мотивировать пользователя подписаться на канал, нужно предложить ему что-то полезное, например, промокод, который он сможет использовать по заранее оговоренным условиям.

Предложение промокода нужно делать грамотно и только тёплым пользователям, чтобы промокод не стал «левым» и не утратил свою ценность.

Как пользователя сделать тёплым

  • Пользователь сам (в поиске, например) должен найти статью о вас и дочитать её;

  • Пользователь сам должен найти видео о вас и досмотреть;

  • Пользователь сам должен найти товар и купить (для маркетплейса может быть не актуально, так как маркетплейс обезличивает);

  • Пользователю должен вас порекомендовать друг или авторитет;

  • Любой другой способ когда пользователь услышит о вас и подумает "Вот это да! Вот это они умеют!";

Стратегии промокода для теплых пользователей

  • Ретаргетинг: Использование ретаргетинга с промокодом может стимулировать вернуться и завершить покупку. Пример: "Заметили, что вы добавили в корзину наш продукт? Вот промокод на 15% скидки для вашего заказа!"

  • Промокод на повторную покупку. Для уже купивших пользователей можно предложить промокод как благодарность за покупку, стимулируя их к повторной покупке. Ниже пример бонуса за продление подписки, которое мне предложили:

  • Эксклюзивные предложения через email или личные сообщения в мессенджере: Теплые пользователи ожидают особого отношения, поэтому отправка им промокода через личные каналы (например, Telegram или email) с сообщением вроде "Для наших лучших клиентов/подписчиков" покажет, что они в приоритете.

Стратегии промокода для холодных пользователей:

  • Реферальные программы: Один из самых эффективных способов использовать промокод — предложить тёплому пользователю делиться им с друзьями. При этом и рекомендатель, и новый пользователь получают бонусы. Пример: "Поделитесь этим промокодом с другом — и вы оба получите скидку 10% на следующую покупку!"

  • Сотрудничество с блогерами и инфлюенсерами: Люди доверяют блогерам, которых смотрят, поэтому важно выбрать тех, кто резонирует с вашей целевой аудиторией. Промокод должен звучать как личная рекомендация от блогера, а не просто рекламное объявление. Пример: "Ребята, я пользуюсь этим сервисом уже месяц, и мне он очень нравится! Вот мой промокод, чтобы вы тоже могли получить 20% скидки на первый заказ."

  • Видео-обзор с упоминанием промокода: Видео-контент — это отличный способ интегрировать промокод, где блогер может показать продукт в действии, а в конце предложить скидку с промокодом. Зрители видят реальное применение продукта и чувствуют связь с рекомендацией. Пример: "Я протестировал эту новинку, и честно — впечатлен! Если хотите попробовать сами, вот промокод на 10% скидку."

Как избежать того, чтобы промокод стал "левым"

Промокоды теряют свою ценность, если они раздаются повсеместно без фильтрации аудитории. Важно избегать чрезмерного распространения промокода через каналы, где он может стать "ненужным". Вот несколько способов избежать этой проблемы:

  • Ограниченная доступность.
    Создайте ощущение эксклюзивности. Например, промокод может быть активен только для подписчиков канала или для тех, кто взаимодействовал с ботом. Так вы исключаете возможность его "утечки" в руки случайных людей.

  • Промокоды с ограничением по времени или количеству активаций.
    Укажите срок действия промокода или ограничьте количество его активаций, чтобы пользователи чувствовали, что нужно воспользоваться предложением быстро и что оно не является "массой".

  • Персонализированные промокоды.
    Используйте уникальные коды для каждого пользователя. Это может быть связано с регистрацией в Telegram-боте или привязано к аккаунту пользователя, чтобы код не мог быть просто скопирован и разослан по сети.

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

Создаём Telegram бота который дарит промокод за подписку

Схема работы проста: мы создаём Telegram-бота, который проверяет, подписан ли пользователь на канал. Если подписка подтверждена, пользователь получает промокод.

1. Создаем бота через BotFather

Для этого переходим в Telegram бота https://t.me/BotFather , кликаем меню, далее "create a new bot". После создания бота скопируйте его АПИ токен:

Примерно так выглядит процесс создания бота в телеграмм через BotFather
Примерно так выглядит процесс создания бота в телеграмм через BotFather

В моем примере создан бот @KillBotJoin_bot - пока это просто Telegram бот, в которого не вшита логика раздачи промокодов.

2. Делаем бота администратором канала

Чтобы бот мог посмотреть список подписчиков - его нужно добавить в администраторы канала.

Вот как это сделать:

  1. Зайдите в Telegram-канал, нажмите на три точки и выберите «Управление каналом».

  2. Перейдите в раздел «Администраторы».

  3. В поиске найдите бота по системному имени через @имя.

  4. Добавьте его в качестве администратора.

3. Наделим бота "мозгами"

Теперь создадим php файл, который будет по Telegram АПИ проверять подписан на канал пользователь или нет.

Создаём файл bot.php:


// Ваш телеграмм API токен
$apiToken = "";

// Измените на ваш ID канала
// Узнать ID канала: 1) Напишите боту: https://t.me/getmyid_bot 2) Перешлите любой пост из канала в диалог с ботом
$channelId = ""; // пример: channelId = -1001808575391

// Измените на ваш текст с промокодом
$promoText = "Ваш промокод: KillBot-1998 \nВведите промокод при создании нового аккаунта на KillBot: https://killbot.ru/user/register и у вас будет сразу две активные подписки: KillBot и Direct";

// Текст предложением подписаться на канал
$subscriptionText = "Подпишитесь на канал https://t.me/KillBotRus чтобы получить промокод номиналом 1998р. для месячной подписки на сервис выявления ботов KillBot: https://killbot.ru";


$update = json_decode(file_get_contents("php://input"), TRUE);

$chatId = isset($update["message"]["chat"]["id"]) ? $update["message"]["chat"]["id"] : null;
$userId = isset($update["message"]["from"]["id"]) ? $update["message"]["from"]["id"] : null;


if (isset($update["callback_query"])) {
    $chatId = $update["callback_query"]["message"]["chat"]["id"];
    $userId = $update["callback_query"]["from"]["id"];
	
    // Обрабатываем нажатие кнопки
    handleStartCommand($chatId, $userId, $apiToken);
} else {    
    if (!$chatId || !$userId) {
        sendMessage($chatId, "Ошибка: не удалось получить chat_id или user_id.", $apiToken);
        exit;
    }
    
    handleStartCommand($chatId, $userId, $apiToken);
}

// Функция для отправки сообщения пользователю с кнопками
function sendMessageWithKeyboard($chatId, $message, $apiToken, $replyMarkup) {
    $url = "https://api.telegram.org/bot$apiToken/sendMessage";
    $postFields = array(
        'chat_id' => $chatId,
        'text' => $message,
        'reply_markup' => json_encode($replyMarkup)
    );
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_exec($ch);
    curl_close($ch);
}


function sendMessage($chatId, $message, $apiToken) {
    $url = "https://api.telegram.org/bot$apiToken/sendMessage";
    $postFields = array(
        'chat_id' => $chatId,
        'text' => $message
    );
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_exec($ch);
    curl_close($ch);
}

// Проверка подписки на канал
function isUserSubscribed($userId, $channelId, $apiToken) {
//return false;
    $url = "https://api.telegram.org/bot$apiToken/getChatMember?chat_id=$channelId&user_id=$userId";
    
    // Используем curl для выполнения запроса
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    $response = curl_exec($ch);
    curl_close($ch);
    
    $data = json_decode($response, TRUE);

    global $chatId;    

    // Если бот не имеет доступа, отправляем уведомление
    if (isset($data["error_code"]) && $data["error_code"] === 400) {
        sendMessage($chatId, "Отладка - Ответ от getChatMember: " . print_r($data, true), $apiToken);
        sendMessage($chatId, "Не удалось проверить подписку. Пожалуйста, убедитесь, что бот является администратором канала.", $apiToken);
        return false; // Не подписан
    }

    // Проверяем статус пользователя
    if (isset($data["result"]["status"]) && 
        ($data["result"]["status"] === "member" || $data["result"]["status"] === "administrator" || $data["result"]["status"] === "creator")) {
        return true; // Подписан
    } else {
        return false; // Не подписан
    }
}

// Функция для обработки команды /start
function handleStartCommand($chatId, $userId, $apiToken) {
    global $channelId;
    global $promoText;
    global $subscriptionText;

    // Проверяем, подписан ли пользователь на канал
    if (isUserSubscribed($userId, $channelId, $apiToken)) {
        sendMessage($chatId, $promoText, $apiToken);
    } else {
        $keyboard = [
            'inline_keyboard' => [
                [
                    ['text' => 'Проверить подписку', 'callback_data' => 'check_subscription']
                ]
            ]
        ];
        sendMessageWithKeyboard($chatId, $subscriptionText, $apiToken, $keyboard);
    }
}

Вверху этого файла есть два пустых параметра, в них вам нужно внести свои данные, это:

  • $apiToken

  • $channelId

В apiToken помещаем токен нашего Telegram бота, channelId - это ID Telegram канала.

Чтобы узнать ID Telegram канала:

  • Напишите боту: https://t.me/getmyid_bot

  • Перешлите любой пост из канала которого нужно узнать ID в диалог с ботом

В переменные $promoText и $subscriptionText введите именно ваш текст предложения подписаться и текст с промокодом.

Все, после этого файл bot.php готов к работе.

4. Регистрируем bot.php в качестве обработчика

Закиньте файл bot.php в корень вашего сайта, сайт обязательно должен быть на https протоколе, чтобы бот был доступен по ссылке: https://mywebsite.ru/bot.php

Зарегистрируйте хук, при запуске Telegram бот обратится к скрипту bot.php и выдаст его ответ:

https://api.telegram.org/botВАШ_API_ТОКЕН/setWebhook?url=https://mywebsite.ru/bot.php

Бот готов к работе!

Пример рабочего Telegram бота который предлагает промокод

Можете посмотреть моего Telegram бота, созданного в точности по схеме что описано выше: https://t.me/KillBotJoin_bot

Далее я расскажу как привёл 300 новых пользователей за месяц в свой онлайн сервис

Этот пост я размещу в своём Telegram канале: https://t.me/KillBotRus, поэтому подписывайтесь на него, чтобы не пропустить этот интересный материал. А как однозначно доказать, что клик по рекламе сделал бот - это мой 3 пост снизу.

Комментарии (0)