Supported Channels
- Every channel URL must use
https://. - An organization can connect up to 10 channels. Channels that are off count toward the limit.
- Once saved, a URL is never shown in full again — only the start and the last few characters.
Connect a Channel
- Open Notifications in the console and select the External channels tab. You can also get there from the External channels card in organization settings.
- Click Connect channel.
- Paste the channel URL. Slack and Discord URLs select their type automatically. How to get a URL next to the field explains how to create one.
- Choose the Notifications to send and the options.
- Click Send test message to make sure messages arrive, then save.
Choose What to Send
A channel stores the exact list you picked. Notification types added later are not added to existing channels automatically.
Notifications You Can Send
These notifications are never sent to external channels:
- Log alerts: Sent only to the channels picked on each rule, regardless of channel subscriptions.
- Notifications just for you: Request received and request updates, replies to your feedback.
- Service announcements and External channel turned off notifications.
Only Specific Projects
Turn on Only send container notifications from specific projects to send container notifications from the projects you pick only. Credit, rental, and member notifications are sent regardless of project.Message Options
- Message language: Korean or English. It defaults to the organization’s region (English for the US, Korean otherwise) and is stored per channel, so changing the organization’s region later does not change existing channels. Times in messages are shown in KST for Korean and UTC for English.
- Mention @here on failure alerts: Adds
@hereto failure (red) alerts in Slack and Discord channels. Off by default. - Include log lines and deployment failure reasons: Includes the matching lines of a log alert and the cause of a deploy failure in the message. On by default. When off, only the title and the console link are sent — turn it off if your logs may contain sensitive values.
What Messages Look Like
In Slack and Discord, each notification arrives as a single card.- The card color shows severity — failure (red), warning (amber), success (green), info (gray).
- Below the title and text, the matching log lines of a log alert (up to 5) or the cause of a deploy failure appear in a code block.
- Links such as View container, View logs, and View billing take you to the right console page.
- The footer reads
AirCloud · {organization name}.
Receiving Webhooks
Request
AirCloud sends aPOST request to the channel URL for each notification.
Body
Verify the Signature
Webhooks are signed according to Standard Webhooks. The signature is the HMAC-SHA256 of{webhook-id}.{webhook-timestamp}.{body} with your signing secret, base64-encoded and prefixed with v1,. The key is the base64 string after whsec_, decoded.
- Verify against the raw request bytes. Parsing and re-serializing the JSON breaks the signature.
- Reject requests whose
webhook-timestampis too old (for example, more than 5 minutes) to prevent replay attacks. - The official libraries for each language verify signatures for you.
Python
A test message sent from the connect dialog before saving has no signing secret yet, so it arrives without a
webhook-signature header. Test messages from a saved channel are signed.Responses and Retries
- Success: Any 2xx response counts as delivered. Respond within 10 seconds. Redirects are not followed.
- Retries: If a delivery fails or gets no response, it is retried after 30 seconds, 2 minutes, 10 minutes, 30 minutes, 1 hour, and 2 hours (up to 7 attempts including the first, about 4 hours in total). Deliveries older than 6 hours are no longer sent.
- Retry-After: A
Retry-Afterheader is honored (up to 30 minutes). - Deduplication: The same notification can arrive more than once. Deduplicate on
webhook-id.
Delivery History and Resending
Click a channel to open its details: the on/off switch, test messages, and recent deliveries.- Recent deliveries: Shows the latest 50, and history is kept for 30 days. Each is Pending, Sent, Failed, or Skipped.
- Retry: Only failed deliveries can be resent. A resend starts the retry cycle over, with the same
webhook-id. - Test messages are not recorded in the history and never include
@here.
When a Channel Is Turned Off Automatically
AirCloud turns a channel off when it can no longer deliver to it.- When a channel is turned off, the whole organization gets an External channel turned off notification, and the Organization Owner gets an email.
- Pending deliveries at that moment become Skipped. Notifications that occur while a channel is off are not sent later, even after you turn it back on.
- To turn it back on, use the switch in the channel’s details. Changing the URL alone does not turn a channel back on.
- Turning a channel off or deleting it yourself sends no notification.
Regenerate the Signing Secret
Regenerate signing secret in a webhook channel’s details issues a new secret. The current secret stops working immediately — there is no grace period. Signature checks fail until the receiving server uses the new secret, so update it right away. Pending retries are signed with the new secret too.Permissions
URL Restrictions
- Only
https://URLs are allowed, and URLs cannot contain a user name or password. - Internal names such as
localhost,.local, and.internal, and private, loopback, and link-local IP addresses are not allowed. - The address is checked again on every delivery. If it resolves to a private address, the delivery is not sent and the channel is turned off.
Disconnect a Channel
Disconnect in a channel’s details deletes the channel. Its delivery history is deleted too, and it is removed from any log alert rules that used it.Related Documentation
Notifications
See what you can be notified about and choose console, desktop, and email delivery.
Log Alerts
Alert on container log conditions and send them to external channels.

