# 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; }
}
```