| eventType | string | Event type, here "templateMessageSent_v2" indicates a template message has been sent (version 2) |
| localMessageId | string | Local message identifier used by the client for tracking and idempotency |
| id | string | Unique identifier for the message |
| whatsappMessageId | string | Message ID generated by the WhatsApp platform |
| templateId | string | Unique identifier for the template used to send this message |
| templateName | string | Name of the template used for sending the message |
| created | string | Timestamp when the message was created (ISO 8601 format) |
| conversationId | string | Unique identifier for the conversation, used to associate all messages within the same conversation |
| ticketId | string | Ticket ID used for ticket management in customer service systems |
| text | string | Text content of the template message |
| operatorEmail | string | Email address of the operator/customer service representative who sent the message |
| waId | string | WhatsApp ID, typically the complete phone number with country code |
| type | string | Message type, supported values include: "image", "text", "document", "location", "voice", "audio", "button", "interactive", "reaction", "video", "sticker", "contacts", "order", "catalog", "media_placeholder", "template" |
| statusString | string | Message status string, here "SENT" indicates the message has been sent successfully |
| sourceType | string | Source from which the message was sent, "WEB" indicates it was sent from the web interface |
| headerLink | string/null | Link associated with the template header, null if no header link is present |
| headerType | string/null | Type of header in the template (e.g., "text", "image", "video"), null if no header is present |
| templateContent | object/null | Structured content of the sent template, including header, footer, and buttons. Only present when the template contains these elements. |
| templateContent.headerText | string/null | Resolved header text of the template |
| templateContent.footerText | string/null | Footer text of the template |
| templateContent.buttons | array | List of buttons included in the template |
| templateContent.buttons[].index | number | Button position index (0-based) |
| templateContent.buttons[].cardIndex | number/null | Carousel card index (null if not a carousel template) |
| templateContent.buttons[].type | string | Button type: "quick_reply", "url", or "call" |
| templateContent.buttons[].text | string | Button display text |
| templateContent.buttons[].url | string/null | Tracking-wrapped URL for URL-type buttons (may differ from targetUrl if click tracking is enabled) |
| templateContent.buttons[].targetUrl | string/null | Resolved target URL with dynamic parameters substituted |
| templateContent.buttons[].originalUrl | string/null | Original URL template before parameter substitution (e.g., contains {{1}} placeholders) |
| templateContent.buttons[].phoneNumber | string/null | Phone number for call-type buttons |
| channelId | string/null | Identifier of the channel through which the message was sent, null if using default channel |
| channelPhoneNumber | string | Phone number of the channel from which the message was sent |
| bsuid | string/null | Business Solution User ID — a stable cross-channel identifier for the contact. Only present when available. |
| parentBsuid | string/null | Parent BSUID — the enterprise-level identifier. Only present when available. |
| username | string/null | Human-readable username handle for the contact. Only present when available. |