Dokumentacja dla programistów

Webhooki

Marketplace aplikacjiAplikacje monday.com
Aktualizacja 2026-05-11

Webhooki to automatyczne żądania wysyłane przez monday.com, gdy w Twojej aplikacji wystąpi zdarzenie związane z jej cyklem życia. Zawierają dane o zdarzeniu i powiadamiają Cię o nim w czasie rzeczywistym. Dzięki temu możesz monitorować kluczowe zdarzenia i lepiej poznawać zachowania użytkowników.

Webhooki zawierające informacje o subskrypcji są poufne. Dane te są udostępniane na warunkach dla deweloperów.

Obsługiwane zdarzenia webhooków

Obecnie obsługujemy 13 zdarzeń webhooków, które pozwalają monitorować instalacje aplikacji i zdarzenia związane z subskrypcją.

Instalacje

Użyj poniższych webhooków, aby śledzić instalacje aplikacji:

Zdarzenie webhooka Kiedy występuje
install

Wysyłany, gdy użytkownik instaluje aplikację po raz pierwszy. Jest wysyłany dla wszystkich rodzajów subskrypcji, także bezpłatnych, i zawiera dane subskrypcji. W przypadku płatnych subskrypcji webhook może zostać wysłany ponownie, jeśli użytkownik ponownie zainstaluje aplikację, za którą wcześniej zapłacił, a następnie ją odinstalował.

  • Uwaga:* Wartości null lub 0 w polach account_tier albo account_max_users oznaczają, że konto monday jest w okresie próbnym.
uninstall Wysyłany, gdy użytkownik odinstaluje aplikację. Jest wysyłany dla wszystkich rodzajów subskrypcji, także bezpłatnych, i zawiera dane subskrypcji.

Subskrypcje

Użyj poniższych webhooków, aby śledzić zdarzenia związane z subskrypcją aplikacji:

Zdarzenia webhooków Kiedy występują
app_subscription_created Wysyłany, gdy użytkownik kupi plan. Zawiera dane subskrypcji.
app_subscription_changed Wysyłany, gdy użytkownik zmieni istniejącą płatną subskrypcję na wyższy lub niższy plan. Zawiera dane subskrypcji.
app_subscription_renewed Wysyłany, gdy subskrypcja zostanie odnowiona w dniu odnowienia. Zawiera dane subskrypcji.
app_subscription_cancelled_by_user

Wysyłany, gdy użytkownik anuluje subskrypcję. Zawiera dane subskrypcji.

Uwaga: Subskrypcja pozostanie aktywna do końca opłaconego okresu. Po upływie daty odnowienia nie zostanie odnowiona, a Ty otrzymasz webhook app_subscription_cancelled.

app_subscription_cancelled Wysyłany, gdy subskrypcja zakończy się z powodu anulowania. Zawiera dane subskrypcji.
app_subscription_cancellation_revoked_by_user

Wysyłany, gdy użytkownik cofnie anulowanie subskrypcji przed datą odnowienia. Zawiera dane subskrypcji.

Uwaga: Oznacza to, że subskrypcja zostanie automatycznie odnowiona w dniu odnowienia.

app_subscription_renewal_attempt_failed Wysyłany, gdy pierwsza próba odnowienia subskrypcji zakończy się niepowodzeniem. Zawiera dane subskrypcji.
app_subscription_renewal_failed Wysyłany, gdy końcowa próba odnowienia subskrypcji zakończy się niepowodzeniem. Zawiera dane subskrypcji.
app_trial_subscription_started Wysyłany, gdy użytkownik rozpocznie nowy okres próbny aplikacji. Zawiera dane subskrypcji.
app_trial_subscription_ended Wysyłany, gdy użytkownik zakończy okres próbny aplikacji. Zawiera dane subskrypcji.
app_subscription_pricing_version_change_scheduled

Wysyłany, gdy zaplanowano zmianę wersji cenowej dla użytkownika.

Uwaga: Webhook zwraca bieżące dane subskrypcji, czyli stan subskrypcji sprzed wprowadzenia zmiany cenowej.

Cykl życia subskrypcji aplikacji

Poniższy diagram przedstawia typowy cykl życia instalacji aplikacji i subskrypcji - od instalacji, przez okres próbny i aktywną subskrypcję, po anulowanie i odinstalowanie. Pokazuje, jak poszczególne zdarzenia webhooków łączą się ze sobą.

Diagram nie obejmuje wszystkich możliwych zdarzeń ani działań. Ma pomóc Ci zrozumieć ogólny przebieg typowego procesu.

Webhooki - ilustracja 1

Implementacja

Webhooki możesz wdrożyć na dowolnym etapie tworzenia aplikacji, ale nie otrzymasz informacji o zdarzeniach z przeszłości. Dlatego zalecamy wdrożenie ich od samego początku. Dzięki temu z czasem uzyskasz pełny obraz aktywności aplikacji.

Tworzenie webhooka

Webhooki dla aplikacji możesz utworzyć w Centrum dewelopera (Developer Center):

  1. Otwórz aplikację w Centrum dewelopera.
  2. W menu po lewej stronie przejdź do karty Webhooki (Webhooks).
  3. W polu Wszystkie zdarzenia (All events) wpisz adres URL, aby subskrybować wszystkie 12 zdarzeń webhooków. Jeśli Twoja aplikacja jest hostowana w monday code, zalecamy użycie aktywnego adresu URL.
Webhooki - ilustracja 2

Informacje

Treść żądania

Gdy wystąpi zdarzenie, na adres URL webhooka zostanie wysłane żądanie.

Treść żądania zawiera następujące metadane dotyczące zdarzenia:

Install
{
  "type": "install",
  "data": {
    "app_id": 1000000000,
    "app_name": "Test App",
    "user_id": 2,
    "user_email": "user1@users.com", // the admin who installed the app or approved the installation
    "user_name": "User 1", // the admin who installed the app or approved the installation
    "user_cluster": "other",
    "account_tier": "free",
    "account_max_users": 10000,
    "account_id": 777777,
    "account_name": "Demo Account",
    "account_slug": "test",
    "version_data": { major: 4, minor: 5, patch: 0, type: "minor", number: 16 },
    "timestamp": "2023-06-26T00:00:00.000+00:00",
    "subscription": {
      "plan_id": "5",
      "renewal_date": "2023-07-10T00:00:00+00:00",
      "is_trial": false,
      "billing_period": "monthly",
      "days_left": 14,
      "pricing_version": 5,
      "max_units": 100 // maximum number of seats allowed for seat-based plans, null for feature-based plans
    },
    "user_country": "IL"
  }
}
Uninstall
{
  "type": "uninstall",
  "data": {
    "app_id": 1000000000,
    "app_name": "Test App",
    "user_id": 2,
    "user_email": "user1@users.com", // the admin who installed the app or approved the installation
    "user_name": "User 1", // the admin who installed the app or approved the installation
    "user_cluster": "other",
    "account_tier": "free",
    "account_max_users": 10000,
    "account_id": 777777,
    "account_name": "Demo Account",
    "account_slug": "test",
    "version_data": { "major": 4, "minor": 5, "patch": 0, "type": "minor", "number": 16 },
    "timestamp": "2023-06-26T00:00:00.000+00:00",
    "subscription": {
      "plan_id": "5",
      "renewal_date": "2023-07-10T00:00:00+00:00",
      "is_trial": false,
      "billing_period": "monthly",
      "days_left": 14,
      "pricing_version": 5, 
      "max_units": 100 // maximum number of seats allowed for seat-based plans, null for feature-based plans
    },
    "user_country": "IL"
  }
Subscription Created
{
  "type":"app_subscription_created",
  "data":{
    "app_id":1000000000,
    "app_name": "Test App",
    "user_id":1,
    "user_email":"user1@users.com", // the first admin on the account
    "user_name": "User 1", // the first admin on the account
    "user_cluster": 'other',
    "account_tier": 'free',
    "account_name": "Demo Account",
    "account_slug": "test",
    "account_max_users": 10000,
    "account_id":777777,
    "version_data":{
      "major":1,
      "minor":2, 
      "patch":0,
      "type":"minor",
      "number": 16
    },
    "timestamp":"2022-06-23T00:00:00.000+00:00",
    "subscription":{
      "plan_id":"plan1",
      "renewal_date":"2022-07-19T00:00:00+00:00",
      "is_trial":false,
      "billing_period":"monthly",
      "days_left":26,
      "pricing_version":5,
      "max_units": 100 // maximum number of seats allowed for seat-based plans, null for feature-based plans
    }
  }
}
Subscription Changed
{
  "type":"app_subscription_changed",
  "data":{
    "app_id":1000000000,
    "app_name": "Test App",
    "user_id":1,
    "user_email":"user1@users.com", // the first admin on the account
    "user_name": "User 1", // the first admin on the account
    "user_cluster": 'other',
    "account_tier": 'free',
    "account_name": "Demo Account",
    "account_slug": "test",
    "account_max_users": 10000,
    "account_id":777777,
    "version_data":{
      "major":1,
      "minor":2,
      "patch":0,
      "type":"minor",
      "number": 16
    },
    "timestamp":"2022-06-23T00:00:00.000+00:00",
    "subscription":{
      "plan_id":"plan1",
      "renewal_date":"2022-07-19T00:00:00+00:00",
      "is_trial":false,
      "billing_period":"monthly",
      "days_left":26,
      "pricing_version":5,
      "max_units": 100 // maximum number of seats allowed for seat-based plans, null for feature-based plans
    }
  }
}
Subscription Renewed
{
  "type":"app_subscription_renewed",
  "data":{
    "app_id":1000000000,
    "app_name": "Test App",
    "user_id":1,
    "user_email":"user1@users.com", // the first admin on the account
    "user_name": "User 1", // the first admin on the account
    "user_cluster": 'other',
    "account_tier": 'free',
    "account_name": "Demo Account",
    "account_slug": "test",
    "account_max_users": 10000,
    "account_id":777777,
    "version_data":{
      "major":1,
      "minor":2,
      "patch":0,
      "type":"minor",
      "number": 16
    },
    "timestamp":"2022-06-23T00:00:00.000+00:00",
    "subscription":{
      "plan_id":"plan1",
      "renewal_date":"2022-07-19T00:00:00+00:00",
      "is_trial":false,
      "billing_period":"monthly",
      "days_left":26,
      "pricing_version":5,
      "max_units": 100 // maximum number of seats allowed for seat-based plans, null for feature-based plans
    }
  }
}
Subscription Canceled by User
{
  "type":"app_subscription_cancelled_by_user",
  "data":{
    "app_id":1000000000,
    "app_name": "Test App",
    "user_id":1,
    "user_email":"user1@users.com", // the first admin on the account
    "user_name": "User 1", // the first admin on the account
    "user_cluster": 'other',
    "account_tier": 'free',
    "account_name": "Demo Account",
    "account_slug": "test",
    "account_max_users": 10000,  
    "account_id":777777,
    "version_data":{
      "major":1,
      "minor":2,
      "patch":0,
      "type":"minor",
      "number": 16
    },
    "timestamp":"2022-06-23T00:00:00.000+00:00",
    "subscription":{
      "plan_id":"plan1",
      "renewal_date":"2022-07-19T00:00:00+00:00",
      "is_trial":false,
      "billing_period":"monthly",
      "days_left":26,
      "pricing_version":5,
      "max_units": 100 // maximum number of seats allowed for seat-based plans, null for feature-based plans
    }
  }
}
Subscription Canceled
{
  "type":"app_subscription_cancelled",
  "data":{
    "app_id":1000000000,
    "app_name": "Test App",
    "user_id":1,
    "user_email":"user1@users.com", // the first admin on the account
    "user_name": "User 1", // the first admin on the account
    "user_cluster": 'other',
    "account_tier": 'free',
    "account_name": "Demo Account",
    "account_slug": "test",
    "account_max_users": 10000,  
    "account_id":777777,
    "version_data":{
      "major":1,
      "minor":2,
      "patch":0,
      "type":"minor",
      "number": 16
    },
    "timestamp":"2022-06-23T00:00:00.000+00:00",
    "subscription":{
      "plan_id":"plan1",
      "renewal_date":"2022-07-19T00:00:00+00:00",
      "is_trial":false,
      "billing_period":"monthly",
      "days_left":26,
      "pricing_version":5,
      "max_units": 100 // maximum number of seats allowed for seat-based plans, null for feature-based plans
    }
  }
}
Undo Subscription Cancellation
{
  "type":"app_subscription_cancellation_revoked_by_user",
  "data":{
    "app_id":1000000000,
    "app_name": "Test App",
    "user_id":1,
    "user_email":"user1@users.com", // the first admin on the account
    "user_name": "User 1", // the first admin on the account
    "user_cluster": 'other',
    "account_tier": 'free',
    "account_name": "Demo Account",
    "account_slug": "test",
    "account_max_users": 10000,
    "account_id":777777,
    "version_data":{
      "major":1,
      "minor":2,
      "patch":0,
      "type":"minor",
      "number": 16
    },
    "timestamp":"2022-06-23T00:00:00.000+00:00",
    "subscription":{
      "plan_id":"plan1",
      "renewal_date":"2022-07-19T00:00:00+00:00",
      "is_trial":false,
      "billing_period":"monthly",
      "days_left":26,
      "pricing_version":5,
      "max_units": 100 // maximum number of seats allowed for seat-based plans, null for feature-based plans
    }
  }
}
App Subscription Renewal Attempt Failed
{
  "type":"app_subscription_renewal_attempt_failed",
  "data":{
    "app_id":1000000000,
    "app_name": "Test App",
    "user_id":1,
    "user_email":"user1@users.com", // the first admin on the account
    "user_name": "User 1", // the first admin on the account
    "user_cluster": 'other',
    "account_tier": 'free',
    "account_name": "Demo Account",
    "account_slug": "test",
    "account_max_users": 10000,
    "account_id":777777,
    "version_data":{
      "major":1,
      "minor":2,
      "patch":0,
      "type":"minor",
      "number": 16 
    },
    "timestamp":"2022-06-23T00:00:00.000+00:00",
    "subscription":{
      "plan_id":"plan1",
      "renewal_date":"2022-07-19T00:00:00+00:00",
      "is_trial":false,
      "billing_period":"monthly",
      "days_left":0,
      "pricing_version":5,
      "max_units": 100 // maximum number of seats allowed for seat-based plans, null for feature-based plans
    }
  }
}
App Subscription Renewal Failed
{
  "type":"app_subscription_renewal_failed",
  "data":{
    "app_id":1000000000,
    "app_name": "Test App",
    "user_id":1,
    "user_email":"user1@users.com", // the first admin on the account
    "user_name": "User 1", // the first admin on the account
    "user_cluster": 'other',
    "account_tier": 'free',
    "account_name": "Demo Account",
    "account_slug": "test",
    "account_max_users": 10000,
    "account_id":777777,
    "version_data":{
      "major":1,
      "minor":2,
      "patch":0,
      "type":"minor",
      "number": 16 
    },
    "timestamp":"2022-06-23T00:00:00.000+00:00",
    "subscription":{
      "plan_id":"plan1",
      "renewal_date":"2022-07-19T00:00:00+00:00",
      "is_trial":false,
      "billing_period":"monthly",
      "days_left":0,
      "pricing_version":5,
      "max_units": 100 // maximum number of seats allowed for seat-based plans, null for feature-based plans
    }
  }
}
Trial Subscription Started
{
  "type":"app_trial_subscription_started",
  "data":{
    "app_id":1000000000,
    "app_name": "Test App",
    "user_id":1,
    "user_email":"user1@users.com", // the first admin on the account
    "user_name": "User 1", // the first admin on the account
    "user_cluster": 'other',
    "account_tier": 'free',
    "account_name": "Demo Account",
    "account_slug": "test",
    "account_max_users": 10000,
    "account_id":777777,
    "version_data":{
      "major":1,
      "minor":2,
      "patch":0,
      "type":"minor",
      "number": 16
    },
    "timestamp":"2022-06-23T00:00:00.000+00:00",
    "subscription":{
      "plan_id":"plan1",
      "renewal_date":"2022-07-19T00:00:00+00:00",
      "is_trial":true,
      "billing_period":"monthly",
      "days_left":26,
      "pricing_version":5,
      "max_units": 100 // maximum number of seats allowed for seat-based plans, null for feature-based plans
    }
  }
}
Trial Subscription Ended
{
  "type":"app_trial_subscription_ended",
  "data":{
    "app_id":1000000000,
    "app_name": "Test App",
    "user_id":1,
    "user_email":"user1@users.com", // the first admin on the account
    "user_name": "User 1", // the first admin on the account
    "user_cluster": 'other',
    "account_tier": 'free',
    "account_name": "Demo Account",
    "account_slug": "test",
    "account_max_users": 10000,
    "account_id":777777,
    "version_data":{
      "major":1,
      "minor":2,
      "patch":0,
      "type":"minor",
      "number": 16 
    },
    "timestamp":"2022-06-23T00:00:00.000+00:00",
    "subscription":{
      "plan_id":"plan1",
      "renewal_date":"2022-07-19T00:00:00+00:00",
      "is_trial":true,
      "billing_period":"monthly",
      "days_left":26,
      "pricing_version":5,
      "max_units": 100 // maximum number of seats allowed for seat-based plans, null for feature-based plans
    }
  }
}
App Subscription Pricing Version Change Scheduled
{
  "type":"app_subscription_pricing_version_change_scheduled",
  "data":{
    "app_id":1000000000,
    "app_name": "Test App",
    "user_id":1,
    "user_email":"user1@users.com", // the first admin on the account
    "user_name": "User 1", // the first admin on the account
    "user_cluster": null,
    "account_tier": null,
    "account_name": "Demo Account",
    "account_slug": "test",
    "account_max_users": null,
    "account_id":777777,
    "version_data":{
      "major":1,
      "minor":2, 
      "patch":0,
      "type":"minor",
      "number": 16
    },
    "timestamp":"2022-06-23T00:00:00.000+00:00",
    "subscription":{
      "plan_id":"plan1",
      "renewal_date":"2022-07-19T00:00:00+00:00",
      "is_trial":false,
      "billing_period":"monthly",
      "days_left":26,
      "pricing_version":5,
      "max_units": 100 // maximum number of seats allowed for seat-based plans, null for feature-based plans
    }
  }
}

Nagłówek Authorization

Każde żądanie zawiera JWT w nagłówku Authorization, którego możesz użyć do sprawdzenia, czy żądanie jest prawidłowe. JWT jest podpisany przy użyciu Client Secret.