{"id":3178,"date":"2026-06-22T11:18:36","date_gmt":"2026-06-22T09:18:36","guid":{"rendered":"https:\/\/help.zanfia.com\/docs\/webhooki-zdarzenia-payload-konfiguracja\/"},"modified":"2026-06-22T11:35:50","modified_gmt":"2026-06-22T09:35:50","password":"","slug":"webhooki-zdarzenia-payload-konfiguracja","status":"publish","type":"docs","link":"https:\/\/help.zanfia.com\/pl\/docs\/webhooki-zdarzenia-payload-konfiguracja\/","title":{"rendered":"Webhooki: zdarzenia, payload i konfiguracja"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Webhook to powiadomienie, kt\u00f3re Zanfia wysy\u0142a do Twojego systemu w momencie, gdy w produkcie dzieje si\u0119 co\u015b wa\u017cnego (na przyk\u0142ad kto\u015b kupuje produkt). Dzi\u0119ki temu Tw\u00f3j system (CRM, ERP, w\u0142asna aplikacja, automatyzacja) dostaje dane od razu, bez odpytywania API.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Webhooki konfigurujesz osobno dla ka\u017cdego produktu i sam decydujesz, jakie zdarzenia maj\u0105 je wyzwala\u0107 oraz jakie dane maj\u0105 trafi\u0107 do Twojego systemu.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Gdzie znale\u017a\u0107 webhooki<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Wejd\u017a w <strong>Produkty<\/strong>, wybierz produkt, otw\u00f3rz zak\u0142adk\u0119 <strong>Automatyzacje<\/strong> i przejd\u017a do sekcji <strong>Webhooks<\/strong>. Kliknij <strong>+ Dodaj pierwsz\u0105 integracj\u0119<\/strong> (lub Dodaj webhook, je\u015bli masz ju\u017c jaki\u015b skonfigurowany).<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img fetchpriority=\"high\" decoding=\"async\" width=\"2516\" height=\"600\" src=\"https:\/\/help.zanfia.com\/wp-content\/uploads\/2026\/06\/CleanShot-2026-06-22-at-11.29.01.webp\" alt=\"\" class=\"wp-image-3180\" srcset=\"https:\/\/help.zanfia.com\/wp-content\/uploads\/2026\/06\/CleanShot-2026-06-22-at-11.29.01.webp 2516w, https:\/\/help.zanfia.com\/wp-content\/uploads\/2026\/06\/CleanShot-2026-06-22-at-11.29.01-300x72.webp 300w, https:\/\/help.zanfia.com\/wp-content\/uploads\/2026\/06\/CleanShot-2026-06-22-at-11.29.01-1024x244.webp 1024w, https:\/\/help.zanfia.com\/wp-content\/uploads\/2026\/06\/CleanShot-2026-06-22-at-11.29.01-768x183.webp 768w, https:\/\/help.zanfia.com\/wp-content\/uploads\/2026\/06\/CleanShot-2026-06-22-at-11.29.01-1536x366.webp 1536w, https:\/\/help.zanfia.com\/wp-content\/uploads\/2026\/06\/CleanShot-2026-06-22-at-11.29.01-2048x488.webp 2048w, https:\/\/help.zanfia.com\/wp-content\/uploads\/2026\/06\/CleanShot-2026-06-22-at-11.29.01-360x86.webp 360w\" sizes=\"(max-width: 2516px) 100vw, 2516px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Konfiguracja webhooka krok po kroku<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Adres URL<\/strong> \u2014 adres endpointu w Twoim systemie, na kt\u00f3ry maj\u0105 trafia\u0107 dane.<\/li>\n\n\n\n<li><strong>Opis<\/strong> \u2014 dowolny opis pomocniczy, u\u0142atwia rozr\u00f3\u017cnienie webhook\u00f3w na li\u015bcie.<\/li>\n\n\n\n<li><strong>Metoda HTTP<\/strong> \u2014 GET albo POST (r\u00f3\u017cnice opisane ni\u017cej).<\/li>\n\n\n\n<li><strong>Zdarzenia (triggery)<\/strong> \u2014 jedno lub wiele zdarze\u0144, kt\u00f3re wyzwol\u0105 webhook (pe\u0142na lista ni\u017cej).<\/li>\n\n\n\n<li><strong>Typ autoryzacji<\/strong> \u2014 Brak, Basic Auth, Bearer Token albo API Key.<\/li>\n\n\n\n<li><strong>Payload \/ parametry<\/strong> \u2014 lista p\u00f3l, kt\u00f3re chcesz wys\u0142a\u0107, wraz z nazw\u0105 klucza pod jak\u0105 trafi\u0105 do Twojego systemu.<\/li>\n\n\n\n<li><strong>Aktywny<\/strong> \u2014 prze\u0142\u0105cznik w\u0142\u0105czaj\u0105cy webhook.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"846\" height=\"569\" src=\"https:\/\/help.zanfia.com\/wp-content\/uploads\/2026\/06\/CleanShot-2026-06-22-at-11.33.57.webp\" alt=\"\" class=\"wp-image-3183\" srcset=\"https:\/\/help.zanfia.com\/wp-content\/uploads\/2026\/06\/CleanShot-2026-06-22-at-11.33.57.webp 846w, https:\/\/help.zanfia.com\/wp-content\/uploads\/2026\/06\/CleanShot-2026-06-22-at-11.33.57-300x202.webp 300w, https:\/\/help.zanfia.com\/wp-content\/uploads\/2026\/06\/CleanShot-2026-06-22-at-11.33.57-768x517.webp 768w, https:\/\/help.zanfia.com\/wp-content\/uploads\/2026\/06\/CleanShot-2026-06-22-at-11.33.57-360x242.webp 360w\" sizes=\"(max-width: 846px) 100vw, 846px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Lista dost\u0119pnych zdarze\u0144 (triggery)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nazwa techniczna (pole eventType w payloadzie) zawsze ma prefiks, na przyk\u0142ad product.ProductPurchased.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Dost\u0119pne dla ka\u017cdego produktu (darmowego i p\u0142atnego)<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Zdarzenie (eventType)<\/th><th>Opis<\/th><th>Kiedy si\u0119 wyzwala<\/th><\/tr><\/thead><tbody><tr><td>product.ProductPurchased<\/td><td>Nowa subskrypcja\/zakup<\/td><td>Klient kupi\u0142 produkt (Tw\u00f3j nowy zakup)<\/td><\/tr><tr><td>product.OrderCreated<\/td><td>Utworzono zam\u00f3wienie<\/td><td>Powsta\u0142o zam\u00f3wienie, r\u00f3wnie\u017c przy nieudanej p\u0142atno\u015bci<\/td><\/tr><tr><td>product.ClientImported<\/td><td>Zaimportowano klienta<\/td><td>Klient zosta\u0142 dodany przez import<\/td><\/tr><tr><td>productReferrals.ValidSubscriberFromReferral<\/td><td>Zweryfikowane polecenie<\/td><td>Zaliczono wa\u017cne polecenie w programie polece\u0144<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Dodatkowo dla produktu p\u0142atnego<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Zdarzenie (eventType)<\/th><th>Opis<\/th><\/tr><\/thead><tbody><tr><td>product.ProductSubscriptionRenewed<\/td><td>Odnowienie subskrypcji<\/td><\/tr><tr><td>product.ProductSubscriptionEnd<\/td><td>Koniec subskrypcji<\/td><\/tr><tr><td>product.ProductAccessRenewed<\/td><td>Odnowienie okresu dost\u0119pu<\/td><\/tr><tr><td>product.ProductAccessPeriodEnd<\/td><td>Koniec okresu dost\u0119pu<\/td><\/tr><tr><td>product.ProductAccessPeriodEndingIn14Days<\/td><td>14 dni do ko\u0144ca okresu dost\u0119pu (tylko dla dost\u0119p\u00f3w rocznych)<\/td><\/tr><tr><td>product.ProductAccessPeriodEndingIn7Days<\/td><td>7 dni do ko\u0144ca okresu dost\u0119pu<\/td><\/tr><tr><td>product.ProductAccessPeriodEndingIn3Days<\/td><td>3 dni do ko\u0144ca okresu dost\u0119pu<\/td><\/tr><tr><td>product.ProductAccessPeriodEndingIn1Day<\/td><td>1 dzie\u0144 do ko\u0144ca okresu dost\u0119pu<\/td><\/tr><tr><td>product.ProductAccessPeriodEndingToday<\/td><td>Okres dost\u0119pu ko\u0144czy si\u0119 dzisiaj<\/td><\/tr><tr><td>product.ProductClientArchived<\/td><td>Klient zarchiwizowany w produkcie<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Dodatkowo dla produktu darmowego<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Zdarzenie (eventType)<\/th><th>Opis<\/th><\/tr><\/thead><tbody><tr><td>product.ProductClientRemoved<\/td><td>Klient usuni\u0119ty z produktu<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>[SCREENSHOT: Rozwini\u0119ta lista zdarze\u0144 w formularzu webhooka]<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Pola payloadu<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Sam wybierasz, kt\u00f3re pola wys\u0142a\u0107, i pod jak\u0105 nazw\u0105 klucza maj\u0105 trafi\u0107 do Twojego systemu. Dost\u0119pne pola:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Pole<\/th><th>Opis<\/th><\/tr><\/thead><tbody><tr><td>eventType<\/td><td>Typ zdarzenia (pe\u0142na nazwa, na przyk\u0142ad product.ProductPurchased)<\/td><\/tr><tr><td>productId<\/td><td>ID produktu<\/td><\/tr><tr><td>productName<\/td><td>Nazwa produktu<\/td><\/tr><tr><td>priceId<\/td><td>ID ceny<\/td><\/tr><tr><td>price<\/td><td>Cena: obiekt z kwot\u0105, walut\u0105 i stawk\u0105 VAT<\/td><\/tr><tr><td>paymentType<\/td><td>Rodzaj p\u0142atno\u015bci<\/td><\/tr><tr><td>orderId<\/td><td>Numer transakcji<\/td><\/tr><tr><td>quantity<\/td><td>Liczba zakupionych (domy\u015blnie 1)<\/td><\/tr><tr><td>clientEmail<\/td><td>Email klienta<\/td><\/tr><tr><td>clientFirstName<\/td><td>Imi\u0119 klienta<\/td><\/tr><tr><td>clientLastName<\/td><td>Nazwisko klienta<\/td><\/tr><tr><td>clientName<\/td><td>Imi\u0119 i nazwisko klienta (po\u0142\u0105czone)<\/td><\/tr><tr><td>clientAddress<\/td><td>Adres klienta<\/td><\/tr><tr><td>phoneNumber<\/td><td>Numer telefonu<\/td><\/tr><tr><td>companyName<\/td><td>Nazwa firmy<\/td><\/tr><tr><td>taxNumber<\/td><td>NIP<\/td><\/tr><tr><td>consents<\/td><td>Dodatkowe zgody<\/td><\/tr><tr><td>discordId<\/td><td>Discord ID<\/td><\/tr><tr><td>additionalInfo<\/td><td>Dodatkowe informacje<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Jak budowany jest payload<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Dla ka\u017cdego pola podajesz <strong>w\u0142asn\u0105 nazw\u0119 klucza<\/strong> (t\u0119, kt\u00f3rej oczekuje Tw\u00f3j system) i przypisujesz do niej pole z listy powy\u017cej. Dzi\u0119ki temu dopasujesz payload do swojego odbiornika, bez przerabiania go po swojej stronie.<\/li>\n\n\n\n<li><strong>POST<\/strong> \u2014 dane lec\u0105 jako JSON w body. Mo\u017cesz te\u017c zaznaczy\u0107 opcj\u0119 wysy\u0142ki payloadu jako parametry zapytania.<\/li>\n\n\n\n<li><strong>GET<\/strong> \u2014 dane lec\u0105 jako parametry w adresie URL.<\/li>\n\n\n\n<li>eventType zawsze zawiera pe\u0142n\u0105 nazw\u0119 zdarzenia z prefiksem (na przyk\u0142ad product.ProductPurchased).<\/li>\n\n\n\n<li>price to obiekt zawieraj\u0105cy kwot\u0119, walut\u0119 i stawk\u0119 VAT.<\/li>\n\n\n\n<li>clientName \u0142\u0105czy imi\u0119 i nazwisko klienta.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Przyk\u0142adowy payload dla nowego zakupu (POST)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Przy mapowaniu kluczy 1:1 z nazwami p\u00f3l payload nowego zakupu wygl\u0105da tak:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"eventType\": \"product.ProductPurchased\",\n  \"orderId\": \"ord_xxxxxxxx\",\n  \"productId\": \"prod_xxxxxxxx\",\n  \"productName\": \"Nazwa Twojego produktu\",\n  \"priceId\": \"price_xxxxxxxx\",\n  \"price\": {\n    \"amount\": 9900,\n    \"currency\": \"PLN\",\n    \"taxRate\": 23\n  },\n  \"clientEmail\": \"jan.kowalski@example.com\",\n  \"clientFirstName\": \"Jan\",\n  \"clientLastName\": \"Kowalski\",\n  \"quantity\": 1\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>UWAGA:<\/strong> dok\u0142adny format pola amount (na przyk\u0142ad czy kwota jest w groszach) najlepiej potwierdzi\u0107 na realnym zdarzeniu testowym za pomoc\u0105 funkcji testowania webhooka (patrz ni\u017cej). Warto\u015bci w przyk\u0142adzie s\u0105 pogl\u0105dowe.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Autoryzacja<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Przy konfiguracji wybierasz typ autoryzacji, kt\u00f3rego ma u\u017cywa\u0107 webhook wysy\u0142any do Twojego systemu:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Brak<\/strong> \u2014 bez autoryzacji.<\/li>\n\n\n\n<li><strong>Basic Auth<\/strong> \u2014 login i has\u0142o.<\/li>\n\n\n\n<li><strong>Bearer Token<\/strong> \u2014 token przekazywany w nag\u0142\u00f3wku Authorization.<\/li>\n\n\n\n<li><strong>API Key<\/strong> \u2014 klucz przekazywany jako parametr.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Wa\u017cne uwagi techniczne<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Webhook jest wysy\u0142any jednorazowo, bez automatycznych ponowie\u0144.<\/strong> Tw\u00f3j endpoint powinien przyj\u0105\u0107 \u017c\u0105danie od razu i odpowiedzie\u0107 statusem z zakresu 2xx. Je\u015bli Tw\u00f3j serwer nie odpowie poprawnie, Zanfia nie ponowi pr\u00f3by automatycznie.<\/li>\n\n\n\n<li>Wynik ka\u017cdej wysy\u0142ki (sukces lub b\u0142\u0105d, kod odpowiedzi) zapisuje si\u0119 w logach webhooka, wi\u0119c mo\u017cesz sprawdzi\u0107, czy \u017c\u0105danie dosz\u0142o i jak odpowiedzia\u0142 Tw\u00f3j system.<\/li>\n\n\n\n<li><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Testowanie webhooka<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Przed wpi\u0119ciem na produkcj\u0119 mo\u017cesz wys\u0142a\u0107 testowe \u017c\u0105danie na sw\u00f3j endpoint i sprawdzi\u0107, czy dane dochodz\u0105 w oczekiwanym formacie.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Dodatkowe materia\u0142y<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Dokumentacja Zanfia API: <a href=\"https:\/\/help.zanfia.com\/pl\/docs\/jak-wykorzystac-api-zanfia\/\">help.zanfia.com\/pl\/docs\/jak-wykorzystac-api-zanfia<\/a><\/li>\n\n\n\n<li>Wideo o webhookach: <a href=\"https:\/\/www.youtube.com\/watch?v=PBro2WZzbC8\">youtube.com\/watch?v=PBro2WZzbC8<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Webhook to powiadomienie, kt\u00f3re Zanfia wysy\u0142a do Twojego systemu w momencie, gdy w produkcie dzieje si\u0119 co\u015b wa\u017cnego (na przyk\u0142ad kto\u015b kupuje produkt). Dzi\u0119ki temu Tw\u00f3j system (CRM, ERP, w\u0142asna aplikacja, automatyzacja) dostaje dane od razu, bez odpytywania API. Webhooki konfigurujesz osobno dla ka\u017cdego produktu i sam decydujesz, jakie zdarzenia maj\u0105 je wyzwala\u0107 oraz jakie [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"doc_category":[54],"doc_tag":[],"class_list":["post-3178","docs","type-docs","status-publish","hentry","doc_category-webhooki"],"year_month":"2026-07","word_count":767,"total_views":"81","reactions":{"happy":"0","normal":"0","sad":"0"},"author_info":{"name":"Grzegorz Jasionowicz","author_nicename":"grzegorzzanfia-com","author_url":"https:\/\/help.zanfia.com\/pl\/author\/grzegorzzanfia-com\/"},"doc_category_info":[{"term_name":"Webhooki","term_url":"https:\/\/help.zanfia.com\/pl\/docs-category\/webhooki\/"}],"doc_tag_info":[],"knowledge_base_info":[],"knowledge_base_slug":[],"_links":{"self":[{"href":"https:\/\/help.zanfia.com\/pl\/wp-json\/wp\/v2\/docs\/3178","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/help.zanfia.com\/pl\/wp-json\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/help.zanfia.com\/pl\/wp-json\/wp\/v2\/types\/docs"}],"author":[{"embeddable":true,"href":"https:\/\/help.zanfia.com\/pl\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/help.zanfia.com\/pl\/wp-json\/wp\/v2\/comments?post=3178"}],"version-history":[{"count":1,"href":"https:\/\/help.zanfia.com\/pl\/wp-json\/wp\/v2\/docs\/3178\/revisions"}],"predecessor-version":[{"id":3185,"href":"https:\/\/help.zanfia.com\/pl\/wp-json\/wp\/v2\/docs\/3178\/revisions\/3185"}],"wp:attachment":[{"href":"https:\/\/help.zanfia.com\/pl\/wp-json\/wp\/v2\/media?parent=3178"}],"wp:term":[{"taxonomy":"doc_category","embeddable":true,"href":"https:\/\/help.zanfia.com\/pl\/wp-json\/wp\/v2\/doc_category?post=3178"},{"taxonomy":"doc_tag","embeddable":true,"href":"https:\/\/help.zanfia.com\/pl\/wp-json\/wp\/v2\/doc_tag?post=3178"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}