Skip to content

Notification schemas

This page provides schema references for the notifications that Nylas v3 sends.

Keep in mind

  • Nylas guarantees “at least once” delivery of webhooks. You might receive duplicate webhook notifications because of the provider’s behavior (for example, when Google and Microsoft Graph send upserts).
  • You can send a request to the Webhook Mock Payload endpoint to get sample notification payloads on demand.

Grant notifications

Grant Created notifications

Nylas sends a grant.created notification when a user successfully authenticates with your Nylas application for the first time.

{
"specversion": "1.0",
"type": "grant.created",
"source": "/nylas/system",
"id": "mock-id",
"time": 1234567890,
"data": {
"application_id": "NYLAS_APPLICATION_ID",
"object": {
"code": 25012,
"grant_id": "NYLAS_GRANT_ID",
"integration_id": "NYLAS_INTEGRATION_ID",
"login_id": "mock-login-id",
"provider": "google"
}
}
}

Grant Updated notifications

Nylas sends a grant.updated notification when a grant is modified, updated, or re-authenticated.

{
"specversion": "1.0",
"type": "grant.updated",
"source": "/nylas/system",
"id": "mock-id",
"time": 123456789,
"data": {
"application_id": "NYLAS_APPLICATION_ID",
"object": {
"code": 25014,
"grant_id": "NYLAS_GRANT_ID",
"integration_id": "NYLAS_INTEGRATION_ID",
"provider": "microsoft",
"reauthentication_flag" : false
}
}
}

Grant Deleted notifications

Nylas sends a grant.deleted notification when a grant is deleted because of a Delete Grant request.

{
"specversion": "1.0",
"type": "grant.deleted",
"source": "/nylas/system",
"id": "mock-id",
"time": 1234567890,
"data": {
"application_id": "NYLAS_APPLICATION_ID",
"object": {
"code": 25013,
"grant_id": "NYLAS_GRANT_ID",
"integration_id": "NYLAS_INTEGRATION_ID",
"provider": "google"
}
}
}

Grant Expired notifications

Nylas sends a grant.expired notification when a grant’s credentials expire, usually because of a change in the user’s password on the provider.

{
"specversion": "1.0",
"type": "grant.expired",
"source": "/nylas/system",
"id": "mock-id",
"time": 1234567890,
"data": {
"application_id": "NYLAS_APPLICATION_ID",
"object": {
"code": 25009,
"grant_id": "NYLAS_GRANT_ID",
"integration_id": "NYLAS_INTEGRATION_ID",
"login_id": "mock-login-id",
"provider": "google"
}
}
}

Calendar notifications

Calendar Created notifications

Nylas sends a calendar.created notification when a user creates a calendar.

{
"specversion": "1.0",
"type": "calendar.created",
"source": "/google/events/realtime",
"id": "<WEBHOOK_ID>",
"data": {
"application_id": "<NYLAS_APPLICATION_ID>",
"object": {
"grant_id": "<NYLAS_GRANT_ID>",
"description": "Personal calendar",
"id": "<CALENDAR_ID>",
"metadata": {
"key1": "all-meetings",
"key2": "on-site"
},
"is_primary": false,
"location": "New York",
"name": "Personal",
"object": "calendar",
"read_only": false,
"timezone": "America/New_York",
"is_owned_by_user": false
}
}
}

Calendar Updated notifications

Nylas sends a calendar.updated notification when the name, description, location or timezone of a calendar changes.

{
"specversion": "1.0",
"type": "calendar.updated",
"source": "/google/events/realtime",
"id": "<WEBHOOK_ID>",
"data": {
"application_id": "<NYLAS_APPLICATION_ID>",
"object": {
"grant_id": "<NYLAS_GRANT_ID>",
"description": "Personal calendar",
"id": "<CALENDAR_ID>",
"metadata": {
"key1": "all-meetings",
"key2": "on-site"
},
"is_primary": false,
"location": "New York",
"name": "Personal",
"object": "calendar",
"read_only": false,
"timezone": "America/New_York",
"is_owned_by_user": false
}
}
}

Calendar Deleted notifications

Nylas sends a calendar.deleted notification when a user deletes a calendar.

{
"specversion": "1.0",
"type": "calendar.deleted",
"source": "/google/events/incremental",
"id": "mock-id",
"data": {
"application_id": "NYLAS_APPLICATION_ID",
"object": {
"grant_id": "NYLAS_GRANT_ID",
"is_primary": false,
"name": "Mock Calendar",
"object": "calendar",
"read_only": false,
"timezone": "America/Los_Angeles",
"is_owned_by_user": false
}
}
}

Event notifications

Event Created notifications

Nylas sends an event.created notification when an event is created on a user’s calendar.

{
"specversion": "1.0",
"type": "event.created",
"source": "/google/events/realtime",
"id": "<WEBHOOK_ID>",
"time": 1695415185,
"webhook_delivery_attempt": 1,
"data": {
"application_id": "<NYLAS_APPLICATION_ID>",
"object": {
"account_id": "<NYLAS_V2_ACCOUNT_ID>",
"busy": true,
"calendar_id": "<CALENDAR_ID>",
"conferencing": {
"details": {
"meeting_code": "<MEETING_CODE>",
"phone": ["<MEETING_PHONE_NUMBER>"],
"pin": "<MEETING_PIN>",
"url": "<MEETING_URL>"
},
"provider": "<PROVIDER>"
},
"created_at": 1545355476,
"creator": {
"email": "[email protected]",
"name": "Leyah Miller"
},
"description": "<p>Weekly one-on-one.</p>",
"grant_id": "<NYLAS_GRANT_ID>",
"hide_participants": true,
"html_link": "<EVENT_LINK>",
"ical_uid": "<ICAL_UID>",
"id": "<EVENT_ID>",
"location": "Room 103",
"metadata": {
"key1": "all-meetings",
"key2": "on-site"
},
"object": "event",
"occurrences": ["<EVENT_ID>"],
"organizer": {
"email": "[email protected]",
"name": "Leyah Miller"
},
"participants": [{
"email": "[email protected]",
"status": "yes"
}],
"read_only": true,
"recurrence": ["RRULE:FREQ=WEEKLY;WKST=SU;UNTIL=20230420T065959Z;INTERVAL=2"],
"reminders": {
"overrides": [],
"use_default": true
},
"resources": [],
"sequence": 17,
"status": "confirmed",
"title": "One-on-one",
"updated_at": 1724359724,
"visibility": "default",
"when": {
"end_time": 1680800100,
"end_timezone": "America/Los_Angeles",
"object": "timespan",
"start_time": 1680796800,
"start_timezone": "America/Los_Angeles"
}
}
}
}

Event Updated notifications

Nylas sends an event.updated notification when an event is modified or updated. Nylas adds the occurrences parameter to the notification if the updated event is a single occurrence of a recurring Google event.

If the event is a single occurrence of a recurring event, Nylas includes the master_event_id field, as in the example below.

{
"specversion": "1.0",
"type": "event.updated",
"source": "/google/events/realtime",
"id": "<WEBHOOK_ID>",
"time": 1732575192,
"webhook_delivery_attempt": 1,
"data": {
"application_id": "<NYLAS_APPLICATION_ID>",
"object": {
"account_id": "<NYLAS_V2_ACCOUNT_ID>",
"busy": true,
"calendar_id": "<CALENDAR_ID>",
"cancelled_occurrences": ["<EVENT_ID>"],
"conferencing": {
"details": {
"url": "<MEETING_URL>"
},
"provider": "<PROVIDER>"
},
"created_at": 1732573232,
"description": "Weekly one-on-one.",
"grant_id": "<NYLAS_GRANT_ID>",
"hide_participants": false,
"html_link": "<EVENT_LINK>",
"ical_uid": "<ICAL_UID>",
"id": "<EVENT_ID>",
"location": "Room 103",
"object": "event",
"metadata": {
"key1": "all-meetings",
"key2": "on-site"
},
"occurrences": ["<EVENT_ID>"],
"organizer": {
"email": "[email protected]",
"name": "Nyla"
},
"participants": [{
"email": "[email protected]",
"name": "Leyah Miller",
"status": "noreply"
}],
"read_only": false,
"recurrence": ["RRULE:FREQ=WEEKLY;UNTIL=20241219T000000Z;BYDAY=TH"],
"reminders": {
"overrides": [],
"use_default": true
},
"resources": [],
"status": "confirmed",
"title": "One-on-one",
"updated_at": 1732575179,
"visibility": "public",
"when": {
"end_time": 1732811400,
"end_timezone": "EST5EDT",
"object": "timespan",
"start_time": 1732809600,
"start_timezone": "EST5EDT"
}
}
}
}

Event Deleted notifications

Nylas sends an event.deleted notification when an event is deleted from a user’s calendar.

{
"specversion": "1.0",
"type": "event.deleted",
"source": "/google/events/incremental",
"id": "mock-id",
"data": {
"application_id": "NYLAS_APPLICATION_ID",
"object": {
"grant_id": "NYLAS_GRANT_ID",
"calendar_id": "CALENDAR_ID",
"id": "mock-data-id",
"master_event_id": "mock-recurring-event-master-event-id",
"object": "event"
}
}
}

Scheduler notifications

Booking Created notifications

Nylas sends a booking.created notification when a guest creates a booking.

{
"specversion": "1.0",
"type": "booking.created",
"source": "/nylas/passthru",
"id": "mock-id",
"time": 1725895310,
"data": {
"application_id":"NYLAS_APPLICATION_ID",
"grant_id":"NYLAS_GRANT_ID",
"object":{
"booking_id":"NYLAS_BOOKING_ID",
"booking_info":{
"event_id":"NYLAS_EVENT_ID",
"start_time":1719842400,
"end_time":1719846000,
"participants":[
{
"email":"[email protected]",
"name":"Mock Participant 1"
},
{
"email":"[email protected]",
"name":"Mock Participant 2"
}
],
"additional_fields":{},
"hide_cancellation_options":false,
"hide_rescheduling_options":false,
"title":"My test event",
"duration":60,
"location":"Mock Location",
"organizer_timezone":"America/Toronto",
"guest_timezone":"America/New_York"
},
"configuration_id":"NYLAS_CONFIGURATION_ID",
"booking_ref":"uq935BNHTnK35Y4TFXisQIOucgjjQE6rkCH177-IvsI=",
"object": "booking"
}
}
}

Booking Pending notifications

Nylas sends a booking.pending notification when a guest schedules a pending booking that requires confirmation.

{
"specversion": "1.0",
"type": "booking.pending",
"source": "/nylas/passthru",
"id": "mock-id",
"data": {
"application_id":"NYLAS_APPLICATION_ID",
"grant_id":"NYLAS_GRANT_ID",
"object":{
"configuration_id":"NYLAS_CONFIGURATION_ID",
"booking_id":"NYLAS_BOOKING_ID",
"booking_ref":"uq935BNHTnK35Y4TFXisQIOucgjjQE6rkCH177-IvsI=",
"booking_type":"organizer-confirmation",
"booking_info":{
"event_id":"NYLAS_EVENT_ID",
"start_time":1719842400,
"end_time":1719846000,
"participants":[
{
"email":"[email protected]",
"name":"Mock Participant 1"
},
{
"email":"[email protected]",
"name":"Mock Participant 2"
}
],
"additional_fields":null,
"hide_cancellation_options":false,
"hide_rescheduling_options":false,
"title":"[PENDING] My test event",
"duration":60,
"location":"Mock Location",
"organizer_timezone":"America/Toronto",
"guest_timezone":"America/New_York"
}
}
}
}

Booking Rescheduled notifications

Nylas sends a booking.rescheduled notification when a guest reschedules a booking.

{
"specversion": "1.0",
"type": "booking.rescheduled",
"source": "/nylas/passthru",
"id": "mock-id",
"time": 1725895310,
"data": {
"application_id":"NYLAS_APPLICATION_ID",
"grant_id":"NYLAS_GRANT_ID",
"object":{
"booking_id":"NYLAS_BOOKING_ID",
"booking_info":{
"event_id":"NYLAS_EVENT_ID",
"start_time":1719842400,
"end_time":1719846000,
"participants":[
{
"email":"[email protected]",
"name":"Mock Participant 1"
},
{
"email":"[email protected]",
"name":"Mock Participant 2"
}
],
"additional_fields":{},
"hide_cancellation_options":false,
"hide_rescheduling_options":false,
"title":"My test event",
"duration":60,
"location":"Mock Location",
"organizer_timezone":"America/Toronto",
"guest_timezone":"America/New_York",
"old_end_time": 1725906600,
"old_start_time": 1725904800
},
"configuration_id":"NYLAS_CONFIGURATION_ID",
"booking_ref":"uq935BNHTnK35Y4TFXisQIOucgjjQE6rkCH177-IvsI=",
"object": "booking"
}
}
}

Booking Deleted notifications

Nylas sends a booking.cancelled notification when a guest cancels a booking.

{
"specversion": "1.0",
"type": "booking.cancelled",
"source": "/nylas/passthru",
"id": "mock-id",
"time": 1725895310,
"data": {
"application_id":"NYLAS_APPLICATION_ID",
"grant_id":"NYLAS_GRANT_ID",
"object":{
"booking_id":"NYLAS_BOOKING_ID",
"booking_info":{
"event_id":"NYLAS_EVENT_ID",
"start_time":1719842400,
"end_time":1719846000,
"cancellation_reason": "CANCELLATION_REASON",
"participants":[
{
"email":"[email protected]",
"name":"Mock Participant 1"
},
{
"email":"[email protected]",
"name":"Mock Participant 2"
}
],
"additional_fields":{},
"hide_cancellation_options":false,
"hide_rescheduling_options":false,
"title":"My test event",
"duration":60,
"location":"Mock Location",
"organizer_timezone":"America/Toronto",
"guest_timezone":"America/New_York"
},
"configuration_id":"NYLAS_CONFIGURATION_ID",
"booking_ref":"uq935BNHTnK35Y4TFXisQIOucgjjQE6rkCH177-IvsI=",
"object": "booking"
}
}
}

Booking reminder notifications

Nylas sends a booking.reminder notification at the scheduled reminder time.

{
"specversion": "1.0",
"id": "975b4de9-41df-45b8-8827-82395ea41176",
"time": 1724850847,
"type": "booking.reminder",
"source": "/nylas/passthru",
"data": {
"application_id": "default-application",
"object": {
"configuration_id": "config-id",
"booking_id": "booking-id",
"booking_info": {
"event_id": "event-id",
"start_time": 1725026400,
"end_time": 1725030000,
"participants": [
{
"email": "[email protected]",
"name": "Host"
},
{
"email": "[email protected]",
"name": "Guest"
}
],
"additional_fields": null,
"hide_cancellation_options": false,
"hide_rescheduling_options": false,
"title": "Nylas Event",
"duration": 60,
"location": "Office",
"organizer_timezone": "America/Toronto",
"guest_timezone": "",
"organizer_email": "[email protected]",
"provider": "google"
}
}
}
}

Notetaker notifications

You can subscribe to the following Notetaker triggers to be notified when changes are made:

Notetaker Created notifications

Nylas sends a notetaker.created notification when you create or schedule a Notetaker bot. If you create the bot to attend an ad-hoc meeting, Nylas omits the join_time, event.ical_uid, and event.event_id fields from the notification.

{
"specversion": "1.0",
"type": "notetaker.created",
"source": "/nylas/notetaker",
"id": "<WEBHOOK_ID>",
"time": 1737500935555,
"webhook_delivery_attempt": 0,
"data": {
"application_id": "<NYLAS_APPLICATION_ID>",
"object": {
"id": "<NOTETAKER_ID>",
"grant_id": "<NYLAS_GRANT_ID>",
"meeting_settings": {
"video_recording": true,
"audio_recording": true,
"transcription": true
},
"join_time": 1737500936450,
"calendar_id": "<CALENDAR_ID>",
"event": {
"ical_uid": "<ICAL_UID>",
"event_id": "<EVENT_ID>",
"master_event_id": "<EVENT_ID>"
},
"object": "notetaker",
"state": "scheduled"
}
}
}

Notetaker Updated notifications

Nylas sends a notetaker.updated notification when Notetaker goes through a status change (for example, it joins or leaves a meeting). The status parameter can have any of the following values:

  • attending
  • connecting
  • disconnected
  • failed_entry
  • scheduled
  • waiting_for_entry

If the bot is attending an ad-hoc meeting, Nylas omits the join_time, event.ical_uid, and event.event_id fields from the notification.

{
"specversion": "1.0",
"type": "notetaker.updated",
"source": "/nylas/notetaker",
"id": "<WEBHOOK_ID>",
"time": 1737500935555,
"webhook_delivery_attempt": 0,
"data": {
"application_id": "<NYLAS_APPLICATION_ID>",
"object": {
"id": "<NOTETAKER_ID>",
"grant_id": "<NYLAS_GRANT_ID>",
"meeting_settings": {
"video_recording": true,
"audio_recording": true,
"transcription": true
},
"join_time": 1737500936450,
"calendar_id": "<CALENDAR_ID>",
"event": {
"ical_uid": "<ICAL_UID>",
"event_id": "<EVENT_ID>",
"master_event_id": "<MASTER_EVENT_ID>"
},
"object": "notetaker",
"state": "scheduled"
}
}
}

Notetaker Meeting State notifications

Nylas sends a notetaker.meeting_state notification when the status of a Notetaker bot updates while it’s attending a meeting. Nylas starts listening for these events when the Notetaker’s status changes to connecting.

The meeting_state parameter can have any of the following values:

  • api_request: The Notetaker bot left a meeting because it received a Remove from Meeting request.
  • bad_meeting_code: The meeting isn’t active and can’t be joined.
  • dispatched: The Notetaker bot has loaded the meeting page.
  • entry_denied: The Notetaker bot’s admission request was rejected.
  • internal_error: Notetaker encountered an error.
  • kicked: The Notetaker bot was removed from the meeting by a participant.
  • no_meeting_activity: The Notetaker bot left the meeting because there was no activity from the participants (for example, all participants are silent for a period of time).
  • no_participants: The Notetaker bot left the meeting because it was the last participant in the meeting.
  • no_response: The Notetaker bot’s admission request timed out.
  • recording_active: The Notetaker bot is attending and recording a meeting.
  • waiting_for_entry: The Notetaker bot is waiting to be admitted to the meeting.
{
"specversion": "1.0",
"type": "notetaker.meeting_state",
"source": "/nylas/notetaker",
"id": "<WEBHOOK_ID>",
"time": 1737500935555,
"webhook_delivery_attempt": 0,
"data": {
"application_id": "<NYLAS_APPLICATION_ID>",
"object": {
"id": "<NOTETAKER_ID>",
"grant_id": "<NYLAS_GRANT_ID>",
"calendar_id": "<CALENDAR_ID>",
"event": {
"ical_uid": "<ICAL_UID>",
"event_id": "<EVENT_ID>",
"master_event_id": "<MASTER_EVENT_ID>"
},
"object": "notetaker",
"state": "connecting",
"meeting_state": "dispatched"
}
}
}

Notetaker Media notifications

Nylas sends a notetaker.media notification when a recording or transcription is processing, available, or deleted. Nylas starts listening for these events when the Notetaker’s status changes to disconnected.

The status parameter can have any of the following values:

  • available: A recording or transcription is available to download.
  • deleted: A recording or transcription has been deleted because of an API request or the media retention policy.
  • error: Nylas encountered an error while processing a recording.
  • processing: Nylas is processing and transcribing a recording.
{
"specversion": "1.0",
"type": "notetaker.media",
"source": "/nylas/notetaker",
"id": "<WEBHOOK_ID>",
"time": 1737500935555,
"webhook_delivery_attempt": 0,
"data": {
"application_id": "<NYLAS_APPLICATION_ID>",
"object": {
"id": "<NOTETAKER_ID>",
"object": "notetaker",
"state": "available",
"media": {
"recording": "<RECORDING_URL>",
"transcript": "<TRANSCRIPT_URL>"
}
}
}
}

Notetaker Deleted notifications

Nylas sends a notetaker.deleted notification when a Notetaker bot is deleted, an event that included a scheduled Notetaker is cancelled or deleted, or a Notetaker’s settings are null. If the bot was created for an ad-hoc meeting, Nylas omits the event.ical_uid and event.event_id fields from the notification.

{
"specversion": "1.0",
"type": "notetaker.deleted",
"source": "/nylas/notetaker",
"id": "<WEBHOOK_ID>",
"time": 1737500935555,
"webhook_delivery_attempt": 0,
"data": {
"application_id": "<NYLAS_APPLICATION_ID>",
"object": {
"id": "<NOTETAKER_ID>",
"grant_id": "<NYLAS_GRANT_ID>",
"calendar_id": "<CALENDAR_ID>",
"event": {
"ical_uid": "<ICAL_UID>",
"event_id": "<EVENT_ID>",
"master_event_id": "<EVENT_ID>"
}
}
}
}

Message notifications

Message Created notifications

Nylas sends a message.created notification when a user creates a message.

{
"specversion": "1.0",
"type": "message.created",
"source": "/google/emails/realtime",
"id": "<WEBHOOK_ID>",
"time": 1723821985,
"webhook_delivery_attempt": 1,
"data": {
"application_id": "<NYLAS_APPLICATION_ID>",
"object": {
"attachments": [{
"content_disposition": "attachment; filename=\"image.jpg\"",
"content_id": "<CID>",
"content_type": "image/jpeg; name=\"image.jpg\"",
"filename": "image.jpg",
"grant_id": "<NYLAS_GRANT_ID>",
"id": "<ATTACHMENT_ID>",
"is_inline": false,
"size": 4860136
}],
"bcc": [{
"email": "[email protected]"
}],
"body": "<div dir=\"ltr\">Test with attachments</div>\r\n",
"cc": [{
"email": "[email protected]"
}],
"date": 1723821981,
"folders": ["SENT"],
"from": [{
"email": "[email protected]",
"name": "Nylas Swag"
}],
"grant_id": "<NYLAS_GRANT_ID>",
"id": "<MESSAGE_ID>",
"metadata": {
"key1": "all-meetings",
"key2": "on-site"
},
"object": "message",
"reply_to": [],
"snippet": "This message has an attachment.",
"starred": false,
"subject": "Let's send an attachment",
"thread_id": "<THREAD_ID>",
"to": [{
"email": "[email protected]"
}],
"unread": false
}
}
}

Message Updated notifications

Nylas sends a message.updated notification when a user modifies or updates a message.

{
"specversion": "1.0",
"type": "message.updated",
"source": "/google/emails/realtime",
"id": "<WEBHOOK_ID>",
"time": 1723821985,
"webhook_delivery_attempt": 1,
"data": {
"application_id": "<NYLAS_APPLICATION_ID>",
"object": {
"body": "<div dir=\"ltr\">Test with attachments</div>\r\n",
"cc": [{
"email": "[email protected]",
"name": "Nyla"
}],
"date": 1234567890,
"folders": ["INBOX"],
"from": [{
"email": "[email protected]",
"name": "Leyah Miller"
}],
"grant_id": "<NYLAS_GRANT_ID>",
"id": "<MESSAGE_ID>",
"metadata": {
"key1": "all-meetings",
"key2": "on-site"
},
"object": "message",
"reply_to_message_id": "<MESSAGE_ID>",
"snippet": "This message has an attachment.",
"starred": false,
"subject": "Let's send an attachment",
"thread_id": "<THREAD_ID>",
"to": [{
"email": "[email protected]"
}],
"unread": true
}
}
}

Message Send Success notifications

Nylas sends a message.send_success notification when a scheduled message is sent and delivered successfully. You need to set the send_at parameter in a message to use this trigger.

{
"specversion": "1.0",
"type": "message.send_success",
"source": "/nylas/send",
"id": "mock-id",
"time": 1234567890,
"data": {
"application_id": "NYLAS_APPLICATION_ID",
"grant_id": "NYLAS_GRANT_ID",
"object": {
"attachments": [{
"content": "HASKDJhiuahsdjlkhKJAsd=",
"content_type": "text/plain",
"filename": "myfile.txt",
"id": "mock-attachment-id",
"size": 16
}],
"bcc": [{
"email": "[email protected]",
"name": "Mock bcc name "
}],
"body": "mock-body",
"cc": [{
"email": "[email protected]",
"name": "Mock cc name"
}],
"from": [{
"email": "[email protected]"
}],
"id": "mock-id",
"reply_to": [{
"email": "[email protected]",
"name": "Mock reply to name "
}],
"schedule_id": "mock-schedule-id",
"send_at": 1234567880,
"subject": "Mock Subject",
"to": [{
"email": "[email protected]",
"name": "Mock Name"
}],
"use_draft": false
}
}
}

Message Send Failed notifications

Nylas sends a message.send_failed notification when a scheduled message is sent, but not delivered. You need to set the send_at parameter in a message to use this trigger.

{
"specversion": "1.0",
"type": "message.send_failed",
"source": "/nylas/send",
"id": "mock-id",
"time": 1234567890,
"data": {
"application_id": "NYLAS_APPLICATION_ID",
"grant_id": "NYLAS_GRANT_ID",
"object": {
"attachments": [{
"content": "HASKDJhiuahsdjlkhKJAsd=",
"content_type": "text/plain",
"filename": "myfile.txt",
"id": "mock-attachment-id",
"size": 16
}],
"bcc": [{
"email": "[email protected]",
"name": "Mock bcc name "
}],
"body": "mock-body",
"cc": [{
"email": "[email protected]",
"name": "Mock cc name"
}],
"from": [{
"email": "[email protected]"
}],
"id": "mock-id",
"reply_to": [{
"email": "[email protected]",
"name": "Mock reply to name "
}],
"schedule_id": "mock-schedule-id",
"send_at": 1234567880,
"subject": "Mock Subject",
"to": [{
"email": "[email protected]",
"name": "Mock Name"
}],
"use_draft": false
}
}
}

Message Bounce Detected notifications

Nylas sends a message.bounce_detected notification when a message bounces or isn’t delivered. You can subscribe to the trigger so you can notify users when a message bounces.

This trigger is currently available for Google, Microsoft Graph, iCloud, and Yahoo.

{
"specversion": "1.0",
"type": "message.bounce_detected",
"source": "/nylas/send",
"id": "mock-id",
"time": 1234567890,
"webhook_delivery_attempt" : 1,
"data": {
"application_id": "example NYLAS_APPLICATION_ID",
"grant_id": "example NYLAS_GRANT_ID",
"object": {
"bounce_reason": "An example message describing the reason for the bounce.",
"bounce_date": "Wed, 25 Jan 2023 10:18:39 -0800",
"bounced_addresses": "[email protected]",
"type": "mailbox_unavailable",
"code": 550,
"grant_id": "mock-grant-id",
"origin": {
"to": [
],
"from": ["[email protected]"],
"cc": ["[email protected]"],
"bcc": ["[email protected]"],
"subject": "example-subject",
"mime_id": "SJ0PR16MB40611C92DE872E6FC5916859D4603@SJ0PR16MB4062.namprd16.prod.outlook.com",
"id": "AAkALgAAAAAAHYQDEapmEc2byACqAC-EWg0AVKoCBvx5pk2OWnx9GWNeIAABogwSJQAB",
"original_send_at": "Mon, 16 Sep 2024 16:15:49 +0000"
}
}
}
}

Message tracking notifications

You can subscribe to the following triggers to get notifications when tracking trigger criteria are met on messages with tracking enabled:

Tracking migration

For migration purposes, you can subscribe to the following .legacy triggers to receive tracking data initiated by the v2 Email API:

The deltas array in the .legacy notifications contains v2 schema tracking data.

To use the .legacy triggers, you must:

  • Migrate the user’s v2 account to a v3 grant.
  • Set up the v3 webhook endpoints with the corresponding tracking webhook triggers.
  • Make sure that the v2 account remains active. The v2 webhook endpoints must also be active with the corresponding tracking webhook triggers.
  • Contact Nylas Support to enable the feature.

You should use v3 message tracking after you finish migrating your application.

Message Opened notifications

Nylas sends a message.opened notification when a participant first opens a tracked message.

{
"specversion": "1.0",
"type": "message.opened",
"source": "/com/nylas/tracking",
"id": "b1e59587-0f85-4dd6-9ab9-d174b97bbdc9",
"time": 1695480567,
"data": {
"application_id": "NYLAS_APPLICATION_ID",
"grant_id": "NYLAS_GRANT_ID",
"object": {
"message_data": {
"count": 1,
"timestamp": 1695480410
},
"message_id": "18ac281f237c934b",
"label": "Testing Nylas Messaged Opened Tracking",
"recents": [
{
"ip": "<IP ADDR>",
"opened_id": 0,
"timestamp": 1695480567,
"user_agent": "Mozilla/5.0"
},
{
"ip": "<IP ADDR>",
"opened_id": 1,
"timestamp": 1695480567,
"user_agent": "Mozilla/5.0"
},
{
"ip": "<IP ADDR>",
"opened_id": 2,
"timestamp": 1695480567,
"user_agent": "Mozilla/5.0"
}
],
"sender_app_id": "<app id>",
"timestamp": 1695480410
}
}
}

Nylas sends a message.link_clicked notification when a participant clicks a link in a tracked message.

{
"specversion": "1.0",
"type": "message.link_clicked",
"source": "/com/nylas/tracking",
"id": "4eabe42e-50e4-42ce-9014-0d602ed8e2ba",
"time": 1695480423,
"data": {
"application_id": "NYLAS_APPLICATION_ID",
"grant_id": "NYLAS_GRANT_ID",
"object": {
"link_data": [{
"count": 1,
"url": "https://www.example.com"
}],
"message_id": "18ac281f237c934b",
"label": "Hey, just testing",
"recents": [
{
"click_id": "0",
"ip": "<IP ADDR>",
"link_index": "0",
"timestamp": 1695480422,
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36"
},
{
"click_id": "1",
"ip": "<IP ADDR>",
"link_index": "0",
"timestamp": 1695480422,
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36"
},
{
"click_id": "2",
"ip": "<IP ADDR>",
"link_index": "0",
"timestamp": 1695480422,
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36"
}
],
"sender_app_id": "<app id>",
"timestamp": 1695480422
}
}
}

Thread Replied notifications

Nylas sends a thread.replied notification when a participant replies to a tracked email thread.

{
"specversion": "1.0",
"type": "thread.replied",
"source": "/com/nylas/tracking",
"id": "d67b0806-b263-4fca-b297-c62478a66e01",
"time": 1696007157,
"data": {
"application_id": "NYLAS_APPLICATION_ID",
"grant_id": "NYLAS_GRANT_ID",
"object": {
"message_id": "<message-id-of-reply>",
"root_message_id": "<message-id-of-original-tracked-message>",
"label": "some-client-label",
"reply_data": {
"count": 1
},
"sender_app_id": "<app-id>",
"thread_id": "<thread-id-of-sent-message>",
"timestamp": 1696007157
}
}
}

Message Opened legacy notifications

{
"specversion": "1.0",
"type": "message.opened.legacy",
"source": "/com/nylas/v2/webhooks",
"id": "webhook_id",
"time": 1733261181,
"webhook_delivery_attempt": 1,
"data": {
"application_id": "<V3_NYLAS_APPLICATION_ID>",
"grant_id": "<V3_NYLAS_GRANT_ID>",
"object": {
"deltas": [
{
"date": 1733261154,
"object": "metadata",
"object_data": {
"account_id": "<V2_NYLAS_ACCOUNT_ID>",
"id": "<V2_WEBHOOK_ID>",
"metadata": {
"count": 1,
"message_id": "<V2_MESSAGE_ID>",
"payload": "Hello world",
"recents": [
{
"id": 0,
"ip": "ip_address",
"timestamp": 1733163186,
"user_agent": "Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko Firefox/11.0 (via ggpht.com GoogleImageProxy)"
},
],
"timestamp": 1733261154
},
"namespace_id": "<V2_NAMESPACE_ID>",
"object": "metadata"
},
"type": "message.opened"
}
],
"grant_id": "<V3_NYLAS_GRANT_ID>",
"object": "message"
}
}
}
{
"specversion": "1.0",
"type": "message.link_clicked.legacy",
"source": "/com/nylas/v2/webhooks",
"id": "webhook_id",
"time": 1733261173,
"webhook_delivery_attempt": 1,
"data": {
"application_id": "<V3_NYLAS_APPLICATION_ID>",
"grant_id": "<V3_NYLAS_GRANT_ID>",
"object": {
"deltas": [
{
"date": 1733261158,
"object": "metadata",
"object_data": {
"account_id": "<V2_NYLAS_ACCOUNT_ID>",
"id": "<V2_WEBHOOK_ID>",
"metadata": {
"link_data": [
{
"count": 8,
"url": "client_url"
}
],
"message_id": "<V2_MESSAGE_ID>",
"payload": "Hello world",
"recents": [
{
"id": 0,
"ip": "ip_address",
"link_index": 0,
"timestamp": 1733163188,
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"
}
],
"timestamp": 1733163166
},
"namespace_id": "<V2_NAMESPACE_ID>",
"object": "metadata"
},
"type": "message.link_clicked"
}
],
"grant_id": "<V3_NYLAS_GRANT_ID>",
"object": "message"
}
}
}

Thread Replied Legacy notifications

{
"specversion": "1.0",
"type": "thread.replied.legacy",
"source": "/com/nylas/v2/webhooks",
"id": "v3_webhook_id",
"time": 1733180746,
"webhook_delivery_attempt": 1,
"data": {
"application_id": "<V3_NYLAS_APPLICATION_ID>",
"grant_id": "<V3_NYLAS_GRANT_ID>",
"object": {
"deltas": [
{
"date": 1733180719,
"object": "message",
"object_data": {
"account_id": "<V2_NYLAS_ACCOUNT_ID>",
"id": "<V2_WEBHOOK_ID>",
"metadata": {
"from_self": true,
"message_id": "<V2_MESSAGE_ID>",
"payload": "Hello world",
"reply_to_message_id": "<V2_REPLY_TO_MESSAGE_ID>",
"thread_id": "<V2_THREAD_ID>",
"timestamp": 1733180490
},
"namespace_id": "<V2_NAMESPACE_ID>",
"object": "message"
},
"type": "thread.replied"
}
],
"grant_id": "<V3_NYLAS_GRANT_ID>",
"object": "thread"
}
}
}

ExtractAI notifications

Order notifications

Nylas sends a message.intelligence.order notification when a user receives an message that has information about an e-commerce order.

{
"specversion": "1.0",
"type": "message.intelligence.order",
"source": "/google/emails/historic",
"id": "TV6RF5Vq0h41th3r31337h4x0r",
"time": 1716913463,
"webhook_delivery_attempt": 1,
"data": {
"application_id": "<NYLAS_APPLICATION_ID>",
"object": {
"confidence_score": 1,
"email_category": "order_in_transit",
"email_timestamp": 1632877388,
"error": null,
"fetched_email_id": "18f9d4c513cbd00d",
"grant_id": "<NYLAS_GRANT_ID>",
"merchant": {
"domain": "example.com",
"name": "Nyla's Natural Bath Products"
},
"metadata": {
"language": "en",
"market": "US",
"sender_domain": "store.example.com"
},
"object": "message",
"order_status": "order_in_transit",
"orders": [{
"coupon": null,
"currency": "USD",
"discount": null,
"gift_card": null,
"line_items": [{
"color": null,
"name": "So Sensitive Soap - Unscented Soap Bar For Sensitive Skin - 4 oz.",
"product_id": null,
"product_image_uri": "https://imgcdn.example.com/img/1925bf51-82a3-49be-bfdb-01e0633195f8.jpeg",
"quantity": 1,
"size": null,
"unit_price": 197,
"url": null
}],
"order_date": "1632726000",
"order_number": "<MERCHANT_ORDER_NUMBER>",
"shipping_total": null,
"total_amount": 812,
"total_tax_amount": 16
}],
"status": "SUCCESS"
}
}
}

Order Tracking notifications

Nylas sends a message.intelligence.tracking notification when a user receives a message that has tracking information for an e-commerce order.

{
"specversion": "1.0",
"type": "message.intelligence.tracking",
"source": "/google/emails/historic",
"id": "AWtuXhdwHdUAyx4nwpbe9h8937",
"time": 1716558937,
"webhook_delivery_attempt": 1,
"data": {
"application_id": "<NYLAS_APPLICATION_ID>",
"object": {
"confidence_score": 1,
"email_category": "order_in_transit",
"email_timestamp": 1714136753,
"error": null,
"fetched_email_id": "18f1a83273ee32e9",
"grant_id": "<NYLAS_GRANT_ID>",
"merchant": {
"domain": "example.com",
"name": null
},
"metadata": {
"language": "en",
"market": "US",
"sender_domain": "example.com"
},
"object": "message",
"order_status": "order_in_transit",
"shippings": [{
"carrier": "Nyla Global Express Inc.",
"decoded_link": null,
"order_number": "<CARRIER_ORDER_NUMBER>",
"tracking_link": "<CARRIER_TRACKING_LINK>",
"tracking_number": "<CARRIER_TRACKING_NUMBERx>"
}],
"status": "SUCCESS"
}
}
}

Order Return notifications

Nylas sends a message.intelligence.return notification when a user receives a message that has return information for an e-commerce order.

{
"specversion": "1.0",
"type": "message.intelligence.return",
"source": "/google/emails/incremental",
"id": "SuwjxNj4ZFCBvj3j7wYcBn0841",
"time": 1734370841,
"webhook_delivery_attempt": 1,
"data": {
"application_id": "<NYLAS_APPLICATION_ID>",
"object": {
"confidence_score": 1,
"email_category": "other",
"email_timestamp": 1734370631,
"fetched_email_id": "<MESSAGE_ID>",
"grant_id": "<NYLAS_GRANT_ID>",
"merchant": {
"domain": "example.com",
"name": "Nyla's Natural Bath Products"
},
"metadata": {
"language": "en",
"market": "US",
"sender_domain": "example.com"
},
"object":"message",
"order_status":"other",
"returns": [{
"order_number": null,
"refund_total": null,
"returns_date": 1734370631
}],
"status": "SUCCESS"
}
}
}

Folder notifications

Folder Created notifications

Nylas sends a folder.created notification when a user creates a folder.

{
"specversion": "1.0",
"type": "folder.created",
"source": "/google/emails/incremental",
"id": "mock-id",
"time": 1718210511,
"webhook_delivery_attempt": 1,
"data": {
"application_id": "<NYLAS_APPLICATION_ID>",
"object": {
"grant_id": "<NYLAS_GRANT_ID>",
"id": "<FOLDER_ID>",
"name": "My test folder",
"object": "folder",
"system_folder": false
}
}
}

Folder Updated notifications

Nylas sends a folder.updated notification when a user updates a folder.

{
"specversion": "1.0",
"type": "folder.updated",
"source": "/google/emails/incremental",
"id": "mock_id",
"time": 1718210554,
"webhook_delivery_attempt": 1,
"data": {
"application_id": "<NYLAS_APPLICATION_ID>",
"object": {
"grant_id": "<NYLAS_GRANT_ID>",
"id": "<FOLDER_ID>",
"name": "My updated test folder",
"object": "folder",
"system_folder": false
}
}
}

Folder Deleted notifications

Nylas sends a folder.deleted notification when a user deletes a folder.

{
"specversion": "1.0",
"type": "folder.deleted",
"source": "/google/emails/incremental",
"id": "mock_id",
"time": 1718210588,
"webhook_delivery_attempt": 1,
"data": {
"application_id": "<NYLAS_APPLICATION_ID>",
"object": {
"grant_id": "<NYLAS_GRANT_ID>",
"id": "<FOLDER_ID>",
"name": "My test folder",
"object": "folder",
"system_folder": false
}
}
}

Contact notifications

Contact Updated notifications

Nylas sends a contact.updated notification when a user creates or updates a contact.

{
"specversion": "1.0",
"type": "contact.updated",
"source": "/google/contact/realtime",
"id": "mock-id",
"webhook_delivery_attempt" : 1,
"data": {
"application_id": "mock-application-id",
"object": {
"birthday":"1988-12-31",
"company_name":"Nyla Global Express Inc.",
"emails":[
{
"email":"[email protected]",
"type":"work"
},
{
"email":"[email protected]",
"type":"home"
}
],
"given_name":"John",
"grant_id":"mock-grant-id",
"groups":[
{
"id":"friends"
}
],
"id":"mock-id",
"im_addresses":[
{
"type":"jabber",
"im_address":"myjabberaddress"
},
{
"type":"msn",
"im_address":"mymsnaddress"
}
],
"job_title":"Software Engineer",
"manager_name":"Melissa A. Manager",
"middle_name":"Jacob",
"nickname":"JJ",
"notes":"This is where you'd write something about John.",
"office_location":"123 Main Street",
"object":"contact",
"phone_numbers":[
{
"number":"1 123 456 7890",
"type":"work"
}
],
"physical_addresses":[
{
"city":"San Francisco",
"country":"USA",
"postal_code":"94107",
"state":"CA",
"street_address":"123 Main Street",
"type":"work"
}
],
"suffix":"Jr",
"surname":"Jingleheimer-Schmidt",
"source":"address_book",
"web_pages":[
{
"url":"www.myWorkPage.example.com",
"type":"work"
}
]
}
}
}

Contact Deleted notifications

Nylas sends a contact.deleted notification when a user deletes a contact.

{
"specversion": "1.0",
"type": "contact.updated",
"source": "/google/contact/realtime",
"id": "mock-id",
"webhook_delivery_attempt" : 1,
"data": {
"application_id": "mock-application-id",
"object": {
"birthday":"1960-12-31",
"company_name":"Nyla Global Express Inc.",
"emails":[
{
"email":"[email protected]",
"type":"work"
},
{
"email":"[email protected]",
"type":"home"
}
],
"given_name":"John",
"grant_id":"mock-grant-id",
"groups":[
{
"id":"friends"
}
],
"id":"mock-id",
"im_addresses":[
{
"type":"jabber",
"im_address":"myjabberaddress"
},
{
"type":"msn",
"im_address":"mymsnaddress"
}
],
"job_title":"Software Engineer",
"manager_name":"Melissa A. Manager",
"middle_name":"Jacob",
"nickname":"JJ",
"notes":"This is where you'd write something about John.",
"office_location":"123 Main Street",
"object":"contact",
"phone_numbers":[
{
"number":"1 123 456 7890",
"type":"work"
}
],
"physical_addresses":[
{
"city":"San Francisco",
"country":"USA",
"postal_code":"94107",
"state":"CA",
"street_address":"123 Main Street",
"type":"work"
}
],
"suffix":"Jr",
"surname":"Jingleheimer-Schmidt",
"source":"address_book",
"web_pages":[
{
"url":"www.myWorkPage.example.com",
"type":"work"
}
]
}
}
}