Automatyzacje w Easytools

Automatyzacje w Easytools

Easytools może obsłużyć darmowy lead magnet, dostęp do aplikacji i sprzedaż produktu cyfrowego. Koszyk otwierany w popupie zbiera dane i zgody, a Login Wall sprawdza, czy odbiorca ma dostęp do chronionej strony. Dalej są automatyzacje w panelu, 14 zdarzeń webhooka, dwa osobne API (easycart i easymail) oraz serwer MCP pod adresem mcp.easy.tools. Sam sprzedaję przez Easycart, więc pokazuję cały układ: od przycisku „Odbierz dostęp” po przepływy z CRM-em, mailingiem i asystentem AI.

Ostatnia aktualizacja: 22 sierpnia 2026

Kiedy ta usługa ma sens?

Konfiguruję darmowe produkty, koszyk popup i Login Wall, a Easytools łączę z CRM-em, księgowością, społecznością i resztą narzędzi przez webhooki, easycart API, easymail API oraz oficjalny serwer MCP. Projektuję te przepływy z uwzględnieniem limitu 100 żądań na 60 sekund, asynchronicznych zwrotów i dwóch zdarzeń wysyłanych przy zakupie.

Twórcy udostępniający lead magnety i produkty cyfrowe

Aplikacja, interaktywna strona, kurs albo szablon wymaga zebrania adresu e-mail, zgód i automatycznego nadania dostępu.

Firmy z Easytools i CRM-em obok

Zakup nie zakłada rekordu w CRM-ie, więc handlowiec dowiaduje się o kliencie z powiadomienia mailowego zamiast z lejka.

Sprzedawcy, którym skończyły się natywne integracje

Narzędzia, którego potrzebujesz, nie ma na liście gotowych integracji. Zostaje webhook plus scenariusz albo wywołanie API.

Zespoły, które chcą pytać o sprzedaż w czacie

Zamiast klikać po raportach, chcą zapytać asystenta o przychód, znaleźć zamówienie albo wystawić kod rabatowy. Potrzebują przy tym pewności, kto może zlecić zwrot.

Darmowy lead magnet jako produkt w Easytools

Grand Sales Automation udostępniam jako bezpłatny produkt typu Dostęp. Aplikacja działa na własnej domenie, a Easytools obsługuje odebranie produktu, konto użytkownika i sprawdzenie, czy dana osoba może wejść do środka.

Cała ścieżka ma cztery elementy:

  1. bezpłatny produkt w Easycart,
  2. koszyk otwierany w popupie na mojej stronie,
  3. zebranie adresu e-mail, imienia i zgód,
  4. Login Wall przed właściwą aplikacją.

Krok 1: produkt typu Dostęp

W koszyku pokazuję nazwę, opis i podgląd aplikacji. Cena wynosi zero, więc odbiorca nie podaje danych płatniczych. Przechodzi od razu do kroku ze swoimi danymi.

Pierwszy krok koszyka Easytools dla bezpłatnego produktu Grand Sales Automation. Widać nazwę produktu, oznaczenie Darmowy, opis oraz przycisk Następny krok: Szczegóły.
Bezpłatny produkt typu Dostęp. Koszyk przedstawia aplikację i prowadzi odbiorcę do formularza.

Krok 2: dane i zgody

W drugim kroku Easytools zbiera adres e-mail i imię. Pod nimi wyświetla zgody przypisane do koszyka, w tym zgodę na komunikację handlową oraz akceptację regulaminów i zapisanie danych. Treść zgód trzeba dopasować do własnego procesu i dokumentów prawnych.

Drugi krok koszyka Easytools z polami Adres email i Imię, zgodą na komunikację handlową, akceptacją regulaminów oraz przyciskiem Przejdź do podsumowania.
Formularz zbiera dane potrzebne do utworzenia konta i zgody skonfigurowane dla produktu.

Krok 3: podsumowanie i odbiór dostępu

Podsumowanie pokazuje produkt, jego typ i ilość. Kliknięcie Odbierz dostęp przypisuje darmowy produkt do konta. W pokazanym przepływie po odebraniu produktu koszyk przekierowuje odbiorcę prosto do aplikacji.

Podsumowanie koszyka Easytools dla Grand Sales Automation z przyciskiem Odbierz dostęp.
Ostatni krok darmowego koszyka. Przycisk przypisuje dostęp i uruchamia przekierowanie ustawione dla produktu.

Koszyk Easytools otwierany w popupie

Koszyk nie musi prowadzić na osobną stronę. W edycji produktu wchodzę w Udostępnij, wybieram Koszyk popup i dostaję dwa fragmenty konfiguracji:

  • skrypt popup.js, który dodaję przed zamknięciem znacznika body,
  • atrybut data-easycart-popup dla przycisku, linku albo innego klikalnego elementu.

Schemat osadzenia wygląda tak. W miejsce ID_KOSZYKA wklejasz wartość wygenerowaną przez Easytools:

<script src="https://cart.easy.tools/popup.js?id=ID_KOSZYKA"></script>

<button type="button" data-easycart-popup="ID_KOSZYKA">
  Odbierz dostęp
</button>
Okno Udostępnij w Easytools z wybraną opcją Koszyk popup, listą dozwolonych domen oraz kodem skryptu i atrybutem data-easycart-popup.
Easytools generuje skrypt popupu i atrybut dla przycisku. Identyfikator koszyka na zrzucie celowo pomijam w przykładzie kodu.

Przed uruchomieniem wpisuję wszystkie hosty, na których popup ma działać. Domena główna i subdomena www są osobnymi hostami, dlatego w mojej konfiguracji znajdują się zarówno kubamasztalski.pl, jak i www.kubamasztalski.pl. Trzecim hostem jest domena samej aplikacji.

Login Wall: dostęp do strony po odebraniu produktu

Popup kończy proces odbioru. Dostępu do aplikacji pilnuje osobna funkcja Ochrona treści (Login Wall). W edycji produktu wybierasz Chroń treści, wskazujesz cały produkt albo konkretne warianty cenowe i kopiujesz wygenerowany skrypt do sekcji head chronionej strony.

Przy wejściu Easytools sprawdza dwie rzeczy:

  1. czy użytkownik jest zalogowany do Easycart,
  2. czy ma dostęp do wskazanego produktu albo aktywną subskrypcję.

Jeśli użytkownik ma dostęp, strona się otwiera. Przy braku dostępu Easytools pokazuje logowanie lub kieruje do koszyka. Kupujący zwykle nie muszą logować się ponownie, ponieważ przeglądarka przechowuje token Easycart.

W Grand Sales Automation sprawdziłem to w osobnym profilu przeglądarki. Osoba bez aktywnej sesji i bez odebranego produktu zobaczyła koszyk Easytools przed aplikacją. Po przejściu darmowego koszyka mogła wejść na chronioną stronę.

Cała strona albo wybrane sekcje

Login Wall może blokować całą stronę. Drugi tryb przełącza tylko wybrane fragmenty HTML:

  • data-free oznacza treść dla osoby bez produktu,
  • data-paid oznacza treść dla osoby z dostępem,
  • data-auth oznacza element widoczny po zalogowaniu do Easycart,
  • data-noauth oznacza element widoczny bez zalogowania.

To pozwala na jednej stronie pokazać przycisk zakupu nowej osobie, a przycisk przejścia do produktu komuś, kto już go odebrał.

Login Wall działa po stronie przeglądarki. Producent wskazuje w dokumentacji, że takie zabezpieczenie jest słabsze od autoryzacji wykonywanej na backendzie. Stosuję je do lead magnetów, statycznych materiałów i aplikacji, które nie odsłaniają danych wrażliwych. System z danymi klientów albo poufnymi dokumentami wymaga kontroli dostępu po stronie serwera.

Pełna instrukcja producenta: Ochrona treści (Login Wall) w Easytools.

Automatyzacje w panelu: poziom produktu i poziom sklepu

Zanim wejdę w webhooki, przechodzę przez panel. Sporo procesów po sprzedaży Easytools domyka sam. Jeśli gotowa funkcja spełnia wymagania, nie dokładam scenariusza na zewnątrz i jego kosztu utrzymania.

Ustawienia siedzą w dwóch miejscach i robią co innego:

  • Poziom produktu, w edytorze koszyka. Scenariusze, czyli pary „to zdarzenie uruchamia tę akcję w tej aplikacji”, oraz adres webhooka dla tego jednego produktu.
  • Poziom sklepu, w ustawieniach sklepu. Globalny adres webhooka dziedziczony przez każdy nowy koszyk, klucz do podpisu webhooka i klucze API.

Z tego podziału bierze się kolejność przy wdrożeniu. Globalny webhook i klucze ustawia się raz na sklep, a scenariusze dokłada się tam, gdzie pojedynczy produkt ma prowadzić inną ścieżkę niż reszta oferty.

Osobno stoi warstwa sprzedażowa, która działa bez żadnej integracji: odzyskiwanie porzuconego koszyka, upselle i cross-selle, oferty czasowe, kody rabatowe, linki afiliacyjne, faktury i podatki oraz kampanie w easymail.

Poziom produktu: scenariusze i webhook w koszyku

Edytor produktu w Easytools z rozwiniętym menu Automatyzacje. Menu ma dwie pozycje: Scenariusze i Webhook.
Edytor produktu w Easytools. Menu Automatyzacje prowadzi do scenariuszy i do webhooka przypisanego do tego jednego koszyka.

Menu Automatyzacje w edytorze produktu ma dwie pozycje: Scenariusze i Webhook. Siedzą obok siebie, ale rozwiązują różne problemy. Scenariusz to jedno zdarzenie spięte z jedną akcją w konkretnej aplikacji, całość klikana w panelu. Webhook to surowy strumień zdarzeń wypchnięty pod Twój adres, gdzie logikę dopisujesz sam.

Uwaga na słownictwo: samo „scenariusz” oznacza tu funkcję z panelu Easytools. Scenariusze w Make i n8n nazywam dalej po nazwie narzędzia.

Scenariusze: jedno zdarzenie, jedna akcja, wybrane warianty

Kreator „Nowa automatyzacja” mieści się na jednym ekranie:

  • Nazwa i przełącznik włączający całą automatyzację, w prawym górnym rogu.
  • Zdarzenie z listy dziesięciu pozycji (niżej). Po wyborze pod polem pojawia się opis, co dokładnie je wyzwala.
  • W momencie zdarzenia - przełącznik, domyślnie włączony.
  • Wyślij email o niepowodzeniu automatyzacji - domyślnie wyłączony. Włączam go zawsze. Bez tego nieudany scenariusz milczy, a dowiadujesz się o nim od klienta, który nie dostał dostępu.
  • Przypisz do Wariantów - domyślnie „Wszystkie warianty”, ale listę da się zawęzić do pojedynczych wariantów cenowych. Ten sam produkt może więc inaczej obsługiwać pakiet roczny i miesięczny bez zakładania drugiego koszyka.
  • Integracja - przełącznik „Istniejąca integracja” albo „Nowa integracja”. Raz utworzone połączenie wraca na liście przy kolejnych scenariuszach.

Panel i webhook nazywają te same rzeczy inaczej, a dokumentacja nie zestawia obu list. Poniżej moje zestawienie:

Zdarzenie w panelu Odpowiednik w webhooku
Zrealizowano zamówienie single_product_bought, subscription_created
Przypisano produkt do klienta product_assigned
Zmiana planu subskrypcji subscription_plan_changed
Anulowanie subskrypcji subscription_canceled
Dostęp wygasa za 3 dni product_access_expiring
Dostęp wygasł product_access_expired
Odzyskiwanie koszyka brak
Kod QR zeskanowany brak
Synchronizuj zamówienia brak
Klient na liście oczekujących brak

Trzy rzeczy widać dopiero po zestawieniu obu list.

Pierwsza: „Zrealizowano zamówienie” obejmuje trzy sytuacje naraz. Opis w panelu brzmi „Klient rozpoczął subskrypcję, kupił produkt lub odebrał go za darmo”, więc darmowy odbiór produktu uruchomi ten scenariusz tak samo jak płatny zakup.

Druga: „Dostęp wygasa za 3 dni” ma okno wpisane w nazwę. Przypomnienie siedem dni wcześniej wymaga webhooka i własnego harmonogramu.

Trzecia: cztery zdarzenia z panelu nie mają odpowiednika w webhooku, a siedem zdarzeń webhooka nie ma odpowiednika w panelu. Odnowienie subskrypcji, zbliżające się odnowienie, nieudane pobranie środków, ostateczne wygaśnięcie, wznowienie, trwałe usunięcie i zmiana danych klienta istnieją wyłącznie po stronie webhooka. Windykacja nieudanych płatności i higiena danych klienta zaczynają się więc poza panelem.

Dwadzieścia aplikacji do wyboru

Lista przy tworzeniu nowego połączenia, w kolejności z panelu:

Obszar Aplikacje
Mailing Active Campaign, ConvertKit, GetResponse, Mailchimp, MailerLite, MailerLite Classic, Sendgrid
CRM HubSpot, Pipedrive
Kursy i społeczności Circle.so, Discord, Kajabi, Publigo, WebToLearn
Strona i dane Airtable, Wordpress, Woocommerce
Wysyłka i spotkania Furgonetka, Zencal
Własny odbiornik Webhook

Dwie pozycje warto rozpoznać osobno. Webhook jest tu zwykłą aplikacją, więc scenariusz potrafi wysłać pod Twój adres jedno wybrane zdarzenie z jednego wybranego wariantu. To coś innego niż pole Webhook w menu Automatyzacje, które wysyła wszystko. MailerLite i MailerLite Classic to dwa osobne wpisy pod dwie generacje tego samego narzędzia; wybór złego kończy się połączeniem, które autoryzuje się poprawnie i nie widzi żadnej listy.

Easymail i Powiadomienia nie wymagają zakładania połączenia. Są w rozwijanej liście istniejących integracji od razu, bo należą do ekosystemu Easytools.

Statystyki wykonań zbierają się w osobnej zakładce Automatyzacje, w menu Sklep. Tam sprawdzasz, czy scenariusz w ogóle się uruchamia, zanim zaczniesz szukać błędu po drugiej stronie.

Webhook produktu: wszystkie zdarzenia pod jeden adres

Druga pozycja w tym samym menu to pole na adres webhooka dla tego konkretnego koszyka. Wpis nadpisuje ustawienie globalne ze sklepu.

Różnica wobec scenariusza jest zasadnicza. Scenariusz filtruje: jedno zdarzenie, jeden wariant, jedna akcja. Webhook wypycha komplet zdarzeń tego koszyka i zostawia Ci decyzję, co z nich obsłużyć. Dlatego scenariusze biorę na pojedyncze, dobrze opisane ruchy w gotowych narzędziach, a webhook wszędzie tam, gdzie potrzebuję warunków, danych z trzeciego systemu albo narzędzia, którego na liście dwudziestu nie ma.

Poziom sklepu: globalny webhook, klucz podpisu i klucze API

Panel Easytools: w menu bocznym zaznaczona pozycja Ustawienia sklepu, a na ekranie zakładka API i Webhooki z adresem webhooka, kluczem do podpisu i tabelą kluczy API.
Sklep, Ustawienia sklepu, zakładka API i Webhooki. Cała warstwa sklepowa mieści się na jednym ekranie.

Ekran jest krótki, bo poziom sklepu ma tylko trzy rzeczy do ustawienia. Za to każda z nich obowiązuje wszędzie.

Adres webhooka. Trafia do każdego nowego koszyka, dopóki produkt go nie nadpisze. Zmiana adresu tutaj nie przestawia koszyków, które mają własny wpis, więc przy migracji scenariusza z Make do n8n sprawdzam oba poziomy.

Klucz do podpisu webhooka. Easytools podpisuje żądanie i wkłada wynik w nagłówek X-Webhook-Signature. Po stronie odbiornika liczysz SHA256 z treści żądania przy użyciu tego samego klucza i porównujesz wartości. Bez tego kroku Twój endpoint przyjmie dowolne żądanie, które ktoś pod ten adres wyśle, a webhook Make jest publiczny. Dokumentacja Easytools ma gotowe fragmenty w JavaScripcie, PHP, Pythonie i C#.

Klucz wyświetla się raz, przy tworzeniu, i nie da się go później odczytać. Panel pokazuje tylko datę utworzenia oraz przyciski „Usuń” i „Zmień klucz”. Wymiana klucza oznacza, że odbiornik liczący podpis starym kluczem od tej chwili go nie potwierdzi, więc jedno i drugie przestawiam w tym samym oknie.

Klucze API. Sekcja niżej, z tabelą: data utworzenia, nazwa, sklepy i ostatnie użycie. Opis w panelu mówi wprost, że klucz działa w każdym sklepie, w którym masz dostęp do API. Klucz jest osobisty i sięga do każdego sklepu, do którego zespół dał Ci dostęp przez API. Odebranie komuś uprawnień w sklepie odbiera je więc również jego kluczom, od następnego żądania.

Kolumna „Ostatnio używany” jest jedynym łatwym sposobem, żeby sprawdzić, który klucz można skasować bez wywalania działającej integracji. Dlatego każdy klucz nazywam po tym, co go używa, zamiast zostawiać „klucz 1”.

Webhooki: 14 zdarzeń i jedno, na którym warto oprzeć automatyzację

Pod adres webhooka, wpisany na którymkolwiek z dwóch poziomów, trafia czternaście typów zdarzeń:

Zdarzenie Kiedy przychodzi
single_product_bought zakup pojedynczego produktu
product_assigned dostęp do produktu został przypisany użytkownikowi
product_access_expiring dostęp niedługo wygaśnie
product_access_expired dostęp wygasł
subscription_created zakup nowej subskrypcji
subscription_renewed odnowienie subskrypcji
subscription_renewal_upcoming zbliża się odnowienie
subscription_renewal_failed nieudana próba pobrania środków
subscription_plan_changed zmiana planu z panelu
subscription_canceled anulowanie subskrypcji, ważnej do końca okresu rozliczeniowego
subscription_expired ostateczne wygaśnięcie subskrypcji
subscription_resumed wznowienie subskrypcji
subscription_deleted trwałe usunięcie subskrypcji
customer_data_changed zmiana danych klienta

Zakup wysyła dwa zdarzenia

Po udanej transakcji Easytools wysyła single_product_bought albo subscription_created, a zaraz po tym product_assigned. Powodem jest funkcja „Kup dla kogoś innego”: kupujący i osoba z dostępem to nie zawsze ta sama osoba, więc przypisanie dostępu jest osobnym zdarzeniem. Nawet przy wyłączonej funkcji Easytools wysyła oba, dla spójności.

Scenariusz w Make nasłuchujący obu zdarzeń wykona się dwa razy po jednym zakupie. Dokumentacja Easytools zaleca oprzeć automatyzację na product_assigned i to jest też moja praktyka: obsługuje zakup dla siebie i dla kogoś innego, więc późniejsze włączenie tej funkcji niczego nie zepsuje.

Praktyczny dodatek: webhook potrafi przyjść ponownie. Zapisuję identyfikator zdarzenia i sprawdzam go przed utworzeniem kolejnego rekordu, zamiast ufać, że każda dostawa jest pierwsza.

Dwa API: easycart i easymail

To dwa osobne systemy z osobnymi tokenami, osobnymi adresami i różnym kształtem odpowiedzi. Przy pierwszej integracji trzeba osobno skonfigurować każde API.

easycart easymail
Adres bazowy https://cart.easy.tools/api/v1 https://email.easy.tools/api/v1
Token ustawienia sklepu, sekcja Developer ustawienia easymail, sekcja Developer
Zakres tokena osobisty, sięga do każdego sklepu z dostępem należy do konta
Wybór celu nagłówek X-Easycart-Store z UUID sklepu brak, konto jest jedno
Limit 100 żądań / 60 s per sklep 100 żądań / 60 s per konto
Sukces dane bezpośrednio w odpowiedzi dane opakowane w klucz data
Błąd {"message": "..."} {"error": {"code": "...", "message": "..."}}

Token easycart generujesz pod adresem cart.easy.tools/creator/store-settings/developer, token easymail pod cart.easy.tools/creator/email/settings/developer. Wspólne dla obu: uwierzytelnianie tokenem w nagłówku Authorization: Bearer, do tego Content-Type: application/json i Accept: application/json w każdym żądaniu.

curl -H "Authorization: Bearer TWOJ_TOKEN" \
     -H "Content-Type: application/json" \
     -H "Accept: application/json" \
     "https://cart.easy.tools/api/v1/orders?status=completed&per_page=100"

Token easycart należy do użytkownika i sięga do Twojego sklepu oraz do każdego, którego zespół nadał Ci uprawnienie do korzystania z API. Gdy sklep tego dostępu nie dał, każdy endpoint zwraca 403, a odebranie uprawnienia działa od następnego żądania. Przy więcej niż jednym sklepie zawsze wskazuję sklep jawnie nagłówkiem X-Easycart-Store, zamiast liczyć na domyślny.

W easymail jest jeszcze jedna bramka. Dostęp do publicznego API jest domyślnie wyłączony i wygenerowanie tokena go nie włącza. Do czasu włączenia przez wsparcie każdy endpoint zwraca 403 z kodem PUBLIC_API_DISABLED. Zły token daje 401, więc te dwa przypadki da się rozróżnić w logach.

Co da się zrobić przez API

easycart

Zasób Operacje
Sklep lista sklepów, dane sklepu i jego walut
Produkty lista, odczyt, tworzenie, aktualizacja, publikacja, wycofanie ze sprzedaży
Warianty cenowe lista, odczyt, tworzenie, aktualizacja
Zamówienia lista z filtrami, odczyt pojedynczego
Klienci lista z filtrami, odczyt pojedynczego
Dostęp do produktu nadanie, odebranie
Transakcje lista, odczyt, zwrot pełny lub częściowy
Faktury lista, odczyt, pobranie pliku, ponowna wysyłka
Kody rabatowe lista, odczyt, tworzenie, aktualizacja, archiwizacja
Subskrypcje lista, odczyt, anulowanie, wznowienie, zmiana planu
Statystyki pojedyncza statystyka z porównaniem do poprzedniego okresu

easymail

Zasób Operacje
Kontakty lista, odczyt, tworzenie, upsert, aktualizacja, usunięcie, wypisanie, ponowny zapis, historia zdarzeń
Listy lista, odczyt, tworzenie, aktualizacja, usunięcie, dodawanie i usuwanie kontaktów
Segmenty lista, odczyt
Pola dodatkowe definicje i wartości na kontakcie
Kampanie tworzenie, edycja, wysyłka, planowanie, cofnięcie planu, anulowanie, e-mail testowy, usunięcie
Raportowanie kampanii odbiorcy, kliknięcia w linki, statystyki otwarć
Nadawcy i strefy czasowe lista zweryfikowanych adresów nadawcy, lista stref

Filtrowanie zamówień jest dobrze pomyślane i warto z niego korzystać zamiast pobierać wszystko: status, created_from, created_to, customer, product i query, wszystko łączone warunkiem „i”. Strona bierze maksymalnie 100 pozycji. Jeśli potrzebujesz samej liczby wyników, wywołaj endpoint z per_page=1 i odczytaj pagination.total, zamiast przewijać całą listę.

Cztery pułapki, pod które projektuję integrację

Zwrot jest asynchroniczny. POST /transactions/{id}/refunds zwraca 202, co znaczy tyle, że operator płatności przyjął zlecenie. Wpis o zwrocie, jego rozbicie podatkowe i powiadomienie klienta powstają dopiero po potwierdzeniu od operatora. Odczyt transakcji zaraz po zwrocie może jeszcze nie pokazać zmiany w refunds ani w refunded_amount. Scenariusz w Make, który potraktuje ten brak jako niepowodzenie i ponowi żądanie, zwróci pieniądze drugi raz.

Statystyki to jedno wywołanie na jedną liczbę. Endpoint GET /statistics przyjmuje jeden type naraz, a type i currency są obowiązkowe. Nieznana waluta zwraca 400 zamiast zer. Zakres podaje się slugiem (today, monthToDate, lastMonth, yearToDate, last7days, last30days, last3months, last12months, all) albo parą dat. Pulpit z sześcioma liczbami to sześć równoległych wywołań i sześć pozycji z limitu.

Limit dzieli się na wszystko. Sto żądań na sześćdziesiąt sekund obejmuje scenariusz w Make, własny skrypt i ruch z serwera MCP. Nocna synchronizacja, która pobiera zamówienia rekord po rekordzie, potrafi zablokować asystenta w środku pracy. Dlatego pobieram stronami po 100 pozycji i rozkładam ciężkie zadania w czasie.

Nieudane odnowienie subskrypcji rozciąga się w czasie. subscription_renewal_failed może przyjść kilka razy przed subscription_expired. Automatyzacja odbierająca dostęp przy pierwszym niepowodzeniu wyrzuci klienta, któremu karta odrzuciła płatność raz. Dostęp wygaszam na subscription_expired albo product_access_expired, a wcześniejsze niepowodzenia obsługuję komunikacją.

Trzy przepływy, które składam najczęściej

Zakup zakłada rekord w CRM-ie. Webhook product_assigned startuje scenariusz, który szuka osoby po adresie e-mail, tworzy ją tylko wtedy, gdy jej nie ma, wiąże z firmą, dopisuje szansę albo notatkę o zakupie i zapisuje identyfikator zamówienia po stronie CRM-u. Ten identyfikator jest później jedynym sposobem, żeby dowiązać zwrot do właściwego rekordu.

Dostęp do społeczności z wygaszaniem. product_assigned nadaje dostęp w Discordzie albo Circle, product_access_expiring wysyła przypomnienie, product_access_expired odbiera dostęp. Trzy zdarzenia, trzy różne skutki i żadnego cyklicznego sprawdzania, kto jeszcze ma opłacone.

Tygodniowy raport z API. Harmonogram pobiera przychód i sprzedaż z GET /statistics dla wybranego okresu razem z porównaniem do poprzedniego, dokłada liczbę nowych subskrypcji i wysyła zestawienie na kanał zespołu. Bez eksportów CSV i bez arkusza, który ktoś musi odświeżyć.

Serwer MCP Easytools: sklep i mailing w rozmowie z asystentem

Easytools wystawia własny, oficjalny serwer MCP. Jedno połączenie sięga do easycart i easymail.

Adres https://mcp.easy.tools
Transport Streamable HTTP
Autoryzacja logowanie do konta Easytools albo token easycart
Limit 100 żądań / 60 s, wspólny z API

Klienci obsługujący OAuth podłączają się przez logowanie. W Claude Desktop wchodzisz w Ustawienia, sekcja Connectors, dodajesz własny konektor i podajesz adres serwera. Klienci bez OAuth wysyłają token easycart w nagłówku:

claude mcp add --transport http easytools https://mcp.easy.tools \
  --header "Authorization: Bearer TWOJ_TOKEN_EASYCART"

Akcje easymail wymagają dodatkowo uprawnienia do zarządzania kluczami API easymail na sklepie, na którym pracujesz.

Zakres jest szeroki. Po stronie easycart: sklep, produkty i warianty, zamówienia, klienci, dostęp do produktów, transakcje i zwroty, faktury, kody rabatowe, subskrypcje i statystyki. Po stronie easymail: kontakty, listy, segmenty, pola dodatkowe, kampanie razem z wysyłką i planowaniem oraz raportowanie kliknięć i odbiorców.

Które akcje wymagają dodatkowej kontroli

Asystent działa z uprawnieniami Twojego konta. Wyznaczają one górną granicę operacji dostępnych przez serwer MCP. Przed uruchomieniem sprawdzam osobno, które z tych operacji mogą ruszyć pieniądze lub bezpośrednio dotknąć klientów:

  • Zwrot transakcji przenosi realne środki. Pełny zwrot dodatkowo odbiera klientowi dostęp do produktu i wysyła mu wiadomość.
  • Archiwizacja kodu rabatowego jest nieodwracalna.
  • Anulowanie subskrypcji, odebranie dostępu i ponowna wysyłka faktury dotykają klienta bezpośrednio.
  • Wysyłka i zaplanowanie kampanii oraz e-mail testowy wysyłają prawdziwą pocztę.
  • Wypisanie i ponowny zapis kontaktu zmieniają jego zgodę marketingową.
  • Usunięcie kontaktu, listy, kampanii albo pola dodatkowego jest trwałe, a skasowanie pola usuwa jego wartość z każdego kontaktu.

Moje zasady przy uruchamianiu tego u klienta są trzy. Osobny token zamiast tego, którego używa produkcyjna integracja. Zaczynamy od pytań o dane, a operacje zapisujące wchodzą dopiero, gdy zespół zna zakres. Przed każdym potwierdzeniem człowiek czyta, co asystent zamierza zrobić, razem z kwotą i adresem klienta.

Kiedy MCP, a kiedy scenariusz w Make

Te dwie drogi rozwiązują różne problemy i nie zastępują się nawzajem.

MCP nadaje się do pracy, która za każdym razem wygląda inaczej i ma człowieka na końcu: sprawdzenie, dlaczego przychód spadł, znalezienie zamówienia po fragmencie adresu, wystawienie kodu na jedno wydarzenie, przygotowanie szkicu kampanii. Asystent składa kilka odczytów w odpowiedź, a Ty decydujesz, czy coś z tym zrobić.

Scenariusz w Make albo n8n nadaje się do przepływu, który ma wyglądać tak samo za każdym razem i działać, gdy nikogo nie ma przy komputerze: nadanie dostępu po zakupie, zapis w CRM-ie, faktura, raport o siódmej rano. Ma powtarzalny kształt, historię wykonań i alert, gdy coś padnie.

W większości wdrożeń kończy się na obu. Scenariusze pilnują powtarzalnych przepływów, a MCP siedzi obok jako narzędzie do pytań i akcji ad hoc.

Powiązane materiały

Jeśli chcesz spiąć Easytools z resztą swoich narzędzi albo bezpiecznie podłączyć do sklepu asystenta AI, napisz do mnie.

Co może powstać podczas współpracy?

Dostęp do lead magnetu na własnej stronie

Koszyk Easycart otwierany w popupie, darmowy produkt i Login Wall, który sprawdza dostęp do aplikacji lub chronionej treści.

Uporządkowana warstwa zdarzeń

Jeden właściwy webhook na każdą sytuację, bez podwójnych zapisów po tej samej transakcji.

Sprzedaż w CRM-ie i księgowości

Zamówienie z Easycart zakłada rekord w CRM-ie i trafia do rozliczeń, z dedupem po adresie e-mail i identyfikatorach po obu stronach.

Automatyczne nadawanie i wygaszanie dostępu

Społeczność, kurs albo aplikacja dostają informację o zakupie, wygaśnięciu i odzyskaniu dostępu.

Raporty z API zamiast eksportów

Cykliczne zestawienia przychodu i sprzedaży pobierane z endpointu statystyk, z porównaniem do poprzedniego okresu.

Bezpieczne podłączenie asystenta AI

Konfiguracja serwera MCP, osobny token, ustalony zakres uprawnień i zasady dla operacji, które ruszają pieniądze.

Jak wygląda współpraca?

  1. Przegląd konta i przepływów

    Sprawdzam produkty, subskrypcje, obecne automatyzacje w panelu i to, co da się załatwić natywną integracją bez pisania czegokolwiek.

  2. Mapa zdarzeń i danych

    Ustalam, które zdarzenie webhooka uruchamia który proces, jakie pola przenoszę i po czym rozpoznaję tego samego klienta w innych systemach.

  3. Budowa i testy błędów

    Uruchamiam przepływ na produkcie testowym i sprawdzam ponowioną dostawę webhooka, przekroczony limit, nieudane odnowienie i zwrot.

  4. Wdrożenie i przekazanie

    Konfiguruję alerty, opisuję tokeny i ich zakres oraz ustalam, kto reaguje na poszczególne rodzaje błędów.

Systemy i obszary, z którymi pracuję

  • Easytools (easycart, easymail)
  • Make
  • n8n
  • Zapier
  • Livespace
  • Pipedrive
  • HubSpot
  • Airtable
  • Google Workspace
  • systemy księgowe i fakturowe
  • Discord i Circle
  • klienci MCP (Claude, Codex)

konkretne wdrożenia

Zobacz podobne realizacje

Możemy zacząć od konsultacji

Omówimy proces, dostępne dane, ograniczenia, możliwy zakres prac i pierwszy krok.

Konsultacje od 425 zł netto

Pakiety od 2875 zł netto/mies.

Sprawdź warunki

Pytania o usługę

Jak udostępnić darmowy lead magnet w Easytools?

Tworzysz bezpłatny produkt typu dostęp, a w sekcji Udostępnij wybierasz Koszyk popup. Na własnej stronie osadzasz skrypt Easycart i przypisujesz wygenerowany atrybut do przycisku. Odbiorca przechodzi trzy kroki: produkt, dane i zgody oraz podsumowanie. Po odebraniu produktu możesz przekierować go prosto do aplikacji albo materiału.

Jak działa Login Wall w Easytools?

W edycji produktu generujesz skrypt dla całego produktu albo wybranego wariantu i dodajesz go do sekcji head chronionej strony. Easytools sprawdza, czy odwiedzający jest zalogowany i czy ma aktywny dostęp. Przy braku dostępu pokazuje logowanie albo prowadzi do koszyka. Skrypt działa w przeglądarce, więc nadaje się do lead magnetów, statycznych stron i landingów. Danych wymagających mocnej ochrony nie opieram wyłącznie na zabezpieczeniu front-endowym.

Czy Easytools ma API?

Ma dwa, osobne dla dwóch produktów. easycart API stoi pod https://cart.easy.tools/api/v1 i obsługuje sklep: produkty, warianty, zamówienia, klientów, transakcje, faktury, kody rabatowe, subskrypcje i statystyki. easymail API stoi pod https://email.easy.tools/api/v1 i obsługuje mailing: kontakty, listy, segmenty, pola dodatkowe i kampanie. Każde ma własny token i własny kształt odpowiedzi. Dokumentacja jest na developers.easy.tools.

Gdzie w Easytools ustawia się automatyzacje?

W dwóch miejscach. Na poziomie produktu, w edytorze koszyka, menu Automatyzacje daje scenariusze oraz adres webhooka dla tego jednego produktu. Na poziomie sklepu, w Ustawieniach sklepu w zakładce API i Webhooki, ustawia się globalny adres webhooka dziedziczony przez każdy nowy koszyk, klucz do podpisu webhooka i klucze API. Wpis w produkcie nadpisuje ustawienie globalne. Statystyki wykonań scenariuszy zbierają się w osobnej zakładce Automatyzacje w menu Sklep.

Czym różni się scenariusz od webhooka w Easytools?

Zakresem. Scenariusz spina jedno wybrane zdarzenie z jedną akcją w jednej aplikacji i można go zawęzić do konkretnych wariantów cenowych produktu. Webhook wypycha pod Twój adres komplet zdarzeń danego koszyka i całą logikę dopisujesz po swojej stronie. Do wyboru w scenariuszu jest dwadzieścia aplikacji, w tym pozycja Webhook, która wysyła pojedyncze zdarzenie zamiast wszystkich.

Jak zweryfikować, że webhook naprawdę przyszedł z Easytools?

Kluczem do podpisu, który generujesz w Ustawieniach sklepu, w zakładce API i Webhooki. Easytools podpisuje żądanie i wkłada wynik w nagłówek X-Webhook-Signature. Po stronie odbiornika liczysz SHA256 z treści żądania przy użyciu tego samego klucza i porównujesz wartości. Klucz wyświetla się tylko raz, przy tworzeniu, a dokumentacja ma gotowe fragmenty w JavaScripcie, PHP, Pythonie i C#.

Jakie zdarzenia wysyła Easytools na webhook?

Czternaście. Dla produktów jednorazowych: single_product_bought, product_assigned, product_access_expiring, product_access_expired. Dla subskrypcji: subscription_created, subscription_renewed, subscription_renewal_upcoming, subscription_renewal_failed, subscription_plan_changed, subscription_canceled, subscription_expired, subscription_resumed, subscription_deleted. Do tego customer_data_changed przy zmianie danych klienta.

Na którym zdarzeniu oprzeć automatyzację po zakupie?

Na product_assigned. Przy udanej transakcji Easytools wysyła dwa zdarzenia: single_product_bought albo subscription_created oraz product_assigned. Rozdzielenie wynika z funkcji „Kup dla kogoś innego”, w której dostęp przypisuje się osobno. Automatyzacja oparta na product_assigned obsłuży też ten przypadek, a przy okazji nie zadziała dwa razy po jednym zakupie.

Jak połączyć Easytools z Make?

Webhookiem. Adres wpisujesz globalnie w ustawieniach sklepu, w sekcji API i webhooki, i wtedy trafia do każdego nowego checkoutu, albo pojedynczo w konkretnym checkoucie w menu Automatyzacje, co nadpisuje ustawienie globalne. Scenariusz w Make odbiera zdarzenie i dalej może wywoływać easycart API modułem HTTP, żeby dociągnąć pełne dane zamówienia albo klienta.

Czy Easytools ma serwer MCP?

Ma, oficjalny, pod adresem https://mcp.easy.tools, na transporcie Streamable HTTP. Jedno połączenie obejmuje easycart i easymail. Autoryzujesz się przez logowanie do konta Easytools albo tokenem easycart w nagłówku Authorization. Asystent działa z uprawnieniami Twojego konta, więc sięgnie tylko po dane, którymi i tak zarządzasz.

Czy asystent podłączony przez MCP może zwrócić pieniądze klientowi?

Może, jeśli Twoje konto ma takie uprawnienia. Wśród akcji zapisujących są zwroty, nadawanie i odbieranie dostępu do produktu, ponowna wysyłka faktury, anulowanie subskrypcji i archiwizacja kodu rabatowego, której nie da się cofnąć. Pełny zwrot dodatkowo odbiera klientowi dostęp i wysyła mu wiadomość. Dlatego zakładam osobny token o zawężonym zakresie i czytam plan asystenta przed potwierdzeniem.

Jaki jest limit zapytań do API Easytools?

Sto żądań na sześćdziesiąt sekund. W easycart liczony per sklep, w easymail per konto. Odpowiedzi niosą nagłówek X-RateLimit-Limit, a po przekroczeniu limitu dochodzi X-RateLimit-Remaining i Retry-After razem z kodem 429. Ten sam limit obejmuje ruch z serwera MCP, więc asystent i scenariusz dzielą jedną pulę.

Dlaczego easymail API zwraca 403 mimo poprawnego tokena?

Bo dostęp do publicznego API easymail jest domyślnie wyłączony i wygenerowanie tokena go nie włącza. Do czasu włączenia każdy endpoint zwraca 403 z kodem PUBLIC_API_DISABLED. Zmiana żądania nic nie da, dostęp włącza wsparcie Easytools na wniosek właściciela konta. Brakujący albo nieprawidłowy token daje kod 401, więc te dwa błędy da się rozróżnić.

Ile kosztuje wdrożenie automatyzacji na Easytools?

Zależy od liczby przepływów, liczby systemów po drugiej stronie i tego, czy wystarczy natywna integracja. Jeden przepływ typu „zakup zakłada rekord w CRM-ie” mieści się w konsultacji, większe zakresy prowadzę w pakiecie miesięcznym. Aktualne stawki są na stronie /ceny.

Materiały, które pomogą Ci zacząć

Bezpłatna konsultacja

Porozmawiajmy

Wybierz dogodny termin w kalendarzu. Podczas 30-minutowej rozmowy omówimy Twoją sytuację i sprawdzimy, czy mogę pomóc.

Umów rozmowę