Skip to content

Notification schemas

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

  • 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.

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": "<WEBHOOK_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",
"email": "[email protected]",
"name": "John Doe",
"scope": [
"https://www.googleapis.com/auth/gmail.readonly",
"https://www.googleapis.com/auth/calendar"
],
"metadata": {
"user_id": "internal-user-12345"
}
}
}
}

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": "<WEBHOOK_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,
"email": "[email protected]",
"scope": [
"Mail.Read",
"Mail.Send",
"Calendars.ReadWrite"
],
"metadata": {
"user_id": "internal-user-12345"
}
}
}
}

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": "<WEBHOOK_ID>",
"time": 1234567890,
"data": {
"application_id": "NYLAS_APPLICATION_ID",
"object": {
"code": 25013,
"grant_id": "NYLAS_GRANT_ID",
"integration_id": "NYLAS_INTEGRATION_ID",
"provider": "google",
"email": "[email protected]"
}
}
}

Nylas sends a grant.expired notification when a grant’s credentials expire, typically due to a change in the user’s password on the provider, OAuth token expiration without successful refresh, the provider revoking access, or an admin revoking app permissions.

Tip: Subscribe to the grant.expired trigger to automatically notify users when their grant expires and prompt them to re-authenticate. See Handling expired grants for best practices on detection and recovery.

{
"specversion": "1.0",
"type": "grant.expired",
"source": "/nylas/system",
"id": "<WEBHOOK_ID>",
"time": 1739223251,
"webhook_delivery_attempt": 1,
"data": {
"application_id": "<NYLAS_APPLICATION_ID>",
"object": {
"code": 25009,
"grant_id": "<NYLAS_GRANT_ID>",
"integration_id": "<NYLAS_INTEGRATION_ID>",
"provider": "google",
"email": "[email protected]",
"grant_updated_at": 1734200000
}
}
}

Nylas sends a grant.imap_sync_completed notification when a grant is created for an IMAP account and the initial historic sync completes.

{
"specversion": "1.0",
"type": "grant.imap_sync_completed",
"source": "/imap/emails/historic",
"id": "<WEBHOOK_ID>",
"datacontenttype": "application/json",
"time": "2024-01-15T10:30:00Z",
"nylase2estarttime": 1705315800,
"provider": "imap",
"synccategory": "historic",
"data": {
"application_id": "<NYLAS_APPLICATION_ID>",
"object": {
"grant_id": "<NYLAS_GRANT_ID>",
"code": 25012,
"integration_id": "<INTEGRATION_ID>",
"provider": "imap",
"type": "grant.imap_sync_completed"
}
}
}

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
}
}
}

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
}
}
}

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

{
"specversion": "1.0",
"type": "calendar.deleted",
"source": "/google/events/incremental",
"id": "<WEBHOOK_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
}
}
}

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": null,
"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"
}
}
}
}

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"
}
}
}
}

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": "<WEBHOOK_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"
}
}
}

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

{
"specversion": "1.0",
"type": "booking.created",
"source": "/nylas/passthru",
"id": "<WEBHOOK_ID>",
"time": 1725895310,
"webhook_delivery_attempt": 1,
"data": {
"application_id": "<NYLAS_APPLICATION_ID>",
"grant_id": "<NYLAS_GRANT_ID>",
"object": {
"booking_id": "<BOOKING_ID>",
"booking_ref": "<BOOKING_REFERENCE>",
"configuration_id": "<CONFIGURATION_ID>",
"object": "booking",
"booking_info": {
"event_id": "<EVENT_ID>",
"start_time": 1719842400,
"end_time": 1719846000,
"participants": [
{
"email": "[email protected]",
"name": "Leyah Miller"
},
{
"email": "[email protected]",
"name": "Nyla"
}
],
"additional_fields": {
"phone": "+1-415-555-0137",
"company": "Nylas Inc."
},
"hide_cancellation_options": false,
"hide_rescheduling_options": false,
"participant_rescheduling_url": "https://example.com/reschedule/<BOOKING_REFERENCE>",
"participant_cancellation_url": "https://example.com/cancel/<BOOKING_REFERENCE>",
"host_language": "en",
"guest_language": "en",
"title": "Project sync with Leyah",
"duration": 60,
"location": "https://meet.google.com/abc-defg-hij",
"organizer_timezone": "America/Toronto",
"guest_timezone": "America/Toronto",
"is_group_event": false,
"organizer_calendar_id": "primary",
"event_description": "Discuss Q3 roadmap and next steps",
"event_html_link": "https://calendar.google.com/calendar/event?eid=abc123",
"ical_uid": "040000008200E00074C5B7101A82E0080000000000000000000000000000000000",
"host_confirmation_url": "https://example.com/confirm/<BOOKING_REFERENCE>"
}
}
}
}

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": "<WEBHOOK_ID>",
"time": 1725895310,
"webhook_delivery_attempt": 1,
"data": {
"application_id": "<NYLAS_APPLICATION_ID>",
"grant_id": "<NYLAS_GRANT_ID>",
"object": {
"configuration_id": "<CONFIGURATION_ID>",
"booking_id": "<BOOKING_ID>",
"booking_ref": "<BOOKING_REFERENCE>",
"booking_type": "organizer-confirmation",
"booking_info": {
"event_id": "<EVENT_ID>",
"start_time": 1719842400,
"end_time": 1719846000,
"participants": [
{
"email": "[email protected]",
"name": "John Doe"
},
{
"email": "[email protected]",
"name": "Jane Smith"
}
],
"additional_fields": {
"phone": "+1-415-555-0199",
"company": "Acme Corp"
},
"hide_cancellation_options": false,
"hide_rescheduling_options": false,
"participant_rescheduling_url": "https://example.com/reschedule/<BOOKING_REFERENCE>",
"participant_cancellation_url": "https://example.com/cancel/<BOOKING_REFERENCE>",
"host_language": "en",
"guest_language": "en",
"title": "[PENDING] Project sync",
"duration": 60,
"location": "https://meet.google.com/abc-defg-hij",
"organizer_timezone": "America/New_York",
"guest_timezone": "America/New_York",
"is_group_event": false,
"organizer_calendar_id": "primary",
"event_description": "Let's discuss the project details",
"event_html_link": "https://calendar.google.com/event?eid=abc123",
"ical_uid": "040000008200E00074C5B7101A82E0080000000000000000000000000000000000",
"host_confirmation_url": "https://example.com/confirm/<BOOKING_REFERENCE>"
}
}
}
}

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

{
"specversion": "1.0",
"type": "booking.rescheduled",
"source": "/nylas/passthru",
"id": "<WEBHOOK_ID>",
"time": 1725895310,
"webhook_delivery_attempt": 1,
"data": {
"application_id": "<NYLAS_APPLICATION_ID>",
"grant_id": "<NYLAS_GRANT_ID>",
"object": {
"booking_id": "<BOOKING_ID>",
"booking_ref": "<BOOKING_REFERENCE>",
"configuration_id": "<CONFIGURATION_ID>",
"object": "booking",
"booking_info": {
"event_id": "<EVENT_ID>",
"start_time": 1719842400,
"end_time": 1719846000,
"old_start_time": 1719839400,
"old_end_time": 1719843000,
"participants": [
{
"email": "[email protected]",
"name": "John Doe"
},
{
"email": "[email protected]",
"name": "Jane Smith"
}
],
"additional_fields": {
"phone": "555-123-4567",
"company": "Acme Corp"
},
"hide_cancellation_options": false,
"hide_rescheduling_options": false,
"participant_rescheduling_url": "https://example.com/reschedule/<BOOKING_REFERENCE>",
"participant_cancellation_url": "https://example.com/cancel/<BOOKING_REFERENCE>",
"host_language": "en",
"guest_language": "en",
"title": "Meeting with John Doe",
"duration": 60,
"location": "https://meet.google.com/abc-defg-hij",
"organizer_timezone": "America/New_York",
"guest_timezone": "America/New_York",
"is_group_event": false,
"organizer_calendar_id": "primary"
}
}
}
}

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

{
"specversion": "1.0",
"type": "booking.cancelled",
"source": "/nylas/passthru",
"id": "<WEBHOOK_ID>",
"time": 1725895310,
"webhook_delivery_attempt": 1,
"data": {
"application_id": "<NYLAS_APPLICATION_ID>",
"grant_id": "<NYLAS_GRANT_ID>",
"object": {
"configuration_id": "<CONFIGURATION_ID>",
"booking_id": "<BOOKING_ID>",
"booking_info": {
"event_id": "<EVENT_ID>",
"start_time": 1719842400,
"end_time": 1719846000,
"cancellation_reason": "Conflicting appointment",
"participants": [
{
"email": "[email protected]",
"name": "John Doe"
},
{
"email": "[email protected]",
"name": "Jane Smith"
}
],
"additional_fields": {
"phone": "+1-415-555-0199",
"company": "Acme Corp"
},
"hide_cancellation_options": false,
"hide_rescheduling_options": false,
"participant_rescheduling_url": "https://example.com/reschedule/cfg_8a3d2b-bk_2f6c9a1b7d",
"participant_cancellation_url": "https://example.com/cancel/cfg_8a3d2b-bk_2f6c9a1b7d",
"host_language": "en",
"guest_language": "en",
"title": "Project sync with John Doe",
"duration": 60,
"location": "https://meet.google.com/abc-defg-hij",
"organizer_timezone": "America/New_York",
"guest_timezone": "America/New_York",
"is_group_event": false,
"organizer_calendar_id": "primary"
}
}
}
}

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

{
"specversion": "1.0",
"type": "booking.reminder",
"source": "/nylas/passthru",
"id": "<WEBHOOK_ID>",
"time": 1725895310,
"webhook_delivery_attempt": 1,
"data": {
"application_id": "<NYLAS_APPLICATION_ID>",
"grant_id": "<NYLAS_GRANT_ID>",
"object": {
"configuration_id": "<CONFIGURATION_ID>",
"booking_id": "<BOOKING_ID>",
"booking_ref": "<BOOKING_REFERENCE>",
"booking_info": {
"event_id": "<EVENT_ID>",
"start_time": 1719842400,
"end_time": 1719846000,
"time_until_event": 3600,
"participants": [
{
"email": "[email protected]",
"name": "John Doe"
},
{
"email": "[email protected]",
"name": "Jane Smith"
}
],
"additional_fields": {
"phone": "+1-415-555-0199",
"company": "Acme Corp"
},
"hide_cancellation_options": false,
"hide_rescheduling_options": false,
"participant_rescheduling_url": "https://example.com/reschedule/cfg_8a3d2b-bk_2f6c9a1b7d",
"participant_cancellation_url": "https://example.com/cancel/cfg_8a3d2b-bk_2f6c9a1b7d",
"host_language": "en",
"guest_language": "en",
"title": "Project sync with John Doe",
"duration": 60,
"location": "https://meet.google.com/abc-defg-hij",
"organizer_timezone": "America/New_York",
"guest_timezone": "America/New_York",
"organizer_email": "[email protected]",
"provider": "google",
"is_group_event": false,
"organizer_calendar_id": "primary"
}
}
}
}

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

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,
"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,
"summary": true,
"summary_settings": {
"custom_instructions": "Focus on action items related to the product launch."
},
"action_items": true,
"action_items_settings": {
"custom_instructions": "Group action items by team member."
},
"deduplication_settings": {
"scope": "workspace",
"key": "",
"workspace_id": "<WORKSPACE_ID>"
},
"leave_after_silence_seconds": 300
},
"meeting_provider": "Google Meet",
"meeting_link": "https://meet.google.com/abc-defg-hij",
"join_time": 1737500936450,
"event": {
"ical_uid": "<ICAL_UID>",
"event_id": "<EVENT_ID>",
"master_event_id": "<EVENT_ID>"
},
"object": "notetaker",
"status": "scheduled",
"state": "scheduled"
}
}
}

Nylas sends a notetaker.updated notification when you update a scheduled Notetaker bot’s settings or join time. This notification only fires while the Notetaker is in scheduled state. For meeting lifecycle state changes, see notetaker.meeting_state.

If the bot was created for 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,
"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,
"summary": false,
"action_items": false,
"leave_after_silence_seconds": 600
},
"meeting_provider": "Google Meet",
"meeting_link": "https://meet.google.com/abc-defg-hij",
"join_time": 1737500936450,
"event": {
"ical_uid": "<ICAL_UID>",
"event_id": "<EVENT_ID>",
"master_event_id": "<MASTER_EVENT_ID>"
},
"object": "notetaker",
"status": "scheduled",
"state": "scheduled"
}
}
}

Nylas sends a notetaker.meeting_state notification when the Notetaker bot transitions between meeting lifecycle states. The notification includes both a state field (the lifecycle phase) and a meeting_state field (the specific reason for the transition).

The meeting_state values you can receive depend on the current state:

When state is connecting:

  • waiting_for_entry: The Notetaker bot is waiting to be admitted to the meeting (for example, in a waiting room).

When state is attending:

  • recording_active: The Notetaker bot is attending and actively recording the meeting.

When state is disconnected:

  • meeting_ended: The meeting ended normally.
  • kicked: The Notetaker bot was removed from the meeting by a participant.
  • no_activity: The Notetaker bot left the meeting because there was no audio or video activity from participants.
  • no_participants: The Notetaker bot left the meeting because all other participants left.
  • api_request: The Notetaker bot left because it received a Remove from Meeting request.
  • network_error: The Notetaker bot disconnected due to a network error.
  • cancelled: The Notetaker bot was cancelled while attending the meeting.
  • unknown: The Notetaker bot disconnected for an unexpected reason.

When state is failed_entry:

  • error: A generic error occurred while attempting to join the meeting.
  • internal_error: Notetaker encountered an internal error while trying to join.
  • bad_meeting_code: The meeting code is invalid or the meeting is not active.
  • bad_meeting_link: The meeting link is invalid.
  • sign_in_required: The meeting requires authentication the Notetaker bot doesn’t have.
  • entry_denied: The host denied the Notetaker bot entry to the meeting.
  • no_response: The Notetaker bot’s admission request timed out with no response from the host.
  • cannot_join: The Notetaker bot is unable to join the meeting.
  • meeting_capacity_reached: The meeting has reached its maximum number of participants.
  • admission_timeout: The Notetaker bot timed out waiting to be admitted.
  • network_error: A network error occurred before the bot could join.
  • cancelled: The Notetaker bot was cancelled before it could join the meeting.

When state is media_error, post-meeting media processing failed.

{
"specversion": "1.0",
"type": "notetaker.meeting_state",
"source": "/nylas/notetaker",
"id": "<WEBHOOK_ID>",
"time": 1737500935555,
"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,
"summary": true,
"summary_settings": {
"custom_instructions": "Focus on action items related to the product launch."
},
"action_items": true,
"action_items_settings": {
"custom_instructions": "Group action items by team member."
},
"leave_after_silence_seconds": 300
},
"meeting_provider": "Google Meet",
"meeting_link": "https://meet.google.com/abc-defg-hij",
"join_time": 1737500936450,
"event": {
"ical_uid": "<ICAL_UID>",
"event_id": "<EVENT_ID>",
"master_event_id": "<MASTER_EVENT_ID>"
},
"object": "notetaker",
"status": "connecting",
"state": "connecting",
"meeting_state": "waiting_for_entry"
}
}
}

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.
  • media_deleted: A recording or transcription has been deleted because of an API request or the media retention policy.
  • media_error: Nylas encountered an error while processing a recording.
  • processing: Nylas is processing and transcribing a recording. This might take a bit longer for speaker-labeled transcriptions.
{
"specversion": "1.0",
"type": "notetaker.media",
"source": "/nylas/notetaker",
"id": "<WEBHOOK_ID>",
"time": 1737500935555,
"data": {
"application_id": "<NYLAS_APPLICATION_ID>",
"object": {
"id": "<NOTETAKER_ID>",
"grant_id": "<NYLAS_GRANT_ID>",
"object": "notetaker",
"meeting_settings": {
"video_recording": true,
"audio_recording": true,
"transcription": true,
"summary": true,
"summary_settings": {
"custom_instructions": "Focus on action items related to the product launch."
},
"action_items": true,
"action_items_settings": {
"custom_instructions": "Group action items by team member."
},
"leave_after_silence_seconds": 300
},
"meeting_provider": "Google Meet",
"meeting_link": "https://meet.google.com/abc-defg-hij",
"join_time": 1737500936450,
"event": {
"ical_uid": "<ICAL_UID>",
"event_id": "<EVENT_ID>",
"master_event_id": "<MASTER_EVENT_ID>"
},
"status": "available",
"state": "available",
"media": {
"recording": "<SIGNED_URL>",
"recording_duration": "1800",
"recording_file_format": "mp4",
"thumbnail": "<SIGNED_URL>",
"transcript": "<SIGNED_URL>",
"summary": "<SIGNED_URL>",
"action_items": "<SIGNED_URL>"
}
}
}
}

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,
"data": {
"application_id": "<NYLAS_APPLICATION_ID>",
"object": {
"id": "<NOTETAKER_ID>",
"grant_id": "<NYLAS_GRANT_ID>",
"object": "notetaker",
"event": {
"ical_uid": "<ICAL_UID>",
"event_id": "<EVENT_ID>",
"master_event_id": "<EVENT_ID>"
}
}
}
}

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
}
}
}

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
}
}
}

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": "<WEBHOOK_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
}
}
}

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": "<WEBHOOK_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
}
}
}

Note: The Bounce Detected trigger is available for Gmail and Microsoft Graph only.

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": "<WEBHOOK_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"
}
}
}
}

If your account uses Google’s /gmail.metadata scope, Nylas sends message.*.metadata notifications with limited information. These notifications don’t include the body, snippet, or attachment fields.

Nylas sends a message.*.metadata notification when an account that uses the /gmail.metadata scope creates or updates a message.

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

Legacy webhook notifications are available for Contract plans only. If you have a contract with us, contact Nylas Support to set up *.legacy webhook triggers.

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

The deltas array in each *.legacy notification contains the v2 message tracking data.

To use the *.legacy webhook triggers, you need to…

  • Migrate a user’s v2 connected account to a v3 grant.
  • Set up your v3 webhook endpoints with the corresponding tracking triggers.
  • Keep the user’s v2 connected account active.
  • Keep your v2 webhook endpoints with the corresponding tracking webhook triggers active.

After you finish migrating your application, you should use the v3 message tracking instead.

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

If your grant is expired, you’ll still receive message.opened notifications. If your grant has been deleted, however, Nylas stops sending message.send notifications.

{
"specversion": "1.0",
"type": "message.opened",
"source": "/com/nylas/tracking",
"id": "<WEBHOOK_ID>",
"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": "<WEBHOOK_ID>",
"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
}
}
}

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": "<WEBHOOK_ID>",
"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
}
}
}
{
"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"
}
}
}
{
"specversion": "1.0",
"type": "thread.replied.legacy",
"source": "/com/nylas/v2/webhooks",
"id": "<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"
}
}
}

You can subscribe to the following triggers to get notifications about transactional email delivery status:

Nylas sends a message.transactional.bounced notification when a transactional email was not delivered due to a hard bounce.

{
"specversion": "1.0",
"type": "message.transactional.bounced",
"source": "/nylas/send",
"id": "mock-id",
"time": 1234567890,
"webhook_delivery_attempt": 1,
"data": {
"application_id": "mock-application-id",
"object": {
"message": {
"id": "mock-message-id",
"subject": "mock-subject",
"from": "[email protected]",
"to": ["[email protected]"],
"cc": ["[email protected]"],
"bcc": ["[email protected]"],
"sent_at": 1234567890,
"metadata": {
"campaign": "welcome-email"
}
},
"bounce": {
"bounced_at": 1234567890,
"type": "MailboxFull",
"recipients": [
{ "email": "[email protected]" },
{
"email": "[email protected]",
"diagnostic_code": "smtp; 550 user unknown"
}
]
}
}
}
}

Transactional Email Spam Complaint notifications

Section titled “Transactional Email Spam Complaint notifications”

Nylas sends a message.transactional.complaint notification when a transactional email was successfully delivered to the recipient’s mail server, but the recipient marked it as spam.

{
"specversion": "1.0",
"type": "message.transactional.complaint",
"source": "/nylas/send",
"id": "mock-id",
"time": 1234567890,
"webhook_delivery_attempt": 1,
"data": {
"application_id": "mock-application-id",
"object": {
"message": {
"id": "mock-message-id",
"subject": "mock-subject",
"from": "[email protected]",
"to": ["[email protected]"],
"cc": ["[email protected]"],
"bcc": ["[email protected]"],
"sent_at": 1234567890,
"metadata": {
"campaign": "welcome-email"
}
},
"complaint": {
"reported_at": 1234567890,
"type": "abuse",
"complained_recipients": ["[email protected]"]
}
}
}
}

Transactional Email Delivered notifications

Section titled “Transactional Email Delivered notifications”

Nylas sends a message.transactional.delivered notification when a transactional email was successfully delivered to the recipient’s mail server.

{
"specversion": "1.0",
"type": "message.transactional.delivered",
"source": "/nylas/send",
"id": "mock-id",
"time": 1234567890,
"webhook_delivery_attempt": 1,
"data": {
"application_id": "mock-application-id",
"object": {
"message": {
"id": "mock-message-id",
"subject": "mock-subject",
"from": "[email protected]",
"to": ["[email protected]"],
"cc": ["[email protected]"],
"bcc": ["[email protected]"],
"sent_at": 1234567890,
"metadata": {
"campaign": "welcome-email"
}
},
"delivered": {
"delivered_at": 1234567890,
"recipients": ["[email protected]"]
}
}
}
}

Transactional Email Rejected notifications

Section titled “Transactional Email Rejected notifications”

Nylas sends a message.transactional.rejected notification when a transactional email was not delivered because one or more attachments contained a virus.

{
"specversion": "1.0",
"type": "message.transactional.rejected",
"source": "/nylas/send",
"id": "mock-id",
"time": 1234567890,
"webhook_delivery_attempt": 1,
"data": {
"application_id": "mock-application-id",
"object": {
"message": {
"id": "mock-message-id",
"subject": "mock-subject",
"from": "[email protected]",
"to": ["[email protected]"],
"cc": ["[email protected]"],
"bcc": ["[email protected]"],
"sent_at": 1234567890,
"metadata": {
"campaign": "welcome-email"
}
},
"rejected_at": 1234567890
}
}
}

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

{
"specversion": "1.0",
"type": "message.intelligence.order",
"source": "/google/emails/historic",
"id": "<WEBHOOK_ID>",
"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"
}
}
}

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": "<WEBHOOK_ID>",
"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"
}
}
}

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": "<WEBHOOK_ID>",
"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"
}
}
}

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

{
"specversion": "1.0",
"type": "folder.created",
"source": "/google/emails/incremental",
"id": "<WEBHOOK_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
}
}
}

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

{
"specversion": "1.0",
"type": "folder.updated",
"source": "/google/emails/incremental",
"id": "<WEBHOOK_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
}
}
}

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

{
"specversion": "1.0",
"type": "folder.deleted",
"source": "/google/emails/incremental",
"id": "<WEBHOOK_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
}
}
}

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

Most providers don’t differentiate between creating and updating contacts in their APIs. Nylas sends a contact.updated notification for both actions.

{
"specversion": "1.0",
"type": "contact.updated",
"source": "/google/contact/realtime",
"id": "<WEBHOOK_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"
}
]
}
}
}

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

{
"specversion": "1.0",
"type": "contact.updated",
"source": "/google/contact/realtime",
"id": "<WEBHOOK_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"
}
]
}
}
}