Skip to main content

Webhook Notifications

Webhook notifications are sent to the SSO client's webhook URL when certain platform events occur (crawl finished, role changed, scheduled crawl failed, etc.). They are designed for SSO partners who need to build custom notification flows on top of Lumar events.

info

Webhook notifications are only available for accounts with an SSO integration. They are delivered to the webhookUrl configured on the SSO client, not to the project-level apiCallbackUrl. For project-level callbacks, see API Callback Notifications.

Payload structure

All webhook notifications share a common wrapper structure. The eventData object varies by event type.

{
eventType: string;
eventData: { ... };
/**
* Lumar Account ID
*/
accountId: number;
/**
* Account ID on SSO Client
*/
ssoClientAccountId: string;
}

Event schemas

Callback Failed
{
eventType: "callback-failed";
eventData: {
/**
* Project ID
*/
projectId: number;
/**
* User's firstName if the notification is being sent to a User.
*/
firstName: string | null;
/**
* User's lastName if the notification is being sent to a User.
*/
lastName: string | null;
/**
* Project's name.
*/
projectName: string;
/**
* URL to edit Project settings, pointing at step 4.
*/
projectSettingsLink: string;
/**
* Project's sitePrimary.
*/
sitePrimary: string;
/**
* HTTP status for the failed callback response, if available.
*/
status: number | null;
};
/**
* Lumar Account ID
*/
accountId: number;
/**
* Account ID on SSO Client
*/
ssoClientAccountId: string;
}
Crawl Finished
{
eventType: "crawl-finished";
eventData: {
/**
* Crawl ID
*/
crawlId: number;
/**
* Formatted Crawl's crawlingAt timestamp in the Account's timezone.
* @example "Nov 23, 2021 01:03PM"
*/
crawlingAt: string;
/**
* User interface URL leading to the /accounts/:accountId/projects/:projectId/crawls/:crawlId page, if the notification is being
* sent to the Crawl createdByUser. Sharelink otherwise.
*/
crawlUrl: string;
/**
* Crawl createdByUser's firstName if the notification is being sent to that User.
*/
firstName: string | null;
/**
* Crawl createdByUser's lastName if the notification is being sent to that User.
*/
lastName: string | null;
/**
* Crawl Project's name.
*/
projectName: string;
/**
* Crawl Project's sitePrimary.
*/
sitePrimary: string;
/**
* Number of URLs crawled
*/
totalSteps: string;
};
/**
* Lumar Account ID
*/
accountId: number;
/**
* Account ID on SSO Client
*/
ssoClientAccountId: string;
}
Crawl Paused (Credits)
{
eventType: "crawl-paused-credits";
eventData: {
/**
* Crawl ID
*/
crawlId: number;
/**
* Formatted time when autofinalize will occur if no action is taken by the User.
* Should be 72 hours in the future at the time the notification is being sent.
* @example "Nov 23, 2021 01:03PM"
*/
autoFinalizeAt: string;
/**
* User interface URL leading to the /accounts/:accountId/projects/:projectId/crawls page.
*/
crawlUrl: string;
/**
* Crawl createdByUser's firstName if the notification is being sent to that User.
*/
firstName: string | null;
/**
* Crawl createdByUser's lastName if the notification is being sent to that User.
*/
lastName: string | null;
/**
* Crawl Project's name.
*/
projectName: string;
/**
* Crawl Project's sitePrimary.
*/
sitePrimary: string;
/**
* User interface URL leading to the /subscription page.
*/
subscriptionUrl: string;
};
/**
* Lumar Account ID
*/
accountId: number;
/**
* Account ID on SSO Client
*/
ssoClientAccountId: string;
}
Crawl Paused (Failure Rate)
{
eventType: "crawl-paused-failure-rate";
eventData: {
/**
* Crawl ID
*/
crawlId: number;
/**
* Formatted time when autofinalize will occur if no action is taken by the User.
* Should be 72 hours in the future at the time the notification is being sent.
* @example "Nov 23, 2021 01:03PM"
*/
autoFinalizeAt: string;
/**
* Formatted Crawl's crawlingAt timestamp in the Account's timezone.
* @example "Nov 23, 2021 01:03PM"
*/
crawlingAt: string;
/**
* User interface URL leading to the /accounts/:accountId/projects/:projectId/crawls page.
*/
crawlUrl: string;
/**
* Crawl createdByUser's firstName if the notification is being sent to that User.
*/
firstName: string | null;
/**
* Crawl createdByUser's lastName if the notification is being sent to that User.
*/
lastName: string | null;
/**
* Crawl Project's name.
*/
projectName: string;
/**
* Crawl Project's sitePrimary.
*/
sitePrimary: string;
/**
* Sum of ShelveCrawlStat's progress across all levels.
* The number is formatted with thousands grouped.
* @example "12,345,678"
*/
totalSteps: string;
};
/**
* Lumar Account ID
*/
accountId: number;
/**
* Account ID on SSO Client
*/
ssoClientAccountId: string;
}
Crawl Paused (Limits)
{
eventType: "crawl-paused-limits";
eventData: {
/**
* Crawl ID
*/
crawlId: number;
/**
* Formatted time when autofinalize will occur if no action is taken by the User.
* Should be 72 hours in the future at the time the notification is being sent.
* @example "Nov 23, 2021 01:03PM"
*/
autoFinalizeAt: string;
/**
* Formatted Crawl's crawlingAt timestamp in the Account's timezone.
* @example "Nov 23, 2021 01:03PM"
*/
crawlingAt: string;
/**
* User interface URL leading to the /accounts/:accountId/projects/:projectId/crawls page.
*/
crawlUrl: string;
/**
* Crawl createdByUser's firstName if the notification is being sent to that User.
*/
firstName: string | null;
/**
* Crawl createdByUser's lastName if the notification is being sent to that User.
*/
lastName: string | null;
/**
* Crawl Project's name.
*/
projectName: string;
/**
* Crawl Project's sitePrimary.
*/
sitePrimary: string;
/**
* Sum of ShelveCrawlStat's progress across all levels.
* The number is formatted with thousands grouped.
* @example "12,345,678"
*/
totalSteps: string;
};
/**
* Lumar Account ID
*/
accountId: number;
/**
* Account ID on SSO Client
*/
ssoClientAccountId: string;
}
Role Changed
{
eventType: "role-changed";
eventData: {
/**
* Account name
*/
accountName: string;
/**
* Admin user's email
*/
adminEmail: string;
/**
* Admin user's first name
*/
adminFirstName: string;
/**
* Admin user's last name
*/
adminLastName: string;
/**
* User's first name
*/
firstName: string | null;
/**
* User's first name
*/
lastName: string | null;
/**
* New Role name
*/
newRoleName: string;
}
/**
* Lumar Account ID
*/
accountId: number;
/**
* Account ID on SSO Client
*/
ssoClientAccountId: string;
}
Scheduled Crawl Failed (Active Projects Limit)
{
eventType: "scheduled-crawl-failed-active-projects-limit";
eventData: {
/**
* Project ID
*/
projectId: number;
/**
* User interface URL leading to the /accounts/:accountId/projects/:projectId/crawls page.
*/
crawlsUrl: string;
/**
* User's firstName if the notification is being sent to a User.
*/
firstName: string | null;
/**
* User's lastName if the notification is being sent to a User.
*/
lastName: string | null;
/**
* Project's name.
*/
projectName: string;
/**
* Project's sitePrimary.
*/
sitePrimary: string;
/**
* User interface URL leading to the /subscription page.
*/
subscriptionUrl: string;
};
/**
* Lumar Account ID
*/
accountId: number;
/**
* Account ID on SSO Client
*/
ssoClientAccountId: string;
}
Scheduled Crawl Failed (Adobe Analytics)
{
eventType: "scheduled-crawl-failed-adobe-analytics";
eventData: {
/**
* Project ID
*/
projectId: number;
/**
* User interface URL leading to the /accounts/:accountId/projects/:projectId/crawls page.
*/
crawlsUrl: string;
/**
* User's firstName if the notification is being sent to a User.
*/
firstName: string | null;
/**
* User's lastName if the notification is being sent to a User.
*/
lastName: string | null;
/**
* Project's name.
*/
projectName: string;
/**
* Project's sitePrimary.
*/
sitePrimary: string;
};
/**
* Lumar Account ID
*/
accountId: number;
/**
* Account ID on SSO Client
*/
ssoClientAccountId: string;
}
Scheduled Crawl Failed (Analytics)
{
eventType: "scheduled-crawl-failed-analytics";
eventData: {
/**
* Project ID
*/
projectId: number;
/**
* User interface URL leading to the /accounts/:accountId/projects/:projectId/crawls page.
*/
crawlsUrl: string;
/**
* User's firstName if the notification is being sent to a User.
*/
firstName: string | null;
/**
* User's lastName if the notification is being sent to a User.
*/
lastName: string | null;
/**
* Project's name.
*/
projectName: string;
/**
* Project's sitePrimary.
*/
sitePrimary: string;
};
/**
* Lumar Account ID
*/
accountId: number;
/**
* Account ID on SSO Client
*/
ssoClientAccountId: string;
}
Scheduled Crawl Failed (Crawl Running)
{
eventType: "scheduled-crawl-failed-crawl-running";
eventData: {
/**
* Project ID
*/
projectId: number;
/**
* Crawl ID
*/
crawlId: number | null;
/**
* User interface URL leading to the /accounts/:accountId/projects/:projectId/crawls/:crawlId page.
*/
crawlUrl: string;
/**
* User's firstName if the notification is being sent to a User.
*/
firstName: string | null;
/**
* User's lastName if the notification is being sent to a User.
*/
lastName: string | null;
/**
* Project's name.
*/
projectName: string;
/**
* Project's sitePrimary.
*/
sitePrimary: string;
};
/**
* Lumar Account ID
*/
accountId: number;
/**
* Account ID on SSO Client
*/
ssoClientAccountId: string;
}
Scheduled Crawl Failed (Container Params)
{
eventType: "scheduled-crawl-failed-container-params";
eventData: {
/**
* Project ID
*/
projectId: number;
/**
* User interface URL leading to the /accounts/:accountId/projects/:projectId/crawls page.
*/
crawlsUrl: string;
/**
* User's firstName if the notification is being sent to a User.
*/
firstName: string | null;
/**
* User's lastName if the notification is being sent to a User.
*/
lastName: string | null;
/**
* Project's name.
*/
projectName: string;
/**
* Project's sitePrimary.
*/
sitePrimary: string;
/**
* Name of the container with invalid parameters.
*/
containerName: string;
};
/**
* Lumar Account ID
*/
accountId: number;
/**
* Account ID on SSO Client
*/
ssoClientAccountId: string;
}
Scheduled Crawl Failed (No Credits)
{
eventType: "scheduled-crawl-failed-no-credits";
eventData: {
/**
* Project ID
*/
projectId: number;
/**
* User interface URL leading to the /accounts/:accountId/projects/:projectId/crawls page.
*/
crawlsUrl: string;
/**
* User's firstName if the notification is being sent to a User.
*/
firstName: string | null;
/**
* User's lastName if the notification is being sent to a User.
*/
lastName: string | null;
/**
* Project's name.
*/
projectName: string;
/**
* Project's sitePrimary.
*/
sitePrimary: string;
};
/**
* Lumar Account ID
*/
accountId: number;
/**
* Account ID on SSO Client
*/
ssoClientAccountId: string;
}
Scheduled Crawl Failed (Pages Limit)
{
eventType: "scheduled-crawl-failed-pages-limit";
eventData: {
/**
* Project ID
*/
projectId: number;
/**
* User interface URL leading to the /accounts/:accountId/projects/:projectId/crawls page.
*/
crawlsUrl: string;
/**
* User's firstName if the notification is being sent to a User.
*/
firstName: string | null;
/**
* User's lastName if the notification is being sent to a User.
*/
lastName: string | null;
/**
* Project's name.
*/
projectName: string;
/**
* Project's sitePrimary.
*/
sitePrimary: string;
/**
* Account's maximum allowed limitPagesMax.
*/
accountLimitPagesMax: number;
/**
* Project's current limitPagesMax.
*/
limitPagesMax: number;
};
/**
* Lumar Account ID
*/
accountId: number;
/**
* Account ID on SSO Client
*/
ssoClientAccountId: string;
}
Scheduled Crawl Failed (Semantic Relevance Pages Limit)
{
eventType: "scheduled-crawl-failed-semantic-relevance-pages-limit";
eventData: {
/**
* Project ID
*/
projectId: number;
/**
* User interface URL leading to the /accounts/:accountId/projects/:projectId/crawls page.
*/
crawlsUrl: string;
/**
* User's firstName if the notification is being sent to a User.
*/
firstName: string | null;
/**
* User's lastName if the notification is being sent to a User.
*/
lastName: string | null;
/**
* Project's name.
*/
projectName: string;
/**
* Project's sitePrimary.
*/
sitePrimary: string;
/**
* Project's current limitPagesMax.
*/
limitPagesMax: number;
/**
* Account's maximum allowed limitPagesMax for Semantic Relevance.
*/
semanticRelevanceLimitPagesMax: number;
};
/**
* Lumar Account ID
*/
accountId: number;
/**
* Account ID on SSO Client
*/
ssoClientAccountId: string;
}
Scheduled Crawl Failed (Splunk)
{
eventType: "scheduled-crawl-failed-splunk";
eventData: {
/**
* Project ID
*/
projectId: number;
/**
* User interface URL leading to the /accounts/:accountId/projects/:projectId/crawls page.
*/
crawlsUrl: string;
/**
* User's firstName if the notification is being sent to a User.
*/
firstName: string | null;
/**
* User's lastName if the notification is being sent to a User.
*/
lastName: string | null;
/**
* Project's name.
*/
projectName: string;
/**
* Project's sitePrimary.
*/
sitePrimary: string;
};
/**
* Lumar Account ID
*/
accountId: number;
/**
* Account ID on SSO Client
*/
ssoClientAccountId: string;
}
Legacy Tasks Created
{
eventType: "legacy-tasks-created;
eventData: {
action: "created";
dashboardUrl: string;
greetingName: string | null;
legacyTasks: {
assignedTo: string[] | null;
category: string | null;
createdAt: string;
deadlineAt: string | null;
description: string | null;
fixedAt: string | null;
identified: number | null;
priority: string;
priorityColor: string;
remaining: number | null;
remainingColor: string | null;
reportLink: string | null;
title: string;
trendGraph: string | null;
}[];
projectName: string;
}
/**
* Lumar Account ID
*/
accountId: number;
/**
* Account ID on SSO Client
*/
ssoClientAccountId: string;
}
Legacy Tasks Updated
{
eventType: "legacy-tasks-updated;
eventData: {
action: "updated";
dashboardUrl: string;
greetingName: string | null;
legacyTasks: {
assignedTo: string[] | null;
category: string | null;
createdAt: string;
deadlineAt: string | null;
description: string | null;
fixedAt: string | null;
identified: number | null;
priority: string;
priorityColor: string;
remaining: number | null;
remainingColor: string | null;
reportLink: string | null;
title: string;
trendGraph: string | null;
}[];
projectName: string;
}
/**
* Lumar Account ID
*/
accountId: number;
/**
* Account ID on SSO Client
*/
ssoClientAccountId: string;
}