📅 Event Message

You can send Event Message and receive responses in WhatsApp using API .

Remind clients about their appointments natively:

WhatsApp Event Message

Features

Here’s the list of features that are available by 🏭 Engines:

📅 Event Message - API
APIWEBJSNOWEBGOWS
Send Event Message
POST /api/{SESSION}/events
✔️
📅 Event Message - Events
EventsWEBJSNOWEBGOWS
event.response✔️
event.response.failed✔️

API

Send Event Message

POST /api/{SESSION}/events
Body
{
  "chatId": "123123@c.us",
  "reply_to": null,
  "event": {
    "name": "John's Nail Appointment 💅",
    "description": "It's time for your nail care session! 🌟\\n\\nYou'll be getting a *classic gel manicure* – clean, polished, and long-lasting. 💖\\n\\n📍 *Location:* Luxe Nail Studio\\nWe're on the *2nd floor of the Plaza Mall*, next to the flower shop. Look for the *pink neon sign*!\\n\\nFeel free to arrive *5–10 mins early* so we can get started on time 😊",
    "startTime": 2063137000,
    "endTime": null,
    "location": {
      "name": "Luxe Nail Studio 💅"
    },
    "extraGuestsAllowed": false
  }
}

Fields:

  • chatId - The WhatsApp ID of the chat where you want to send the event message (e.g., “123123@c.us”)
  • event - Object containing event details:
    • name - The title of the event
    • description - Detailed description of the event (supports formatting with \n for newlines and * for bold text)
    • startTime - Event start time in Unix timestamp format (seconds since epoch)
    • endTime - Event end time in Unix timestamp format (optional, can be null)
    • location - (Optional) Object containing location details
      • name - Name of the location
    • extraGuestsAllowed - indicating whether additional guests are allowed (true/false)
  • reply_to - Message ID to reply to (optional, can be null)

Events

Receive responses for your event using events!

📅 Event Message - Events
EventsWEBJSNOWEBGOWS
event.response✔️
event.response.failed✔️
WhatsApp Event Message

event.response

event.response
{
  "id": "evt_00000000000000000000001",
  "session": "default",
  "event": "event.response",
  "payload": {
    "id": "false_11111111111111111@c.us_58BBBBBBBBBBBBBBBBBBBBBBBB",
    "timestamp": 1747707858,
    "from": "11111111111111111@c.us",
    "participant": null,
    "fromMe": false,
    "eventCreationKey": {
      "id": "false_999999999999@c.us_3EBAAAAAAAAAAAAAAAAAAAAAAAAAA",
      "to": "me",
      "from": "999999999999@c.us",
      "fromMe": false
    },
    "eventResponse": {
      "response": "GOING",
      "timestampMs": 1747707858429,
      "extraGuestCount": 0
    },
    "source": "app",
    "ack": null,
    "ackName": "UNKNOWN",
    "replyTo": null,
    "_data": {...},
  }
}

Payload:

  • Most of the fields are the same as for message and message.any events
  • eventCreationKey: Information about the original event message
    • id: Unique identifier of the original event message
      • Format {fromMe}_{chatId}_{messageId}[_{participant}])
      • You need to parse it to get messageId and find event that you sent previously, fromMe and chatId is from participant, not yours.
    • to: Recipient of the original event message (usually “me”)
    • from: WhatsApp ID of the sender of the original event message
    • fromMe: Boolean indicating if the original event was sent by you
  • eventResponse: Details of the user’s response to the event
    • response: The selected response option: GOING, NOT_GOING, MAYBE
    • timestampMs: Unix timestamp in milliseconds when the response was made
    • extraGuestCount: Number of additional guests the respondent is bringing (0\1)
  • source: Source of the message (usually “app”)
  • ack: Acknowledgment status code
  • ackName: Human-readable acknowledgment status
  • replyTo: Reference to a message being replied to (null if not a reply)
  • _data: Raw data object containing additional information

event.response.failed

Sometimes it happens that we didn’t manager to decrypt the response for the event. In that case you’ll get event.response.failed event with eventResponse: null.

Resend the Event Message one more time if you get this event to get a new response

event.response.failed
{
  "id": "evt_00000000000000000000001",
  "session": "default",
  "event": "event.response.failed",
  "payload": {
    "id": "false_11111111111111111@c.us_58BBBBBBBBBBBBBBBBBBBBBBBB",
    "timestamp": 1747707858,
    "from": "11111111111111111@c.us",
    "participant": null,
    "fromMe": false,
    "eventCreationKey": {
      "id": "false_999999999999@c.us_3EBAAAAAAAAAAAAAAAAAAAAAAAAAA",
      "to": "me",
      "from": "999999999999@c.us",
      "fromMe": false
    },
    "eventResponse": null, // <=== eventResponse will be null in that case
    "source": "app",
    "ack": null,
    "ackName": "UNKNOWN",
    "replyTo": null,
    "_data": {...},
  }
}

Payload:

  • the same as for event.response payload, but with eventResponse: null