RUEN

Неделя 158. Сходится не значит правда

Неделя 158. Сходится не значит правда

Разбор этой статьи

AI-подкаст BotsellerПочему отчёт, который сходится, всё равно врёт
0:00 / 0:00

Эту тему разобрали в подкасте. Слушай параллельно с чтением.

Это сто пятьдесят восьмая неделя с момента, как мы запустили Botseller в августе 2023 года. Период: с 3 августа 00:00 до 10 августа 00:00 по Москве.

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

Отчитываюсь по факту: не сдвинулась. Упёрлось не в код. Обещать в четвёртый раз не буду, отчитаюсь, когда сдвинется.

А неделя ушла на то, чего раунд потребовал первым. Деке тоже досталось, но главным оказался отчёт, по которому решается, куда нести деньги: откуда приходят люди, кто регистрируется, кто платит. Я открыл его во вторник, и он врал. Аккуратно: суммы по источникам сходились с итогами, каждая цифра выглядела как правда.

Четыре дня подряд мы выпускали версию «теперь точно правильно». Все четыре сходились. Все четыре врали. Пятая перестала верить себе.

Ну конечно. Открыл раунд, сел считать, а считать нечем.

Сырой счётчик недели: 209 записей разработки в 8 рабочих контурах, из них 95 объединённых задач и 114 прямых правок. По объёму 16,5 тысячи добавленных строк.

Меня зовут Дмитрий Дьяконов, я основатель и CEO Botseller AI. Мы делаем платформу с AI-продавцом, CRM, мессенджерами, автоматизациями, рассылками, календарём и звонками. Каждую неделю я разбираю, что реально сдвинулось в продукте и зачем это нужно бизнесу. Поехали по 158-й.

Пульс недели

Пульс недели 158 в карточках: 78 записей воронка продаж, 28 партнёрская программа, 25 расписание, 20 инвестиционный дек, 17 рассылки WhatsApp, 14 голос и тарифы. Врезка с главной мыслью: отчёт, который сходится сам с собой, ещё не правда, проверять надо не арифметику, а смысл каждого слова в шапке. На карточке воронки пометка: отчёт перестал считать роботов, чужие платежи и наши же бонусы.

НаправлениеЗаписей разработкиЧто это значит простыми словами
Воронка собственных продаж78отчёт «откуда приходят и кто платит» перестал считать роботов, чужие платежи и наши бонусы
Партнёрская программа28партнёр не теряет комиссию из-за блокировщика, браузера или письма на другом устройстве
Расписание и закрытие занятий25занятия закрываются пачкой, а главное, закрываются вообще
Инвестиционный дек20ещё семь заходов, английская версия и живая страница вместо PDF
Рассылки WhatsApp по своей базе17шаблоны официального канала работают и для существующих лидов
Списание баланса и фундамент тарифов15списание за официальный WhatsApp считалось по настройкам не оттуда, с пятницы считается правильно
Голосовой канал, ядро и понятные ошибки14новый голосовой движок заметно дешевле, кабинет объясняет причину отказа словами
Сайт и блог9настройки сайта месяц расходились с сервером, читатель статьи уходит в нужный раздел

Главная мысль недели: отчёт, который сходится сам с собой, ещё не правда. Проверять надо не арифметику, а смысл каждого слова в шапке таблицы.

Воронка, которая сходилась пять раз

Пять дней, пять версий отчёта, и на каждой штамп «сходится 100 процентов». Вторник: математика сошлась, но 56 заявок из 68 оказались формой регистрации. Среда: починили фильтры, через час седьмая правка втащила лишнее. Четверг: отсеяли 566 роботов, в колонке пользователей лежали номера из мессенджера. Пятница: разобрали фантомный отвал 47 процентов, это 32 тестовых аккаунта. Суббота: перестали верить своему счётчику и отдали трафик Яндекс.Метрике.

У любого бизнеса есть эта табличка: откуда пришли, сколько зарегистрировалось, сколько заплатило. У салона она в тетради администратора, у магазина в CRM, у нас во вкладке «Воронка». И врёт она везде в одних и тех же трёх местах: кого считать посетителем, кого считать клиентом, что считать деньгами.

Почему мы вообще пишем это сами, когда есть готовые сервисы аналитики? Потому что готовый сервис видит клик и форму, но не видит, кто из зарегистрировавшихся потом заплатил и кто из заплативших пришёл от партнёра. Эти данные есть только у нас. Цена такого решения в том, что и врать такой отчёт может только по-нашему, и проверить его снаружи некому.

Во вторник днём отчёт собрался целиком: сборщик в CRM, сборка воедино в ядре платформы и вкладка «Воронка» в админке. Вечером он упал. Это была последняя честная поломка недели. Дальше пошли нечестные.

Вторник, поздний вечер. Теперь точно правильно. Две трети «визитов на сайт» оказались хождением внутри рабочего кабинета, большая часть «заявок» была формой регистрации, а почти все визиты без метки падали в «прямой заход».

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

Среда. Теперь точно правильно. Сначала нашли, почему источник регистраций был неизвестен: запись «этот человек пришёл вот с этого визита» не создавалась вообще, связать регистрацию с визитом удавалось у каждого пятого. Не метка терялась по дороге, источник не записывался по конструкции. Потом ещё шесть дефектов: фильтры молча выбрасывали строки, человек с двумя заявками считался в оплатах дважды, один источник шёл тремя строками из-за заглавной буквы и пробела на конце. Починили. Через час выяснилось, что та же правка втащила лишнее, и цифры поехали обратно. К вечеру я перестал радоваться зелёной таблице.

Четверг. Теперь точно правильно. Треть «посетителей» оказалась роботами под видом обычного браузера: одна страница, ноль действий, ушёл. Таких отсеяли больше пятисот, а десяток похожих оставили, потому что они ходили по сайту, роботы так не делают. Вечером стало неприятно по-настоящему. «Регистраций» оказалось почти втрое больше, чем я знал: в колонке, которая должна была хранить клиента платформы, лежал номер человека из мессенджера. Одно слово, две сущности, одна колонка. Там же отчёт сопоставлял оплаты по совпадению двух номеров, которые совпадать не обязаны, и показывал чужие платежи как наши. Я смотрел на это и думал, что через неделю показывал бы эти цифры инвестору.

Словарь обмана: как термины скрывают реальность. Слева что видит отчёт, справа что лежало в базе. «Визит на сайт» это роботы-сканеры, 84 процента трафика, и хождение сотрудников внутри кабинета. «Пользователь платформы» это номер человека из мессенджера, две разные сущности в одной колонке. «Отвал регистраций 47,6 процента» это тестовые аккаунты владельца. «Чужие платежи в нашей выручке» это сопоставление по совпадению двух случайных номеров.

Пятница. Теперь точно правильно. Ночью слово «регистрации» распалось на три числа: заведено, подтвердили почту, из них с известным источником. Отвал на подтверждении выглядел как 54% только потому, что в него попали сотрудники: их заводит владелец, почту они не подтверждают. По владельцам около 10%. А утром на одном экране стояло число регистраций рядом с колонкой, сумма которой была впятеро меньше. Ввели правило: одно имя, одна величина, один период.

Днём разобрали майский отвал 47,6% при 4-11% в другие месяцы. Выглядело как авария с письмами, и мы почти пошли чинить письма, которые работали. Оказалось, в начале мая на нашем домене завели три десятка тестовых аккаунтов, и почти все они почту не подтверждали. Без них 19,6%.

Суббота. Правильно. Просто перестали верить своему счётчику: он завышал посетителей примерно втрое, потому что 84% записей в нём это одностраничные визиты роботов, а два внешних счётчика сходятся между собой с расхождением меньше 4%. Трафик берём из Яндекс.Метрики, свой счётчик оставляем только для связки «источник, регистрация». Включится, когда закончим подключение.

В выпуске №156 я нашёл шесть мест, где врала аналитика, и написал так, будто теперь всё. Это было начало. Четыре версии из пяти проходили проверку «суммы совпадают с итогом», и это ничего не значило: арифметика была верной всегда. Врал смысл слов в шапке.

На экране теперь три числа регистраций вместо одного, строка «отсеяно автоматики», подсказка у каждой метрики и прочерк там, где данных нет. Ноль врёт, прочерк честен. И доли, которые я наконец знаю: половина заведённых аккаунтов это сотрудники, из владельцев девять из десяти доходят до кабинета, каждый шестой кабинет создан во втором контуре.

Круг замкнули, по нему поехали фантомы

Петля фантомной выручки в четыре шага. Первый: компания вручную начисляет клиенту бонус на баланс. Второй: отчёт складывает эти бонусы в столбец «Выручка», семь строк из восьми оказались фантомами. Третий: офлайн-конверсия отправляет сигнал об успешной оплате в рекламный кабинет. Четвёртый: рекламный алгоритм учится искать людей, похожих на тех, кому мы сами подарили бонус. В центре: владелец кладёт сдачу в кассу, бухгалтер считает это выручкой.

В пятницу утром дописали колонки по группам месяца прихода (первая оплата, повторная, выручка), которые всегда были нулями: кода для них не существовало. И увидели худшее число недели. Начисленный компанией бонус считался выручкой: мы сами кладём клиенту на баланс ручные начисления, а отчёт складывал их в столбец «оплаты». В столбце «первая оплата» новых аккаунтов за три месяца семь строк из восьми оказались нашими же начислениями, и сумма в столбце была завышена в разы. Речь только об этом отчёте по новым регистрациям, не о выручке компании. Но решение о рекламном бюджете принималось бы по нему.

Владелец магазина кладёт в кассу деньги на сдачу, а бухгалтер вечером считает их выручкой. Касса сходится. Бизнеса нет. Если у вас в CRM есть столбец «оплаты», загляните в него сегодня: бонусы за отзыв, возвраты и тестовые заказы лежат там ровно так же, как у нас лежали наши подарки.

Тот же пропуск стоял ещё в двух местах. В прошлом выпуске я рассказывал, как мы замкнули последнюю милю офлайн-конверсий: зачисление денег само сообщает рекламным кабинетам о покупке. Так вот, 10 наших начислений уехали в рекламные кабинеты как покупки. Реклама училась бы искать людей, похожих на тех, кому мы сами подарили бонус. И 6 из 7 «конвертированных» пробных периодов были помечены тем же начислением.

А одна из реальных оплат конца июля в очередь офлайн-конверсий не попала. Почему, восстановить не удалось: логи писались сплошным текстом, поле с причиной тонуло в нём, а подробный журнал за тот день уже не сохранился. Что ответила CRM в тот раз, тоже не узнать. Знаем, что она отвечала «ок» и когда ничего не ставила в очередь: лид не найден, для этого контура передача в рекламу отключена, кабинет собственных продаж не настроен.

Теперь «ок с нулём в очереди» это предупреждение, и в нём написано, почему ноль. Мне хотелось бы сказать, что это очевидно. Но я сам читал «ок» и верил ему. Успех и «ничего не сделал, но не упал» обязаны выглядеть по-разному, иначе автоматизация разносит ошибку туда, где её уже не поймать.

Партнёрская ссылка: утром запустили, к обеду чинили

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

Архитектура протекающего ведра: куда исчезают комиссии партнёров. Три течи в трубе. Блокировщики режут браузерные запросы на фиксацию клика. Смена устройства: ссылка открыта на компьютере, а подтверждение на телефоне, и побеждает «прямой заход». Перезапись меток: партнёр дописал свою метку и перебил системную. Решение внизу: короткие серверные ссылки из восьми символов, метка переживает смену устройства, код доезжает до базы.

Утром в 10:42 мы перевели партнёрские ссылки на короткий серверный адрес. Причин три, и все про деньги партнёра. Аналитика не знала старый параметр и считала переходы прямыми. Метка ставилась из браузера, а один популярный браузер режет такие метки с 90 дней до 7: купон, на котором написано «три месяца», сгорал через неделю. И клик регистрировался запросом из браузера, который режут блокировщики, а обработчик при ошибке молчал. Заодно укоротили коды до восьми символов без путающихся пар, ссылка стала втрое короче, а перенаправление сделали временным, а не постоянным: постоянное браузер запомнил бы навсегда, и второй клик до сервера не дошёл бы.

В 12:42 срочная правка. На живом сервере каждая партнёрская ссылка вела в никуда. Сервер собирал адрес назначения «от себя», а «от себя» изнутри это внутреннее служебное имя, которого браузер человека не знает. Это визитка, на которой вместо адреса написано «мой дом». Хозяин прекрасно знает, где его дом. Гость нет. Около двух часов, судя по журналу правок, партнёр не получил бы выплату ни за кого.

Ещё до этого, в одиннадцатом часу, закрыли тихую потерю. Если партнёр дописывал к нашей ссылке свою метку «из Telegram», она перебивала нашу, и его клиент вставал в воронке как «пришёл из Telegram», а не «от партнёра». Партнёр привёл человека и остался без комиссии, не зная об этом.

Днём закрыли дыру серьёзнее: хитро составленная ссылка выглядела как наша, а вела на чужой сайт и несла наши метки. Закрыли в два рубежа и в тот же день перепроверили остальные ссылки того же вида. Ближе к вечеру закрыли ещё одну лазейку того же рода и ещё одну тихую потерю: что в ней было, в описании не осталось. А поздним вечером второй раз чинили запись адреса посетителя: всё, что заходило через наш сервер, записывалось одним и тем же адресом, как будто все клики сделал один человек. Данные за тот промежуток не восстановить.

Три срочные правки за день. Общая причина хотя бы одной из трёх: первый клик по своей же ссылке снаружи никто не сделал. Что я сделал бы иначе: выкатывал бы такую вещь после обеда, когда партнёры прошли утренний пик, и первым делом кликнул бы по ней с телефона, не из офиса.

Четверг был спокойнее. Утром партнёрский код научился переживать подтверждение почты. Два сценария молча съедали комиссию: человек регистрируется на компьютере, а письмо открывает на телефоне, где когда-то читал наш блог, и метка «прямой заход» с телефона побеждает код, выписанный нашим же сервером; и кнопка «отправить письмо ещё раз», которая формировала ссылку без кода. Ближе к обеду появился конструктор ссылки на конкретную страницу: код работает только перед путём, а партнёр естественно дописывает его в конец, и переход засчитывается как обычный. Он не узнал бы никогда. Если правило легко нарушить незаметно, нужен инструмент, а не подсказка в тексте.

Кому засчитаны клиенты по ссылкам старого формата, я ещё проверяю. Линия та же, что с партнёрской почтой под своим брендом из №156: партнёр отдаёт нам клиента и верит, что мы его посчитаем. Комиссия это чужие деньги. Громкую ошибку партнёр увидит и напишет. Тихую примет за то, что программа не работает.

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

Занятие нельзя было закрыть. Никому

История для тех, у кого в платформе живёт расписание: студии, секции, салоны.

Эффект бабочки: опечатка ценой в зарплату. Цепочка сверху вниз. Уровень кода: пропущена одна буква в имени колонки. Уровень базы: база отказывает в сохранении и отдаёт ошибку. Уровень системы: слой данных глушит ошибку и возвращает статус «ОК». Уровень пользователя: администратор видит технический код и не может закрыть занятие. Бизнес-итог: занятия нет в показателях, тренер не получает зарплату. Урок: успех и «упал молча» обязаны выглядеть по-разному.

Поздним вечером в четверг починили смену статуса занятия. Она падала всегда и у всех: CRM подставляла в запрос имя колонки с одной пропущенной буквой, база отвечала ошибкой, ошибка по дороге терялась и превращалась в «ничего», а администратор видел технический код на английском. Через минуту кабинет перестал показывать сырой код: причины отказа сведены к человеческим, «есть активные записи», «только администратор», «не сохранилось».

Следствие тянется дальше кнопки. Зарплата сотрудника считается только по закрытым занятиям, а закрыть было нельзя, значит занятий нет ни в показателях, ни в расчёте. В статусе «завершено» были только созданные задним числом. С какого дня так было, из данных не видно.

Это окошко, где графа в форме называется «дата изменения», а печать ставят в «дата изменений». Клерк молча откладывает бумагу, а посетитель уходит с ощущением, что всё принято.

В прошлом выпуске была карточка сотрудника с длинной ролью, которая молча не сохранялась. Тот же класс. В среду нашли ещё одну: при занятой почте сотрудника кабинет писал «не удалось создать» вместо «такой адрес уже есть».

Ночь на субботу ушла на вкладку «Список» в расписании, к утру она вышла: «Все пришли», «Закрыть выбранные», журнал «кто и когда сменил статус». За субботу и ночь на воскресенье довели: произвольный период, тренер видит только свои занятия и без массовых действий. Наутро список открывался с ошибкой доступа: адрес терял один символ по пути через сервер, и сессия сбрасывалась. Чинили всю субботу, до ночи. Хорошо, что закрытие починили за полтора дня до списка: массовое закрытие поверх мёртвой кнопки было бы массовой тишиной.

Ради этого списка всё и делалось. Если у вас в расписании остались занятия за прошлые периоды, которые никто не смог закрыть, закройте их выбором из списка: они до сих пор висят незавершёнными, а значит не попали ни в показатели, ни в зарплату. Мне бы хотелось написать, что мы сами всё пересчитаем. Но с какого дня колонка называлась не так, из данных не видно, и какие из этих занятий состоялись, знаете только вы.

Дек: ещё девять заходов, и один раз не тот файл

Закон одной буквы: ошибка инвестиционного дека. Два файла лежат друг на друге, имена отличаются одним символом, у нижнего он обведён красным. Контекст: девять итераций презентации, сжатие с 16 мегабайт до 1,3, ночные правки, и старая версия легла поверх новой на живом сайте. Правило публичных документов: внимательность в час ночи не работает ни у кого, черновик не должен лежать в одной папке с чистовиком и отличаться одной буквой.

Материалы раунда на этой неделе снова резали. В понедельник вошла версия на десять страниц, и в тот же день из неё убрали формулировку, которая обещала больше, чем есть. В ночь на вторник PDF ужали с 16 МБ до 1,3, по замечаниям после первых показов добавили инфографику, к двум часам ночи появилась английская версия. В четверг осталось девять страниц и одна из секций переписана. Девять заходов: семь содержательных правок, одно техническое и одно восстановление. Про «резать» я всё сказал в прошлом выпуске, повторяться не буду.

Расскажу про восстановление, потому что его в отчёте проще всего пропустить. Во вторник утром выяснилось, что ночью выложили не тот файл: две версии лежали в одной папке, и при сохранении одна легла поверх другой. Заметили, восстановили. Вывод не про «быть внимательнее в час ночи». Внимательность в час ночи не работает ни у кого. Файлы с разной судьбой не должны лежать в одной папке, и это единственное, что тут можно починить.

В среду дек стал живой страницей вместо файла. Причина скучная и честная: PDF живёт своей жизнью, его пересылают, и я перестаю понимать, кто какую версию читает. Живую страницу я хотя бы могу поправить. От поисковиков её закрыл, и вот тут было неуютно: страница, которую нельзя найти, требует, чтобы я сам не забыл дать на неё ссылку. Публичная точка входа прежняя: botseller.ai/invest.

Настройки сайта месяц расходились с сервером, а блог терял читателя

Чертёж против здания: конец человеческой дисциплины. Слева план из кодовой базы на две страницы, справа реальный сервер на четырнадцать, между ними разрыв с подписью «рассинхрон длиною в месяц». Проблема: применил бы кто-то версию из кода, и двенадцать живых страниц ответили бы «удалено». Решение: автоматическая проверка при сборке сравнивает код с сервером и подсвечивает расхождения жёлтым. Сверка дешевле обещаний.

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

Чертёж отстал от здания на месяц. Построй по нему, и снесёшь двенадцать жилых комнат.

Чинить дисциплиной я не стал. Сделали автоматическую проверку при сборке сайта, которая ничего не меняет: сравнивает кодовую базу с сервером и подсвечивает расхождение жёлтым. Заодно два правила, которые обязаны сходиться всегда: списки ниш совпадают, на российском домене нет зарубежных счётчиков и виджетов. Второе продолжает разделение контуров из №156, только теперь это сверка, а не обещание. Первый прогон оказался нечитаемым, сделали читаемый разбор.

Сверка дешевле дисциплины: дисциплина кончается в первый же загруженный день. У вас, кстати, те же три копии одного прайса: на сайте, на стойке и в CRM. Расходятся они ровно так же и ровно поэтому.

Пятница ушла на блог. Показы растут, клики стоят, и единственное, что можно сделать за день, это перестать терять уже пришедшего читателя. Под каждой статьёй появился блок «куда дальше»: следующий шаг по теме и вход в нужный раздел продукта. До этого пять статей одного тега уводили в одну и ту же историю про рассылки, одна статья собирала больше половины кликов блога и уводила не туда, а семь партнёрских статей с сотнями показов и единицами кликов заканчивались тупиком. Теперь блок есть у 58 статей, у 14 самых читаемых он подобран под статью, а партнёрский раздел получил семь входов вместо нуля.

И там же поправили обещание, которого не было: блог писал про 7 дней пробного периода. Пробный период у нас 3 дня. Обидно, потому что это наш же текст.

Три коротких: рассылки по своей базе, списание баланса, голос

Рассылки. В понедельник починили рассылку по существующим лидам: она не запускалась вовсе, теперь шаблоны официального канала WhatsApp работают и для своей базы, а с четверга данные лида записываются в CRM, и рассылка проверяет, что лид там есть. Для клиента это значит, что напомнить о себе старым контактам можно теми же согласованными шаблонами, с которыми в прошлом выпуске было столько мучений. И честная строчка: в четверг днём в службу официального канала вошла правка, а через тринадцать минут её сняли. Что она меняла, из описания не понять. Пишу об этом только потому, что тринадцать минут в службе, через которую идут деньги клиентов, я обязан уметь объяснить, а не умею.

Баланс. Если вы платите за официальный канал WhatsApp, до пятницы списание считалось не по той формуле: настройки читались из места, где их не было, а сам расчёт шёл в обход общего механизма списаний. С пятницы считается правильно. Сколько и в какую сторону расходилось до этого, по данным недели я оценить не могу, и это беспокоит меня больше самой ошибки. Поэтому не пишу «никто не пострадал»: разберу по журналу списаний и напишу отдельно. В ночь на субботу заложили фундамент пакетных тарифов, в кабинете их пока не видно, увидите на следующей неделе. Перед выкладкой второй человек прочитал код и закрыл замечание по правам доступа. Скучная фраза, но ровно такие экономят деньги.

Голос. В понедельник в настройках канала появился новый голосовой движок: он обходится нам в несколько раз дешевле за минуту разговора. Второй новый движок пока только в списке выбора: выбрать его можно, работать он ещё не работает. Для клиента ничего не меняется: цену минуты я не трогал, сначала послушаю движок на живых разговорах.

Главный итог недели

Новая архитектура честности. Слева перечёркнутая карточка «Регистрации: 140», справа три отдельных числа: заведено аккаунтов, включая тестовые и сотрудников; подтвердили почту, то есть реальные люди; известен источник, то есть трафик, пригодный для аналитики. Внизу три правила: одно имя, одна величина, один период; ноль врёт, прочерк честен; отсеянная автоматика выносится в отдельную видимую строку.

Неделю назад я учился показывать компанию инвестору как есть. На этой оказалось, что самому себе я показывал её не как есть, а как сходится.

Половина дефектов недели это одно слово на две сущности. «Клиент платформы» оказался человеком из мессенджера. «Регистрации» оказались тремя числами. «Выручка» оказалась нашими же бонусами. «Клиент партнёра» оказался прямым заходом. Ни одна не ломала арифметику, и ровно поэтому ни одну не ловила проверка «сходится».

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

И два правила поменьше, оба выстраданные на этой неделе. Своё измерение, которое нельзя проверить снаружи, лучше отдать чужому счётчику, чем гордиться им. А правило, которое легко нарушить незаметно, чинится не подсказкой в тексте, а инструментом.

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

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

Следующая неделя: тарифные планы выходят в кабинет, и история о том, как рассылка ушла залпом, по семнадцать сообщений в секунду, и что из этого вышло.

Приходите в Telegram-канал

Если этот формат отчётов вам полезен, подпишитесь на наш Telegram-канал @botseller_ai. Там я каждую неделю выкладываю бортовые журналы и короткие заметки про продуктовые решения, эксперименты и инциденты. Без рекламы, без воды, только то, что мы сами считаем важным.

Если хотите попробовать Botseller в своём бизнесе, используйте кнопку регистрации в шапке сайта. Я не вставляю отдельную ссылку в текст: платформа сама выберет правильный путь входа в зависимости от контура и настроек.

FAQ

Вы говорите, что бонусы считались выручкой. Это коснулось моего баланса?

Нет. Ошибка была в нашем внутреннем отчёте о собственных продажах, а не в начислениях и списаниях клиентов: баланс считается отдельным механизмом, и он этой ошибкой не затронут. Задело только нашу картину мира: мы думали, что зарабатываем на новых регистрациях больше, чем есть.

Я передаю покупки в рекламный кабинет через офлайн-конверсии. Ваши бонусы могли попасть ко мне как покупки?

Нет. Речь о нашем собственном рабочем кабинете и наших рекламных кабинетах, куда уходили наши же начисления. Ваши конверсии уходят из вашей CRM в ваши кабинеты, и наши начисления к ним отношения не имеют.

Что делать со старыми партнёрскими ссылками?

Они продолжают открываться, но механика поменялась: новая ссылка короткая, клики считаются на сервере, код доезжает до подтверждения почты даже с другого устройства. Для ссылки на конкретную страницу пользуйтесь конструктором в кабинете, а не собирайте адрес руками. Кому засчитаны переходы по ссылкам старого формата, я ещё проверяю и напишу, когда буду уверен.

Почему занятие не закрывалось и что теперь с зарплатой сотрудников?

Смена статуса падала из-за одной буквы в названии колонки, а ошибка глушилась, и кабинет показывал технический код. Незакрытые занятия не попадали в показатели и в расчёт зарплаты. Теперь закрытие работает по одному и пачкой через вкладку «Список». Занятия за уже закрытый месяц платформа задним числом не пересчитает: закройте их, и они попадут в показатели текущего периода, а доплату за прошлый считайте по своему журналу.

Что изменилось в рассылках WhatsApp по своей базе?

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

Могло ли списание за официальный канал WhatsApp посчитаться неверно?

До пятницы расчёт брал настройки не оттуда, откуда нужно. С пятницы он считается правильно. Сверку по журналу списаний я довожу до конца и опубликую итог отдельно. Если в истории баланса есть строки, которые вы не можете объяснить, напишите в поддержку с датами, разберём вручную.

Пробный период 3 дня или 7?

Три дня. В блоге стояла старая цифра про семь, и на этой неделе мы её убрали. Если где-то ещё встретите «7 дней», это устаревший текст.