# Custom Checks notification events ServiceControl exposes two integration events related to the Custom Checks plugin. For information about how to subscribe to ServiceControl integration events, see [Using ServiceControl events](/servicecontrol/contracts.md). Each custom check begins in an unknown state. Once the custom check executes and reports its status to ServiceControl, it will transition to either `pass` or `fail`. External integration events are raised whenever custom checks transition into new states. ```mermaid graph TD U(Unknown) F[Fail] P[Pass] U -. Succeeded .-> P U -. Failed .-> F F -- Succeeded --> P P -- Failed --> F ``` ## `CustomCheckFailed` The `CustomCheckFailed` event is published if a custom check transitions from the unknown or pass state to the fail state. ```cs public class CustomCheckFailed { /// /// The id for the custom check provided by the user. /// public string CustomCheckId { get; set; } /// /// The custom check category provided by the user. /// public string Category { get; set; } /// /// The reason provided by the user for the failure. /// public string FailureReason { get; set; } /// /// The date and time the check failed. /// public DateTime FailedAt { get; set; } /// /// The name of the endpoint /// public string EndpointName { get; set; } /// /// The unique identifier for the host that runs the endpoint /// public Guid HostId { get; set; } /// /// The name of the host /// public string Host { get; set; } } ``` ## `CustomCheckSucceeded` The `CustomCheckSucceeded` event is published if a custom check transitions from the unknown or fail state to the pass state. ```cs public class CustomCheckSucceeded { /// /// The id for the custom check provided by the user. /// public string CustomCheckId { get; set; } /// /// The custom check category provided by the user. /// public string Category { get; set; } /// /// The date and time the check passed. /// public DateTime SucceededAt { get; set; } /// /// The name of the endpoint /// public string EndpointName { get; set; } /// /// The unique identifier for the host that runs the endpoint /// public Guid HostId { get; set; } /// /// The name of the host /// public string Host { get; set; } } ```