Notifications
Configure notifications for important lifecycle events in your account and application environments.
Overview
Quave ONE can send notifications for various deployment, scaling, restart, and automation lifecycle events. You can configure which events trigger notifications and choose between email, Slack, and webhook notifications.
Configuring Notifications
Access notification settings from the Notifications tab in your account settings.
Available Channels
- Email: Receive notifications via email
- Slack: Send notifications to a Slack channel (requires webhook URL configuration)
- Webhook: Send HTTP POST notifications to a custom URL with structured JSON payloads
Notification Settings Types
The following events can trigger notifications. Events marked as Enabled by Default are automatically enabled when notifications for that scope are created or when an enabled account-level setting is missing a default activity. Some events are account-only and are not available in environment-level notification overrides.
Build Events
| Event | Scope | Description | Enabled by Default |
|---|---|---|---|
| Building | Account and environment | Docker image is being built | No |
| Waiting for image | Account and environment | Waiting for Docker image to be available | No |
| Build failed | Account and environment | Build process failed (compilation, Dockerfile errors) | Yes |
| Image in waiting failed to build | Account and environment | Docker image build failed | Yes |
| Built | Account and environment | Build completed, ready to deploy | No |
| Image in waiting is ready | Account and environment | Image is ready for deployment | No |
| Job image ready | Account and environment | Job image is ready to run | No |
Deploy Events
| Event | Scope | Description | Enabled by Default |
|---|---|---|---|
| Deploying | Account and environment | Containers are being deployed | No |
| Deploy failed to complete | Account and environment | Deployment timed out or failed health checks | Yes |
| Deploy failed to start | Account and environment | Containers failed to start | Yes |
| Deployed | Account and environment | Code deployment completed successfully | No |
Scaling Events
| Event | Scope | Description | Enabled by Default |
|---|---|---|---|
| Scaling | Account and environment | Container count is being adjusted | No |
| Scaled | Account and environment | Scaling operation completed successfully (containers adjusted) | No |
Lifecycle Events
| Event | Scope | Description | Enabled by Default |
|---|---|---|---|
| Build canceled | Account and environment | Build was manually canceled | Yes |
| Canceled due to new deploy | Account and environment | Canceled because a new deployment was triggered | No |
| Stopping | Account and environment | Containers are being stopped | No |
| Stopped | Account and environment | Environment stopped gracefully after successful operation | Yes |
| Restarts | Account and environment | Notification when containers restart unexpectedly (first restart, then at most once every 3 hours) | Yes |
Automation Events
| Event | Scope | Description | Enabled by Default |
|---|---|---|---|
| Automation failures | Account only | Notification when an account-level automation run fails or times out | Yes |
| Agent profile updates | Account only | Notification when an enabled agent-profile automation needs its latest template applied | Yes |
Container Restart Notifications
Quave ONE monitors your containers for unexpected restarts and notifies you when they occur. This helps you quickly identify and address issues like crashes, out-of-memory errors, or application bugs.
When You Get Notified
To prevent notification fatigue, restart notifications follow a rate-limited schedule:
- First restart: You are notified immediately when a container first restarts
- Subsequent restarts: You will receive at most one notification every 3 hours if restarts continue
This means you will receive a maximum of approximately 8 restart notifications per day per container, even if the container is in a crash loop.
What the Notification Contains
Each restart notification includes:
- Container name: Which container or replica restarted
- Restart count: Total number of restarts recorded
- Exit code: The error code that caused the restart
- Error message: Details about why the container terminated (when available)
- Version: The application version that was running
Common Exit Codes
| Exit Code | Meaning | Typical Cause |
|---|---|---|
| 137 | OOMKilled | Container exceeded memory limit |
| 1 | Error | Application crashed or threw an unhandled exception |
| 143 | SIGTERM | Container received termination signal |
For a complete list of error codes, see our Troubleshooting guide.
Disabling Restart Notifications
If you prefer not to receive restart notifications, you can disable them:
- Go to Account then Notifications or App Env then Notifications
- Find Restarts on the list
- Toggle off Email, Slack, and/or Webhook notifications as desired
Automation Failure Notifications
Automation failures are account-level lifecycle notifications. They are not alert alarms and they do not use automation contact points. When an automation run fails or times out, Quave ONE can notify the account through the same Email, Slack, and Webhook channels configured on the account Notifications page.
Automation failure notifications are enabled by default for account-level notifications. They are not shown in environment-level notification settings because automations are attached to the account, not to a specific app environment.
Best Practices
- Enable failure notifications - At minimum, enable notifications for build and deploy failures to catch issues early
- Configure Slack for team visibility - Use Slack channels to keep your entire team informed of deployment events
- Use webhooks for custom integrations - Connect notifications to CI/CD pipelines, PagerDuty, or internal tools via webhooks
- Customize per environment - Consider different notification settings for production vs staging environments
- Use dedicated channels - Create dedicated Slack channels for different apps or environments to reduce noise
- Keep restart notifications enabled - Container restarts often indicate issues that need attention, even if the container auto-recovers
Slack Integration
To configure Slack notifications:
- Create a Slack webhook URL in your Slack workspace
- Go to the Notifications tab in your account settings
- Enable Slack notifications for desired events
- Enter the webhook URL for the Slack channel
You can configure different Slack channels for different events or environments to better organize your notifications.
Webhook Integration
Webhook notifications allow you to receive structured JSON payloads via HTTP POST whenever events occur in your application environments. Use them to integrate Quave ONE with CI/CD pipelines, incident management tools, custom dashboards, or any system that can accept HTTP requests.
- Method: HTTP POST
- Content-Type:
application/json - Delivery: Fire-and-forget (no retries on failure)
Configuring Webhooks
- Go to Account then Notifications (or App Env then Notifications for environment-level settings)
- Enable the Webhook toggle
- Enter your Webhook URL (the HTTPS endpoint that will receive the POST requests)
- In the activities table, check the Webhook column for each event you want to receive
- Click Save changes
You can use a service like webhook.site to test your webhook configuration before connecting it to your production systems.
Webhook Event Types
Quave ONE sends these webhook events:
environment_status_change-- Sent when the status of an application environment changes (e.g., build started, deploy succeeded, deploy failed).container_restart-- Sent when a container restarts unexpectedly. Restart notifications follow the same rate-limited schedule described above (first restart immediately, then at most once every 3 hours).automation_failure-- Sent when an account-level automation run fails or times out.
Webhook Field Reference
Common Fields
| Field | Type | Description |
|---|---|---|
event | string | Event type identifier: environment_status_change, container_restart, or automation_failure |
timestamp | string | ISO 8601 timestamp of when the notification was sent |
account.id | string | Account ID |
account.name | string | Account name |
app.id | string | App ID, present for environment-level events |
app.name | string | App name, present for environment-level events |
appEnv.id | string | Environment ID, present for environment-level events |
appEnv.name | string | Environment name, present for environment-level events |
link | string | Direct URL to the environment or automation run in Quave ONE |
Fields for environment_status_change
| Field | Type | Description | Required |
|---|---|---|---|
status | string | Status enum value (e.g., DEPLOYED, BUILDING_FAIL, DEPLOY_FAILED_START) | Yes |
statusLabel | string | Human-readable status label (e.g., "Deployed", "Build failed") | Yes |
message | string | Notification message text | Yes |
host | string | Primary hostname of the environment | Only when applicable |
image | string | Docker image name | Only when applicable |
Fields for container_restart
| Field | Type | Description | Required |
|---|---|---|---|
container.name | string | Container/pod name | Yes |
container.restartCount | number | Total number of restarts recorded | Yes |
version | string | Application version string (e.g., v8.3) | Yes |
exitCode | number | Process exit code that caused the restart | Yes |
exitCodeLabel | string | Human-readable exit code meaning (e.g., "OOMKilled") | Only when available |
errorMessage | string | Error details from the container | Only when available |
Fields for automation_failure
| Field | Type | Description | Required |
|---|---|---|---|
automation.id | string | Automation ID | Yes |
automation.name | string | Automation name | Yes |
run.id | string | Automation run ID | Yes |
run.status | string | Run status, usually failed | Yes |
run.errorMessage | string | Failure reason captured by Quave ONE | Only when available |
run.triggerSource | string | How the run was started, such as cron or manual | Only when available |
run.autoDisabled | boolean | Whether repeated failures disabled the automation | Yes |
Webhook Example Payloads
Environment Status Change
{
"event": "environment_status_change",
"timestamp": "2026-02-16T12:00:00.000Z",
"account": {
"id": "abc123",
"name": "My Company"
},
"app": {
"id": "def456",
"name": "my-app"
},
"appEnv": {
"id": "ghi789",
"name": "production"
},
"status": "DEPLOYED",
"statusLabel": "Deployed",
"message": "Environment Deployed",
"host": "app.example.com",
"link": "https://cloud.quave.dev/abc123/def456/ghi789"
}
Container Restart
{
"event": "container_restart",
"timestamp": "2026-02-16T12:00:00.000Z",
"account": {
"id": "abc123",
"name": "My Company"
},
"app": {
"id": "def456",
"name": "my-app"
},
"appEnv": {
"id": "ghi789",
"name": "production"
},
"container": {
"name": "my-app-web-5f8a9b",
"restartCount": 5
},
"version": "v8.3",
"exitCode": 137,
"exitCodeLabel": "OOMKilled",
"link": "https://cloud.quave.dev/abc123/def456/ghi789?tab=CONTAINERS"
}
Automation Failure
{
"event": "automation_failure",
"timestamp": "2026-02-16T15:00:00.000Z",
"account": {
"id": "abc123",
"name": "My Company"
},
"activity": "AUTOMATION_FAILED",
"title": "Automation failed",
"automation": {
"id": "auto123",
"name": "Production health check"
},
"run": {
"id": "run123",
"status": "failed",
"errorMessage": "MCP key no longer available or disabled",
"triggerSource": "cron",
"autoDisabled": false
},
"link": "https://cloud.quave.dev/account/abc123/automations/runs?automationId=auto123&runId=run123"
}
Deploy Failed (without optional fields)
{
"event": "environment_status_change",
"timestamp": "2026-02-16T14:30:00.000Z",
"account": {
"id": "abc123",
"name": "My Company"
},
"app": {
"id": "def456",
"name": "my-app"
},
"appEnv": {
"id": "ghi789",
"name": "staging"
},
"status": "BUILDING_FAIL",
"statusLabel": "Build failed",
"message": "Environment Build failed",
"link": "https://cloud.quave.dev/abc123/def456/ghi789"
}