Edge Developer Platform
  • Pages
    • Product Introduction
    • Quick Start
      • Agent Development
      • Importing a Git Repository
      • Starting From a Template
      • Direct Upload
      • Start with AI
    • Framework Guide
      • Agent
      • Frontends
        • Vite
        • React
        • Vue
        • Hugo
        • Other Frameworks
      • Backends
      • Full-stack
        • Next.js
        • Nuxt
        • Astro
        • React Router
        • SvelteKit
        • TanStack Start
        • Vike
      • Custom 404 Page
    • Project Guide
      • Project Management
      • edgeone.json
      • Configuring Cache
      • Building Output Configuration
      • Error Codes
    • Build Guide
    • Deployment Guide
      • Overview
      • Create Deploys
      • Manage Deploys
      • Deploy Button
      • Using Github Actions
      • Using Gitlab CI/CD
      • Using CNB Plugin
      • Using IDE PlugIn
      • Using CodeBuddy IDE
    • Domain Management
      • Overview
      • Custom Domain
      • HTTPS Configuration
        • Overview
        • Apply for Free Certificate
        • Using Managed SSL Certificate
      • Configure DNS CNAME Record
    • Observability
      • Overview
      • Metric Analysis
      • Log Analysis
    • Functions
      • Overview
      • Edge Functions
      • Cloud Functions
        • Overview
        • Node.js
        • Python
        • Go
    • Agents
      • Overview
      • Quick Start
      • Conversation Storage
      • Observability
      • Sandbox Tool
        • Overview
        • Using the Agent Framework
        • Sandbox Atomic API
        • Network Search Tool
      • Agent Authentication
    • Models
      • Overview
      • Models and Vendors
        • Overview
        • Using Vendor Keys
          • OpenAI
          • Anthropic
          • Google AI Studio
          • DeepSeek
          • MiniMax
          • Hunyuan
          • Zhipu
          • MoonShot AI
      • FAQs
    • Storage
      • Overview
      • KV
      • Blob
    • Middleware
    • AI-Native Development
      • Skills
      • MCP
    • Copilot
      • Overview
      • Quick Start
    • API Token
    • EdgeOne CLI
    • Message Notification
    • Integration Guide
      • AI
        • Dialogue Large Models Integration
        • Large Models for Images Integration
      • Database
        • Supabase Integration
        • Pages KV Integration
      • Ecommerce
        • Shopify Integration
        • WooCommerce Integration
      • Payment
        • Stripe Integration
        • Integrating Paddle
      • CMS
        • WordPress Integration
        • Contentful Integration
        • Sanity Integration
        • Payload Integration
      • Authentication
        • Supabase Integration
        • Clerk Integration
    • Best Practices
      • Adding an AI Chat Assistant to a Website
      • AI Dialogue Deployment: Deploy Project with One Sentence Using Skill
      • Using General Large Model to Quickly Build AI Application
      • Use the DeepSeek model to quickly build a conversational AI site
      • Building an Ecommerce Platform with Shopify
      • Building a SaaS Site Using Supabase and Stripe
      • Building a Company Brand Site Quickly
      • How to Quickly Build a Blog Site
    • Migration Guides
      • Migrating from Vercel to EdgeOne Pages
      • Migrating from Cloudflare Pages to EdgeOne Pages
      • Migrating from Netlify to EdgeOne Pages
    • Troubleshooting
    • FAQs
    • Limits
    • Pricing
    • Contact Us
    • Release Notes

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
Select the Event Type to listen, supporting multiple selections.
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.1
Host: example.com
Content-Type: application/json
Accept: application/json, text/plain, */*
Accept-Encoding: gzip, compress, deflate, br
Authorization: Bearer xxx
Connection: 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 unconfigured
const 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 database
return { 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 types
default:
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 check
if (request.method === 'GET') {
return new Response(JSON.stringify({ status: 'ok', message: 'Webhook endpoint is ready' }), {
headers: { 'Content-Type': 'application/json' }
});
}

// 2. Only POST is accepted
if (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 body
const payload = await request.json();
const eventType = payload.eventType || payload.type;

// 5. Event handling
const result = handleEvent(eventType, payload);

// 6. Return success response
return 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' }
});
}
}