Message Notification
Message Notification is an event push feature provided by EdgeOne Makers. When a specific event occurs in your project, Makers sends you notifications through various channels (in-site messages, email, SMS) or via Webhook, helping you stay informed about your project's operational status in a timely manner.
Supported Event Types
Makers supports notifications for the following event types:
Category | Event | Field | Description |
Domain | Domain name configuration | domain.added | Trigger when adding a custom domain (Temporary not including CNAME configuration, certificate configuration and delete event) |
Deployment | Deployment failed | deployment.failed | Trigger when an error occurs during deployment |
| Deployment successful | deployment.succeeded | Trigger when deployment completed and successful |
| Deployment created | deployment.created | Trigger when a new deployment starts |
Project | Delete Project | project.deleted | Trigger when a project is deleted |
| Update project | project.settings.updated | Trigger when project setting is modified |
| Create project | project.created | Trigger when new project is created |
Use Notifications to Receive Messages
The notification feature allows you to receive Makers events via Message Center, email, or SMS. Refer to the following steps for the operation:
1. You can use a Gmail Account to quickly register and log in to the Tencent Cloud console.
2. Go to the Makers settings, click Notification, turn on the notification setting switch, and select the notification events you want to receive.

Once enabled, the notification feature includes the following notification channels:
Message Center - Receive notifications in the Tencent Cloud console.
Mailbox - Receive email notifications.
SMS - Receive SMS notifications.
For each event type, you can separately select whether to receive notifications.
Using Webhook for Custom Push Channel
Webhook allows you to push EdgeOne Makers events to your own server or a third-party service in real time. When a specific event occurs in Makers, an HTTP POST request containing the complete event data is sent to your configured Webhook endpoint. Refer to the following steps for the operation:
1. You can use a Gmail Account to quickly register and log in to the Tencent Cloud console.
2. Go to the Ma settings, click Webhooks, and fill in the Webhook-related configurations. Refer to the following for configuration reference:
Configuration Item | Description |
Project | All items: Webhook takes effect for all projects under the account. Designated Project: Webhook is only applicable to select projects. |
Event | |
Webhook URL (required): The domain names or IP addresses of your server to receive event notifications. Key token (Optional): Used to validate requests source. Leave empty to be automatically generated by the platform. |

Related Reference
Webhook Endpoint Configuration Explanation
What Is an Endpoint
An endpoint is a URL on your server that is used to receive Webhook requests from Makers.
Request Format
When an event occurs, Makers sends an HTTP POST request to your endpoint.
HTTP request header:
POST /webhooks/edgeone-pages HTTP/1.1Host: example.comContent-Type: application/jsonAccept: application/json, text/plain, */*Accept-Encoding: gzip, compress, deflate, brAuthorization: Bearer xxxConnection: keep-alive
Request body example (JSON format):
Event example for deployment (deployment.created):
{"eventType": "deployment.created","appId": "app-123","projectId": "project-456","deploymentId": "deploy-789","projectName": "my-project","repoBranch": "main","timestamp": "2024-01-13T12:34:56.789Z"}
Event example for project (project.created):
{"eventType": "project.created","appId": "app-123","projectId": "project-456","projectName": "my-project","repoUrl": "https://github.com/user/repo","timestamp": "2024-01-13T12:34:56.789Z"}
Event example for domain name (domain.added):
{"eventType": "domain.added","appId": "app-123","projectId": "project-456","projectName": "my-project","domainName": "example.com","domainId": "domain-789","timestamp": "2024-01-13T12:34:56.789Z"}
Field description:
Field | Type | Description | Usage Scenario |
eventType | string | Event type | ALL (all events) |
appId | string | account ID | ALL (all events) |
projectId | string | project ID | ALL (all events) |
timestamp | string | Event occurrence timestamp (ISO 8601 format). | ALL (all events) |
projectName | string | Project Name | ALL (all events) |
deploymentId | string | Deployment ID | Deployment event |
repoBranch | string | Git branch | Deployment event |
repoUrl | string | Repository URL | Project event |
domainName | string | Domain name | Domain name event |
domainId | string | Domain name ID | Domain name event |
Note:
If your endpoint returns a non-2xx status code or is inaccessible, Makers automatically retries up to three times using an exponential backoff policy.
How to Achieve an Endpoint
You need to implement an endpoint on your own server to receive Webhook requests. The following is a Cloud Functions example:
/*** API path: /webhooks/demo*//*** Verify Bearer Token (optional)*/function verifyToken(authHeader, expectedToken) {if (!expectedToken) return true; // skip verification if unconfiguredconst parts = authHeader?.split(' ');if (parts?.length !== 2 || parts[0] !== 'Bearer') return false;return parts[1] === expectedToken;}/*** Handle webhook events*/function handleEvent(eventType, data) {switch (eventType) {case 'deployment.created':console.log(`🚀 Deployment created: ${data.projectName} (${data.repoBranch})`);// Add your business logic herein// For example: send notifications, update databasereturn { message: 'Deployment event processed', projectName: data.projectName };case 'project.created':console.log(`📁 Project created: ${data.projectName}`);return { message: 'Project event processed', projectName: data.projectName };// For more events, see supported event typesdefault:console.log(`⚠️ Unknown event: ${eventType}`);return { message: 'Unknown event type', eventType };}}/*** Cloud Function portal*/export async function onRequest(context) {const { request, env } = context;// 1. Health checkif (request.method === 'GET') {return new Response(JSON.stringify({ status: 'ok', message: 'Webhook endpoint is ready' }), {headers: { 'Content-Type': 'application/json' }});}// 2. Only POST is acceptedif (request.method !== 'POST') {return new Response(JSON.stringify({ error: 'Method not allowed' }), {status: 405,headers: { 'Content-Type': 'application/json' }});}try {// 3. Verify Bearer Token (optional)const authHeader = request.headers.get('authorization');const webhookToken = env.WEBHOOK_TOKEN;if (webhookToken && !verifyToken(authHeader, webhookToken)) {return new Response(JSON.stringify({ error: 'Unauthorized' }), {status: 401,headers: { 'Content-Type': 'application/json' }});}// 4. Parse the request bodyconst payload = await request.json();const eventType = payload.eventType || payload.type;// 5. Event handlingconst result = handleEvent(eventType, payload);// 6. Return success responsereturn new Response(JSON.stringify({success: true,eventType,result,timestamp: new Date().toISOString()}), {status: 200,headers: { 'Content-Type': 'application/json' }});} catch (error) {console.error('Handle error:', error);return new Response(JSON.stringify({error: 'Internal server error',message: error.message}), {status: 500,headers: { 'Content-Type': 'application/json' }});}}