WordPress + WooCommerce zasila 40% polskich e-commerce. Dodaj n8n i masz pelen automation stack: kazdy order, kazdy nowy klient, kazdy abandoned cart automatyczne wyzwalaja workflow. Ten tutorial pokazuje pelen technical setup: webhooks, REST API, custom integracje z Subiektem i KSeF.

3 sposoby integracji WP/WC z n8n
- 1. Webhooks (push): WC wysyla event do n8n po order_completed, customer_registered, etc.
- 2. REST API (pull): n8n pyta WC API o dane (orders, products, customers)
- 3. Cron + GET: n8n co X minut sprawdza nowe orders przez REST

Setup Webhooks (rekomendowane)
Krok 1: WooCommerce Webhooks
Panel WP -> WooCommerce -> Settings -> Advanced -> Webhooks -> Add. Dla kazdego eventu chcesz osobny webhook: Order Created, Order Updated, Customer Created, etc.
Krok 2: Pole „Delivery URL”
Wklej URL webhook z n8n: https://twoja-n8n.com/webhook/wc-order-created. W n8n: stworz workflow z Webhook node, kopiuj Production URL.
Krok 3: Secret
WC dodaje pole Secret. Wklej random string (np. wygeneruj na uuidgen). WC podpisuje payload tym secretem – w n8n weryfikujemy HMAC SHA256.
Krok 4: Test
Zlozyc test order. Sprawdz w WC -> Webhooks -> twoj webhook -> Logs. Status 200 = OK. Sprawdz n8n executions – powinien byc wykonany workflow.
Setup REST API (alternative)
Panel WP -> WooCommerce -> Settings -> Advanced -> REST API -> Add key. Permissions: Read/Write. Nazwa: „n8n integration”. Save -> dostajesz Consumer Key + Secret.
W n8n: HTTP Request node z Basic Auth (key + secret). Endpoint: https://twojsklep.pl/wp-json/wc/v3/orders?status=completed&after=2026-06-01
5 Use cases – real workflow

Use case 1: Order completed -> Subiekt faktura -> KSeF
- WC Webhook: order_status_completed
- n8n: extract billing data, line items, total
- HTTP -> Subiekt API: POST /v1/faktury z mapowaniem
- HTTP -> KSeF: auto_ksef: true w Subiekt = automatyczne wyslanie
- Gmail: email do klienta z PDF faktury
Use case 2: Customer Registered -> HubSpot + Mailchimp + welcome email
- WC Webhook: customer_created
- n8n: HubSpot Contact Upsert z first_name, email
- n8n: Mailchimp Add Subscriber do „New Customers” list
- n8n: Gmail welcome email z 10% discount code
Use case 3: Abandoned Cart -> SMS recovery
- Cron (n8n): co 30 min
- HTTP -> WC API: GET orders ze statusem „pending” starsze niz 1h
- Loop: dla kazdego, jesli klient ma phone
- HTTP -> SerwerSMS: wyslij SMS „Twoj koszyk: {{cart_link}}. -10% rabat: KOSZYK10”
Use case 4: Low stock alert -> Slack
- WC Webhook: product_updated
- n8n IF: stock < 5
- Slack: post do #ops „Produkt {{name}} ma {{stock}} sztuk. Czas zamowic.”
Use case 5: Daily sales report
- Cron: codziennie 8:00
- HTTP -> WC API: GET orders z yesterday
- n8n Function: aggregate (total revenue, orders count, top product)
- Slack: post raport do #sales
- Google Sheets: append row do tracking
Code snippet – custom webhook trigger

WC dziala dla standardowych eventow. Dla custom (np. „klient zwrocil produkt”) – dodaj snippet PHP:
add_action('woocommerce_order_refunded', function($order_id) { wp_remote_post('https://twoja-n8n.com/webhook/wc-refund', array('body' => json_encode(array('order_id' => $order_id, 'refund_total' => wc_get_order($order_id)->get_total_refunded())))); });
Plus snippets dla custom data
Webhook payload standard zawiera podstawowe pola. Dla wiecej – dodaj filter:
add_filter('woocommerce_webhook_payload', function($payload, $resource, $resource_id) { if ($resource === 'order') { $order = wc_get_order($resource_id); $payload['custom_meta'] = $order->get_meta('_my_custom_field'); } return $payload; }, 10, 3);
Bezpieczenstwo
- HMAC verification: zawsze weryfikuj X-WC-Webhook-Signature header w n8n (Function node)
- IP whitelist: jesli Twoj n8n stoi za reverse proxy – pozwol tylko Twojemu hostingowi
- Rate limiting: jesli WC pluje 1000 webhooks/s (mass update) – n8n queue mode + Redis
- Secrets: nigdy nie zapisuj WC API keys w git, uzywaj n8n credentials encrypted store
FAQ
Czy WC webhooks dziala dla custom post types?
Nie out of the box. Trzeba zarejestrowac wlasny webhook topic + delivery URL przez kod PHP. Latwiejsze: hook na save_post WordPress.
Czy n8n wykonuje webhook w real-time?
Tak. WC wysyla HTTP POST natychmiast po evencie. n8n webhook node odbiera w <1 sek. Real-time.
Co z duplikatami webhooks?
WC retryuje webhook 5 razy jesli first call != 2xx. Moze zrobic duplikaty workflow run. Workaround: w n8n dodaj IF node ktory sprawdza Postgres „czy ten order_id juz przetworzony”.
Mamy gotowe workflow WC + n8n: Faktura po oplaceniu, KSeF Inbox, Allegro Subiekt. Setup video call jesli utkniesz.
