Blog

Wtyczka do Chrome — opisy bloków na kanwie user.com

Uporządkowana lista bloków scenariusza automatyzacji.

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.

Kanwa automatyzacji bez opisów pokazuje tylko typy bloków; z opisami widać regułę biznesową przy każdym klocku

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 polem graph, 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ą"

Po lewej plątanina połączeń na kanwie, po prawej ten sam scenariusz jako lista kroków z narastającym czasem i sekcją bloków niepodłączonych

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.

Panel wtyczki nałożony na kanwę automatyzacji user.com — lista bloków z polami opisu

Instalacja

  1. Pobierz repozytorium (ZIP albo git clone).
  2. Wejdź w chrome://extensions i włącz Tryb dewelopera.
  3. Załaduj rozpakowane → wskaż katalog z wtyczką.
  4. 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.

Diagram: z izolowanego świata żądanie jest odrzucane, ze świata MAIN zwraca 200; obok kontrakt pola graph — PATCH ze stringiem 200, PATCH z obiektem 400

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:

  1. 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".
  2. Warunki opisuj regułą, nie nazwą segmentu. „Kupował w ostatnich 90 dniach" przetrwa zmianę nazwy segmentu, „segment A" nie przetrwa niczego.
  3. 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.