W poniedziałek rano, zanim otworzysz pierwszego maila, Twoja skrzynka ma już gotowy raport z weekendu: ile wpłynęło na konto, jak wypadły kampanie Google Ads, ile osób odwiedziło stronę. Bez otwierania wFirmy. Bez logowania do panelu reklam. Bez pivota w Excelu. To workflow, który można zbudować w n8n w jedno popołudnie — i który oddaje właścicielowi firmy kilka godzin tygodniowo.
Pokazujemy, jak to wygląda technicznie i co zrobić, żeby od razu działało w Twojej firmie.
Dlaczego ręczny raport zarządczy to niewidoczny koszt MŚP
Właściciel małej firmy nie ma dedykowanego analityka. Raport zarządczy składa się z trzech, czterech różnych źródeł — każde wymaga osobnego logowania, osobnego eksportu, własnej logiki przeliczeń. Typowy scenariusz wygląda tak:
- wFirma: sprawdzasz, co wpłynęło w tym tygodniu i co jest przeterminowane.
- Google Ads: otwierasz panel, filtrujesz po dacie, zapisujesz kluczowe metryki.
- GA4: logujesz się do Google Analytics, sprawdzasz ruch i top strony.
- Excel / arkusz Google: sklejasz wszystko razem, liczysz marżę, piszesz komentarz.
Jeśli robisz to co tydzień i zajmuje Ci 90–120 minut — przez rok tracisz ponad 80 godzin na kopiowanie liczb między panelami. To pełne dwa tygodnie robocze spędzone wyłącznie na przełączaniu kart.
Drugi, mniej oczywisty koszt to rozproszenie kontekstu: jeśli raport robisz „przy okazji” — wieczorem, między spotkaniami, w poczekalni — decyzje zapadają na podstawie danych czytanych w pośpiechu, bez wgłębiania się w trendy tygodniowe.
Automatyczny digest rozwiązuje obie kwestie jednocześnie: dane przychodzą same, sformatowane w czytelną narrację, o stałej porze.
Warto jednak powiedzieć wprost, czego ten system nie robi: nie podejmuje decyzji za Ciebie i nie zastępuje branżowego wyczucia. AI streszcza dane i może zwrócić uwagę na anomalię, ale to Ty decydujesz, czy cięcie budżetu reklamowego w środku tygodnia ma sens w kontekście zaplanowanej promocji. Raport to paliwo do decyzji — nie decyzja sama w sobie. To rozróżnienie jest istotne, bo część właścicieli oczekuje od takich systemów czegoś w rodzaju autopilota. Automat zbiera i formatuje; myślenie pozostaje po ludzkiej stronie.
Jakie dane naprawdę potrzebujesz co tydzień
Zanim zaczniesz budować workflow, odpowiedz na jedno pytanie: co sprawdzasz zawsze, zanim podejmiesz jakąkolwiek decyzję biznesową w tym tygodniu?
Dla typowego MŚP, które sprzedaje online lub prowadzi usługi z kampaniami reklamowymi, odpowiedź sprowadza się do trzech obszarów:
Obszar finansowy — co wpłynęło, co jest zaległe, jaki jest bieżący bilans operacyjny. Źródło: wFirma lub inny system fakturowy.
Obszar reklamowy — ile wydałem na reklamy, ile kliknięć/leadów to przyniosło, czy ROAS jest na poziomie celu. Źródło: Google Ads, Meta Ads lub oba.
Obszar ruchu na stronie — czy kampanie przyciągają właściwy ruch, które strony konwertują, czy nie ma anomalii (drop ruchu, błędy serwera). Źródło: GA4 lub Cloudflare Analytics.
To minimalne trzy liczby na tydzień. Automatyczny raport zestawia je obok siebie, żebyś widział zależności: „wydałem więcej na reklamy, ruch rósł, ale wpływy nie — dlaczego?“.
Czwarty obszar, który warto rozważyć przy bardziej dojrzałej operacji, to obsługa klienta: liczba nowych zgłoszeń, czas pierwszej odpowiedzi, otwarte tickety z poprzedniego tygodnia. Jeśli korzystasz z systemu helpdesk z REST API (np. Freshdesk, Zendesk, Tidio), dołączenie tej gałęzi do workflow to kolejne 30–45 minut konfiguracji. Na starcie jednak polecamy ograniczyć się do finansów i reklam — mniejsze ryzyko, że zbyt duża liczba metryk rozmyje obraz i utrudni wyciąganie wniosków.
Architektura automatycznego workflow w n8n
n8n to narzędzie do automatyzacji, które działa jak wizualny orkiestrator — łączysz węzły reprezentujące operacje (pobierz dane z API, przetransformuj, wyślij maila) bez pisania kodu. Dostępne jest w wersji Community (self-hosted, darmowe) i Cloud (od ok. 20 EUR miesięcznie). Opisywany workflow działa na obu wersjach bez różnic funkcjonalnych.
Jeśli nie pracowałeś jeszcze z n8n od strony AI, warto zobaczyć jak buduje się agenta od prototypu do produkcji — tam omawiamy podstawowe bloki, które tutaj stosujemy.
Krok 1: Schedule Trigger — kiedy raport ma być gotowy
Pierwsze pytanie: kiedy chcesz raport? Najczęstsza odpowiedź to poniedziałek rano — dajesz sobie podgląd na miniony tydzień zanim zaczniesz nowy.
W n8n dodajesz węzeł Schedule Trigger, wybierasz tryb Cron i wpisujesz wyrażenie:
0 7 * * 1Oznacza: o 7:00, w każdy poniedziałek. Workflow startuje sam — nie musisz nic klikać.
Jeśli chcesz raport codziennie (np. sprawdzasz kampanie w weekendy), zmieniasz na 0 7 * * *.
Krok 2: Branch A — dane finansowe z wFirmy
wFirma.pl udostępnia publiczne REST API pod adresem api.wfirma.pl. Autoryzacja odbywa się przez klucze API: accessKey, secretKey i appKey — wszystkie trzy przekazywane jako nagłówki HTTP do każdego żądania (wg dokumentacji: doc.wfirma.pl).
W n8n dodajesz węzeł HTTP Request z metodą GET i adresem:
https://api.wfirma.pl/reports/sales?date_from={{$json.week_start}}&date_to={{$json.week_end}}Gdzie week_start i week_end obliczysz wcześniej w węźle Code (dwa wiersze JavaScript):
const today = new Date();
const monday = new Date(today);
monday.setDate(today.getDate() - today.getDay() + 1);
// week_start = Monday - 7 days, week_end = Monday - 1 dayW odpowiedzi API wFirma zwraca podsumowanie sprzedaży: przychody netto, liczbę faktur, wartość należności przeterminowanych. Dokładna struktura zależy od Twojego planu wFirmy i wybranych filtrów — warto zweryfikować na środowisku testowym przed produkcją.
Analogicznie, wywołanie /reports/expenses dostarcza wydatki w tym samym oknie czasowym.
Krok 3: Branch B — dane reklamowe z Google Ads
Google Ads nie ma natywnego węzła w n8n. Integracja odbywa się przez HTTP Request + OAuth2 Credentials — konfiguracja raz, potem działa automatycznie.
W n8n:
- Tworzysz Credentials → Google OAuth2 z zakresem
https://www.googleapis.com/auth/adwords. - Dodajesz węzeł HTTP Request kierujący do Google Ads API (wersja v18 lub nowsza):
POST https://googleads.googleapis.com/v18/customers/{CUSTOMER_ID}/googleAds:searchStream- W body żądania umieszczasz zapytanie GAQL (Google Ads Query Language):
SELECT campaign.name, metrics.clicks, metrics.impressions,
metrics.cost_micros, metrics.conversions
FROM campaign
WHERE segments.date DURING LAST_7_DAYSWynik to JSON z metrykami kampanii za ostatnie 7 dni: kliknięcia, wyświetlenia, koszt (w mikro-złotówkach — trzeba podzielić przez 1 000 000), konwersje.
Ostrzeżenie: GAQL jest językiem zbliżonym do SQL, ale ma własne reguły — nie każde pole można łączyć z każdym segmentem. Przed uruchomieniem produkcyjnym przetestuj zapytanie w Google Ads API Query Builder. Błędne zapytanie zwraca błąd HTTP 400, nie cichy wynik zerowy.
Jeśli korzystasz też z Meta Ads — schemat jest analogiczny: Meta Marketing API v21+, punkt dostępowy /act_{AD_ACCOUNT_ID}/insights, parametr date_preset=last_7d. Meta wymaga osobnego tokenu (access_token), który konfigurujesz w n8n jako credential HTTP Header.
Krok 4: Merge wszystkich danych i węzeł AI
Po zebraniu danych z wFirmy i Google Ads łączysz gałęzie węzłem Merge (tryb: Combine). W efekcie masz jeden obiekt JSON z:
- Przychodami brutto/netto za tydzień
- Wartością należności przeterminowanych
- Wydatkami firmy
- Metrykami kampanii: kliknięcia, koszt, konwersje, szacunkowy ROAS
Teraz dodajesz węzeł Anthropic Chat Model — to wbudowany węzeł n8n łączący się z API Anthropic przez Twój klucz (ANTHROPIC_API_KEY). Wybierasz model claude-sonnet-5-20260630 (lub aktualny Sonnet — sprawdź w dokumentacji Anthropic, który jest bieżący).
W polu system prompt wpisujesz instrukcję:
Jesteś asystentem zarządczym dla małej firmy. Piszesz po polsku, zwięźle.
Dostajesz JSON z danymi tygodniowymi. Tworzysz raport w formie 5-7 zdań:
- Przychody i należności (1-2 zdania)
- Wyniki reklam: koszt, konwersje, ROAS (1-2 zdania)
- Jeśli coś niepokojącego (wysoka zaległość, spadek konwersji > 30%) — zaznacz to.
- Zakończ jedną krótką wskazówką na nadchodzący tydzień.
Ton: rzeczowy, bez zbędnych wstępów. Nie zaczynaj od "Raport zarządczy:".W polu user message podajesz {{JSON.stringify($json)}} — przekazujesz dane z poprzedniego węzła.
Kilka wskazówek dotyczących samego promptu, które mają realny wpływ na jakość wyniku:
- Podaj cel finansowy — jeśli wpisujesz w prompt „docelowy ROAS to 4.0”, Claude wie, kiedy wynik jest dobry, a kiedy alarmujący. Bez tej wartości referencyjnej model może skomentować ROAS 3.2 jako „zadowalający”, choć dla Twojej marży to poniżej progu opłacalności.
- Ogranicz long tail — jeśli masz 15 kampanii, nie chcesz narracji o każdej z osobna. Dodaj w prompcie: „Skomentuj tylko top 3 kampanie wg wydatków”. Model respektuje takie ograniczenia.
- Zdefiniuj styl alertów — „Jeśli jakaś metryka odbiega od poprzedniego tygodnia o więcej niż 25%, zacznij zdanie od słowa UWAGA w nawiasie”. Taki marker łatwo wychwycić w skrzynce bez czytania całego tekstu.
Claude zwraca gotową narrację w naturalnym języku. Zamiast tabeli z liczbami właściciel czyta:
„W minionym tygodniu wpłynęło 28 400 zł netto z 12 faktur. Należności przeterminowane wynoszą 6 200 zł (2 kontrahenci). Kampanie Google Ads pochłonęły 1 840 zł i przyniosły 47 konwersji — ROAS na poziomie 3,6. Wobec wakacyjnego spowolnienia warto przesunąć 20–30% budżetu z kampanii brandowych na remarketingowe — użytkownicy wracający konwertują teraz szybciej.”
Krok 5: Formatowanie i wysyłka
Ostatni węzeł to Send Email (lub Slack jeśli zarządzasz firmą przez Slacka). Konfiguracja wymaga SMTP lub integracji ze swoim kontem mailowym (n8n ma natywne węzły dla Gmail, Outlook, SMTP).
W polu Subject wpisujesz: Raport zarządczy — tydzień {{$json.week_start}}. W polu Body (HTML) formatujesz narrację od Claude w prosty HTML z nagłówkami:
<h2>Tydzień {{week_start}} – {{week_end}}</h2>
<p>{{$json.ai_summary}}</p>
<h3>Dane źródłowe</h3>
<ul>
<li>Przychody netto: {{$json.revenue}} zł</li>
<li>Należności przeterminowane: {{$json.overdue}} zł</li>
<li>Koszty Google Ads: {{$json.ads_cost}} zł</li>
<li>Konwersje: {{$json.conversions}}</li>
</ul>Sekcja „Dane źródłowe” z surową tabelą służy weryfikacji — jeśli narracja AI coś skróciła, masz liczby pod spodem.
Co dostaje właściciel — jak wygląda gotowy digest
Format raportu świadomie ograniczamy do jednego ekranu na smartfonie. Właściciel ma go przeczytać w 45 sekund, nie analizować 20 minut. Dlatego:
- AI summary: 5–7 zdań narracji
- Kluczowe liczby: 4–5 pozycji w tabeli
- Alert (jeśli coś wymaga uwagi): wyróżniony tekst czerwonym kolorem lub emoji ⚠
Jeśli dane wskazują na anomalię — np. ROAS poniżej progu opłacalności przez drugi tydzień z rzędu — możesz rozszerzyć prompt Claude’a o instrukcję: „Jeśli ROAS < 2.0 przez 2 kolejne tygodnie, zaznacz jako ALERT i zaproponuj 1 konkretne działanie.”.
W takiej konfiguracji raport przestaje być tylko informacją — staje się biernym doradcą.
Koszt i czas wdrożenia: realia dla MŚP
n8n Community (self-hosted) jest bezpłatne. Potrzebujesz serwera — VPS z 1 GB RAM wystarczy i kosztuje 3–6 EUR miesięcznie (np. Hetzner CX11). n8n instalujesz przez Docker w kilkanaście minut.
n8n Cloud Starter kosztuje ok. 20 EUR miesięcznie. Nie wymaga żadnej infrastruktury — logujesz się do panelu, budujesz workflow, włączasz. Dla MŚP bez własnego IT to prostsze rozwiązanie, choć droższe w skali roku.
Koszty zewnętrzne API:
- wFirma API — dostęp w ramach abonamentu wFirmy (nie ma dodatkowej opłaty za korzystanie z API w standardowych planach; sprawdź swój plan).
- Google Ads API — bezpłatne przy standardowym poziomie użycia (limity dotyczą liczby wywołań, nie miesięcznych opłat za samo API).
- Anthropic API (Claude) — przy jednym wywołaniu tygodniowo to dosłownie grosze. Typowy raport to 500–800 tokenów wejściowych + 200 tokenów wyjściowych. Przy cenach claude-sonnet-5 (sprawdź bieżące ceny w
console.anthropic.com) koszt jednego raportu tygodniowego wynosi ułamki złotówki.
Czas wdrożenia: pierwsze uruchomienie zajmuje ok. 4–6 godzin — głównie na konfigurację OAuth w Google Ads i zrozumienie struktury odpowiedzi wFirma API. Jeśli masz już doświadczenie z n8n, skraca się to do 2–3 godzin. Warto poświęcić dodatkową godzinę na przetestowanie workflow na danych historycznych (n8n pozwala uruchomić przepływ ręcznie z dowolną datą zamiast czekać na poniedziałek), żeby mieć pewność, że format raportu spełnia oczekiwania zanim trafi na skrzynkę jako cotygodniowy standard.
Jeśli porównacie to z tygodniowym kosztem ręcznego raportowania (90 minut × 52 tygodnie × Twoja stawka godzinowa), ROI wdrożenia zamyka się w pierwszym miesiącu.
Rozszerzenia, które warto dodać po uruchomieniu wersji podstawowej
Po kilku tygodniach działania podstawowego workflow typowy kolejny krok to wzbogacenie danych o kontekst historyczny. Zamiast porównywać tydzień do zera, porównujesz do poprzedniego tygodnia lub do analogicznego tygodnia roku ubiegłego.
n8n umożliwia to przez:
- Węzeł Google Sheets — zapisujesz tygodniowe dane do arkusza; przy każdym uruchomieniu wczytujesz poprzedni wiersz i przekazujesz do Claude’a razem z bieżącymi danymi.
- Rozszerzony prompt: „Porównaj z poprzednim tygodniem. Jeśli przychody różnią się o więcej niż 20% — wyjaśnij możliwe przyczyny na podstawie danych reklamowych.”.
Drugie rozszerzenie to raport miesięczny — oddzielny workflow z harmonogramem 0 7 1 * * (pierwszego dnia każdego miesiąca o 7:00), który zbiera dane z całego poprzedniego miesiąca i generuje bardziej szczegółową narrację z trendami.
Więcej o tym, jak AI może automatycznie śledzić i kategoryzować wydatki firmowe jeszcze zanim trafią do raportu, opisujemy w AI do zarządzania wydatkami firmowymi MŚP.
Kiedy automatyczny raport zarządczy NIE jest dobrym rozwiązaniem
Nie każde MŚP skorzysta na tym rozwiązaniu w równym stopniu.
Jeśli Twoja firma nie prowadzi płatnych kampanii reklamowych i ma małą, przewidywalną sprzedaż B2B z kilkunastoma fakturami miesięcznie — raport tygodniowy jest przerostem formy. Miesięczne sprawdzenie wFirmy w 15 minut jest prostsze i wystarczy.
Jeśli potrzebujesz danych w czasie rzeczywistym (np. monitorujesz kampanię e-commerce z budżetem dziennym rzędu 2 000 zł) — raport tygodniowy nie zastąpi bieżącego monitoringu. Tu lepiej sprawdzą się alerty Google Ads (reguły automatyczne) lub Looker Studio z odświeżaniem co 24 godziny.
Jeśli Twój team rozproszony wymaga dostępu do raportu z komentarzami i historią decyzji — sam email to za mało. Rozważ archiwizowanie raportów w Notion lub Confluence i budowę prostego rejestru decyzji tygodniowych obok generowanego tekstu.
Jeśli prowadzisz biznes sezonowy z bardzo nieregularnym tempem (np. szkoła narciarska, firma eventowa, kawiarnia z letnim ogródkiem) — raport tygodniowy może przez część roku generować misleadingowe porównania. Tydzień w lutym przy wyprzedaży końcowej i tydzień w maju przy braku rezerwacji to nieporównywalne dane bez dodatkowego kontekstu. W takich przypadkach warto wbudować w prompt informację o aktualnym sezonie lub po prostu wyłączyć timer poza sezonem, zostawiając tylko raport miesięczny.
Podsumowanie
Automatyczny raport zarządczy oparty na n8n i AI to nie projekt IT — to zmiana nawyku. Zamiast reagować na dane w momencie, gdy masz chwilę (i wtedy działasz pod presją), dostajesz skondensowany obraz sytuacji o stałej porze, co tydzień, w formie, która nie wymaga żadnej interpretacji przed pierwszą kawą.
Wskazówka: zacznij od jednego źródła danych — np. tylko wFirma. Uruchom workflow, poczekaj dwa tygodnie, sprawdź czy format raportu odpowiada temu, czego szukasz. Dopiero potem dodajesz Google Ads i GA4. Iteracja jest szybsza niż próba skonfigurowania wszystkiego jednocześnie.
Jeśli chcesz zobaczyć, jak taki workflow wygląda w kontekście pełniejszego ekosystemu automatyzacji w Twojej firmie — chętnie pokażemy, jak to robimy dla naszych klientów.