Scaling Labs
Cold Email Ops

Zarządzanie cold emailem na skalę - system monitoringu mailboxów, który zbudowałem w Claude Code

Sequencery takie jak Instantly czy Smartlead pokazują wyniki kampanii, a nie kondycję mailboxów. Przy kilkuset skrzynkach ta luka niepostrzeżenie kosztuje godziny dziennie. Oto system, który zbudowałem, żeby ją zamknąć - funkcja po funkcji - i szczera odpowiedź na pytanie, komu coś takiego się przyda.

Albert Zuszman20 czerwca 202611 min czytania

Jeśli prowadzisz cold email na jakimkolwiek poważnym wolumenie, znasz ten problem. Zarządzanie setkami albo tysiącami mailboxów potrafi być naprawdę uciążliwe, a powód jest prosty - sequencery, z których wszyscy korzystają, nie dają danych, jakie są potrzebne, żeby nimi zarządzać. Instantly, Smartlead i cała reszta pokazują, jak radzi sobie kampania. Nie pokazują, jak radzi sobie każdy mailbox i każda domena w tej kampanii.

Trafiłem na tę ścianę przy 220+ mailboxach. Zarządzanie nimi pochłaniało jakieś cztery godziny każdego dnia roboczego. Zbudowałem więc własny, wewnętrzny system w oparciu o API Instantly, który pokazuje to, co każdy sequencer chowa - które mailboxy naprawdę pracują, które domeny się wykrwawiają i co z tym zrobić - bez niczyjego nadzoru. Całość zajęła jakieś 25 godzin w Claude Code i służy nam dzisiaj za codzienny kokpit operacyjny. Oto co robi, funkcja po funkcji, i szczera odpowiedź na pytanie, komu coś takiego się przyda, a komu zupełnie nie.

1. Dane, których sequencer Ci nie pokazuje

Sequencery raportują na poziomie kampanii i na tym polega problem. Widzisz zbiorczy reply rate i zbiorczy bounce rate, ale nie widzisz, które 12 z Twoich 220 mailboxów ściąga średnią w dół. Nie widzisz, że dwie z piętnastu domen tkwią na 0.5% reply rate, podczas gdy reszta ciągnie całą kampanię. Nie rozróżnisz, czy 3.2% bounce rate kampanii to jeden słaby mailbox, czy trzy umierające domeny.

Dane, które naprawdę liczą się na skalę, są o poziom niżej - reply rate na mailbox, bounce rate na mailbox, reply i bounce na domenę, performance na providera. Nic z tego nie jest pokazane. Albo więc nie znasz prawdziwego obrazu, albo go znasz, ale ręczne odtworzenie go zajmuje co tydzień wiele godzin (albo cały etat).

Ten ślepy punkt kosztuje w sposób, który nie wychodzi na jaw, dopóki coś się nie zepsuje. Spalona domena dalej wysyła. Mailbox na blacklist nadal przepala Twoje dobre leady. Wyniki kampanii wyglądają znośnie - dokładnie do chwili, w której reputacja nadawcy zdążyła już runąć.

2. Ile to realnie kosztuje na skalę

Wyobraź sobie poniedziałkowy poranek - albo, jeśli jesteś founderem, niedzielne popołudnie. Siadasz do kampanii i widzisz solidne zbiorcze liczby. Nie widzisz natomiast, czy część mailboxów odpowiada na poziomie 8%, podczas gdy inne tkwią na 0.5%. Gdy bounce'y skoczyły w tym tygodniu, choć lista się nie zmieniła, nie wiesz, czy dotyczy to wszystkich mailboxów, czy tylko jednego. Gdy domena jest spalona, nie wiesz która.

Do tego dochodzi operacyjny bałagan. Prowadząc agencję, potrafisz odpalić piętnaście kampanii w jedno popołudnie. Każda nowa kampania to ręczne wklejanie adresów webhooków do sequencera, a przy kilkunastu aktywnych kampaniach to właśnie tutaj wszystko zaczyna się niepostrzeżenie sypać. Rozłączenia warmupu uchodzą uwadze - mailbox po reconnekcie potrafi siedzieć z wyłączonym warmupem przez dwa tygodnie, zanim ktoś to wychwyci. A gdy mailbox zaczyna tonąć, niełatwo stwierdzić, od którego providera pochodzi.

Przez jakiś czas miałem w zespole osobę, która tym wszystkim się zajmowała. Gdy ta rola się skończyła, stanąłem przed wyborem - zatrudnić kogoś od razu, niekoniecznie najlepiej dopasowanego, albo poprowadzić to przez jakiś czas samemu i zatrudnić lepiej później. Jednego byłem pewien - nie mogę robić tego dalej ręcznie. Pochłaniało za dużo czasu. Musiał istnieć lepszy sposób.

3. Dlaczego sama automatyzacja nie wystarczyła

Pierwszym odruchem była czysta automatyzacja. Zacząłem składać workflowy w Make i n8n, i to działało - zautomatyzowałem przekazywanie leadów, powiadomienia na Slacku, aktualizacje CRM. Realnie zaoszczędzony czas.

Ale to się nie skalowało. Skończyło się na osobnym zestawie workflowów dla każdego use case'u, a potem na kolejnym osobnym dla każdego klienta. Część z nich się psuła. Było taniej i lepiej niż robienie wszystkiego ręcznie, ale i tak przelewałem czas w utrzymanie samych automatyzacji. To, co miało oszczędzać czas, samo zamieniło się w robotę.

4. Budowa w Claude Code jako non-developer

Jak wielu ludzi, którzy korzystają dziś z Claude Code, nie jestem developerem. Nigdy w życiu nie napisałem linijki kodu. Wiedziałem za to dokładnie, czego potrzebuję i jak to ma działać, a okazuje się, że to właśnie ta część liczy się najbardziej.

Usiadłem więc z kawą i zacząłem opisywać system - jakie dane ma pobierać z API Instantly, co ma flagować, jak ma wyglądać każdy widok. Jakieś 25 godzin pracy później działał. Pięć lat temu zamówienie takiej aplikacji kosztowałoby dwadzieścia czy trzydzieści tysięcy. To, że osoba bez doświadczenia w programowaniu może dziś zbudować dokładnie to wewnętrzne narzędzie, którego potrzebuje, jest szczerze mówiąc ciekawsze niż samo narzędzie.

5. Co widzę - dashboard, zdrowie mailboxów i rollup domen

Trzy z siedmiu funkcji dotyczą widoczności i razem są pierwszym miejscem, w które zaglądam każdego ranka. Pierwsza to ujednolicony widok mailboxów - jeden dashboard pokazujący wszystkie 220+ mailboxów u różnych providerów (ZapMail, ręcznie dodane konta i cała reszta), ze statusem, wolumenem wysyłki i health score dla każdego. Koniec przeskakiwania między zakładkami sequencera a panelami providerów. Pięć sekund i widzę stan wszystkiego.

Druga to monitoring kondycji na poziomie mailboxa. Każdy mailbox dostaje health score liczony automatycznie z jego bounce rate i reply rate, a wszystko poniżej progu jest flagowane na czerwono. Zamiast wpatrywać się w średnie na poziomie kampanii i zgadywać, widzę dokładnie, które mailboxy są problemem, zanim utopią całą kampanię.

Trzecia to rollup na poziomie domeny z wykrywaniem martwych domen. Bounce i reply rate są agregowane na domenę po wszystkich należących do niej mailboxach, a domeny z systemowymi problemami - wysoki bounce, zero odpowiedzi, trafienia na blacklist - są flagowane do wycofania. Domeny nie umierają w pojedynkę, tylko według pewnych wzorców, więc wychwycenie umierającej domeny tydzień wcześniej ratuje całą rotację, która od niej zależy. Jest też jednoklikowy blacklist check po wszystkich domenach.

6. Autopilot - smart ramp-up i auto-healing

To część, która zastąpiła juniora, i składa się z dwóch połówek. Pierwsza to krzywa smart ramp-up. Nowe mailboxy idą według 12-dniowego harmonogramu wolumenu - 3, 5, 5, 8, 10, 10, 13, 16, 20, 20, 23, 25 maili dziennie. Agresywny ramp pali skrzynki, a ostrożny to stracona szansa. Najważniejsze jest jednak to, co dzieje się obok samej krzywej - gdy w trakcie ramp-upu pojawi się hard bounce, krzywa cofa się o trzy dni i zatrzymuje na 48 godzin, zanim ruszy dalej. Nikt nie musi tego pilnować.

Druga połówka to auto-healing i działa na każdym mailboxie, nie tylko nowym. Gdy bounce rate mailboxa przekracza 5%, system automatycznie tnie jego dzienny limit wysyłki o połowę. Gdy spada poniżej 2%, limit stopniowo wraca w górę. Bez udziału człowieka. To istotne, bo bounce'y się kumulują - zanim ktoś zauważy je ręcznie, domena jest już na blacklist. System wychwytuje to w godziny, nie w dni.

W praktyce oznacza to, że stary mailbox, którego używam od miesięcy i który nagle zaczyna bounce'ować, zostaje sam oflagowany, przyduszony i odzyskany. Nie pilnuję tego. Patrzę na to, co zostało oflagowane, i ufam, że system odwalił robotę, którą junior robiłby ręcznie.

Prowadzisz cold email na poważnym wolumenie i masz dość zarządzania infrastrukturą?

Umów rozmowę

7. Ciche automatyzacje - webhooki i warmup

Dwie kolejne funkcje wykonują mniej efektowną, ale naprawdę czasochłonną robotę. Pierwsza to podpinanie webhooków na podstawie tagów. Otaguj kampanię słowem-kluczem klienta, a system sam podpina właściwy zestaw webhooków dla tego klienta - replies, MQL-e, bounce'y - bez ręcznej konfiguracji przy każdej kampanii. Gdy masz ośmiu klientów i każdy wymaga innego routingu webhooków, to właśnie w ręcznym podpinaniu chowają się błędy. Dzięki temu nie da się o żadnym zapomnieć.

Druga to auto-reconnect i monitoring warmupu. System wypatruje mailboxów, które wypadają offline - wygasła autentykacja, wygasłe subskrypcje ZapMail - oraz mailboxów, które niezauważenie siedzą z wyłączonym warmupem. Rozłączony mailbox to taki, za który płacisz, a który zarabia zero. Wyłapanie tego w jeden dzień zamiast w dwa tygodnie to realne pieniądze.

8. Jak to się składa i co zastępuje

To nie jest siedem niezależnych narzędzi - razem tworzą jedną pętlę sprzężenia zwrotnego. Każdy nowy mailbox wchodzi w zarządzany cykl życia - potwierdzony warmup, uruchomiony ramp-up, monitorowana kondycja, przyduszenie przy bounce'ach, rollup na poziomie domeny, flaga przy rozłączeniu, wycofanie, gdy domena umiera. Dashboard to kokpit. Automatyzacja to autopilot.

Konkretnie - zamieniło to pełnoetatową rolę operacyjną w rzut oka. Wcześniej operacje na mailboxach to były jakieś cztery godziny dziennie na sprawdzaniu paneli providerów, porównywaniu metryk kampanii i ręcznym dostrajaniu limitów. Teraz to jakieś 30 minut dziennie na przejrzeniu dashboardu i zajęciu się tym, co oflagowane. Widoczność przeszła od 'Kampania X ma 3.2% bounce rate' do '12 mailboxów na tej domenie odpowiada za 80% bounce'ów' - od średniej kampanii do realnej przyczyny.

Usunęło też całą klasę cichych błędów - ręczne podpinanie webhooków po kilkunastu kampaniach, zapomniane przełączniki warmupu po reconnektach i uznaniowe decyzje o ramp-upie ('mam dziś pchnąć to na 25?'). System nie zastępuje strategii. Zastępuje operacyjną harówkę, która jest nieodłączna od prowadzenia infrastruktury na skalę.

9. Kto tego potrzebuje, a kto naprawdę nie

Powiem szczerze, gdzie przebiega granica, bo to nie jest narzędzie dla każdego. Jeśli prowadzisz kampanie na pięciu czy dziesięciu mailboxach, nie buduj niczego takiego. Ogarniesz to ręcznie i nie zajmie ci to dużo czasu. A jeśli masz kilka tysięcy mailboxów, niemal na pewno masz już swoje systemy.

To środek jest tym miejscem, gdzie to się liczy - od stu do kilkuset mailboxów, poważny wolumen, ale jeszcze bez wewnętrznego zespołu platformowego. To przedział, w którym praca ręczna jest na tyle ciężka, że boli, ale jeszcze nie na tyle duża, żeby ktoś ją za ciebie rozwiązał. Dokładnie tam byłem przy 220.

Szersza myśl to ta, do której ciągle wracam. Praca nad infrastrukturą stojącą za cold emailem na skalę kiedyś wymagała albo pełnego etatu, albo pięciocyfrowego custom buildu. Dziś osoba, która naprawdę rozumie problem, może zbudować narzędzie sama, w jakieś 25 godzin, i mieć je na własność zamiast opłacać czyjś SaaS. Ta zmiana jest warta więcej niż jakakolwiek pojedyncza funkcja w systemie.

W tym wszystkim nie chodzi o to, że narzędzie jest sprytne. Chodzi o usunięcie kategorii pracy, która niepostrzeżenie drenuje godziny i pozwala cichym awariom - spalonym domenom, zatrzymanym warmupom, brakującym webhookom - kosztować cię dobre leady. Przy kilkuset mailboxach widoczność na poziomie mailboxa i domeny to nie dodatek, bez którego można żyć. To różnica między wiedzą, co się dzieje, a dowiedzeniem się o tym, gdy jest już za późno.

Jeśli prowadzisz taki wolumen i wolałbyś mieć całą infrastrukturę ogarniętą za siebie - monitoring, ramp-up, dyscyplinę deliverability - to dokładnie ta część cold emaila, którą zdejmujemy naszym klientom z głowy.