Lista zdarzeń wysyłanych na webhook
Poznaj opcje integracji dzięki webhookom. Zobacz, jakie dane wysyłamy i odbierz je w jednym z narzędzi no-code jak Zapier czy Make, lub prześlij do swojego API.
Jeśli sam obsługujesz automatyzację, możesz zrobić to programistycznie, lub z pomocą narzędzi jak Zapier. W ustawieniach produktu dodaj adres URL webhooka w zakładce Integracje i webhook. Po zakupie trafią na niego informacje na temat transakcji. Webhook możesz wygenerować za pomocą Zapiera lub Make (dawniej Integromat).
Główne zdarzenia, po których filtrujemy oznaczone są kluczem event i są to odpowiednio:
- single_product_bought - zakup pojedynczego produktu
- product_assigned - udane przypisanie dostępu do pojedynczego produktu
- product_access_expiring - dostęp do pojedynczego produktu wkrótce wygaśnie
- product_access_expired - wygaśnięcie dostępu do pojedynczego produktu
- subscription_created - zakup nowej subskrypcji
- subscription_plan_changed - zmiana planu przez panel Easycart
- subscription_canceled - anulowanie subskrypcji w panelu Easycart (będzie ważna do końca okresu rozliczeniowego)
- subscription_expired - ostateczne wygaśnięcie subskrypcji
- subscription_renewed - odnowienie subskrypcji
- subscription_renewal_failed - nieudana próba pobrania środków przy odnowieniu
- subscription_renewal_upcoming - zbliżające się odnowienie
- subscription_resumed - udane odnowienie subskrypcji
- subscription_deleted
- customer_data_changed - zmiana danych klienta
Wszystkie przypadki oraz odpowiedzi webhooka znajdziesz poniżej:
Webhook po pomyślnym zakupie pojedynczego produktu
1{
2 "event": "single_product_bought",
3 "timestamp": 1741442518,
4 "success": true,
5 "is_subscription": false,
6 "is_renew": false,
7 "is_new": true,
8 "last_chance": false,
9 "error_message": null,
10 "trial_ends_at": null,
11 "subscription_renews_at": null,
12 "subscription_canceled": false,
13 "subscription_expired": false,
14 "subscription_new_plan_name": null,
15 "amount_paid": 50,
16 "next_payment_attempt": null,
17 "invoice_stripe_id": "pi_sample123456",
18 "lang": "pl",
19 "customer_name": "Jane Doe",
20 "customer_first_name": "Jane",
21 "customer_last_name": "Doe",
22 "customer_email": "janedoe@example.com",
23 "customer_id": 100002,
24 "customer_stripe_id": "cus_sample654321",
25 "order_id": 500002,
26 "order_uuid": "00000000-0000-0000-0000-000000000004",
27 "order_delegated": false,
28 "order_assign_url": null,
29 "order_amount": 50,
30 "order_has_invoice": false,
31 "recovered_checkout_session": null,
32 "currency": "pln",
33 "quantity": 1,
34 "qr_code_image": null,
35 "qr_code_info": null,
36 "invoice_data": null,
37 "invoice_api_scope": "samplescope2",
38 "invoice_vat_rate": "0",
39 "invoice_flat_rate": null,
40 "invoice_gtu_code": null,
41 "invoice_remarks": null,
42 "checkboxes": {
43 "newsletter": true,
44 "mandatory": false,
45 "optional": false
46 },
47 "shipping": null,
48 "delivery": null,
49 "payment_method": "p24",
50 "promo_code": null,
51 "product_id": "prod_sample654321",
52 "product_name": "Sample Online Workshop",
53 "product_description": "This is a sample description for an online workshop product. It includes details about the workshop, its content, schedule and other important information.",
54 "product_file": null,
55 "price_id": "price_sample654321",
56 "price_custom_id": null,
57 "price_name": "Online access",
58 "price_description": null,
59 "subscription_id": null,
60 "subscription_stripe_id": null,
61 "subscription_plan_custom_id": null,
62 "subscription_plan_name": null,
63 "subscription_price_name": null,
64 "subscription_plan_price": null,
65 "subscription_current_period_start": null,
66 "subscription_current_period_end": null,
67 "subscription_onetime": false,
68 "tenant_email": "contact@example.com",
69 "tenant_name": "Sample Brand",
70 "tenant_slug": "samplebrand",
71 "custom_fields": null,
72 "custom_params": {},
73 "custom_email": {
74 "heading": null,
75 "content": null
76 },
77 "cross_sells": [],
78 "ref": null,
79 "expiration_date": null
80}
Webhook po pomyślnym przypisaniu dostępu do pojedynczego produktu
1{
2 "event": "product_assigned",
3 "timestamp": 1741442523,
4 "success": true,
5 "is_subscription": false,
6 "is_renew": false,
7 "is_new": false,
8 "last_chance": false,
9 "error_message": null,
10 "trial_ends_at": null,
11 "subscription_renews_at": null,
12 "subscription_canceled": false,
13 "subscription_expired": false,
14 "subscription_new_plan_name": null,
15 "amount_paid": null,
16 "next_payment_attempt": null,
17 "invoice_stripe_id": null,
18 "lang": "pl",
19 "customer_name": "John Smith",
20 "customer_first_name": "John",
21 "customer_last_name": "Smith",
22 "customer_email": "john.smith@example.com",
23 "customer_id": 100001,
24 "customer_stripe_id": "cus_XXXXXXXXXXXXXXXX",
25 "order_id": 500001,
26 "order_uuid": "00000000-0000-4000-a000-000000000001",
27 "order_delegated": false,
28 "order_assign_url": null,
29 "order_amount": 50,
30 "order_has_invoice": false,
31 "recovered_checkout_session": null,
32 "currency": "pln",
33 "quantity": 1,
34 "qr_code_image": null,
35 "qr_code_info": null,
36 "invoice_data": null,
37 "invoice_api_scope": "demo",
38 "invoice_vat_rate": "0",
39 "invoice_flat_rate": null,
40 "invoice_gtu_code": null,
41 "invoice_remarks": null,
42 "checkboxes": {
43 "newsletter": true,
44 "mandatory": false,
45 "optional": false
46 },
47 "shipping": null,
48 "delivery": null,
49 "payment_method": "p24",
50 "promo_code": null,
51 "product_id": "prod_XXXXXXXXXXXX",
52 "product_name": "Sample Product",
53 "product_description": "This is a sample product description that replaces the original content. It contains information about what the customer will receive after purchasing this product.",
54 "product_file": null,
55 "price_id": "price_XXXXXXXXXXXX",
56 "price_custom_id": null,
57 "price_name": "online access",
58 "price_description": null,
59 "subscription_id": null,
60 "subscription_stripe_id": null,
61 "subscription_plan_custom_id": null,
62 "subscription_plan_name": null,
63 "subscription_price_name": null,
64 "subscription_plan_price": null,
65 "subscription_current_period_start": null,
66 "subscription_current_period_end": null,
67 "subscription_onetime": false,
68 "tenant_email": "info@example.com",
69 "tenant_name": "Demo Company",
70 "tenant_slug": "demo",
71 "custom_fields": null,
72 "custom_params": {},
73 "custom_email": {
74 "heading": null,
75 "content": null
76 },
77 "cross_sells": [],
78 "ref": null,
79 "assignee": {
80 "id": 100001,
81 "stripe_id": "cus_XXXXXXXXXXXXXXXX",
82 "name": "John Smith",
83 "first_name": "John",
84 "last_name": "Smith",
85 "email": "john.smith@example.com"
86 },
87 "expiration_date": null
88}
Webhook when the single product access is expiring
1{
2 "event": "product_access_expiring",
3 "timestamp": 1741428904,
4 "success": true,
5 "is_subscription": false,
6 "is_renew": false,
7 "is_new": false,
8 "last_chance": false,
9 "error_message": null,
10 "trial_ends_at": null,
11 "subscription_renews_at": null,
12 "subscription_canceled": false,
13 "subscription_expired": false,
14 "subscription_new_plan_name": null,
15 "amount_paid": null,
16 "next_payment_attempt": null,
17 "invoice_stripe_id": null,
18 "lang": "pl",
19 "customer_name": "Robert Johnson",
20 "customer_first_name": "Robert",
21 "customer_last_name": "Johnson",
22 "customer_email": "robert.johnson@example.com",
23 "customer_id": 100003,
24 "customer_stripe_id": "cus_sample789012",
25 "order_id": 500003,
26 "order_uuid": "00000000-0000-0000-0000-000000000005",
27 "order_delegated": false,
28 "order_assign_url": null,
29 "order_amount": 0,
30 "order_has_invoice": true,
31 "recovered_checkout_session": null,
32 "currency": "pln",
33 "quantity": 1,
34 "qr_code_image": null,
35 "qr_code_info": null,
36 "invoice_data": {
37 "nip": "0000000001",
38 "name": "SAMPLE COMPANY TWO SP. Z O.O.",
39 "first_name": "Robert",
40 "last_name": "Johnson",
41 "street": "Sample Avenue",
42 "street_number": "456",
43 "house_number": null,
44 "city": "Another City",
45 "post_code": "00000",
46 "post_city": null,
47 "country_code": "PL"
48 },
49 "invoice_api_scope": "samplescope3",
50 "invoice_vat_rate": "23",
51 "invoice_flat_rate": null,
52 "invoice_gtu_code": "12",
53 "invoice_remarks": null,
54 "checkboxes": {
55 "newsletter": false,
56 "mandatory": false,
57 "optional": false
58 },
59 "shipping": null,
60 "delivery": null,
61 "payment_method": null,
62 "promo_code": "SAMPLE123",
63 "product_id": "prod_sample789012",
64 "product_name": "Sample Course Access",
65 "product_description": "Access to community focused on the course 'Sample Course Title' with additional materials and resources.",
66 "product_file": null,
67 "price_id": "price_sample789012",
68 "price_custom_id": "sample-course-yearly",
69 "price_name": "Yearly Access",
70 "price_description": null,
71 "subscription_id": null,
72 "subscription_stripe_id": null,
73 "subscription_plan_custom_id": null,
74 "subscription_plan_name": null,
75 "subscription_price_name": null,
76 "subscription_plan_price": null,
77 "subscription_current_period_start": null,
78 "subscription_current_period_end": null,
79 "subscription_onetime": true,
80 "tenant_email": "info@example.com",
81 "tenant_name": "sampleedu",
82 "tenant_slug": "sampleedu",
83 "custom_fields": null,
84 "custom_params": {},
85 "custom_email": {
86 "heading": null,
87 "content": null
88 },
89 "cross_sells": [],
90 "ref": null,
91 "expiration_date": "2025-03-11T11:14:56+01:00",
92 "assignee": {
93 "id": 100003,
94 "stripe_id": "cus_sample789012",
95 "name": "Robert Johnson",
96 "first_name": "Robert",
97 "last_name": "Johnson",
98 "email": "robert.johnson@example.com"
99 }
100}
Webhook after single product access expired
1{
2 "event": "product_access_expired",
3 "timestamp": 1741442044,
4 "success": true,
5 "is_subscription": false,
6 "is_renew": false,
7 "is_new": false,
8 "last_chance": false,
9 "error_message": null,
10 "trial_ends_at": null,
11 "subscription_renews_at": null,
12 "subscription_canceled": false,
13 "subscription_expired": false,
14 "subscription_new_plan_name": null,
15 "amount_paid": null,
16 "next_payment_attempt": null,
17 "invoice_stripe_id": null,
18 "lang": "pl",
19 "customer_name": "Emily Wilson",
20 "customer_first_name": "Emily",
21 "customer_last_name": "Wilson",
22 "customer_email": "emily.wilson@example.com",
23 "customer_id": 100004,
24 "customer_stripe_id": "cus_sample345678",
25 "order_id": 500004,
26 "order_uuid": "00000000-0000-0000-0000-000000000006",
27 "order_delegated": false,
28 "order_assign_url": null,
29 "order_amount": 0,
30 "order_has_invoice": false,
31 "recovered_checkout_session": null,
32 "currency": "pln",
33 "quantity": 1,
34 "qr_code_image": null,
35 "qr_code_info": null,
36 "invoice_data": null,
37 "invoice_api_scope": "samplescope3",
38 "invoice_vat_rate": "23",
39 "invoice_flat_rate": null,
40 "invoice_gtu_code": "12",
41 "invoice_remarks": null,
42 "checkboxes": {
43 "newsletter": false,
44 "mandatory": false,
45 "optional": false
46 },
47 "shipping": null,
48 "delivery": null,
49 "payment_method": null,
50 "promo_code": "SAMPLE456",
51 "product_id": "prod_sample345678",
52 "product_name": "Sample Online Course",
53 "product_description": "Monthly access to online course 'Sample Course Title' by John Author including video materials and exercises.",
54 "product_file": null,
55 "price_id": "price_sample345678",
56 "price_custom_id": "sample-course-one-month",
57 "price_name": "",
58 "price_description": null,
59 "subscription_id": null,
60 "subscription_stripe_id": null,
61 "subscription_plan_custom_id": null,
62 "subscription_plan_name": null,
63 "subscription_price_name": null,
64 "subscription_plan_price": null,
65 "subscription_current_period_start": null,
66 "subscription_current_period_end": null,
67 "subscription_onetime": false,
68 "tenant_email": "info@example.com",
69 "tenant_name": "sampleedu",
70 "tenant_slug": "sampleedu",
71 "custom_fields": null,
72 "custom_params": {},
73 "custom_email": {
74 "heading": null,
75 "content": null
76 },
77 "cross_sells": [],
78 "ref": null,
79 "expiration_date": "2025-03-08T14:53:15+01:00",
80 "assignee": {
81 "id": 100004,
82 "stripe_id": "cus_sample345678",
83 "name": "Emily Wilson",
84 "first_name": "Emily",
85 "last_name": "Wilson",
86 "email": "emily.wilson@example.com"
87 }
88}
Webhook po pomyślnym zakupie subskrypcji
Jest to zdarzenie wysyłane po zakupie subskrypcji. Na tym etapie należy przydzielić dostęp do produktu.
Ważne: subskrypcja może być aktywowana w trybie okresu próbnego (Trial). W takiej sytuacji właściwość trial_ends_at będzie wskazywać na datę jego zakończenia. W przeciwnym razie będzie ustawione na wartość null.
1{
2 "event": "subscription_created",
3 "timestamp": 1741438333,
4 "success": true,
5 "is_subscription": true,
6 "is_renew": false,
7 "is_new": true,
8 "last_chance": false,
9 "error_message": null,
10 "trial_ends_at": "2025-03-22T13:52:05+01:00",
11 "subscription_renews_at": null,
12 "subscription_canceled": false,
13 "subscription_expired": false,
14 "subscription_new_plan_name": null,
15 "amount_paid": 0,
16 "next_payment_attempt": null,
17 "invoice_stripe_id": null,
18 "lang": "pl",
19 "customer_name": "John Doe",
20 "customer_first_name": "John",
21 "customer_last_name": "Doe",
22 "customer_email": "john.doe@example.com",
23 "customer_id": 10001,
24 "customer_stripe_id": "cus_XXXXXXXXXXXX",
25 "order_id": 500001,
26 "order_uuid": "00000000-0000-0000-0000-000000000001",
27 "order_delegated": false,
28 "order_assign_url": null,
29 "order_amount": 0,
30 "order_has_invoice": true,
31 "recovered_checkout_session": null,
32 "currency": "pln",
33 "quantity": 1,
34 "qr_code_image": null,
35 "qr_code_info": null,
36 "invoice_data": {
37 "nip": "1234567890",
38 "name": "EXAMPLE COMPANY NAME",
39 "first_name": "John",
40 "last_name": "Doe",
41 "street": "Example Street",
42 "street_number": "10",
43 "house_number": "5",
44 "city": "Example City",
45 "post_code": "12345",
46 "post_city": "Example City",
47 "country_code": "PL"
48 },
49 "invoice_api_scope": "esy",
50 "invoice_vat_rate": "23",
51 "invoice_flat_rate": null,
52 "invoice_gtu_code": null,
53 "invoice_remarks": null,
54 "checkboxes": {
55 "newsletter": false,
56 "mandatory": false,
57 "optional": false
58 },
59 "shipping": null,
60 "delivery": null,
61 "payment_method": "card",
62 "promo_code": null,
63 "product_id": "prod_XXXXXXXXXXXX",
64 "product_name": "Example Product",
65 "product_description": "Example product description with multiple lines\n\n✔︎ Feature one\n\n✔︎ Feature two\n\n✔︎ Feature three",
66 "product_file": null,
67 "price_id": "price_XXXXXXXXXXXX",
68 "price_custom_id": "example:1+feature",
69 "price_name": "Example pricing tier",
70 "price_description": null,
71 "subscription_id": 100001,
72 "subscription_stripe_id": "sub_XXXXXXXXXXXX",
73 "subscription_plan_custom_id": "example:1+feature",
74 "subscription_plan_name": null,
75 "subscription_price_name": "Example pricing tier",
76 "subscription_plan_price": 99.99,
77 "subscription_current_period_start": "2025-03-08T13:52:05+01:00",
78 "subscription_current_period_end": "2025-03-22T13:52:05+01:00",
79 "subscription_onetime": false,
80 "tenant_email": "contact@example.com",
81 "tenant_name": "example",
82 "tenant_slug": "example",
83 "custom_fields": null,
84 "custom_params": {},
85 "custom_email": {
86 "heading": null,
87 "content": null
88 },
89 "cross_sells": [],
90 "ref": "app",
91 "next_payment_amount": 99.99,
92 "expiration_date": null
93
Webhook po kliknięciu Przełącz na ten plan w panelu subskrypcji
Klient ma możliwość przełączenia się na inny plan (o ile taki został zdefiniowany) z poziomu panelu Easycart. Nazwa planu przekazana do webhooka będzie pochodzić stąd:

- Właściwość subscription_plan_name mówi Ci na jaki plan przełączył się użytkownik
- Właściwość subscription_plan_price mówi jaka jest aktualna cena.
1{
2 "event": "subscription_plan_changed",
3 "timestamp": 1741348534,
4 "success": true,
5 "is_subscription": true,
6 "is_renew": false,
7 "is_new": false,
8 "last_chance": false,
9 "error_message": null,
10 "trial_ends_at": null,
11 "subscription_renews_at": null,
12 "subscription_canceled": false,
13 "subscription_expired": false,
14 "subscription_new_plan_name": null,
15 "amount_paid": 99,
16 "next_payment_attempt": null,
17 "invoice_stripe_id": "pi_XXXXXXXXXXXXX",
18 "lang": "pl",
19 "customer_name": "Michael Green",
20 "customer_first_name": "Michael",
21 "customer_last_name": "Green",
22 "customer_email": "michael.green@example.com",
23 "customer_id": 100006,
24 "customer_stripe_id": "cus_DDDDDDDDDDDD",
25 "order_id": 500006,
26 "order_uuid": "00000000-0000-4000-a000-000000000006",
27 "order_delegated": false,
28 "order_assign_url": null,
29 "order_amount": 99,
30 "order_has_invoice": false,
31 "recovered_checkout_session": null,
32 "currency": "pln",
33 "quantity": 1,
34 "qr_code_image": null,
35 "qr_code_info": null,
36 "invoice_data": null,
37 "invoice_api_scope": "edu",
38 "invoice_vat_rate": "23",
39 "invoice_flat_rate": null,
40 "invoice_gtu_code": null,
41 "invoice_remarks": null,
42 "checkboxes": {
43 "newsletter": false,
44 "mandatory": false,
45 "optional": false
46 },
47 "shipping": null,
48 "delivery": null,
49 "payment_method": "card",
50 "promo_code": null,
51 "product_id": "prod_DDDDDDDDDDDD",
52 "product_name": "Education Platform Access",
53 "product_description": "Education platform subscription in any variant - covering all or selected specializations, and access to the community.",
54 "product_file": null,
55 "price_id": "price_DDDDDDDDDDDD",
56 "price_custom_id": "full-access-monthly",
57 "price_name": "full access",
58 "price_description": null,
59 "subscription_id": 90004,
60 "subscription_stripe_id": "sub_DDDDDDDDDDDD",
61 "subscription_plan_custom_id": "full-access-monthly",
62 "subscription_plan_name": null,
63 "subscription_price_name": "full access",
64 "subscription_plan_price": 199,
65 "subscription_current_period_start": "2025-02-10T14:10:04+01:00",
66 "subscription_current_period_end": "2025-03-10T14:10:04+01:00",
67 "subscription_onetime": false,
68 "tenant_email": "support@example.com",
69 "tenant_name": "education",
70 "tenant_slug": "education",
71 "custom_fields": {
72 "specialization": "Full-stack Development"
73 },
74 "custom_params": {},
75 "custom_email": {
76 "heading": "Thank you for your purchase!",
77 "content": "<p>Transactions are handled by a secure payment processor to provide the highest quality, security, and support for your purchases.</p>\n<p>You will soon receive an email with access to the platform. You can manage your subscription, invoices, and payment methods from your account.</p>\n<p>Thank you for being with us 😊</p>\n"
78 },
79 "cross_sells": [],
80 "ref": null,
81 "assignee": {
82 "id": 100006,
83 "stripe_id": "cus_DDDDDDDDDDDD",
84 "name": "Michael Green",
85 "first_name": "Michael",
86 "last_name": "Green",
87 "email": "michael.green@example.com"
88 }
89}
Webhook po kliknięciu przez użytkownika Anuluj w panelu subskrypcji
Właściwość subscription_current_period_end wskazuje na datę w której plan powinien zostać wyłączony (i tym samym odebrany dostęp do produktu).
1{
2 "event": "subscription_canceled",
3 "timestamp": 1741441696,
4 "success": true,
5 "is_subscription": true,
6 "is_renew": false,
7 "is_new": false,
8 "last_chance": false,
9 "error_message": null,
10 "trial_ends_at": "2025-03-12T20:18:06+01:00",
11 "subscription_renews_at": null,
12 "subscription_canceled": true,
13 "subscription_expired": false,
14 "subscription_new_plan_name": null,
15 "amount_paid": null,
16 "next_payment_attempt": null,
17 "invoice_stripe_id": null,
18 "lang": "pl",
19 "customer_name": "John Smith",
20 "customer_first_name": "John",
21 "customer_last_name": "Smith",
22 "customer_email": "example@example.com",
23 "customer_id": 100001,
24 "customer_stripe_id": "cus_sample123456",
25 "order_id": 500001,
26 "order_uuid": "00000000-0000-0000-0000-000000000001",
27 "order_delegated": false,
28 "order_assign_url": null,
29 "order_amount": 0,
30 "order_has_invoice": true,
31 "recovered_checkout_session": null,
32 "currency": "pln",
33 "quantity": 1,
34 "qr_code_image": null,
35 "qr_code_info": null,
36 "invoice_data": {
37 "nip": "0000000000",
38 "name": "SAMPLE COMPANY NAME SP. Z O.O.",
39 "first_name": null,
40 "last_name": null,
41 "street": "ul. Sample Street",
42 "street_number": "123",
43 "house_number": null,
44 "city": "Sample City",
45 "post_code": "00000",
46 "post_city": "Sample City",
47 "country_code": "PL"
48 },
49 "invoice_api_scope": "samplescope",
50 "invoice_vat_rate": "23",
51 "invoice_flat_rate": null,
52 "invoice_gtu_code": null,
53 "invoice_remarks": null,
54 "checkboxes": {
55 "newsletter": false,
56 "mandatory": false,
57 "optional": false
58 },
59 "shipping": {
60 "first_name": "John",
61 "last_name": "Smith",
62 "phone": null,
63 "address": "Sample Street 123",
64 "post_code": "00-000",
65 "city": "Sample City",
66 "country_code": null
67 },
68 "delivery": null,
69 "payment_method": "googlePay",
70 "promo_code": null,
71 "product_id": "prod_sample123456",
72 "product_name": "Sample Product",
73 "product_description": "This is a sample description for the product with multiple bullet points:\n* Feature 1\n* Feature 2\n* Feature 3\n* Additional benefits and more details",
74 "product_file": null,
75 "price_id": "price_sample123456",
76 "price_custom_id": "sample-subscription-yearly",
77 "price_name": "Yearly subscription (35% discount)",
78 "price_description": null,
79 "subscription_id": 100001,
80 "subscription_stripe_id": "sub_sample123456",
81 "subscription_plan_custom_id": "sample-subscription-yearly",
82 "subscription_plan_name": null,
83 "subscription_price_name": "Yearly subscription (35% discount)",
84 "subscription_plan_price": 1499,
85 "subscription_current_period_start": "2025-02-26T20:18:06+01:00",
86 "subscription_current_period_end": "2025-03-12T20:18:06+01:00",
87 "subscription_onetime": false,
88 "tenant_email": "admin@example.com",
89 "tenant_name": "sample",
90 "tenant_slug": "sample",
91 "custom_fields": null,
92 "custom_params": {},
93 "custom_email": {
94 "heading": null,
95 "content": null
96 },
97 "cross_sells": [
98 {
99 "id": "00000000-0000-0000-0000-000000000002",
100 "variant_id": 60001,
101 "name": "Cross-sell Product 1",
102 "variant_name": "",
103 "is_recurring": false,
104 "photo_url": "https://example.com/sample-image-1.webp",
105 "description": "This is a sample description for cross-sell product 1. It highlights features and benefits of the product.",
106 "original_amount": 9700,
107 "amount": 7700,
108 "gross_amount": 7700,
109 "show_net_price": false,
110 "is_net_amount": false,
111 "currency": "pln",
112 "tax_behavior": "inclusive",
113 "tax_rate": 5,
114 "active_days": null,
115 "interval_count": null,
116 "interval": null,
117 "active_cycles": null,
118 "trial_period_days": null,
119 "discount_code_id": 50001,
120 "discount_amount_off": 2000,
121 "discount_percent_off": null,
122 "discount_duration": {
123 "type": "once",
124 "until": null
125 },
126 "human_interval": "",
127 "url": "https://app.example.com/cross-sell/00000000-0000-0000-0000-000000000002/00000000-0000-0000-0000-000000000001"
128 },
129 {
130 "id": "00000000-0000-0000-0000-000000000003",
131 "variant_id": 60002,
132 "name": "Cross-sell Product 2",
133 "variant_name": "Lifetime access",
134 "is_recurring": false,
135 "photo_url": "https://example.com/sample-image-2.webp",
136 "description": "This is a sample description for cross-sell product 2. It highlights features and benefits of this second product.",
137 "original_amount": 19700,
138 "amount": 9700,
139 "gross_amount": 9700,
140 "show_net_price": false,
141 "is_net_amount": false,
142 "currency": "pln",
143 "tax_behavior": "inclusive",
144 "tax_rate": null,
145 "active_days": null,
146 "interval_count": null,
147 "interval": null,
148 "active_cycles": null,
149 "trial_period_days": null,
150 "discount_code_id": 50002,
151 "discount_amount_off": 10000,
152 "discount_percent_off": null,
153 "discount_duration": {
154 "type": "once",
155 "until": null
156 },
157 "human_interval": "",
158 "url": "https://app.example.com/cross-sell/00000000-0000-0000-0000-000000000003/00000000-0000-0000-0000-000000000001"
159 }
160 ],
161 "ref": null
162}
Webhook po wygaśnięciu subskrypcji
Zdarzenie wysyłane w chwili gdy subskrypcja przestaje być aktywna w wyniku jej anulowania przez klienta lub ręcznego anulowania w panelu Stripe lub w sytuacji gdy nie udało się pobrać opłaty określoną liczbę razy. Jest to moment w którym dostęp do produktu powinien zostać wyłączony.
Webhook po poprawnym pobraniu pieniędzy za kolejny okres rozliczeniowy
Po pobraniu opłaty za okres rozliczeniowy, wysyłane jest zdarzenie zawierające poniższe dane.
- Właściwość amount_paid to pobrana kwota w PLN - na tę kwotę należy wystawić fakturę
- Dane do faktury znajdują się we właściwości invoice_data (która może być wartością null w przypadku ich braku)
1{
2 "event": "subscription_renewed",
3 "timestamp": 1741442223,
4 "success": true,
5 "is_subscription": true,
6 "is_renew": true,
7 "is_new": false,
8 "last_chance": false,
9 "error_message": null,
10 "trial_ends_at": null,
11 "subscription_renews_at": null,
12 "subscription_canceled": false,
13 "subscription_expired": false,
14 "subscription_new_plan_name": null,
15 "amount_paid": 39,
16 "next_payment_attempt": null,
17 "invoice_stripe_id": "pi_XXXXXXXXXXXXX",
18 "lang": "pl",
19 "customer_name": "Robert Jones",
20 "customer_first_name": "Robert",
21 "customer_last_name": "Jones",
22 "customer_email": "robert.jones@example.com",
23 "customer_id": 100003,
24 "customer_stripe_id": "cus_ZZZZZZZZZZZZZZ",
25 "order_id": 500003,
26 "order_uuid": "00000000-0000-4000-a000-000000000003",
27 "order_delegated": false,
28 "order_assign_url": null,
29 "order_amount": 0,
30 "order_has_invoice": false,
31 "recovered_checkout_session": null,
32 "currency": "pln",
33 "quantity": 1,
34 "qr_code_image": null,
35 "qr_code_info": null,
36 "invoice_data": null,
37 "invoice_api_scope": "12345678",
38 "invoice_vat_rate": 23,
39 "invoice_flat_rate": 8.5,
40 "invoice_gtu_code": null,
41 "invoice_remarks": null,
42 "checkboxes": {
43 "newsletter": false,
44 "mandatory": false,
45 "optional": false
46 },
47 "shipping": {
48 "first_name": "Robert",
49 "last_name": "Jones",
50 "phone": null,
51 "address": "Main Street 123",
52 "post_code": "00-000",
53 "city": "Sample City",
54 "country_code": null
55 },
56 "delivery": null,
57 "payment_method": "card",
58 "promo_code": null,
59 "product_id": "prod_AAAAAAAAAAAA",
60 "product_name": "Regular Access",
61 "product_description": "This subscription provides all the tools you need. One subscription - three services with special pricing!",
62 "product_file": null,
63 "price_id": "price_AAAAAAAAAAAA",
64 "price_custom_id": null,
65 "price_name": "",
66 "price_description": null,
67 "subscription_id": 90001,
68 "subscription_stripe_id": "sub_AAAAAAAAAAAA",
69 "subscription_plan_custom_id": null,
70 "subscription_plan_name": null,
71 "subscription_price_name": "",
72 "subscription_plan_price": 39,
73 "subscription_current_period_start": "2025-03-08T13:55:44+01:00",
74 "subscription_current_period_end": "2025-04-08T14:55:44+02:00",
75 "subscription_onetime": false,
76 "tenant_email": "admin@example.com",
77 "tenant_name": "Service Provider",
78 "tenant_slug": "service",
79 "custom_fields": null,
80 "custom_params": {},
81 "custom_email": {
82 "heading": null,
83 "content": null
84 },
85 "cross_sells": [],
86 "ref": null
87}
Webhook przy nieudanej próbie pobrania pieniędzy za kolejny okres rozliczeniowy
W przypadku nieudanej próby pobrania pieniędzy za okres rozliczeniowy. Właściwość error_message zawiera informację o błędzie.
1{
2 "event": "subscription_renewal_failed",
3 "timestamp": 1741441970,
4 "success": false,
5 "is_subscription": true,
6 "is_renew": true,
7 "is_new": false,
8 "last_chance": false,
9 "error_message": "do_not_honor",
10 "trial_ends_at": null,
11 "subscription_renews_at": null,
12 "subscription_canceled": false,
13 "subscription_expired": false,
14 "subscription_new_plan_name": null,
15 "amount_paid": null,
16 "next_payment_attempt": "2025-03-09T13:52:44+01:00",
17 "invoice_stripe_id": "in_XXXXXXXXXXXXX",
18 "lang": "pl",
19 "customer_name": "Emily Brown",
20 "customer_first_name": "Emily",
21 "customer_last_name": "Brown",
22 "customer_email": "emily.brown@example.com",
23 "customer_id": 100005,
24 "customer_stripe_id": "cus_CCCCCCCCCCCCC",
25 "order_id": 500005,
26 "order_uuid": "00000000-0000-4000-a000-000000000005",
27 "order_delegated": true,
28 "order_assign_url": null,
29 "order_amount": 24.6,
30 "order_has_invoice": false,
31 "recovered_checkout_session": null,
32 "currency": "pln",
33 "quantity": 1,
34 "qr_code_image": null,
35 "qr_code_info": null,
36 "invoice_data": null,
37 "invoice_api_scope": "demo",
38 "invoice_vat_rate": "23",
39 "invoice_flat_rate": null,
40 "invoice_gtu_code": null,
41 "invoice_remarks": null,
42 "checkboxes": {
43 "newsletter": false,
44 "mandatory": false,
45 "optional": false
46 },
47 "shipping": null,
48 "delivery": null,
49 "payment_method": "card",
50 "promo_code": null,
51 "product_id": "prod_CCCCCCCCCCCC",
52 "product_name": "Calendar App",
53 "product_description": "Subscribe to Calendar App in monthly or yearly plan and forget about scheduling meetings. Net price. VAT will be added after selecting country.",
54 "product_file": null,
55 "price_id": "price_CCCCCCCCCCCC",
56 "price_custom_id": "basic-monthly",
57 "price_name": "Monthly Subscription Basic Plan",
58 "price_description": null,
59 "subscription_id": 90003,
60 "subscription_stripe_id": "sub_CCCCCCCCCCCC",
61 "subscription_plan_custom_id": "basic-monthly",
62 "subscription_plan_name": null,
63 "subscription_price_name": "Monthly Subscription Basic Plan",
64 "subscription_plan_price": 20,
65 "subscription_current_period_start": "2025-03-08T13:51:52+01:00",
66 "subscription_current_period_end": "2025-04-08T14:51:52+02:00",
67 "subscription_onetime": false,
68 "tenant_email": "hello@example.com",
69 "tenant_name": "calendar",
70 "tenant_slug": "calendar",
71 "custom_fields": null,
72 "custom_params": {},
73 "custom_email": {
74 "heading": null,
75 "content": null
76 },
77 "cross_sells": [],
78 "ref": null
79}
Webhook na X dni przed kolejnym pobraniem pieniędzy
Poniższe dane wysyłane są na webhook na X dni przed kolejnym pobraniem pieniędzy. Właściwość subscription_renews_at wskazuje na datę, kiedy nastąpi najbliższe pobranie opłaty.
Webhook wysyłany jest na podstawie zdarzenia invoice.upcoming od Stripe.
1{
2 "event": "subscription_renewal_upcoming",
3 "timestamp": 1741442558,
4 "success": true,
5 "is_subscription": true,
6 "is_renew": false,
7 "is_new": false,
8 "last_chance": false,
9 "error_message": null,
10 "trial_ends_at": null,
11 "subscription_renews_at": "2025-03-11T16:01:42+01:00",
12 "subscription_canceled": false,
13 "subscription_expired": false,
14 "subscription_new_plan_name": null,
15 "amount_paid": null,
16 "next_payment_attempt": null,
17 "invoice_stripe_id": null,
18 "lang": "pl",
19 "customer_name": "Sarah Wilson",
20 "customer_first_name": "Sarah",
21 "customer_last_name": "Wilson",
22 "customer_email": "sarah.wilson@example.com",
23 "customer_id": 100004,
24 "customer_stripe_id": "cus_BBBBBBBBBBBBBB",
25 "order_id": 500004,
26 "order_uuid": "00000000-0000-4000-a000-000000000004",
27 "order_delegated": false,
28 "order_assign_url": null,
29 "order_amount": 26,
30 "order_has_invoice": false,
31 "recovered_checkout_session": null,
32 "currency": "pln",
33 "quantity": 1,
34 "qr_code_image": null,
35 "qr_code_info": null,
36 "invoice_data": null,
37 "invoice_api_scope": "12345678",
38 "invoice_vat_rate": 23,
39 "invoice_flat_rate": 8.5,
40 "invoice_gtu_code": null,
41 "invoice_remarks": null,
42 "checkboxes": {
43 "newsletter": false,
44 "mandatory": false,
45 "optional": false
46 },
47 "shipping": {
48 "first_name": "Sarah",
49 "last_name": "Wilson",
50 "phone": null,
51 "address": "Central Avenue 42",
52 "post_code": "10-100",
53 "city": "Another City",
54 "country_code": null
55 },
56 "delivery": null,
57 "payment_method": "card",
58 "promo_code": null,
59 "product_id": "prod_BBBBBBBBBBBB",
60 "product_name": "Music Library",
61 "product_description": "This is a streaming service that gives you access to thousands of music tracks with just one click. Now you can have all songs and music backgrounds in one place.",
62 "product_file": null,
63 "price_id": "price_BBBBBBBBBBBB",
64 "price_custom_id": null,
65 "price_name": "1-month (subscription)",
66 "price_description": null,
67 "subscription_id": 90002,
68 "subscription_stripe_id": "sub_BBBBBBBBBBBB",
69 "subscription_plan_custom_id": null,
70 "subscription_plan_name": null,
71 "subscription_price_name": "1-month (subscription)",
72 "subscription_plan_price": 26,
73 "subscription_current_period_start": "2025-02-11T15:01:42+01:00",
74 "subscription_current_period_end": "2025-03-11T15:01:42+01:00",
75 "subscription_onetime": false,
76 "tenant_email": "admin@example.com",
77 "tenant_name": "Music Service",
78 "tenant_slug": "music",
79 "custom_fields": null,
80 "custom_params": {},
81 "custom_email": {
82 "heading": null,
83 "content": null
84 },
85 "cross_sells": [],
86 "ref": null,
87 "next_payment_amount": 26
88}
Webhook na X dni przed zakończeniem trial
Webhook jest identyczny jak powyższy, ale jeżeli właściwość trial_ends_atnie jest równanull, to znaczy, że będzie to pierwsze pobranie.
W Stripe masz możliwość ustawienia ile dni przed pobraniem pierwszej płatności ma zostać wysłane powiadomienie do klienta.
Aby to zrobić:
- Przejdź do ustawień w Stripe
- W sekcji Prevent failed payments wybierz odpowiednią liczbę dni

1{
2 "event": "subscription_renewal_upcoming",
3 "timestamp": 1741442558,
4 "success": true,
5 "is_subscription": true,
6 "is_renew": false,
7 "is_new": false,
8 "last_chance": false,
9 "error_message": null,
10 "trial_ends_at": null,
11 "subscription_renews_at": "2025-03-11T16:01:42+01:00",
12 "subscription_canceled": false,
13 "subscription_expired": false,
14 "subscription_new_plan_name": null,
15 "amount_paid": null,
16 "next_payment_attempt": null,
17 "invoice_stripe_id": null,
18 "lang": "pl",
19 "customer_name": "Sarah Wilson",
20 "customer_first_name": "Sarah",
21 "customer_last_name": "Wilson",
22 "customer_email": "sarah.wilson@example.com",
23 "customer_id": 100004,
24 "customer_stripe_id": "cus_BBBBBBBBBBBBBB",
25 "order_id": 500004,
26 "order_uuid": "00000000-0000-4000-a000-000000000004",
27 "order_delegated": false,
28 "order_assign_url": null,
29 "order_amount": 26,
30 "order_has_invoice": false,
31 "recovered_checkout_session": null,
32 "currency": "pln",
33 "quantity": 1,
34 "qr_code_image": null,
35 "qr_code_info": null,
36 "invoice_data": null,
37 "invoice_api_scope": "12345678",
38 "invoice_vat_rate": 23,
39 "invoice_flat_rate": 8.5,
40 "invoice_gtu_code": null,
41 "invoice_remarks": null,
42 "checkboxes": {
43 "newsletter": false,
44 "mandatory": false,
45 "optional": false
46 },
47 "shipping": {
48 "first_name": "Sarah",
49 "last_name": "Wilson",
50 "phone": null,
51 "address": "Central Avenue 42",
52 "post_code": "10-100",
53 "city": "Another City",
54 "country_code": null
55 },
56 "delivery": null,
57 "payment_method": "card",
58 "promo_code": null,
59 "product_id": "prod_BBBBBBBBBBBB",
60 "product_name": "Music Library",
61 "product_description": "This is a streaming service that gives you access to thousands of music tracks with just one click. Now you can have all songs and music backgrounds in one place.",
62 "product_file": null,
63 "price_id": "price_BBBBBBBBBBBB",
64 "price_custom_id": null,
65 "price_name": "1-month (subscription)",
66 "price_description": null,
67 "subscription_id": 90002,
68 "subscription_stripe_id": "sub_BBBBBBBBBBBB",
69 "subscription_plan_custom_id": null,
70 "subscription_plan_name": null,
71 "subscription_price_name": "1-month (subscription)",
72 "subscription_plan_price": 26,
73 "subscription_current_period_start": "2025-02-11T15:01:42+01:00",
74 "subscription_current_period_end": "2025-03-11T15:01:42+01:00",
75 "subscription_onetime": false,
76 "tenant_email": "admin@example.com",
77 "tenant_name": "Music Service",
78 "tenant_slug": "music",
79 "custom_fields": null,
80 "custom_params": {},
81 "custom_email": {
82 "heading": null,
83 "content": null
84 },
85 "cross_sells": [],
86 "ref": null,
87 "next_payment_amount": 26
88}
Webhook po udanym wznowieniu subskrypcji
1{
2 "event": "subscription_resumed",
3 "timestamp": 1741395873,
4 "success": true,
5 "is_subscription": true,
6 "is_renew": false,
7 "is_new": false,
8 "last_chance": false,
9 "error_message": null,
10 "trial_ends_at": null,
11 "subscription_renews_at": null,
12 "subscription_canceled": false,
13 "subscription_expired": false,
14 "subscription_new_plan_name": null,
15 "amount_paid": null,
16 "next_payment_attempt": null,
17 "invoice_stripe_id": null,
18 "lang": "pl",
19 "customer_name": "Anna Johnson",
20 "customer_first_name": "Anna",
21 "customer_last_name": "Johnson",
22 "customer_email": "anna.johnson@example.com",
23 "customer_id": 100002,
24 "customer_stripe_id": "cus_YYYYYYYYYYYYYYYY",
25 "order_id": 500002,
26 "order_uuid": "00000000-0000-4000-a000-000000000002",
27 "order_delegated": false,
28 "order_assign_url": null,
29 "order_amount": 99,
30 "order_has_invoice": false,
31 "recovered_checkout_session": null,
32 "currency": "pln",
33 "quantity": 1,
34 "qr_code_image": null,
35 "qr_code_info": null,
36 "invoice_data": null,
37 "invoice_api_scope": "12345678",
38 "invoice_vat_rate": 23,
39 "invoice_flat_rate": null,
40 "invoice_gtu_code": null,
41 "invoice_remarks": null,
42 "checkboxes": {
43 "newsletter": false,
44 "mandatory": false,
45 "optional": false
46 },
47 "shipping": {
48 "first_name": "Anna",
49 "last_name": "Johnson",
50 "phone": "+48000000000",
51 "address": null,
52 "post_code": null,
53 "city": null,
54 "country_code": null
55 },
56 "delivery": null,
57 "payment_method": "paymentRequest",
58 "promo_code": null,
59 "product_id": "prod_YYYYYYYYYYYY",
60 "product_name": "Premium Subscription",
61 "product_description": "This is a sample subscription product with various features and benefits for the subscriber. It includes access to premium content and other services.",
62 "product_file": null,
63 "price_id": "price_YYYYYYYYYYYY",
64 "price_custom_id": null,
65 "price_name": "Monthly Membership",
66 "price_description": null,
67 "subscription_id": 90000,
68 "subscription_stripe_id": "sub_ZZZZZZZZZZZZZZ",
69 "subscription_plan_custom_id": null,
70 "subscription_plan_name": null,
71 "subscription_price_name": "Monthly Membership",
72 "subscription_plan_price": 99,
73 "subscription_current_period_start": "2025-02-28T19:59:22+01:00",
74 "subscription_current_period_end": "2025-03-31T20:59:22+02:00",
75 "subscription_onetime": false,
76 "tenant_email": "contact@example.com",
77 "tenant_name": "Premium Service",
78 "tenant_slug": "premium",
79 "custom_fields": null,
80 "custom_params": {},
81 "custom_email": {
82 "heading": "Order Summary",
83 "content": "<p><strong>Thank you for your purchase!</strong> We're excited to have you as a member.</p>\n<p>Below is your order summary and access to manage your subscription.</p>\n<p>Remember that your subscription will <strong>automatically renew each month.</strong> You can cancel anytime. If you have any questions, just reach out to us!</p>\n<p><strong>Click here to access your account and get started!</strong></p>\n"
84 },
85 "cross_sells": [],
86 "ref": null
87}
Webhook po usunięciu subskrypcji
1{
2 "event": "subscription_deleted",
3 "timestamp": 1741441453,
4 "success": true,
5 "is_subscription": true,
6 "is_renew": false,
7 "is_new": false,
8 "last_chance": false,
9 "error_message": null,
10 "trial_ends_at": null,
11 "subscription_renews_at": null,
12 "subscription_canceled": false,
13 "subscription_expired": true,
14 "subscription_new_plan_name": null,
15 "amount_paid": null,
16 "next_payment_attempt": null,
17 "invoice_stripe_id": null,
18 "lang": "pl",
19 "customer_name": "Jessica Taylor",
20 "customer_first_name": "Jessica",
21 "customer_last_name": "Taylor",
22 "customer_email": "jessica.taylor@example.com",
23 "customer_id": 100007,
24 "customer_stripe_id": "cus_EEEEEEEEEEEEE",
25 "order_id": 500007,
26 "order_uuid": "00000000-0000-4000-a000-000000000007",
27 "order_delegated": false,
28 "order_assign_url": null,
29 "order_amount": 199,
30 "order_has_invoice": false,
31 "recovered_checkout_session": null,
32 "currency": "pln",
33 "quantity": 1,
34 "qr_code_image": null,
35 "qr_code_info": null,
36 "invoice_data": null,
37 "invoice_api_scope": "12345678",
38 "invoice_vat_rate": "23",
39 "invoice_flat_rate": null,
40 "invoice_gtu_code": null,
41 "invoice_remarks": null,
42 "checkboxes": {
43 "newsletter": false,
44 "mandatory": false,
45 "optional": false
46 },
47 "shipping": null,
48 "delivery": null,
49 "payment_method": "card",
50 "promo_code": null,
51 "product_id": "prod_EEEEEEEEEEEE",
52 "product_name": "PRO",
53 "product_description": null,
54 "product_file": null,
55 "price_id": "price_EEEEEEEEEEEE",
56 "price_custom_id": "planner-15",
57 "price_name": "Card Payment",
58 "price_description": null,
59 "subscription_id": 90005,
60 "subscription_stripe_id": "sub_EEEEEEEEEEEE",
61 "subscription_plan_custom_id": "planner-15",
62 "subscription_plan_name": null,
63 "subscription_price_name": "Card Payment",
64 "subscription_plan_price": 199,
65 "subscription_current_period_start": "2024-05-10T21:05:29+02:00",
66 "subscription_current_period_end": "2024-06-10T21:05:29+02:00",
67 "subscription_onetime": false,
68 "tenant_email": "info@example.com",
69 "tenant_name": "Planning App",
70 "tenant_slug": "planning",
71 "custom_fields": null,
72 "custom_params": {},
73 "custom_email": {
74 "heading": null,
75 "content": null
76 },
77 "cross_sells": [],
78 "ref": null
79}
Webhook po modyfikacji danych klienta
1{
2 "event": "customer_data_changed",
3 "timestamp": 1741440113,
4 "data": {
5 "previous": {
6 "customer_name": "Alice Brown",
7 "customer_email": "alice.b@example.com"
8 },
9 "current": {
10 "customer_name": "Alice Smith-Brown",
11 "customer_email": "alice.b@example.com"
12 }
13 }
14}
15