Funkcja eksperymentalna. Integracja n8n nie jest jeszcze w pełni przetestowana. Administrator włącza ją świadomie w Ustawieniach → Zaawansowane → Inne; dopóki jest wyłączona, zakładka n8n i ten rozdział instrukcji są ukryte, a endpointy /api/n8n/* nieaktywne. Integracja n8n należy do planu Pro. W planie Standard karty „Inne” z jej przełącznikiem nie ma, więc integracji nie da się włączyć.

Co to jest n8n?

n8n to platforma do automatyzacji procesów. Integracja z Task Manager działa w dwie strony:

  1. Webhooki wychodzące (Task Manager → n8n) - aplikacja sama wysyła powiadomienia do Twojego workflow w n8n, gdy coś się wydarzy (utworzono zadanie, zmieniono status, dodano wiadomość, zbliża się termin itp.).
  2. API przychodzące (n8n → Task Manager) - n8n może wywoływać aplikację, aby tworzyć zadania, dodawać wiadomości czy pobierać dane.

Włączenie integracji

Kliknij ikonę koła zębatego (⚙) → zakładka n8n. Zakładka dzieli się na dwie części: „Osobiste automatyzacje" - konfiguracja dotycząca wyłącznie Ciebie, oraz „Globalne automatyzacje" - ustawienia systemowe wspólne dla wszystkich użytkowników, widoczne tylko dla administratora. Aby zdarzenia były wysyłane, administrator musi włączyć przełącznik „Włącz integrację n8n" w części globalnej.

A. Webhooki wychodzące - powiadomienia z aplikacji do n8n

Konfiguracja

  1. W zakładce n8n kliknij „Nowy webhook".
  2. Podaj nazwę webhooka oraz adres URL webhooka skopiowany z n8n (node Webhook jako trigger, metoda POST).
  3. Zaznacz zdarzenia, które mają być wysyłane.
  4. (Opcjonalnie) ustaw sekret - aplikacja podpisze nim żądania (HMAC), aby n8n mógł zweryfikować autentyczność.
  5. Zapisz. Możesz wysłać testowy ping, aby sprawdzić połączenie.

Dostępne zdarzenia (wybrane)

  • Zadania: task.created, task.updated, task.status_changed, task.completed, task.deleted, task.deadline_approaching, task.overdue
  • Czaty / wiadomości: chat.message_sent, chat.mention, chat.file_uploaded
  • Użytkownicy / workspace: user.created, user.login, user.logout, workspace.created
  • Systemowe: system.daily_summary, system.weekly_summary

Każde żądanie do n8n zawiera nazwę zdarzenia oraz dane (data) z kontekstem (np. id zadania, workspace, autor).

B. API przychodzące - n8n steruje aplikacją

Konfiguracja

  1. W zakładce n8n kliknij „Nowy klucz API".
  2. Skopiuj wygenerowany token (pokazywany tylko raz).
  3. W n8n użyj node HTTP Request z nagłówkiem autoryzacji:
    Authorization: Bearer TWÓJ_TOKEN
    Akcje wykonywane są w kontekście użytkownika, który utworzył klucz (jego uprawnienia i dostęp do workspace'ów).

Dostępne endpointy

  • GET /api/n8n/ping.php - test tokenu i healthcheck (zwraca info o kluczu i użytkowniku).
  • GET /api/n8n/workspaces.php - lista dostępnych workspace'ów.
  • GET /api/n8n/users.php - lista użytkowników (tylko klucze utworzone przez administratora globalnego).
  • GET /api/n8n/tasks.php?workspace_id=&status=&limit= - lista zadań.
  • POST /api/n8n/tasks.php - utworzenie zadania. Body JSON:
    {
    "workspace_id": 1,
    "subject": "Nowe zadanie z n8n",
    "description": "Opcjonalny opis",
    "priority": "high",
    "deadline_date": "2025-12-31",
    "status": "none",
    "assignees": [2, 5]
    }
    Opis jest czyszczony z niebezpiecznego HTML tak samo jak w aplikacji i ma ten sam limit rozmiaru.
  • PATCH /api/n8n/tasks.php - aktualizacja istniejącego zadania, m.in. zmiana statusu. Body JSON (task_id wymagane, reszta pól opcjonalna - podajesz tylko to, co chcesz zmienić):
    {
    "task_id": 42,
    "status": "in_progress",
    "priority": "high",
    "deadline_date": "2026-08-01",
    "subject": "Nowy temat",
    "description": "Nowy opis"
    }
    • status: none | in_progress | done | cancelled. Zmiana statusu działa dokładnie tak jak z aplikacji: w wątku zadania pojawia się wpis „zmienił(a) status na…", przypisane osoby dostają powiadomienie e-mail, a do n8n leci webhook task.status_changed (oraz task.completed przy done).
    • deadline_date: null czyści termin. Zmiana terminu przesuwa przypomnienia przypięte do niego.
    • Pozostałe pola wysyłają webhook task.updated.
    • description zapisuje się tak samo jak przy edycji z okna zadania: niebezpieczny HTML jest usuwany, przy włączonym szyfrowaniu opis trafia do bazy zaszyfrowany, a odhaczenia na liście to-do zostają przy swoich pozycjach, także gdy w nowym opisie pozycje zmieniły kolejność. Zadanie dostaje oznaczenie „(edytowane)” tylko wtedy, gdy temat albo treść opisu naprawdę się zmieniły.
    • Gdy nowy opis usuwa listę to-do, do której ktoś dopisał własne pozycje, nic się nie zapisuje (także status z tego samego żądania) i dostajesz 409 z kodem DOPISKI_BEZ_LISTY oraz polem indeksy. Żeby mimo to usunąć listę razem z dopiskami, wyślij tę samą zmianę jeszcze raz z polem "usun_dopiski" równym liście z pola indeksy.
    • Najpierw zapisują się temat, termin, priorytet i opis, dopiero potem status - odmowa zapisu opisu nie zostawia zmienionego statusu.
    • Ustawienie tego samego statusu ponownie niczego nie wysyła (bezpieczne przy ponowieniach w n8n).
    • Jeśli Twój node HTTP nie obsługuje metody PATCH - wyślij to samo body przez POST: obecność task_id przełącza endpoint w tryb aktualizacji.
    • Kody błędów: 400 brak task_id, brak pól do zmiany albo za dużo pozycji listy to-do (TOO_MANY), 413 za duży opis (PAYLOAD_TOO_LARGE, zwykle wklejony obrazek), 422 nieprawidłowa wartość (status/priorytet/format daty), 404 zadanie nie istnieje lub jest poza dostępem klucza, 403 brak uprawnień do zmiany statusu/edycji, 409 opis usuwa listę z cudzymi dopiskami.
  • POST /api/n8n/messages.php - dodanie wiadomości do zadania lub czatu. Body JSON:
    {
    "entity_type": "task",
    "entity_id": 42,
    "content": "Treść wiadomości"
    }

Przykładowe scenariusze automatyzacji

  • Formularz Google → n8n → POST /api/n8n/tasks.php (nowe zadanie w Task Manager)
  • E-mail z Gmaila z określonym tematem → n8n → zadanie z opisem z treści e-maila
  • Zmiana statusu w Jira → n8n → wiadomość/aktualizacja powiązanego zadania
  • Webhook wychodzący task.created → n8n → wpis w arkuszu Google / powiadomienie na Slack
  • task.deadline_approaching → n8n → przypomnienie e-mail/SMS o zbliżającym się terminie

Rozwiązywanie problemów

  • Brak powiadomień w n8n - sprawdź, czy integracja jest włączona, webhook aktywny, a URL poprawny. Użyj „testowego pingu" i diagnostyki w zakładce n8n: pokazuje, czy adres webhooka odpowiada (sprawdzany tak samo jak przy wysyłce - bez przekierowań i z weryfikacją certyfikatu, więc n8n z certyfikatem self-signed wyjdzie jako nieosiągalny), ile zdarzeń czeka w kolejce ponowień i kiedy ostatnia wysyłka się udała.
  • Sekret webhooka jest przechowywany w bazie zaszyfrowany. Po zmianie klucza ENCRYPTION_KEY w config.php zapisane sekrety stają się nieczytelne - aplikacja wysyła wtedy zdarzenia bez podpisu, więc wygeneruj nowy sekret przy webhooku i wpisz go w n8n.
  • Brak autoryzacji (401) w API przychodzącym - token jest nieprawidłowy lub został usunięty. Utwórz nowy klucz API i zaktualizuj nagłówek Authorization w n8n.
  • Zadanie nie zostaje utworzone - upewnij się, że workspace_id istnieje i że użytkownik klucza ma do niego dostęp oraz uprawnienie do dodawania zadań.