Когда я только начинал делать BetCraft, задача казалась довольно простой: нужна WordPress-тема для сайта с обзорами букмекеров.
Карточки БК, рейтинги, бонусы, GEO, виды спорта, несколько фильтров — стандартный набор для affiliate-проекта.
Но довольно быстро я столкнулся с проблемой: сам каталог — это только внешняя часть сайта. Если проект должен приносить деньги, гораздо интереснее то, что происходит между посетителем, партнёрской ссылкой и фактической конверсией.
В итоге разработка ушла совсем не туда, куда я планировал изначально.
Сейчас BetCraft — это уже скорее WordPress-платформа для betting affiliate-проектов, а не просто тема. В этой статье хочу рассказать не обо всех функциях подряд, а о той части, которая оказалась для меня наиболее интересной: как связать контент, клики, партнёрские ссылки и реальные результаты в одну систему.
- Сначала я просто хотел нормально хранить affiliate-ссылки
- Потом возник очевидный вопрос: а откуда вообще приходят клики?
- Но клики сами по себе почти ничего не говорят
- Отсюда сам собой появился A/B Testing
- Самая спорная идея — автоматические рейтинги букмекеров
- С коэффициентами получилось примерно то же самое
- Чем больше автоматизации, тем важнее диагностика
- И в какой-то момент пришлось перестать добавлять функции
- Что получилось в итоге
Сначала я просто хотел нормально хранить affiliate-ссылки
На небольшом сайте всё просто.
Есть обзор букмекера, вставил партнёрскую ссылку в кнопку — готово.
Но потом ссылка появляется в рейтинге, сравнении, GEO-странице, статье, карточке события, боковом блоке и ещё в нескольких местах.
Если партнёрка меняет URL, начинается поиск по всему WordPress.
А если для разных стран или устройств нужны разные ссылки — становится ещё веселее.
Поэтому первым делом я сделал централизованный Affiliate Link Manager.
Ссылка хранится в одном месте, а на сайте используется через внутренний редирект. Можно задать отдельные варианты под GEO или устройство, передавать UTM и SubID, проверять доступность URL и менять направление без редактирования десятков страниц.
Для меня это оказалось одной из тех функций, которые выглядят скучно на презентации, но сильно упрощают реальную работу.
Потом возник очевидный вопрос: а откуда вообще приходят клики?
Считать только общее количество переходов мне быстро перестало нравиться.
Если на странице десять CTA, хочется понимать, какой из них реально работает.
Клик пришёл:
- из рейтинга;
- из полного обзора;
- из статьи;
- из сравнения;
- из мобильной кнопки;
- с GEO-страницы.
Поэтому каждый переход стал сохранять контекст: bookmaker, страницу, тип страницы, CTA, устройство и другие параметры.
Так появилась собственная Click Analytics.
И вот здесь уже можно смотреть не просто «за сегодня 100 кликов», а понимать, какой конкретно элемент сайта их принёс.
Но клики сами по себе почти ничего не говорят
Это, наверное, самая очевидная вещь для любого человека, который давно работает с affiliate.
Высокий CTR ещё не означает высокий доход.
Можно сделать агрессивную кнопку, получить много переходов и при этом почти не получить нормальных игроков.
Поэтому следующим шагом стал собственный click_id.
Перед переходом на партнёрскую программу BetCraft создаёт идентификатор клика и передаёт его через SubID.
Если партнёрка поддерживает postback, она потом может вернуть событие обратно:
регистрацию, FTD, депозит, qualified player или revenue.
Получилась цепочка:
После этого аналитика уже начинает отвечать на гораздо более полезные вопросы.
Например, один CTA может давать CTR 18%, а другой всего 11%. Но второй приводит больше FTD.
Что тогда считать лучшим?
Для affiliate-проекта ответ уже не такой очевидный.
Отсюда сам собой появился A/B Testing
Когда данные о кликах и конверсиях уже собираются, не использовать их для тестов было бы странно.
Я добавил A/B-тестирование CTA.
Можно проверить разные тексты кнопок, оформление или даже порядок букмекеров.
Но я специально не хотел делать систему, которая после 20 показов пишет огромными буквами:
Потому что на маленькой выборке это легко превращается в самообман.
Поэтому BetCraft показывает фактические результаты по каждому варианту: показы, клики, CTR, регистрации, FTD, EPC и revenue.
А решение уже принимает человек.
Самая спорная идея — автоматические рейтинги букмекеров
Практически на любом affiliate-сайте есть рейтинг.
Обычно он редакционный.
Одному букмекеру поставили 9.6, другому 9.2, третьему 8.8 — и в таком порядке они стоят месяцами.
Но если сайт уже знает, что один бренд приносит высокий EPC, другой хорошо конвертирует в регистрацию, а третий даёт больше FTD, появляется вопрос:
почему вообще не использовать эти данные в сортировке?
Так появился Smart Rankings.
Можно строить порядок по EPC, Registration CR, FTD Rate, Revenue или комбинированному Smart Score.
И тут же обнаружилась первая проблема.
Представим нового букмекера.
У него два клика и одна регистрация.
CR — 50%.
По формуле он мгновенно становится чуть ли не лучшим брендом на сайте.
Понятно, что это статистический шум.
Поэтому пришлось делать cold start: пока не накоплена минимальная выборка, система больше опирается на редакционный рейтинг и не позволяет случайной конверсии перевернуть весь каталог.
Это хороший пример того, почему функция в интерфейсе может выглядеть простой, а за ней потом появляется куча условий.
С коэффициентами получилось примерно то же самое
Изначально я вообще не планировал делать полноценный Match Center.
Но если сайт работает с букмекерами, спортивные события довольно логично дополняют контент.
Сначала появились матчи.
Потом команды и лиги.
Потом коэффициенты 1/X/2.
Потом Sports/Odds API.
А затем стало понятно, что текущего коэффициента мало.
Если уже сохраняется история, можно показать Opening и Current, изменение за 1 час, 6 часов, 24 часа, разброс между букмекерами и лучший коэффициент.
Так появился Value Center.
На странице события пользователь может сохранить матч, добавить его в календарь или Google Calendar, посмотреть предложения букмекеров и движение линии.
Получился уже отдельный большой модуль внутри проекта.
Чем больше автоматизации, тем важнее диагностика
На этом этапе в одном WordPress одновременно работают API, cron, история коэффициентов, аналитика кликов, postback, Telegram, email и несколько собственных таблиц.
И если что-нибудь перестаёт работать, простого «обновить страницу» уже недостаточно.
Поэтому сделал отдельный Health Monitor.
Он проверяет Sports API, cron, postback, Telegram webhook, состояние affiliate-ссылок, события без коэффициентов, таблицы, индексы базы и последние ошибки.
Это не самая красивая часть BetCraft, зато одна из самых полезных при реальной эксплуатации.
И в какой-то момент пришлось перестать добавлять функции
Наверное, это главная вещь, которую я понял за время разработки.
Очень легко бесконечно улучшать продукт.
Всегда можно придумать новый фильтр, ещё одну аналитику, ещё один вид уведомлений.
Но в какой-то момент новые функции начинают мешать больше, чем помогать.
После очередного этапа я остановил активное наращивание функционала и занялся производительностью.
Оптимизировал запросы к базе, добавлял индексы, пересматривал cron-задачи, ограничивал хранение старой аналитики и истории коэффициентов, добавлял кэш и убирал лишние CSS/JS там, где они не нужны.
Сейчас текущая версия BetCraft — 2.38.2.
И следующий этап для меня уже гораздо интереснее: не придумывать ещё 50 функций самому, а получать обратную связь от людей, которые действительно работают с betting и affiliate-проектами.
Что получилось в итоге
BetCraft начинался как WordPress-тема с каталогом букмекеров.
Сейчас внутри уже связаны контент, GEO, события, коэффициенты, партнёрские ссылки, click_id, postback, FTD, revenue, A/B-тестирование и автоматические рейтинги.
При этом я всё ещё хочу сохранить главное преимущество WordPress: чтобы с системой мог работать обычный редактор, а не только разработчик.
Недавно я ещё доделал собственную систему лицензирования и личный кабинет на Streltsov Digital. После покупки пользователь получает лицензию, ключ, ZIP, историю версий, документацию и тикет-поддержку прямо в своём аккаунте.
Но больше всего сейчас интересует не техническая сторона, а мнение людей из самой индустрии.
Если вы работаете с betting affiliate — что из подобного функционала действительно используете каждый день? А что, наоборот, выглядит красиво, но на практике почти не нужно?
Буду рад критике и идеям.
Демо:
https://betcraft.streltsov.digital/
Документация:
https://streltsov.digital/docs/

Занимаюсь WordPress-разработкой и делаю собственные проекты для affiliate-направления. Люблю задачи, где нужно не просто собрать сайт, а продумать логику, автоматизацию и работу с данными. Сейчас основной мой проект — BetCraft. Здесь буду делиться тем, как он развивается, что приходится переделывать и какие решения реально работают на практике.













