Webhooki
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ł.
|
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 |
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.
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):
- Otwórz aplikację w Centrum dewelopera.
- W menu po lewej stronie przejdź do karty Webhooki (Webhooks).
- 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.
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:
{
"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"
}
}
{
"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"
}
{
"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
}
}
}
{
"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
}
}
}
{
"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
}
}
}
{
"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
}
}
}
{
"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
}
}
}
{
"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
}
}
}
{
"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
}
}
}
{
"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
}
}
}
{
"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
}
}
}
{
"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
}
}
}
{
"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.