The SendGrid Event Webhook sends email event data as SendGrid processes it. This means you can receive data in nearly real-time, making it ideal to integrate with logging or monitoring systems.
Because the Event Webhook delivers data to your systems, it is also well-suited to backing up and storing event data within your infrastructure to meet your own data access and retention needs.
You can think about the types of events provided by the Event Webhook in two categories: deliverability events and engagement events.
Both types of events are important and should be monitored to understand the overall health of your email program. The Webhooks API allows you to configure your Event Webhook configurations.
Currently, data staged to be be posted through the webhooks is stored in the US.
This endpoint allows you to create a new Event Webhook.
When creating a webhook, you will provide a URL where you want the webhook to send POST requests, and you will select which events you want to receive in those request. See the Event Webhook Reference for details about each event type.
When your webhook is succesfully created, you will receive a webhook id
in the response returned by this endpoint. You can use that ID to update the webhook's settings, delete the webhook, enable or disable signature verification for the webhook, and, if signature verification is enabled, retrieve the webhook's public key.
You may also assign an optional friendly name to each of your webhooks. The friendly name is for convenience only and should not be used to programmatically differentiate your webhooks because it does not need to be unique. Use the webhook ID to reliably differentiate among your webhooks.
You can optionally configure OAuth verification for your webhook at the time of creation by passing the appropriate values in the oauth_client_id
, oauth_client_secret
, and oauth_token_url
properties. You can enable or disable OAuth for the webhook after creation with the Update an Event Webhook operation.
You may share one OAuth configuration across all your webhooks or create unique credentials for each. See our webhook security documentation for details about OAuth and the Event Webhook.
Enabling signature verification for your webhook is a separate process and cannot be done at the time of creation with this endpoint. You can use the webhook ID to enable or disable signature verification with the endpoint dedicated for that operation.
Bearer <<YOUR_API_KEY_HERE>>
The on-behalf-of
header allows you to make API calls from a parent account on behalf of the parent's Subusers or customer accounts. You will use the parent account's API key when using this header. When making a call on behalf of a customer account, the property value should be "account-id" followed by the customer account's ID (e.g., on-behalf-of: account-id <account-id>
). When making a call on behalf of a Subuser, the property value should be the Subuser's username (e.g., on-behalf-of: <subuser-username>
). See On Behalf Of for more information.
application/json
Set this property to true
to enable the Event Webhook or false
to disable it.
Set this property to the URL where you want the Event Webhook to send event data.
Set this property to true
to receive group resubscribe events. Group resubscribes occur when recipients resubscribe to a specific unsubscribe group by updating their subscription preferences. You must enable Subscription Tracking to receive this type of event.
Set this property to true
to receive delivered events. Delivered events occur when a message has been successfully delivered to the receiving server.
Set this property to true
to receive group unsubscribe events. Group unsubscribes occur when recipients unsubscribe from a specific unsubscribe group either by direct link or by updating their subscription preferences. You must enable Subscription Tracking to receive this type of event.
Set this property to true
to receive spam report events. Spam reports occur when recipients mark a message as spam.
Set this property to true
to receive bounce events. A bounce occurs when a receiving server could not or would not accept a message.
Set this property to true
to receive deferred events. Deferred events occur when a recipient's email server temporarily rejects a message.
Set this property to true
to receive unsubscribe events. Unsubscribes occur when recipients click on a message's subscription management link. You must enable Subscription Tracking to receive this type of event.
Set this property to true
to receive processed events. Processed events occur when a message has been received by Twilio SendGrid and the message is ready to be delivered.
Set this property to true
to receive open events. Open events occur when a recipient has opened the HTML message. You must enable Open Tracking to receive this type of event.
Set this property to true
to receive click events. Click events occur when a recipient clicks on a link within the message. You must enable Click Tracking to receive this type of event.
Set this property to true
to receive dropped events. Dropped events occur when your message is not delivered by Twilio SendGrid. Dropped events are accomponied by a reason
property, which indicates why the message was dropped. Reasons for a dropped message include: Invalid SMTPAPI header, Spam Content (if spam checker app enabled), Unsubscribed Address, Bounced Address, Spam Reporting Address, Invalid, Recipient List over Package Quota.
Optionally set this property to a friendly name for the Event Webhook. A friendly name may be assigned to each of your webhooks to help you differentiate them. The friendly name is for convenience only. You should use the webhook id
property for any programmatic tasks.
Set this property to the OAuth client ID that SendGrid will pass to your OAuth server or service provider to generate an OAuth access token. When passing data in this property, you must also include the oauth_token_url
property.
Set this property to the OAuth client secret that SendGrid will pass to your OAuth server or service provider to generate an OAuth access token. This secret is needed only once to create an access token. SendGrid will store the secret, allowing you to update your client ID and Token URL without passing the secret to SendGrid again. When passing data in this field, you must also include the oauth_client_id
and oauth_token_url
properties.
Set this property to the URL where SendGrid will send the OAuth client ID and client secret to generate an OAuth access token. This should be your OAuth server or service provider. When passing data in this field, you must also include the oauth_client_id
property.
Indicates if the Event Webhook is enabled.
The URL where SendGrid will send event data.
Indicates if the webhook is configured to send account status change events related to compliance action taken by SendGrid.
Indicates if the webhook is configured to send group resubscribe events. Group resubscribes occur when recipients resubscribe to a specific unsubscribe group by updating their subscription preferences. You must enable Subscription Tracking to receive this type of event.
Indicates if the webhook is configured to send delivered events. Delivered events occur when a message has been successfully delivered to the receiving server.
Indicates if the webhook is configured to send group unsubscribe events. Group unsubscribes occur when recipients unsubscribe from a specific unsubscribe group either by direct link or by updating their subscription preferences. You must enable Subscription Tracking to receive this type of event.
Indicates if the webhook is configured to send spam report events. Spam reports occur when recipients mark a message as spam.
Indicates if the webhook is configured to send bounce events. A bounce occurs when a receiving server could not or would not accept a message.
Indicates if the webhook is configured to send deferred events. Deferred events occur when a recipient's email server temporarily rejects a message.
Indicates if the webhook is configured to send unsubscribe events. Unsubscribes occur when recipients click on a message's subscription management link. You must enable Subscription Tracking to receive this type of event.
Indicates if the webhook is configured to send processed events. Processed events occur when a message has been received by Twilio SendGrid and is ready to be delivered.
Indicates if the webhook is configured to send open events. Open events occur when a recipient has opened the HTML message. You must enable Open Tracking to receive this type of event.
Indicates if the webhook is configured to send click events. Click events occur when a recipient clicks on a link within the message. You must enable Click Tracking to receive this type of event.
Indicates if the webhook is configured to send dropped events. Dropped events occur when your message is not delivered by Twilio SendGrid. Dropped events are accomponied by a reason
property, which indicates why the message was dropped. Reasons for a dropped message include: Invalid SMTPAPI header, Spam Content (if spam checker app enabled), Unsubscribed Address, Bounced Address, Spam Reporting Address, Invalid, Recipient List over Package Quota.
An optional friendly name assigned to the Event Webhook to help you differentiate it. The friendly name is for convenience only. You should use the webhook id
property for any programmatic tasks.
A unique string used to identify the webhook. A webhook's ID is generated programmatically and cannot be changed after creation. You can assign a natural language identifier to your webhook using the friendly_name
property.
An ISO 8601 timestamp in UTC timezone when the Event Webhook was created. If a Webhook's created_date
is null
, it is a legacy Event Webook, which means it is your oldest Webhook.
An ISO 8601 timestamp in UTC timezone when the Event Webhook was last modified.
The OAuth client ID SendGrid sends to your OAuth server or service provider to generate an OAuth access token.
The URL where SendGrid sends the OAuth client ID and client secret to generate an access token. This should be your OAuth server or service provider.
1const client = require("@sendgrid/client");2client.setApiKey(process.env.SENDGRID_API_KEY);34const data = {5enabled: true,6url: "https://example.com/webhook-endpoint",7group_resubscribe: true,8delivered: false,9group_unsubscribe: true,10spam_report: true,11bounce: true,12deferred: true,13unsubscribe: true,14processed: false,15open: true,16click: true,17dropped: true,18friendly_name: "Enagement Webhook",19};2021const request = {22url: `/v3/user/webhooks/event/settings`,23method: "POST",24body: data,25};2627client28.request(request)29.then(([response, body]) => {30console.log(response.statusCode);31console.log(response.body);32})33.catch((error) => {34console.error(error);35});