Blog
Wtyczka do Chrome — opisy bloków na kanwie user.com
Przy każdym większym wdrożeniu marketing automation dochodzę do tego samego momentu: automatyzacja ma trzydzieści bloków, działa, zarabia — i nikt już nie pamięta, dlaczego trzeci warunek od góry wygląda właśnie tak. Kanwa pokazuje typ klocka („Warunek", „Wyślij e-mail", „Opóźnienie"), ale nie regułę biznesową, która za nim stoi.
W user.com bloki mają pole opisu. Siedzi w grafie automatyzacji, wyświetla się na kanwie pod tytułem klocka — ale edytor nie wystawia go w żadnym formularzu. Ustawić je można tylko przez API.
Napisałem więc wtyczkę do Chrome, która robi z tego zwykły formularz. Jest darmowa, na licencji MIT, kod leży publicznie: github.com/mateuszgolen/usercom-opisy-klockow.
Problem: scenariusz, którego nie da się przeczytać
Automatyzacja bez opisów jest czytelna dokładnie tak długo, jak długo pamiętasz, po co ją zbudowałeś. Potem zaczynają się koszty:
- Wdrożenie nowej osoby to przeklikanie każdego bloku po kolei i odtwarzanie logiki z warunków.
- Zmiana po pół roku wymaga najpierw archeologii, a dopiero potem pracy.
- Przekazanie klientowi kończy się osobnym dokumentem w Google Docs, który dezaktualizuje się przy pierwszej edycji scenariusza.
- Audyt cudzego wdrożenia — moja codzienność — zaczyna się od godziny klikania.
Dokumentacja, która żyje obok narzędzia, zawsze się rozjeżdża. Jedyna, która nie kłamie, to ta w samym scenariuszu.
Co robi wtyczka
Panel otwiera się przyciskiem w prawym dolnym rogu kanwy i ma dwie zakładki.
Zakładka „Opisy"
Lista wszystkich bloków automatyzacji z polem tekstowym przy każdym:
- kolejność jak na kanwie, od lewej — numeracja w panelu odpowiada temu, co widzisz
- „pokaż" podświetla blok na kanwie i do niego przewija
- „Kopiuj backup" zrzuca cały graf do schowka, zanim cokolwiek zmienisz
- zapis idzie
PATCH-em wyłącznie z polemgraph, więc nie rusza statusu włączenia automatyzacji ani jej ustawień czasowych - po zapisie wtyczka czyta dane z serwera i weryfikuje, czy zmiana faktycznie weszła
- przed zapisem porównuje graf z wersją serwerową i odmawia, jeśli ktoś w międzyczasie zmienił automatyzację — zamiast po cichu nadpisać cudzą pracę
Ten ostatni punkt jest ważniejszy, niż wygląda. Współbieżna edycja w narzędziach marketing automation to klasyczne źródło „przecież to działało wczoraj".
Zakładka „Schemat"
Kanwa rozkłada bloki w przestrzeni. Przy kilkunastu gałęziach linie plączą się do stanu, w którym nie widać, co po czym następuje. Ta zakładka pokazuje ten sam graf jako listę kroków:
- prosty ciąg leci płasko, jedna pozycja pod drugą, w kolejności wykonania
- wcięcie pojawia się tylko tam, gdzie ścieżka naprawdę się rozdziela — jeśli gałęzie schodzą się z powrotem, od punktu zejścia wracamy na główny poziom
- przy opóźnieniach i wysyłkach narasta czas (
D+3,D+14…), liczony ścieżką bez objazdów - nawroty pokazują się jako „dalej jak w kroku N" zamiast powielać całe gałęzie
- bloki, do których nic nie prowadzi, lądują w sekcji „nie podłączone — nigdy się nie wykonają"
Ostatni punkt znajduje błędy. Blok bez wejścia na kanwie wygląda identycznie jak blok podłączony — po prostu nigdy się nie wykonuje i milczy. Zdarza się to po przebudowie scenariusza częściej, niż ktokolwiek przyznaje.

Instalacja
- Pobierz repozytorium (ZIP albo
git clone). - Wejdź w
chrome://extensionsi włącz Tryb dewelopera. - Załaduj rozpakowane → wskaż katalog z wtyczką.
- Otwórz dowolną automatyzację — przycisk „Opisy klocków" pojawi się w prawym dolnym rogu.
Nie ma jej w Chrome Web Store i to jest świadome: narzędzie jest niszowe, a przy rozszerzeniu z dostępem do panelu marketing automation wolę, żebyś widział kod, który uruchamiasz.
Co wyszło przy pisaniu — trzy rzeczy o API user.com
Dla tych, którzy dłubią przy tej platformie sami. Wszystko poniżej ustaliłem doświadczalnie, na jednorazowej automatyzacji.
1. Skrypt musi biec w świecie MAIN
To była najdroższa godzina. Z domyślnego izolowanego świata rozszerzenia to samo fetch idzie jako żądanie cross-origin z nagłówkiem Origin: chrome-extension://… i serwer je odrzuca — mimo że identyczne wywołanie z kontekstu strony zwraca 200. Rozwiązanie to "world": "MAIN" w manifeście.
2. Pole graph przyjmuje string, a oddaje obiekt
PATCH z grafem jako obiektem dostaje 400 i {"graph":["Not a valid string."]}. Z grafem podanym jako string JSON — 200. Ale GET oddaje to samo pole jako obiekt. Normalizacja w obie strony jest obowiązkowa.
3. OPTIONS kłamie
Raportuje graph jako pole tylko do odczytu. Zapis działa.
Bonus: opis siedzi w dwóch różnych polach
Zależnie od wersji edytora, w której blok powstał, opis trafia do attrs.description.html (nowsze, kawałek HTML) albo attrs['.desc'].text (starsze, zwykły string). W badanym workspace 174 z 231 bloków miało ten starszy kształt — obsługa tylko nowszego oznaczałaby „brak pola opisu" w większości scenariuszy.
Zanim klikniesz zapis
Dwie rzeczy, o których warto wiedzieć:
- Zmiany idą do wspólnego grafu. Widzi je każdy, kto ma dostęp do workspace'u. To nie jest prywatna nakładka na widok — i o to chodzi, bo dokumentacja prywatna nie jest dokumentacją.
- Zamknij duplikaty zakładek. Jeśli ta sama automatyzacja jest otwarta gdzie indziej, kliknięcie tam „Save" nadpisze graf stanem z pamięci tamtej zakładki i cofnie Twoje zmiany.
Jak opisywać bloki, żeby to miało sens
Samo pole nic nie da, jeśli wpiszesz w nie „mail 2". Trzy zasady, które stosuję u siebie:
- Opis odpowiada na „dlaczego", nie na „co". To, że blok wysyła e-mail, widać po typie klocka. Wartość jest w zdaniu „bez rabatu, bo ten segment kupuje bez zachęty".
- Warunki opisuj regułą, nie nazwą segmentu. „Kupował w ostatnich 90 dniach" przetrwa zmianę nazwy segmentu, „segment A" nie przetrwa niczego.
- Przy opóźnieniach podawaj powód doboru czasu. „24 h — capping na całą bazę" ratuje następną osobę przed skróceniem opóźnienia do dwóch godzin i wysłaniem pięciu maili dziennie.
To ta sama logika, którą opisywałem we wpisie o profilowaniu komunikacji: system jest tak dobry, jak zrozumiały dla osoby, która przyjdzie po Tobie.
Wtyczka jest darmowa i otwarta — weź ją z GitHuba, zgłoś błąd, zrób fork. A jeśli potrzebujesz kogoś, kto ułoży albo rozplącze same scenariusze, odezwij się — marketing automation wdrażam na user.com od strategii po działający lejek.
Najczęstsze pytania
Co dokładnie robi wtyczka „Opisy klocków"?
Dodaje na kanwie automatyzacji user.com panel z dwiema zakładkami. Pierwsza pozwala edytować opisy bloków, czyli te małe podpisy pod tytułem klocka, których edytor nie wystawia we własnym interfejsie. Druga rozwija ten sam scenariusz w listę kroków z numeracją, narastającym czasem i sekcją bloków, do których nic nie prowadzi. Wtyczka jest darmowa, na licencji MIT, a kod leży publicznie na GitHubie.
Czy wtyczka działa z Positive User?
Tak. Positive User to polska odsłona tej samej platformy, więc kanwa, graf automatyzacji i API są identyczne. Rozszerzenie wstrzykuje się na wszystkich adresach w domenie user.com w ścieżce /v3/, niezależnie od nazwy workspace'u.
Czy to bezpieczne dla moich automatyzacji?
Wtyczka wysyła PATCH wyłącznie z polem graph, więc nie dotyka statusu włączenia automatyzacji ani jej ustawień czasowych. Przed zapisem porównuje graf z wersją na serwerze i odmawia zapisu, jeśli ktoś zmienił automatyzację od czasu wczytania. Po zapisie czyta dane z powrotem i sprawdza, czy zmiana faktycznie weszła. Jest też przycisk kopiowania pełnego backupu grafu do schowka. Mimo to zasada zostaje ta sama, co przy każdej zmianie na produkcji — najpierw testuj na automatyzacji, której nie szkoda.
Czy opisy widzą inne osoby w zespole?
Tak i to jest sedno. Opis siedzi w grafie automatyzacji po stronie serwera, więc widzi go każdy, kto ma dostęp do workspace'u — także bez zainstalowanej wtyczki. To nie jest prywatna nakładka na widok, tylko realna zmiana dokumentacji scenariusza.
Dlaczego wtyczki nie ma w Chrome Web Store?
Bo narzędzie jest niszowe i celowo trzymam je jako repozytorium do samodzielnego załadowania. Instalacja zajmuje dwie minuty: chrome://extensions, tryb dewelopera, „Załaduj rozpakowane" i wskazanie katalogu. Dzięki temu widzisz dokładnie ten kod, który uruchamiasz — a przy rozszerzeniu z dostępem do panelu marketing automation to rozsądna zamiana.
Dlaczego niektórych bloków nie da się opisać?
Dwa typy są zablokowane celowo. Kampanie e-mail odtwarzają opis z własnych ustawień przy każdym wczytaniu, więc wpisany tekst i tak by zniknął. Notatki „Własny opis" trzymają tekst we własnej treści bloku, gdzie edytuje się go normalnie w interfejsie. W obu przypadkach edycja przez panel dawałaby złudzenie zapisu bez efektu.