This page provides a complete list of all supported webhook events in SentSays, along with a breakdown of their purpose and example JSON payloads. Use this to understand exactly how each event works and what to expect when integrating webhooks with your own system.


Event: message.received

Triggered when a new message is received via WhatsApp.

Example Payload

{
  "event": "message.received",
  "data": {
    "value": {
      "messaging_product": "whatsapp",
      "metadata": {
        "display_phone_number": "19680825846",
        "phone_number_id": "363351553535621"
      },
      "contacts": [
        {
          "profile": {
            "name": "John"
          },
          "wa_id": "+19680825846"
        }
      ],
      "messages": [
        {
          "from": "+19680825846",
          "id": "wamid...==",
          "timestamp": "1727857481",
          "text": {
            "body": "Hi"
          },
          "type": "text"
        }
      ]
    },
    "field": "messages"
  }
}

Description

Includes sender details, message content, type, and timestamp. Useful for triggering automated replies or syncing incoming messages to external systems.

Event: message.sent

Triggered when a WhatsApp message is successfully sent from SentSays.

Example Payload

{
  "event": "message.sent",
  "data": {
    "data": {
      "success": true,
      "data": {
        "messages": [
          {
            "id": "wamid...==",
            "message_status": "accepted"
          }
        ],
        "chat": {
          "type": "outbound",
          "status": "accepted",
          "created_at": "2024-10-02 06:29:47",
          "contact": {
            "first_name": "John",
            "last_name": "Doe",
            "phone": "+19680825846"
          }
        }
      }
    }
  }
}

Description

Confirms message delivery was successful. Contains metadata, contact details, and message status. Useful for updating CRM or message logs.

Event: message.status.update

Triggered when the delivery status of a message changes (e.g., delivered, read).

Example Payload

{
  "event": "message.status.update",
  "data": {
    "value": {
      "statuses": [
        {
          "id": "wamid...==",
          "status": "delivered",
          "timestamp": "1727857139",
          "recipient_id": "19680825846"
        }
      ]
    },
    "field": "messages"
  }
}

Description

Indicates message status like delivered, read, or failed. Enables real-time tracking of delivery analytics and customer engagement.

Event: contact.created

Triggered when a new contact is added to your SentSays account.

Example Payload

{
  "event": "contact.created",
  "data": {
    "first_name": "John",
    "last_name": "Doe",
    "phone": "+19680825846",
    "full_name": "John Doe"
  }
}

Description

Includes all contact details. Useful for syncing new leads or customers with external CRMs or subscriber lists.

Event: contact.updated

Triggered when a contact is modified (e.g., name, group, metadata).

Example Payload

{
  "event": "contact.updated",
  "data": {
    "uuid": "81a2d...",
    "first_name": "Jeff",
    "last_name": "Doe",
    "phone": "+19680825846"
  }
}

Description

Keeps your external data sources updated with the latest contact changes.

Event: contact.deleted

Triggered when a contact is removed from the system.

Example Payload

{
  "event": "contact.deleted",
  "data": {
    "uuid": "6f1a3c...",
    "first_name": "John",
    "last_name": "Doe"
  }
}

Description

Use this event to delete or archive contact records in third-party tools.

Event: group.created

Triggered when a new contact group is created.

Example Payload

{
  "event": "group.created",
  "data": {
    "name": "Lead 9",
    "uuid": "d746e4c5..."
  }
}

Description

Lets you sync group structure or trigger automated messages to newly formed segments.

Event: group.updated

Triggered when a group name or structure is changed.

Example Payload

{
  "event": "group.updated",
  "data": {
    "uuid": "d3364ad4...",
    "name": "Lead 9"
  }
}

Event: group.deleted

Triggered when a contact group is deleted.

Example Payload

{
  "event": "group.deleted",
  "data": {
    "uuid": "d3364ad4..."
  }
}

Event: autoreply.created

Triggered when a new auto-reply rule is added.

Example Payload

{
  "event": "autoreply.created",
  "data": {
    "name": "About Us",
    "trigger": "what do you do?",
    "match_criteria": "contains",
    "metadata": "{\"type\":\"text\",\"data\":{\"text\":\"We sell shoes\"}}"
  }
}

Event: autoreply.updated

Triggered when an existing auto-reply rule is updated.

Example Payload

{
  "event": "autoreply.updated",
  "data": {
    "name": "About Us",
    "metadata": "{\"type\":\"text\",\"data\":{\"text\":\"We sell shoes and clothes\"}}"
  }
}

Event: autoreply.deleted

Triggered when an auto-reply rule is removed.

Example Payload

{
  "event": "autoreply.deleted",
  "data": {
    "list": {
      "uuid": "de6fe115..."
    }
  }
}

Best Practices

  • Always validate payloads by checking the event and required data fields.
  • Use webhook logs or tools like Webhook.site to inspect and debug events.
  • Combine these events with automation tools to build custom chatbots, CRMs, or dashboards.