Ekademia daje Ci unikalną możliwość analizowania i reagowania na zachowania użytkowników Twoich produktów i bloga za pomocą dowolnego, zewnętrznego systemu.
 
Umożliwiają to między innymi specjalne kody {WEBHOOK} i {WEBHOOKJS}.
 
Umieszczenie kodu {WEBHOOK} lub {WEBHOOKJS} w treści kursu wysyła na wskazany adres webhooka (skryptu czekającego na dane) mnóstwo wartościowych informacji.

Gdzie można go użyć?

Kody {WEBHOOK}{WEBHOOKJS} mogą być użyte w:
  1. ofercie
  2. w treści formularza
  3. w opisie sekcji
  4. w etykiecie
  5. w treści zasobu: strona html
  6. w treści informacji wprowadzających do zadania, forum, quizu lub innej aktywności
  7. w informacji zwrotnej w zadaniu lub quizie

Przekazywane dane

Przekazuje on standardowo:
  1. time - czas unixowy (liczba sekund od 1 stycznia 1970 r)
  2. key - klucz SHA265 dynamicznie generowany za pomocą hash('sha256', USER_ID.TIME.sekret); - gdzie TIME to wartość przekazanego parametru time, a SEKRET to opcjonalny parametr - patrz niżej.
  3. wwwroot - główny adres platformy np. https://www.ekademia.pl
  4. w kursie:
    1. numer, nazwę skróconą, nazwę pełną, kategorię i url kursu
    2. jeśli jest to podstrona: numer, nazwę i adres strony
    3. jeśli jest to moduł kursu: id, nazwę, numer modułu, instancję i adres modułu
  5. na blogu:
    1. numer, nazwę, typ i url postu
  6. id, email i nazwę skróconą użytkownika - jeśli jest zalogowany i jeśli wyraził Ci wcześniej zgodę na przetwarzanie danych np. składając zamówienie.
  7. adres IP użytkownika
  8. informację z wyrażonej zgodzie na przetwarzanie danych w celach marketingowych
  9. informację o wyrażonej zgodzie na wysyłanie wiadomości komercyjnych za pomocą e-mail
Nie przekazujemy danych osobowych użytkownika, ponieważ:
  1. powinieneś je pozyskać wcześniej i zapisać w swojej bazie danych za pomocą:
    1. Webhook zdefiniowanego w produkcie albo w globalnie w ustawieniach sprzedawcy. Numer użytkownika przekazywany jest jako client_id
    2. Integracji z Pipedrive.com. Numer użytkownika zapisywany jest w danych Kontaktu jako imple_userid
  2. wiadomość email możesz wysłać też przez API Ekademii, które sprawdzi aktualne zgody marketingowe.
Struktura danych w formacie JSON:
Do adresu webhook możesz dodać własne parametry, które tez zostaną przekazane.

Różnica pomiędzy {WEBHOOK} i {WEBHOOKJS}

Kod {WEBHOOKJS}:
  1. jest wywoływany natychmiast po załadowaniu strony przez przeglądarkę użytkownika - za pomocą JavaScript
  2. jest wywoływany za każdym razem, gdy zostanie wyświetlony zasób posiadający tą flagę
  3. w przypadku błędu lub przepełnionej kolejki na serwerze docelowym, nie zostanie wywołany ponownie aż do ponownego wyświetlenia strony
  4. nie chroni adresu url webhooka - jest on widoczny w kodzie wyświetlonej strony oraz w konsoli JavaScript
  5. może spowalniać ładowanie pozostałych skryptów na stronie, jeśli na stronie jest więcej kodów albo webhook długo procesuje zapytanie
  6. nic nie kosztuje
Kod {WEBHOOK}:
  1. jest dostępny tylko dla zarejestrowanych na platformie sprzedawców
  2. jest zapisywany do kolejki a potem wywoływany przez nasz serwer co kilka minut
  3. w przypadku błędu lub przepełnienia kolejki po stronie serwera docelowego, Ekademia próbuje wywołać skrypt max 10 razy w kilkuminutowych odstępach czasu.
  4. domyślnie ma ustawioną blokadę na 15 minut, możesz ją zmieniać między 0 a dowolna liczba minut, aby nie logować ciągle tych samych operacji wykonywanych przez te same osoby
  5. adres url webhooka jest niedostępny dla użytkownika - tylko Ty i my go znamy
  6. nie spowalnia ładowania strony
  7. ze względu na to, że nie jest wywoływany natychmiast, a system probuje go wywołać do 10 razy w przypadku błędów, weryfikując poprawność zapytania po stronie Webhook należy przyjąć czas życia dla parametru time kilka do 24 godzin.
  8. kosztuje 1 grosz za każde zakończone sukcesem wywołanie webhooka - opłata jest doliczana do Twoich prowizji za sprzedaż.
Jeśli więc nie płacisz za wywołania webhooka (bo jest np. na Twoim serwerze) i nie przeszkadza Ci jego ciągłe wywoływanie lub możliwość, że ktoś skopiuje adres i zacznie go wywoływać złośliwie, to możesz wybrać {WEBHOOKJS}. Jeśli zdecydujesz się na {WEBHOOKJS} koniecznie sprawdzaj czy parametr time nie jest stary (ktoś ręcznie/złośliwie wywołuje zapytanie) oraz czy klucz key jest prawidłowy.
 
Jeśli korzystasz z usług typu Integromat.com lub Zapier.com, gdzie każde wywołanie webhooka jest płatne, polecamy korzystać z {WEBHOOK}. Wywołanie go również kosztuje, ale możesz kontrolować częstotliwość wywołania przez 1 osobę i nie ryzykujesz, że ktoś zacznie go złośliwie wywoływać. Jeśli zdecydujesz się na {WEBHOOK}, możesz zrezygnować z weryfikacji klucza dla operacji niekrytycznych.

Jak użyć kodów {WEBHOOK} i {WEBHOOKJS}:

W treści elementu, którego chcemy śledzić nalezy umieścić:
 
{WEBHOOK:URL_webhook} lub {WEBHOOKJS:URL_webhook}
 
URL_webhook MUSI rozpoczynać się od https. System wyśle zapytanie metodą GET.
 
Aby dodać sekret, który zmodyfikuje klucz (bardzo ważne przy WEBHOOKJS):
 
{WEBHOOK:URL_webhook:sekret} lub {WEBHOOKJS:URL_webhook:sekret}
 
Sekret to alfanumeryczny ciąg znaków służący do wygenerowania klucza key, który powinien być sprawdzony po stronie Webhook. Sekret NIE może być pusty. Dla zwiększonego bezpieczeństwa warto sprawdzać, czy pole time nie jest zbyt stare. W przypadku {WEBHOOK} pamiętaj, że wywołanie webhook następuje w ciągu kilku minut, ale w przypadku błędów może trwać dłużej - załóż maksymalny czas życia linku na kilka do 24 godzin.

Opcjonalnie można zdefiniować metodę:

{WEBHOOK:URL_webhook:sekret:metoda} lub {WEBHOOKJS:URL_webhook:sekret:metoda}
 
Metoda może przyjąc wartość GET albo POST. Domyślnie jest to GET.
 

Na koniec tylko {WEBHOOK} pozwala też określić czas blokady

Blokada dotyczy identycznego* wywołania wyrażona w minutach - domyślnie jest to 15 minut.
 
{WEBHOOK:URL_webhook:sekret:metoda:X}
 
Gdzie X to czas blokady wyrażony w minutach. 0 oznacza brak blokady. Możesz też podać bardzo dużą liczbę, aby logować daną operację tylko raz albo raz na długi czas. Np. 10 milionów minut to niecałe 40 lat.
 
* Blokujemy wywołanie takiego samego zapytania realizowanego przez tą samą osobę, konkretnie:
  1. tego samego adresu,
  2. w tym samym kursie, na tej samej podstronie kursu, w tym samym module,
  3. lub na tym samym poście bloga
  4. przez tego samego użytkownika lub sesję, jeśli jest to osoba niezalogowana.
  5. naturalnie ignorujemy jednak time i key.

Debugowanie

Oba kody wyświetlają komunikaty o sukcesie lub błędzie w konsoli JavaScript dostępnej w każdej nowoczesnej przeglądarce.