NetSendo Logo
Platform Updates

NetSendo v2.1.1: Strony webinarowe, Calendly i naprawa autoresponderów

NetSendo TeamJuly 24, 20268 min czytania
NetSendo v2.1.1: Strony webinarowe, Calendly i naprawa autoresponderów
TL;DR: NetSendo v2.1.1 wprowadza edytowalne lejki webinarowe z wbudowanym harmonogramem Calendly, naprawia wieloletni błąd SQL w double opt-in, który po cichu blokował aktywację subskrybentów, oraz całkowicie przebudowuje wyzwalanie sekwencji autoresponderów na każdej ścieżce zapisu — od webhooków WooCommerce po wywołania narzędzia MCP.

Każda platforma marketingowa w końcu natrafia na ten sam mur: funkcje wyglądają świetnie w demo, ale rzeczywiste przypadki brzegowe po cichu pochłaniają leady. Linki potwierdzające, które zwracają błąd. Sekwencje autoresponderów, które nigdy się nie uruchamiają. Strony rejestracji webinarowej, których nie możesz dostosować. NetSendo v2.1.1 rozwiązuje wszystkie trzy problemy jednocześnie — opublikowane 24 lipca 2026, to najbardziej znaczące wydanie z poprawkami i funkcjami od wersji v2.0.

Niezależnie od tego, czy prowadzisz lejek wdrożeniowy SaaS, kampanię generowania leadów opartą na webinarach, czy sklep WooCommerce z sekwencjami e-mail po zakupie — to wydanie bezpośrednio wpływa na Twoją dostarczalność i współczynniki konwersji.

🚀 Co nowego w v2.1.1

Edytowalne strony rejestracji i podziękowania dla webinarów

Dotychczas publiczna strona zapisu na webinar była szablonem z ograniczoną liczbą edytowalnych pól tekstowych. Od wersji v2.1.1 masz pełną kontrolę kompozycyjną zarówno nad stroną rejestracji, jak i przepływem strony podziękowania.

📝

Niestandardowe sekcje treści

Dodaj do 20 uporządkowanych sekcji tekstowych lub wideo powyżej lub poniżej formularza zapisu — zmieniaj kolejność, edytuj i usuwaj inline.

🎥

Osadzanie wideo

Wklej dowolny URL YouTube lub Vimeo (watch, shorts, live, unlisted), a NetSendo bezpiecznie wyodrębnia embed przez regex — wstrzyknięcie arbitralnego src iframe jest niemożliwe.

📅

Integracja z Calendly

Osadź widget inline Calendly na stronie podziękowania, wstępnie wypełniony imieniem i e-mailem rejestrującego się — rezerwacja jednym kliknięciem.

🔗

Autonomiczna strona podziękowania

Nowa publiczna trasa /webinar/{slug}/thank-you służy jako cel przekierowania po zakupie — z edytowalnym nagłówkiem, sekcjami i widgetem Calendly.

Jak to działa

W ekranie Tworzenia / Edycji webinaru znajdziesz dwie nowe karty: "Dodatkowe sekcje strony rejestracji" i "Strona podziękowania". Obie korzystają z nowego komponentu SectionListEditor.vue — reużywalnego narzędzia do budowania sekcji, które obsługuje kolejność, walidację i usuwanie całkowicie w przeglądarce.

Cała konfiguracja jest przechowywana w istniejącej kolumnie JSON webinars.settings pod nowymi kluczami. Nie jest wymagana żadna migracja bazy danych dla tej funkcji.

💡 Pro Tip: Użyj autonomicznego URL /webinar/{slug}/thank-you jako celu przekierowania w swoim procesorze płatności (np. Stripe, PayU). URL strony jest wyświetlany z przyciskiem kopiowania bezpośrednio w panelu edycji webinaru.
⚠️ Ważne: Linki harmonogramu Calendly są walidowane tak, aby zaczynały się od https://calendly.com/ podczas zapisu i ponownie sprawdzane względem *.calendly.com podczas renderowania. Nie używaj skróconych ani przekierowanych URL — zostaną odrzucone.

Katalog modeli AI — jedno źródło prawdy

Strona ustawień AI Integrations wcześniej utrzymywała własną zakodowaną na stałe listę defaultModels w Index.vue, która rozeszła się z katalogiem backendu — skutkując nieaktualnymi etykietami jak "Claude 4.5 Opus (Najnowszy — Styczeń 2026)" w selektorze modeli wiele miesięcy po wydaniu.

Poprawka jest architektoniczna: AiIntegrationController::index() teraz eksponuje katalog backendowy jako pole default_models per dostawca, a strona Vue renderuje go bezpośrednio. Wszystkie etykiety czasowe zostały usunięte z plików lokalizacyjnych we wszystkich czterech językach (PL/EN/DE/ES) — pozostają tylko deskryptory funkcjonalne jak Legacy, Reasoning i Fast.

🔧 Krytyczne poprawki w v2.1.1

Double Opt-In był całkowicie zepsuty (#29)

To najważniejsza poprawka w wydaniu. ActivationController próbował zapisać confirmed_at i resubscribed_at do tabeli pivot contact_list_subscriber — ale te kolumny nigdy nie istniały. Każde kliknięcie potwierdzenia powodowało Unknown column QueryException, blok catch po cichu renderował stronę błędu ogólnego, a subskrybent nigdy nie był aktywowany.

  • Zapisy przez double opt-in nigdy nie uruchamiały sekwencji autorespondera
  • Link do ponownego zapisu był równie zepsuty dla każdego subskrybenta
  • Ponowny zapis na listę double opt-in degradował aktywnych subskrybentów z powrotem do statusu pending

Poprawka dodaje brakujące kolumny poprzez migrację 2026_07_24_000001_add_confirmation_columns_to_contact_list_subscriber.php i rejestruje je w obu relacjach withPivot().

ℹ️ Informacja: Aktywni subskrybenci, którzy ponownie wypełniają formularz double opt-in, teraz pozostają ze statusem active, otrzymują powiadomienie "już zapisany" i mają natychmiast restarted sekwencję. Nie są już degradowani do statusu pending.

Sekwencje autoresponderów — pełna przebudowa ścieżek zapisu

Silnik sekwencji jest napędzany przez zdarzenie SubscriberSignedUp. Problem: większość ścieżek kodu, które dołączały lub reaktywowały subskrybenta na liście, nigdy go nie wyzwalała. W efekcie sekwencje uruchamiały się niezawodnie tylko dla nowych subskrybentów zapisujących się przez główny formularz publiczny.

  • REST API POST /api/v1/subscribers — działa dla istniejących subskrybentów dodawanych do nowej listy lub reaktywowanych
  • Batch API POST /subscribers/batch — ta sama poprawka zastosowana do obu gałęzi
  • Publiczne API listy POST /api/lists/{id}/subscribe — nigdy nie wysyłało zdarzenia dla nikogo; naprawione, włącznie z propagacją do listy nadrzędnej
  • Formularz edycji subskrybenta — wyzwala tylko przy nowym dołączeniu lub reaktywacji listy, nie przy każdym zapisie
  • Co-rejestracja — wcześniej całkowicie pomijała istniejących subskrybentów; teraz reaktywuje i wysyła zdarzenie
  • Webhook Calendly add-to-list — był cichy; teraz wysyła zdarzenie
  • Akcje move/copy to list w lejkach — wywoływały nieistniejące metody rzucając błędy runtime; w pełni przepisane
  • Webhook WooCommerce — używał starego schematu sprzed refaktoru, crashując przy każdym wywołaniu; przepisany dla schematu pivot

Poprawka burstu przy ponownym zapisie — znaczniki czasu kolejki

Gdy subskrybent ponownie zapisywał się na listę skonfigurowaną tak, aby zachować oryginalną datę zapisu, każde przesunięcie dniowe w sekwencji autorespondera leżało w przeszłości — i CRON wysyłał wszystkie zakolejkowane wiadomości jednocześnie.

Wpisy kolejki noszą teraz jawny znacznik czasu scheduled_for obliczany jednorazowo podczas tworzenia przez Message::calculateExpectedSendAt() (który jest też świadomy stref czasowych). CRON teraz weryfikuje ten znacznik i wraca do starszego obliczania tylko dla wpisów utworzonych przed migracją.

⚠️ Ważne: Ta poprawka wymaga migracji 2026_07_24_000002_add_scheduled_for_to_message_queue_entries.php. Uruchom php artisan migrate natychmiast po aktualizacji.

Dodatkowe poprawki

  • Narzędzie MCP create_subscriber — wysyłało tablicę lists podczas gdy endpoint REST wymaga contact_list_id; każde wywołanie zwracało 422. Teraz wywołuje POST /subscribers raz per id listy.
  • Konserwacja "usuń niepotwierdzone" — szukała statusu pivot unconfirmed podczas gdy double opt-in zapisuje pending; teraz dopasowuje oba.
  • Liczniki kolejki i odbiorcówplanned_recipients_count nigdy nie był obliczany dla autoresponderów; modal statystyk kolejki teraz poprawnie pokazuje podział na segmenty czasowe i liczby sumują się do 100%.

💼 Korzyści i przypadki użycia

🎓

Twórcy webinarów i kursów

Możesz teraz zbudować kompletny lejek webinarowy wewnątrz NetSendo: stronę rejestracji z trailerem YouTube i sekcjami społecznego dowodu, a po niej stronę podziękowania z wbudowanym widgetem Calendly do rozmów onboardingowych — bez dotykania page buildera ani zewnętrznego narzędzia do landing page'y.

  • Dodaj zaproszenie wideo nad formularzem zapisu, aby zwiększyć konwersje
  • Osadź Calendly, aby uczestnicy rezerwowali spotkanie 1-na-1 bezpośrednio po rejestracji
  • Użyj autonomicznego URL podziękowania jako przekierowania w procesorze płatności
🛒

E-commerce (WooCommerce)

Przepisany webhook WooCommerce oznacza, że zapisy klientów z Twojego sklepu teraz niezawodnie tworzą członkostwo na liście i — co kluczowe — wyzwalają sekwencję autorespondera powitalnego. W połączeniu z poprawką burstu, klienci, którzy wcześniej kupili i kupują ponownie, otrzymają sekwencję w odpowiednim rytmie.

  • Sekwencje powitalne po zakupie uruchamiają się niezawodnie dla każdego zamówienia
  • Klienci powracający otrzymują poprawnie rozłożone e-maile follow-up
  • Wypisani klienci, którzy wracają, są reaktywowani zgodnie z ustawieniami listy
⚙️

SaaS i onboarding przez API (n8n / MCP)

Jeśli używasz przepływów n8n lub narzędzia NetSendo MCP do programowego dodawania użytkowników do list, każdy subskrybent dodany przez API teraz poprawnie uruchomi sekwencję autorespondera onboardingowego — łącznie z użytkownikami, którzy wcześniej istnieli w bazie danych, ale byli dodawani do nowej listy po raz pierwszy.

  • Zapisy przez n8n teraz wyzwalają sekwencje od końca do końca
  • Wywołania create_subscriber przez MCP nie zwracają już błędów 422
  • Zapisy do wielu list działają poprawnie na wszystkich ścieżkach batch

📋 Przewodnik krok po kroku: Konfiguracja stron webinarowych z Calendly

  1. Otwórz lub utwórz webinar

    Przejdź do Webinary → Utwórz (lub edytuj istniejący webinar). Wypełnij podstawowe dane jak zwykle.

  2. Dodaj sekcje strony rejestracji

    Przewiń do nowej karty "Dodatkowe sekcje strony rejestracji". Kliknij + Dodaj sekcję i wybierz Tekst lub Wideo. Użyj strzałek góra/dół, aby umieścić sekcje powyżej lub poniżej formularza zapisu.

  3. Skonfiguruj stronę podziękowania

    Otwórz kartę "Strona podziękowania". Ustaw nagłówek i wiadomość. Dodaj sekcje tekstowe lub wideo według potrzeb.

  4. Włącz Calendly

    Włącz przełącznik "Włącz widget Calendly". Wklej pełny link harmonogramu Calendly (musi zaczynać się od https://calendly.com/). Opcjonalnie dodaj nagłówek i opis nad widgetem kalendarza.

  5. Skopiuj autonomiczny URL strony podziękowania

    Na dole karty "Strona podziękowania" zobaczysz publiczny URL autonomicznej strony podziękowania. Kliknij przycisk kopiowania i wklej go jako cel sukcesu w swoim procesorze płatności.

  6. Zapisz i podglądaj

    Kliknij Zapisz. Otwórz publiczny URL rejestracji w oknie incognito, aby zweryfikować poprawne renderowanie sekcji. Zarejestruj konto testowe i potwierdź, że widget Calendly ładuje się na stronie podziękowania z Twoim imieniem i e-mailem wstępnie wypełnionymi.

🛠️ Aktualizacja: Migracje do uruchomienia

v2.1.1 zawiera trzy migracje. Uruchom je natychmiast po pobraniu nowego obrazu:

# Pobierz najnowszy obraz
docker compose pull

# Uruchom wszystkie oczekujące migracje
docker compose exec app php artisan migrate

# Zrestartuj workers kolejki, aby odebrały naprawione dispatching zdarzeń
docker compose restart worker
⚠️ Ważne: Nie pomijaj migracji. Uruchomienie nowego kodu aplikacji bez 2026_07_24_000001 spowoduje, że potwierdzenie double opt-in będzie nadal kończyć się błędem SQL, dokładnie tak jak przed poprawką.

🎯 Wskazówki eksperta

1
Przetestuj przepływ double opt-in od początku do końca

Po aktualizacji użyj świeżego adresu e-mail, aby zapisać się na każdą listę double opt-in, którą obsługujesz. Potwierdź e-mail, zweryfikuj, że subskrybent jest oznaczony jako active, i sprawdź, czy pierwsza wiadomość autorespondera jest zakolejkowana.

2
Sprawdź dashboard statystyk kolejki

Modal statystyk kolejki teraz poprawnie pokazuje liczbę pending i dystrybuuje wpisy do kubełków dziś/jutro/3–7 dni. Otwórz go dla list autoresponderów o największym wolumenie natychmiast po aktualizacji — nagły skok w "dziś" jest normalny i odzwierciedla wcześniej błędnie liczone elementy.

3
Używaj wysyłania w strefie czasowej subskrybenta

Nowy helper Message::calculateExpectedSendAt() jest w pełni świadomy stref czasowych. Jeśli używasz send_in_subscriber_timezone w swoich sekwencjach, scheduled_for jest teraz obliczany poprawnie podczas tworzenia wpisu kolejki — redukując obciążenie bazy danych przy dużych listach.

4
Zabezpiecz swój link Calendly

NetSendo waliduje linki Calendly przy zapisie i ponownie waliduje przy renderowaniu. Dla rezerwacji zespołowych użyj linku strony zespołu Calendly (https://calendly.com/twoj-zespol/typ-zdarzenia) zamiast linku osobistego — umożliwia rotację członków zespołu bez aktualizacji ustawień webinaru.

5
Restartuj workers kolejki po każdej aktualizacji

Workers kolejki Laravel cachują klasy w pamięci. Po każdej aktualizacji NetSendo — zwłaszcza takiej, która zmienia logikę dispatching zdarzeń — zawsze restartuj workers przez docker compose restart worker, aby zapewnić, że natychmiast pobiorą nowe ścieżki kodu.

📌 Podsumowanie

NetSendo v2.1.1 to wydanie, które powinieneś priorytetowo zaktualizować, jeśli używasz list double opt-in, sekwencji autoresponderów lub integracji WooCommerce / API — błędy naprawione w tym wydaniu po cichu uniemożliwiały aktywację subskrybentów i dostarczanie sekwencji na wielu ścieżkach kodu.

Po stronie funkcji, edytowalne strony webinarowe z integracją Calendly otwierają znaczącą nową warstwę konwersji: możesz teraz przekształcić stronę podziękowania po rejestracji w silnik rezerwacji spotkań, utrzymując potencjalnych klientów zaangażowanych w szczytowym momencie ich zainteresowania — wszystko self-hosted, wszystko pod Twoją kontrolą.

Gotowy na aktualizację?

Pobierz v2.1.1 teraz i przywróć niezawodne dostarczanie sekwencji w całej bazie subskrybentów:

#webinars#calendly#autoresponder#double-opt-in#automation#woocommerce#platform-updates
Share: