MyComm docs
Menu

Event catalogue

One section per webhook event, generated from the API contract. Every delivery has the same envelope (id, type, api_version, created_at, account_id, line_id, channel, data); the samples below show data for each type. Read Receive webhooks for signatures, retries and replay. Ignore event types you do not know and answer 2xx.

campaign.scheduled

A draft campaign was scheduled, or a scheduled campaign moved to a new time. `data.actor` is who did it. `data.campaign` is the campaign resource as it is when the event is delivered.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "campaign.scheduled",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "campaign": {
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "name": "Example",
            "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "channel_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "status": "draft",
            "body": "Your order is ready for pickup.",
            "template_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "media_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "variables": [],
            "audience": {
                "group_ids": [
                    "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
                ],
                "smart_list_ids": [
                    "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
                ],
                "import_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
                "addresses": [
                    {
                        "address": "+923451234567",
                        "variables": []
                    }
                ]
            },
            "exclude": {
                "group_ids": [
                    "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
                ]
            },
            "category": "marketing",
            "compliance": {
                "consent_asserted_at": "2026-10-01T09:15:02Z",
                "consent_asserted_by": {
                    "type": "example",
                    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
                },
                "service_message": true
            },
            "append_opt_out_text": true,
            "shorten_links": true,
            "track_clicks": true,
            "scheduled_at": "2026-10-01T09:15:02Z",
            "started_at": "2026-10-01T09:15:02Z",
            "paused_at": "2026-10-01T09:15:02Z",
            "completed_at": "2026-10-01T09:15:02Z",
            "cancelled_at": "2026-10-01T09:15:02Z",
            "eta_at": "2026-10-01T09:15:02Z",
            "stats": {
                "total": 1,
                "excluded": 1,
                "duplicates": 1,
                "expanded_at": "2026-10-01T09:15:02Z",
                "skipped": []
            },
            "actor": {
                "type": "example",
                "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
            },
            "created_at": "2026-10-01T09:15:02Z",
            "updated_at": "2026-10-01T09:15:02Z"
        },
        "actor": {
            "type": "example",
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
        }
    }
}

campaign.unscheduled

A scheduled campaign went back to `draft` (`scheduled_at` cleared). `data.actor` is who did it. `data.campaign` is the campaign resource as it is when the event is delivered.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "campaign.unscheduled",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "campaign": {
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "name": "Example",
            "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "channel_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "status": "draft",
            "body": "Your order is ready for pickup.",
            "template_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "media_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "variables": [],
            "audience": {
                "group_ids": [
                    "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
                ],
                "smart_list_ids": [
                    "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
                ],
                "import_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
                "addresses": [
                    {
                        "address": "+923451234567",
                        "variables": []
                    }
                ]
            },
            "exclude": {
                "group_ids": [
                    "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
                ]
            },
            "category": "marketing",
            "compliance": {
                "consent_asserted_at": "2026-10-01T09:15:02Z",
                "consent_asserted_by": {
                    "type": "example",
                    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
                },
                "service_message": true
            },
            "append_opt_out_text": true,
            "shorten_links": true,
            "track_clicks": true,
            "scheduled_at": "2026-10-01T09:15:02Z",
            "started_at": "2026-10-01T09:15:02Z",
            "paused_at": "2026-10-01T09:15:02Z",
            "completed_at": "2026-10-01T09:15:02Z",
            "cancelled_at": "2026-10-01T09:15:02Z",
            "eta_at": "2026-10-01T09:15:02Z",
            "stats": {
                "total": 1,
                "excluded": 1,
                "duplicates": 1,
                "expanded_at": "2026-10-01T09:15:02Z",
                "skipped": []
            },
            "actor": {
                "type": "example",
                "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
            },
            "created_at": "2026-10-01T09:15:02Z",
            "updated_at": "2026-10-01T09:15:02Z"
        },
        "actor": {
            "type": "example",
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
        }
    }
}

campaign.started

A campaign entered `running` for the first time; a later entry from `paused` is `campaign.resumed`. `data.campaign` is the campaign resource as it is when the event is delivered.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "campaign.started",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "campaign": {
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "name": "Example",
            "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "channel_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "status": "draft",
            "body": "Your order is ready for pickup.",
            "template_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "media_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "variables": [],
            "audience": {
                "group_ids": [
                    "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
                ],
                "smart_list_ids": [
                    "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
                ],
                "import_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
                "addresses": [
                    {
                        "address": "+923451234567",
                        "variables": []
                    }
                ]
            },
            "exclude": {
                "group_ids": [
                    "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
                ]
            },
            "category": "marketing",
            "compliance": {
                "consent_asserted_at": "2026-10-01T09:15:02Z",
                "consent_asserted_by": {
                    "type": "example",
                    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
                },
                "service_message": true
            },
            "append_opt_out_text": true,
            "shorten_links": true,
            "track_clicks": true,
            "scheduled_at": "2026-10-01T09:15:02Z",
            "started_at": "2026-10-01T09:15:02Z",
            "paused_at": "2026-10-01T09:15:02Z",
            "completed_at": "2026-10-01T09:15:02Z",
            "cancelled_at": "2026-10-01T09:15:02Z",
            "eta_at": "2026-10-01T09:15:02Z",
            "stats": {
                "total": 1,
                "excluded": 1,
                "duplicates": 1,
                "expanded_at": "2026-10-01T09:15:02Z",
                "skipped": []
            },
            "actor": {
                "type": "example",
                "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
            },
            "created_at": "2026-10-01T09:15:02Z",
            "updated_at": "2026-10-01T09:15:02Z"
        }
    }
}

campaign.paused

A running campaign was paused; queued campaign messages are held. `data.actor` is who did it (`system` for an automatic pause). `data.campaign` is the campaign resource as it is when the event is delivered.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "campaign.paused",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "campaign": {
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "name": "Example",
            "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "channel_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "status": "draft",
            "body": "Your order is ready for pickup.",
            "template_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "media_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "variables": [],
            "audience": {
                "group_ids": [
                    "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
                ],
                "smart_list_ids": [
                    "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
                ],
                "import_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
                "addresses": [
                    {
                        "address": "+923451234567",
                        "variables": []
                    }
                ]
            },
            "exclude": {
                "group_ids": [
                    "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
                ]
            },
            "category": "marketing",
            "compliance": {
                "consent_asserted_at": "2026-10-01T09:15:02Z",
                "consent_asserted_by": {
                    "type": "example",
                    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
                },
                "service_message": true
            },
            "append_opt_out_text": true,
            "shorten_links": true,
            "track_clicks": true,
            "scheduled_at": "2026-10-01T09:15:02Z",
            "started_at": "2026-10-01T09:15:02Z",
            "paused_at": "2026-10-01T09:15:02Z",
            "completed_at": "2026-10-01T09:15:02Z",
            "cancelled_at": "2026-10-01T09:15:02Z",
            "eta_at": "2026-10-01T09:15:02Z",
            "stats": {
                "total": 1,
                "excluded": 1,
                "duplicates": 1,
                "expanded_at": "2026-10-01T09:15:02Z",
                "skipped": []
            },
            "actor": {
                "type": "example",
                "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
            },
            "created_at": "2026-10-01T09:15:02Z",
            "updated_at": "2026-10-01T09:15:02Z"
        },
        "actor": {
            "type": "example",
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
        }
    }
}

campaign.resumed

A paused campaign is running again. `data.actor` is who did it. `data.campaign` is the campaign resource as it is when the event is delivered.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "campaign.resumed",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "campaign": {
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "name": "Example",
            "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "channel_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "status": "draft",
            "body": "Your order is ready for pickup.",
            "template_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "media_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "variables": [],
            "audience": {
                "group_ids": [
                    "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
                ],
                "smart_list_ids": [
                    "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
                ],
                "import_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
                "addresses": [
                    {
                        "address": "+923451234567",
                        "variables": []
                    }
                ]
            },
            "exclude": {
                "group_ids": [
                    "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
                ]
            },
            "category": "marketing",
            "compliance": {
                "consent_asserted_at": "2026-10-01T09:15:02Z",
                "consent_asserted_by": {
                    "type": "example",
                    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
                },
                "service_message": true
            },
            "append_opt_out_text": true,
            "shorten_links": true,
            "track_clicks": true,
            "scheduled_at": "2026-10-01T09:15:02Z",
            "started_at": "2026-10-01T09:15:02Z",
            "paused_at": "2026-10-01T09:15:02Z",
            "completed_at": "2026-10-01T09:15:02Z",
            "cancelled_at": "2026-10-01T09:15:02Z",
            "eta_at": "2026-10-01T09:15:02Z",
            "stats": {
                "total": 1,
                "excluded": 1,
                "duplicates": 1,
                "expanded_at": "2026-10-01T09:15:02Z",
                "skipped": []
            },
            "actor": {
                "type": "example",
                "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
            },
            "created_at": "2026-10-01T09:15:02Z",
            "updated_at": "2026-10-01T09:15:02Z"
        },
        "actor": {
            "type": "example",
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
        }
    }
}

campaign.completed

Every recipient of the campaign is final. `data.campaign` carries the final stats. `data.campaign` is the campaign resource as it is when the event is delivered.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "campaign.completed",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "campaign": {
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "name": "Example",
            "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "channel_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "status": "draft",
            "body": "Your order is ready for pickup.",
            "template_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "media_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "variables": [],
            "audience": {
                "group_ids": [
                    "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
                ],
                "smart_list_ids": [
                    "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
                ],
                "import_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
                "addresses": [
                    {
                        "address": "+923451234567",
                        "variables": []
                    }
                ]
            },
            "exclude": {
                "group_ids": [
                    "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
                ]
            },
            "category": "marketing",
            "compliance": {
                "consent_asserted_at": "2026-10-01T09:15:02Z",
                "consent_asserted_by": {
                    "type": "example",
                    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
                },
                "service_message": true
            },
            "append_opt_out_text": true,
            "shorten_links": true,
            "track_clicks": true,
            "scheduled_at": "2026-10-01T09:15:02Z",
            "started_at": "2026-10-01T09:15:02Z",
            "paused_at": "2026-10-01T09:15:02Z",
            "completed_at": "2026-10-01T09:15:02Z",
            "cancelled_at": "2026-10-01T09:15:02Z",
            "eta_at": "2026-10-01T09:15:02Z",
            "stats": {
                "total": 1,
                "excluded": 1,
                "duplicates": 1,
                "expanded_at": "2026-10-01T09:15:02Z",
                "skipped": []
            },
            "actor": {
                "type": "example",
                "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
            },
            "created_at": "2026-10-01T09:15:02Z",
            "updated_at": "2026-10-01T09:15:02Z"
        }
    }
}

campaign.cancelled

The campaign was cancelled; its pending recipients and queued messages are cancelled. `data.actor` is who did it. `data.campaign` is the campaign resource as it is when the event is delivered.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "campaign.cancelled",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "campaign": {
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "name": "Example",
            "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "channel_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "status": "draft",
            "body": "Your order is ready for pickup.",
            "template_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "media_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "variables": [],
            "audience": {
                "group_ids": [
                    "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
                ],
                "smart_list_ids": [
                    "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
                ],
                "import_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
                "addresses": [
                    {
                        "address": "+923451234567",
                        "variables": []
                    }
                ]
            },
            "exclude": {
                "group_ids": [
                    "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
                ]
            },
            "category": "marketing",
            "compliance": {
                "consent_asserted_at": "2026-10-01T09:15:02Z",
                "consent_asserted_by": {
                    "type": "example",
                    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
                },
                "service_message": true
            },
            "append_opt_out_text": true,
            "shorten_links": true,
            "track_clicks": true,
            "scheduled_at": "2026-10-01T09:15:02Z",
            "started_at": "2026-10-01T09:15:02Z",
            "paused_at": "2026-10-01T09:15:02Z",
            "completed_at": "2026-10-01T09:15:02Z",
            "cancelled_at": "2026-10-01T09:15:02Z",
            "eta_at": "2026-10-01T09:15:02Z",
            "stats": {
                "total": 1,
                "excluded": 1,
                "duplicates": 1,
                "expanded_at": "2026-10-01T09:15:02Z",
                "skipped": []
            },
            "actor": {
                "type": "example",
                "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
            },
            "created_at": "2026-10-01T09:15:02Z",
            "updated_at": "2026-10-01T09:15:02Z"
        },
        "actor": {
            "type": "example",
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
        }
    }
}

contact.created

A contact was created (API, portal, import, or inbound from a new address). `data.contact` is the contact resource.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "contact.created",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "contact": {
            "id": "0198ea17-5c28-7b94-8e07-3a9d1f4c6b05",
            "first_name": "Amina",
            "last_name": "Khan",
            "display_name": "Amina Khan",
            "email": "amina@example.com",
            "timezone": "Asia/Karachi",
            "language": "en",
            "custom_fields": {
                "plan": "gold"
            },
            "identities": [
                {
                    "id": "0198ea17-5c31-7e02-b5a8-4f2e0d7c9a06",
                    "type": "phone",
                    "address": "+923001234567",
                    "display": "+92 300 1234567",
                    "meta": [],
                    "country_iso": "PK",
                    "is_primary": true,
                    "suppressed": false,
                    "blocked_at": null,
                    "created_at": "2026-09-12T10:04:11Z"
                }
            ],
            "group_ids": [
                "0198e0d2-8a40-7f15-a6b3-2c9e4d1f7a09"
            ],
            "source": "api",
            "actor": {
                "type": "api_key",
                "id": "0198e0c1-6f20-7a4d-9b13-7e5c2a8d4f07"
            },
            "created_at": "2026-09-12T10:04:11Z",
            "updated_at": "2026-10-01T09:15:02Z"
        }
    }
}

contact.updated

Fields, identities, groups or the merge target of a contact changed; a bulk import emits one event per changed contact. `data.changed` names what changed.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "contact.updated",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "contact": {
            "id": "0198ea17-5c28-7b94-8e07-3a9d1f4c6b05",
            "first_name": "Amina",
            "last_name": "Khan",
            "display_name": "Amina Khan",
            "email": "amina@example.com",
            "timezone": "Asia/Karachi",
            "language": "en",
            "custom_fields": {
                "plan": "gold"
            },
            "identities": [
                {
                    "id": "0198ea17-5c31-7e02-b5a8-4f2e0d7c9a06",
                    "type": "phone",
                    "address": "+923001234567",
                    "display": "+92 300 1234567",
                    "meta": [],
                    "country_iso": "PK",
                    "is_primary": true,
                    "suppressed": false,
                    "blocked_at": null,
                    "created_at": "2026-09-12T10:04:11Z"
                }
            ],
            "group_ids": [
                "0198e0d2-8a40-7f15-a6b3-2c9e4d1f7a09"
            ],
            "source": "api",
            "actor": {
                "type": "api_key",
                "id": "0198e0c1-6f20-7a4d-9b13-7e5c2a8d4f07"
            },
            "created_at": "2026-09-12T10:04:11Z",
            "updated_at": "2026-10-01T09:15:02Z"
        },
        "changed": [
            "example"
        ]
    }
}

contact.deleted

A contact was soft-deleted, erased (`erased: true`; nothing of it remains) or merged into another contact (`merged_into`). The data carries ids only.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "contact.deleted",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "contact_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "erased": true,
        "merged_into": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
    }
}

import.completed

An import finished (any type; a user cancel emits nothing). `data.import` is the import resource with its totals. `error_report_url` is signed for 15 minutes from when the event was rendered, so a later retry or replay may hold an expired URL; `GET /v1/imports/{id}` signs a fresh one.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "import.completed",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "import": {
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "type": "phone_history",
            "status": "uploaded",
            "channel_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "options": [],
            "totals": {
                "rows": 1,
                "created": 1,
                "updated": 1,
                "skipped": 1,
                "errors": 1
            },
            "confirmation": [],
            "error": "example",
            "error_report_url": "https://example.com/error-report-url",
            "error_report_url_expires_at": "2026-10-01T09:15:02Z",
            "started_at": "2026-10-01T09:15:02Z",
            "completed_at": "2026-10-01T09:15:02Z",
            "created_at": "2026-10-01T09:15:02Z"
        }
    }
}

import.failed

An import failed; `data.import.error` says why. Same shape as `import.completed`.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "import.failed",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "import": {
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "type": "phone_history",
            "status": "uploaded",
            "channel_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "options": [],
            "totals": {
                "rows": 1,
                "created": 1,
                "updated": 1,
                "skipped": 1,
                "errors": 1
            },
            "confirmation": [],
            "error": "example",
            "error_report_url": "https://example.com/error-report-url",
            "error_report_url_expires_at": "2026-10-01T09:15:02Z",
            "started_at": "2026-10-01T09:15:02Z",
            "completed_at": "2026-10-01T09:15:02Z",
            "created_at": "2026-10-01T09:15:02Z"
        }
    }
}

export.completed

An export file is ready. `data.export` is the export resource with `url: null`: fetch the signed download URL with `GET /v1/exports/{id}`. A failed export emits nothing; poll the export instead.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "export.completed",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "export": {
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "type": "messages_csv",
            "status": "queued",
            "params": [],
            "url": null,
            "url_expires_at": null,
            "expires_at": "2026-10-01T09:15:02Z",
            "created_at": "2026-10-01T09:15:02Z",
            "completed_at": "2026-10-01T09:15:02Z"
        }
    }
}

line.sender_changed

The sender list of a line changed: senders were set or reordered, a newly verified number joined the Direct line, or a disconnected number left every line. `data.senders` is the whole list after the change, in position order (0 first).

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "line.sender_changed",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "senders": [
            {
                "channel_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
                "role": "primary",
                "position": 0,
                "enabled": true
            }
        ],
        "sticky_cleared_count": 0
    }
}

line.failover

Queued messages of a line moved from one sender to another because the first could not send: it left the line, was disconnected, stayed unhealthy longer than the line's `failover_seconds` allow for the lane (by default high 2 min, normal 15 min, bulk 60 min), reported a sender fault, or the messages were waiting for any sender. One event per line, sender pair and sweep; `message_ids` lists at most 100 of the `message_count` messages. Messages sent with a named `channel_id` or `from` never move.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "line.failover",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "from_channel_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "to_channel_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "reason": "Example text.",
        "message_count": 1,
        "message_ids": [
            "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
        ]
    }
}

line.no_sender

No sender of the line can send: messages wait with `hold_reason` `no_sender_available` and move to the first sender that can again. Sent once when the line loses its last healthy sender, not again until one came back.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "line.no_sender",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "held_count": 0
    }
}

line.connected

A partner line left `not_connected`: the user connected a phone and its first number was verified. Sent once per line, whatever the line's state then is: `state` says it, and when it is `needs_attention` a `line.needs_attention` follows. Later recoveries send `line.recovered`. Partner lines only (`partner_lines` endpoints and the account's own endpoints).

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "line.connected",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "external_ref": "example",
        "state": "connected",
        "needs_attention_reasons": [
            "device_offline"
        ],
        "previous_state": "connected"
    }
}

line.needs_attention

A connected partner line needs its user: `needs_attention_reasons` says why. Sent when the line enters the state and again when a new reason is added (a reason that goes away is not sent). The same as `GET /partner/v1/lines/{id}/status` at that moment.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "line.needs_attention",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "external_ref": "example",
        "state": "connected",
        "needs_attention_reasons": [
            "device_offline"
        ],
        "previous_state": "connected"
    }
}

line.recovered

A partner line that needed attention is connected again. Sent once per recovery.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "line.recovered",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "external_ref": "example",
        "state": "connected",
        "needs_attention_reasons": [
            "device_offline"
        ],
        "previous_state": "connected"
    }
}

line.detached

A partner line was detached and archived, by the partner (`DELETE /partner/v1/lines/{id}`), by the account's owner, or by MyComm. The account keeps its numbers and history; the line sends no more. Sent once.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "line.detached",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "external_ref": "example",
        "by": "partner"
    }
}

line.quota_low

A sponsored partner line used 80% of the messages its partner pays for this cycle, for one channel type. Sent once per cycle and type (when one send takes the line past 80% and to 100%, both this and `line.quota_exhausted` are sent). Partner lines only.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "line.quota_low",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "external_ref": "example",
        "channel_type": "example",
        "allowance": 0,
        "used": 0,
        "cycle_ends_at": "2026-10-01T09:15:02Z"
    }
}

line.quota_exhausted

A sponsored partner line used all the messages its partner pays for this cycle, for one channel type. Further messages of that type wait with `hold_reason` `sponsor_quota_exhausted` until the next cycle, unless the sponsorship lets the user's own messages take over (`allow_user_overage`). Sent once per cycle and type.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "line.quota_exhausted",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "external_ref": "example",
        "channel_type": "example",
        "allowance": 0,
        "used": 0,
        "cycle_ends_at": "2026-10-01T09:15:02Z"
    }
}

line.alarm

Something about the line needs attention, sent once per episode: while the condition lasts it only counts, and once it has cleared the next occurrence is a new episode. `kind`: `failover` (messages moved to another sender; ends after an hour without another move), `no_sender` (no sender can send; ends after 15 minutes with one that can, and a new loss within those minutes only counts), `pool_member_blocked` (a pool member was paused or disconnected; ends when it is resumed), `budget_80` (a sender used `alarm_thresholds.budget_percent` of its hourly limit; ends below 60 % of that limit, or 20 points under `alarm_thresholds.budget_percent` when that is lower), `self_loop` (a sender sent `alarm_thresholds.self_loop_per_hour` messages to the account's own numbers within an hour; ends after an hour without one), `sponsor_quota_low` (80 % of the sponsored allowance is used; ends with the next cycle or when the line has no active sponsorship) or `unconfirmed` (messages an unpaired phone never confirmed were failed or sent again, per `on_unconfirmed`; ends after 24 hours without one). Archiving or detaching a line ends its open alarms. An alarm about a sender (`channel_id` set, as for `pool_member_blocked` and `budget_80`) is sent once for each line holding it. The events that already tell of a change (`line.failover`, `line.no_sender`, `line.quota_low`) are still sent.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "line.alarm",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "alarm_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "kind": "failover",
        "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "channel_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "count": 1,
        "first_at": "2026-10-01T09:15:02Z",
        "data": []
    }
}

line.recovery_requested

Someone who says they lost their number asked to recover the account of this line; sent once per partner, on its oldest live line of the account. Nothing has changed on the account. If you know this person, answer with `POST /partner/v1/lines/{id}/vouch`. It is never required and never enough alone: MyComm staff decide, no earlier than `waiting_until`.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "line.recovery_requested",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "recovery_request_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "contact_name": "example",
        "contact_number": "example",
        "requested_at": "2026-10-01T09:15:02Z",
        "waiting_until": "2026-10-01T09:15:02Z"
    }
}

conversation.handed_over

The conversation moved to another line (`POST /v1/conversations/{id}/handover`) with its messages; the contact's next replies land on `to_line_id`. The envelope `line_id` is the target line. When the target already had a conversation with the contact the two merged, and `conversation_id` is that conversation.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "conversation.handed_over",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "conversation_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "from_line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "to_line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
    }
}

channel.connected

A number finished verification and is `active`. `data.channel` is the channel resource.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "channel.connected",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "channel": {
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "type": "android_sim",
            "name": "Example",
            "address": "+923001234567",
            "display_address": "+923001234567",
            "status": "pending_verification",
            "pause_reason": "owner",
            "paused_at": "2026-10-01T09:15:02Z",
            "disconnect_reason": "owner",
            "device_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "device_sim_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "default_line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "line_ids": [
                "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
            ],
            "capabilities": {
                "text_max_chars": 1,
                "segmented": true,
                "max_segments": 1,
                "media": [],
                "max_media_items": 1,
                "delivery_reports": true,
                "read_receipts": true,
                "typing": true,
                "reactions": true,
                "edit_delete": true,
                "buttons": true,
                "location": true,
                "business_initiated": true,
                "session_window_seconds": 1,
                "groups": true
            },
            "allowed_destination_countries": [
                "example"
            ],
            "skip_business_senders": true,
            "rate_policy": {
                "schema": "example",
                "interval_ms": {
                    "min": 1,
                    "max": 1
                },
                "caps": {
                    "per_min": 1,
                    "per_15m": 1,
                    "per_hour": 1,
                    "per_day": 1,
                    "new_recipients_per_day": 1
                },
                "warmup": {
                    "enabled": true
                },
                "active_hours": {
                    "start": "example",
                    "end": "example",
                    "timezone": "example"
                },
                "bulk_hours": {
                    "start": "example",
                    "end": "example",
                    "tz": "example"
                },
                "acknowledged_risk_at": "2026-10-01T09:15:02Z"
            },
            "rate_policy_source": "suggested",
            "rate_policy_risk": "green",
            "suggested_rate_policy": {
                "schema": "example",
                "interval_ms": {
                    "min": 1,
                    "max": 1
                },
                "caps": {
                    "per_min": 1,
                    "per_15m": 1,
                    "per_hour": 1,
                    "per_day": 1,
                    "new_recipients_per_day": 1
                },
                "warmup": {
                    "enabled": true
                },
                "active_hours": {
                    "start": "example",
                    "end": "example",
                    "timezone": "example"
                },
                "bulk_hours": {
                    "start": "example",
                    "end": "example",
                    "tz": "example"
                }
            },
            "rate_policy_ceiling": {
                "per_min": 1,
                "per_15m": 1,
                "per_hour": 1,
                "per_day": 1
            },
            "warmup": {
                "active": true,
                "day": 1,
                "ends_at": "2026-10-01T09:15:02Z",
                "today_cap": 1
            },
            "health": {
                "score": 1,
                "band": "good",
                "evaluated_at": "2026-10-01T09:15:02Z",
                "quarantine_until": "2026-10-01T09:15:02Z",
                "components": []
            },
            "queue": {
                "queued": 1,
                "held": 1,
                "leased": 1
            },
            "usage": {
                "segments_15m": 1,
                "segments_1h": 1,
                "segments_24h": 1
            },
            "throttled_until": "2026-10-01T09:15:02Z",
            "verification": {
                "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
                "status": "pending",
                "step": "started",
                "method": "loopback",
                "attempts": 1,
                "confirmation": {
                    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
                    "status": "pending",
                    "expires_at": "2026-10-01T09:15:02Z",
                    "decided_at": "2026-10-01T09:15:02Z"
                },
                "failure_reason": "timeout",
                "expires_at": "2026-10-01T09:15:02Z",
                "verified_at": "2026-10-01T09:15:02Z"
            },
            "verified_at": "2026-10-01T09:15:02Z",
            "connected_at": "2026-10-01T09:15:02Z",
            "disconnected_at": "2026-10-01T09:15:02Z",
            "created_at": "2026-10-01T09:15:02Z"
        }
    }
}

channel.verification_failed

Verification failed after 3 attempts, or at once for `address_in_use` and `declined_on_device`. `data.reason` is the `failure_reason` of the verification.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "channel.verification_failed",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "channel": {
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "type": "android_sim",
            "name": "Example",
            "address": "+923001234567",
            "display_address": "+923001234567",
            "status": "pending_verification",
            "pause_reason": "owner",
            "paused_at": "2026-10-01T09:15:02Z",
            "disconnect_reason": "owner",
            "device_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "device_sim_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "default_line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "line_ids": [
                "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
            ],
            "capabilities": {
                "text_max_chars": 1,
                "segmented": true,
                "max_segments": 1,
                "media": [],
                "max_media_items": 1,
                "delivery_reports": true,
                "read_receipts": true,
                "typing": true,
                "reactions": true,
                "edit_delete": true,
                "buttons": true,
                "location": true,
                "business_initiated": true,
                "session_window_seconds": 1,
                "groups": true
            },
            "allowed_destination_countries": [
                "example"
            ],
            "skip_business_senders": true,
            "rate_policy": {
                "schema": "example",
                "interval_ms": {
                    "min": 1,
                    "max": 1
                },
                "caps": {
                    "per_min": 1,
                    "per_15m": 1,
                    "per_hour": 1,
                    "per_day": 1,
                    "new_recipients_per_day": 1
                },
                "warmup": {
                    "enabled": true
                },
                "active_hours": {
                    "start": "example",
                    "end": "example",
                    "timezone": "example"
                },
                "bulk_hours": {
                    "start": "example",
                    "end": "example",
                    "tz": "example"
                },
                "acknowledged_risk_at": "2026-10-01T09:15:02Z"
            },
            "rate_policy_source": "suggested",
            "rate_policy_risk": "green",
            "suggested_rate_policy": {
                "schema": "example",
                "interval_ms": {
                    "min": 1,
                    "max": 1
                },
                "caps": {
                    "per_min": 1,
                    "per_15m": 1,
                    "per_hour": 1,
                    "per_day": 1,
                    "new_recipients_per_day": 1
                },
                "warmup": {
                    "enabled": true
                },
                "active_hours": {
                    "start": "example",
                    "end": "example",
                    "timezone": "example"
                },
                "bulk_hours": {
                    "start": "example",
                    "end": "example",
                    "tz": "example"
                }
            },
            "rate_policy_ceiling": {
                "per_min": 1,
                "per_15m": 1,
                "per_hour": 1,
                "per_day": 1
            },
            "warmup": {
                "active": true,
                "day": 1,
                "ends_at": "2026-10-01T09:15:02Z",
                "today_cap": 1
            },
            "health": {
                "score": 1,
                "band": "good",
                "evaluated_at": "2026-10-01T09:15:02Z",
                "quarantine_until": "2026-10-01T09:15:02Z",
                "components": []
            },
            "queue": {
                "queued": 1,
                "held": 1,
                "leased": 1
            },
            "usage": {
                "segments_15m": 1,
                "segments_1h": 1,
                "segments_24h": 1
            },
            "throttled_until": "2026-10-01T09:15:02Z",
            "verification": {
                "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
                "status": "pending",
                "step": "started",
                "method": "loopback",
                "attempts": 1,
                "confirmation": {
                    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
                    "status": "pending",
                    "expires_at": "2026-10-01T09:15:02Z",
                    "decided_at": "2026-10-01T09:15:02Z"
                },
                "failure_reason": "timeout",
                "expires_at": "2026-10-01T09:15:02Z",
                "verified_at": "2026-10-01T09:15:02Z"
            },
            "verified_at": "2026-10-01T09:15:02Z",
            "connected_at": "2026-10-01T09:15:02Z",
            "disconnected_at": "2026-10-01T09:15:02Z",
            "created_at": "2026-10-01T09:15:02Z"
        },
        "reason": "timeout"
    }
}

channel.disconnected

The number was disconnected (owner disconnect, SIM retirement, ops force-release, account deletion or a stale release). `data.reason` is the `disconnect_reason`.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "channel.disconnected",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "channel": {
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "type": "android_sim",
            "name": "Example",
            "address": "+923001234567",
            "display_address": "+923001234567",
            "status": "pending_verification",
            "pause_reason": "owner",
            "paused_at": "2026-10-01T09:15:02Z",
            "disconnect_reason": "owner",
            "device_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "device_sim_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "default_line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "line_ids": [
                "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
            ],
            "capabilities": {
                "text_max_chars": 1,
                "segmented": true,
                "max_segments": 1,
                "media": [],
                "max_media_items": 1,
                "delivery_reports": true,
                "read_receipts": true,
                "typing": true,
                "reactions": true,
                "edit_delete": true,
                "buttons": true,
                "location": true,
                "business_initiated": true,
                "session_window_seconds": 1,
                "groups": true
            },
            "allowed_destination_countries": [
                "example"
            ],
            "skip_business_senders": true,
            "rate_policy": {
                "schema": "example",
                "interval_ms": {
                    "min": 1,
                    "max": 1
                },
                "caps": {
                    "per_min": 1,
                    "per_15m": 1,
                    "per_hour": 1,
                    "per_day": 1,
                    "new_recipients_per_day": 1
                },
                "warmup": {
                    "enabled": true
                },
                "active_hours": {
                    "start": "example",
                    "end": "example",
                    "timezone": "example"
                },
                "bulk_hours": {
                    "start": "example",
                    "end": "example",
                    "tz": "example"
                },
                "acknowledged_risk_at": "2026-10-01T09:15:02Z"
            },
            "rate_policy_source": "suggested",
            "rate_policy_risk": "green",
            "suggested_rate_policy": {
                "schema": "example",
                "interval_ms": {
                    "min": 1,
                    "max": 1
                },
                "caps": {
                    "per_min": 1,
                    "per_15m": 1,
                    "per_hour": 1,
                    "per_day": 1,
                    "new_recipients_per_day": 1
                },
                "warmup": {
                    "enabled": true
                },
                "active_hours": {
                    "start": "example",
                    "end": "example",
                    "timezone": "example"
                },
                "bulk_hours": {
                    "start": "example",
                    "end": "example",
                    "tz": "example"
                }
            },
            "rate_policy_ceiling": {
                "per_min": 1,
                "per_15m": 1,
                "per_hour": 1,
                "per_day": 1
            },
            "warmup": {
                "active": true,
                "day": 1,
                "ends_at": "2026-10-01T09:15:02Z",
                "today_cap": 1
            },
            "health": {
                "score": 1,
                "band": "good",
                "evaluated_at": "2026-10-01T09:15:02Z",
                "quarantine_until": "2026-10-01T09:15:02Z",
                "components": []
            },
            "queue": {
                "queued": 1,
                "held": 1,
                "leased": 1
            },
            "usage": {
                "segments_15m": 1,
                "segments_1h": 1,
                "segments_24h": 1
            },
            "throttled_until": "2026-10-01T09:15:02Z",
            "verification": {
                "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
                "status": "pending",
                "step": "started",
                "method": "loopback",
                "attempts": 1,
                "confirmation": {
                    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
                    "status": "pending",
                    "expires_at": "2026-10-01T09:15:02Z",
                    "decided_at": "2026-10-01T09:15:02Z"
                },
                "failure_reason": "timeout",
                "expires_at": "2026-10-01T09:15:02Z",
                "verified_at": "2026-10-01T09:15:02Z"
            },
            "verified_at": "2026-10-01T09:15:02Z",
            "connected_at": "2026-10-01T09:15:02Z",
            "disconnected_at": "2026-10-01T09:15:02Z",
            "created_at": "2026-10-01T09:15:02Z"
        },
        "reason": "owner"
    }
}

channel.paused

The channel was paused. `data.reason` is the `pause_reason`; `dominant_code` and `streak` are set only for `auto:failure_streak`.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "channel.paused",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "channel": {
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "type": "android_sim",
            "name": "Example",
            "address": "+923001234567",
            "display_address": "+923001234567",
            "status": "pending_verification",
            "pause_reason": "owner",
            "paused_at": "2026-10-01T09:15:02Z",
            "disconnect_reason": "owner",
            "device_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "device_sim_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "default_line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "line_ids": [
                "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
            ],
            "capabilities": {
                "text_max_chars": 1,
                "segmented": true,
                "max_segments": 1,
                "media": [],
                "max_media_items": 1,
                "delivery_reports": true,
                "read_receipts": true,
                "typing": true,
                "reactions": true,
                "edit_delete": true,
                "buttons": true,
                "location": true,
                "business_initiated": true,
                "session_window_seconds": 1,
                "groups": true
            },
            "allowed_destination_countries": [
                "example"
            ],
            "skip_business_senders": true,
            "rate_policy": {
                "schema": "example",
                "interval_ms": {
                    "min": 1,
                    "max": 1
                },
                "caps": {
                    "per_min": 1,
                    "per_15m": 1,
                    "per_hour": 1,
                    "per_day": 1,
                    "new_recipients_per_day": 1
                },
                "warmup": {
                    "enabled": true
                },
                "active_hours": {
                    "start": "example",
                    "end": "example",
                    "timezone": "example"
                },
                "bulk_hours": {
                    "start": "example",
                    "end": "example",
                    "tz": "example"
                },
                "acknowledged_risk_at": "2026-10-01T09:15:02Z"
            },
            "rate_policy_source": "suggested",
            "rate_policy_risk": "green",
            "suggested_rate_policy": {
                "schema": "example",
                "interval_ms": {
                    "min": 1,
                    "max": 1
                },
                "caps": {
                    "per_min": 1,
                    "per_15m": 1,
                    "per_hour": 1,
                    "per_day": 1,
                    "new_recipients_per_day": 1
                },
                "warmup": {
                    "enabled": true
                },
                "active_hours": {
                    "start": "example",
                    "end": "example",
                    "timezone": "example"
                },
                "bulk_hours": {
                    "start": "example",
                    "end": "example",
                    "tz": "example"
                }
            },
            "rate_policy_ceiling": {
                "per_min": 1,
                "per_15m": 1,
                "per_hour": 1,
                "per_day": 1
            },
            "warmup": {
                "active": true,
                "day": 1,
                "ends_at": "2026-10-01T09:15:02Z",
                "today_cap": 1
            },
            "health": {
                "score": 1,
                "band": "good",
                "evaluated_at": "2026-10-01T09:15:02Z",
                "quarantine_until": "2026-10-01T09:15:02Z",
                "components": []
            },
            "queue": {
                "queued": 1,
                "held": 1,
                "leased": 1
            },
            "usage": {
                "segments_15m": 1,
                "segments_1h": 1,
                "segments_24h": 1
            },
            "throttled_until": "2026-10-01T09:15:02Z",
            "verification": {
                "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
                "status": "pending",
                "step": "started",
                "method": "loopback",
                "attempts": 1,
                "confirmation": {
                    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
                    "status": "pending",
                    "expires_at": "2026-10-01T09:15:02Z",
                    "decided_at": "2026-10-01T09:15:02Z"
                },
                "failure_reason": "timeout",
                "expires_at": "2026-10-01T09:15:02Z",
                "verified_at": "2026-10-01T09:15:02Z"
            },
            "verified_at": "2026-10-01T09:15:02Z",
            "connected_at": "2026-10-01T09:15:02Z",
            "disconnected_at": "2026-10-01T09:15:02Z",
            "created_at": "2026-10-01T09:15:02Z"
        },
        "reason": "owner",
        "dominant_code": "example",
        "streak": 1
    }
}

channel.resumed

A paused channel is `active` again.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "channel.resumed",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "channel": {
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "type": "android_sim",
            "name": "Example",
            "address": "+923001234567",
            "display_address": "+923001234567",
            "status": "pending_verification",
            "pause_reason": "owner",
            "paused_at": "2026-10-01T09:15:02Z",
            "disconnect_reason": "owner",
            "device_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "device_sim_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "default_line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "line_ids": [
                "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
            ],
            "capabilities": {
                "text_max_chars": 1,
                "segmented": true,
                "max_segments": 1,
                "media": [],
                "max_media_items": 1,
                "delivery_reports": true,
                "read_receipts": true,
                "typing": true,
                "reactions": true,
                "edit_delete": true,
                "buttons": true,
                "location": true,
                "business_initiated": true,
                "session_window_seconds": 1,
                "groups": true
            },
            "allowed_destination_countries": [
                "example"
            ],
            "skip_business_senders": true,
            "rate_policy": {
                "schema": "example",
                "interval_ms": {
                    "min": 1,
                    "max": 1
                },
                "caps": {
                    "per_min": 1,
                    "per_15m": 1,
                    "per_hour": 1,
                    "per_day": 1,
                    "new_recipients_per_day": 1
                },
                "warmup": {
                    "enabled": true
                },
                "active_hours": {
                    "start": "example",
                    "end": "example",
                    "timezone": "example"
                },
                "bulk_hours": {
                    "start": "example",
                    "end": "example",
                    "tz": "example"
                },
                "acknowledged_risk_at": "2026-10-01T09:15:02Z"
            },
            "rate_policy_source": "suggested",
            "rate_policy_risk": "green",
            "suggested_rate_policy": {
                "schema": "example",
                "interval_ms": {
                    "min": 1,
                    "max": 1
                },
                "caps": {
                    "per_min": 1,
                    "per_15m": 1,
                    "per_hour": 1,
                    "per_day": 1,
                    "new_recipients_per_day": 1
                },
                "warmup": {
                    "enabled": true
                },
                "active_hours": {
                    "start": "example",
                    "end": "example",
                    "timezone": "example"
                },
                "bulk_hours": {
                    "start": "example",
                    "end": "example",
                    "tz": "example"
                }
            },
            "rate_policy_ceiling": {
                "per_min": 1,
                "per_15m": 1,
                "per_hour": 1,
                "per_day": 1
            },
            "warmup": {
                "active": true,
                "day": 1,
                "ends_at": "2026-10-01T09:15:02Z",
                "today_cap": 1
            },
            "health": {
                "score": 1,
                "band": "good",
                "evaluated_at": "2026-10-01T09:15:02Z",
                "quarantine_until": "2026-10-01T09:15:02Z",
                "components": []
            },
            "queue": {
                "queued": 1,
                "held": 1,
                "leased": 1
            },
            "usage": {
                "segments_15m": 1,
                "segments_1h": 1,
                "segments_24h": 1
            },
            "throttled_until": "2026-10-01T09:15:02Z",
            "verification": {
                "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
                "status": "pending",
                "step": "started",
                "method": "loopback",
                "attempts": 1,
                "confirmation": {
                    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
                    "status": "pending",
                    "expires_at": "2026-10-01T09:15:02Z",
                    "decided_at": "2026-10-01T09:15:02Z"
                },
                "failure_reason": "timeout",
                "expires_at": "2026-10-01T09:15:02Z",
                "verified_at": "2026-10-01T09:15:02Z"
            },
            "verified_at": "2026-10-01T09:15:02Z",
            "connected_at": "2026-10-01T09:15:02Z",
            "disconnected_at": "2026-10-01T09:15:02Z",
            "created_at": "2026-10-01T09:15:02Z"
        }
    }
}

channel.health_changed

The SIM safety band of the channel changed. `data.health` is the `health` block of the channel resource.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "channel.health_changed",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "channel_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "health": {
            "score": 1,
            "band": "good",
            "evaluated_at": "2026-10-01T09:15:02Z",
            "quarantine_until": "2026-10-01T09:15:02Z",
            "components": []
        },
        "previous_band": "good"
    }
}

channel.volume_warning

80 % of the effective daily cap was used. Sending is not blocked; further messages wait.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "channel.volume_warning",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "channel_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "window": "24h",
        "used_segments": 0,
        "cap": 0,
        "date": "example"
    }
}

channel.qr_updated

The WhatsApp QR code to scan was regenerated while the number connects; each one stops working at `data.expires_at` (about 40 s). Opt-in: list it in the endpoint's `events`.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "channel.qr_updated",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "channel_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "qr_png_base64": "example",
        "expires_at": "2026-10-01T09:15:02Z"
    }
}

device.paired

Pairing completed, after the confirmation on the phone. `data.device` is the device resource.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "device.paired",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "device": {
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "name": "Example",
            "status": "active",
            "manufacturer": "example",
            "model": "example",
            "os_version": "example",
            "app_version_name": "example",
            "app_version_code": 1,
            "update_available": true,
            "connection_state": "online",
            "connection_reasons": [
                "example"
            ],
            "paused": true,
            "pause_reason": "owner",
            "os_limit_raised": true,
            "os_limit_value": 1,
            "os_limit_changed_at": "2026-10-01T09:15:02Z",
            "health": {
                "power": {
                    "battery_pct": 1,
                    "charging": true,
                    "power_mode": "normal"
                },
                "network": {
                    "type": "wifi",
                    "validated": true,
                    "airplane_mode": true
                },
                "permissions": [],
                "battery_optimization_ignored": true,
                "rcs_confirmed_off_at": "2026-10-01T09:15:02Z",
                "storage": {
                    "free_mb": 1,
                    "low": true
                }
            },
            "sims": [
                {
                    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
                    "slot": 1,
                    "subscription_id": 1,
                    "carrier_name": "example",
                    "country_iso": "example",
                    "reported_number": "example",
                    "present": true,
                    "service_state": "in_service",
                    "signal_level": 1,
                    "channel_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
                    "channel_status": "example",
                    "first_seen_at": "2026-10-01T09:15:02Z",
                    "last_seen_at": "2026-10-01T09:15:02Z"
                }
            ],
            "paired_at": "2026-10-01T09:15:02Z",
            "last_heartbeat_at": "2026-10-01T09:15:02Z",
            "last_pull_at": "2026-10-01T09:15:02Z",
            "last_report_at": "2026-10-01T09:15:02Z",
            "revoked_at": "2026-10-01T09:15:02Z",
            "revoked_reason": "owner",
            "drain_until": "2026-10-01T09:15:02Z"
        },
        "pairing_code_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
    }
}

device.online

The device's `connection_state` became `online`; `data.previous_state` is the state before.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "device.online",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "device": {
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "name": "Example",
            "status": "active",
            "manufacturer": "example",
            "model": "example",
            "os_version": "example",
            "app_version_name": "example",
            "app_version_code": 1,
            "update_available": true,
            "connection_state": "online",
            "connection_reasons": [
                "example"
            ],
            "paused": true,
            "pause_reason": "owner",
            "os_limit_raised": true,
            "os_limit_value": 1,
            "os_limit_changed_at": "2026-10-01T09:15:02Z",
            "health": {
                "power": {
                    "battery_pct": 1,
                    "charging": true,
                    "power_mode": "normal"
                },
                "network": {
                    "type": "wifi",
                    "validated": true,
                    "airplane_mode": true
                },
                "permissions": [],
                "battery_optimization_ignored": true,
                "rcs_confirmed_off_at": "2026-10-01T09:15:02Z",
                "storage": {
                    "free_mb": 1,
                    "low": true
                }
            },
            "sims": [
                {
                    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
                    "slot": 1,
                    "subscription_id": 1,
                    "carrier_name": "example",
                    "country_iso": "example",
                    "reported_number": "example",
                    "present": true,
                    "service_state": "in_service",
                    "signal_level": 1,
                    "channel_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
                    "channel_status": "example",
                    "first_seen_at": "2026-10-01T09:15:02Z",
                    "last_seen_at": "2026-10-01T09:15:02Z"
                }
            ],
            "paired_at": "2026-10-01T09:15:02Z",
            "last_heartbeat_at": "2026-10-01T09:15:02Z",
            "last_pull_at": "2026-10-01T09:15:02Z",
            "last_report_at": "2026-10-01T09:15:02Z",
            "revoked_at": "2026-10-01T09:15:02Z",
            "revoked_reason": "owner",
            "drain_until": "2026-10-01T09:15:02Z"
        },
        "previous_state": "online"
    }
}

device.degraded

The device is reachable but something needs attention; `data.device.connection_reasons` lists what.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "device.degraded",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "device": {
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "name": "Example",
            "status": "active",
            "manufacturer": "example",
            "model": "example",
            "os_version": "example",
            "app_version_name": "example",
            "app_version_code": 1,
            "update_available": true,
            "connection_state": "online",
            "connection_reasons": [
                "example"
            ],
            "paused": true,
            "pause_reason": "owner",
            "os_limit_raised": true,
            "os_limit_value": 1,
            "os_limit_changed_at": "2026-10-01T09:15:02Z",
            "health": {
                "power": {
                    "battery_pct": 1,
                    "charging": true,
                    "power_mode": "normal"
                },
                "network": {
                    "type": "wifi",
                    "validated": true,
                    "airplane_mode": true
                },
                "permissions": [],
                "battery_optimization_ignored": true,
                "rcs_confirmed_off_at": "2026-10-01T09:15:02Z",
                "storage": {
                    "free_mb": 1,
                    "low": true
                }
            },
            "sims": [
                {
                    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
                    "slot": 1,
                    "subscription_id": 1,
                    "carrier_name": "example",
                    "country_iso": "example",
                    "reported_number": "example",
                    "present": true,
                    "service_state": "in_service",
                    "signal_level": 1,
                    "channel_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
                    "channel_status": "example",
                    "first_seen_at": "2026-10-01T09:15:02Z",
                    "last_seen_at": "2026-10-01T09:15:02Z"
                }
            ],
            "paired_at": "2026-10-01T09:15:02Z",
            "last_heartbeat_at": "2026-10-01T09:15:02Z",
            "last_pull_at": "2026-10-01T09:15:02Z",
            "last_report_at": "2026-10-01T09:15:02Z",
            "revoked_at": "2026-10-01T09:15:02Z",
            "revoked_reason": "owner",
            "drain_until": "2026-10-01T09:15:02Z"
        },
        "previous_state": "online"
    }
}

device.offline

The device has been offline longer than the account's offline threshold; `data.previous_state` is the state it was in before it went offline.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "device.offline",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "device": {
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "name": "Example",
            "status": "active",
            "manufacturer": "example",
            "model": "example",
            "os_version": "example",
            "app_version_name": "example",
            "app_version_code": 1,
            "update_available": true,
            "connection_state": "online",
            "connection_reasons": [
                "example"
            ],
            "paused": true,
            "pause_reason": "owner",
            "os_limit_raised": true,
            "os_limit_value": 1,
            "os_limit_changed_at": "2026-10-01T09:15:02Z",
            "health": {
                "power": {
                    "battery_pct": 1,
                    "charging": true,
                    "power_mode": "normal"
                },
                "network": {
                    "type": "wifi",
                    "validated": true,
                    "airplane_mode": true
                },
                "permissions": [],
                "battery_optimization_ignored": true,
                "rcs_confirmed_off_at": "2026-10-01T09:15:02Z",
                "storage": {
                    "free_mb": 1,
                    "low": true
                }
            },
            "sims": [
                {
                    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
                    "slot": 1,
                    "subscription_id": 1,
                    "carrier_name": "example",
                    "country_iso": "example",
                    "reported_number": "example",
                    "present": true,
                    "service_state": "in_service",
                    "signal_level": 1,
                    "channel_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
                    "channel_status": "example",
                    "first_seen_at": "2026-10-01T09:15:02Z",
                    "last_seen_at": "2026-10-01T09:15:02Z"
                }
            ],
            "paired_at": "2026-10-01T09:15:02Z",
            "last_heartbeat_at": "2026-10-01T09:15:02Z",
            "last_pull_at": "2026-10-01T09:15:02Z",
            "last_report_at": "2026-10-01T09:15:02Z",
            "revoked_at": "2026-10-01T09:15:02Z",
            "revoked_reason": "owner",
            "drain_until": "2026-10-01T09:15:02Z"
        },
        "previous_state": "online"
    }
}

device.revoked

The device was unpaired or revoked. `data.reason` is the `revoked_reason`.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "device.revoked",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "device": {
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "name": "Example",
            "status": "active",
            "manufacturer": "example",
            "model": "example",
            "os_version": "example",
            "app_version_name": "example",
            "app_version_code": 1,
            "update_available": true,
            "connection_state": "online",
            "connection_reasons": [
                "example"
            ],
            "paused": true,
            "pause_reason": "owner",
            "os_limit_raised": true,
            "os_limit_value": 1,
            "os_limit_changed_at": "2026-10-01T09:15:02Z",
            "health": {
                "power": {
                    "battery_pct": 1,
                    "charging": true,
                    "power_mode": "normal"
                },
                "network": {
                    "type": "wifi",
                    "validated": true,
                    "airplane_mode": true
                },
                "permissions": [],
                "battery_optimization_ignored": true,
                "rcs_confirmed_off_at": "2026-10-01T09:15:02Z",
                "storage": {
                    "free_mb": 1,
                    "low": true
                }
            },
            "sims": [
                {
                    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
                    "slot": 1,
                    "subscription_id": 1,
                    "carrier_name": "example",
                    "country_iso": "example",
                    "reported_number": "example",
                    "present": true,
                    "service_state": "in_service",
                    "signal_level": 1,
                    "channel_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
                    "channel_status": "example",
                    "first_seen_at": "2026-10-01T09:15:02Z",
                    "last_seen_at": "2026-10-01T09:15:02Z"
                }
            ],
            "paired_at": "2026-10-01T09:15:02Z",
            "last_heartbeat_at": "2026-10-01T09:15:02Z",
            "last_pull_at": "2026-10-01T09:15:02Z",
            "last_report_at": "2026-10-01T09:15:02Z",
            "revoked_at": "2026-10-01T09:15:02Z",
            "revoked_reason": "owner",
            "drain_until": "2026-10-01T09:15:02Z"
        },
        "reason": "owner"
    }
}

account.suspended

The account was suspended by the partner, the owner or ops. An ops-initiated suspension carries the actor `admin` with a `null` id.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "account.suspended",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "account": {
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "name": "Example",
            "status": "active",
            "suspended_reason": "example",
            "country_iso": "example",
            "timezone": "example",
            "default_locale": "example",
            "settings": {
                "opt_out": [],
                "compliance": [],
                "quiet_hours": [],
                "frequency_cap": [],
                "links": [],
                "default_expiry_minutes": [],
                "sms": [],
                "channels": [],
                "whatsapp": [],
                "retention": [],
                "automation": [],
                "alerts": [],
                "limits": [],
                "support": []
            },
            "counts": {
                "devices_active": 0,
                "devices_online": 0,
                "channels_active": 0,
                "channels_needing_attention": 0,
                "channels_by_type": []
            },
            "deletion_requested_at": "2026-10-01T09:15:02Z",
            "purge_at": "2026-10-01T09:15:02Z",
            "created_at": "2026-10-01T09:15:02Z",
            "updated_at": "2026-10-01T09:15:02Z"
        },
        "actor": {
            "type": "example",
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
        },
        "reason": "Example text."
    }
}

account.reactivated

A suspended account is `active` again.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "account.reactivated",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "account": {
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "name": "Example",
            "status": "active",
            "suspended_reason": "example",
            "country_iso": "example",
            "timezone": "example",
            "default_locale": "example",
            "settings": {
                "opt_out": [],
                "compliance": [],
                "quiet_hours": [],
                "frequency_cap": [],
                "links": [],
                "default_expiry_minutes": [],
                "sms": [],
                "channels": [],
                "whatsapp": [],
                "retention": [],
                "automation": [],
                "alerts": [],
                "limits": [],
                "support": []
            },
            "counts": {
                "devices_active": 0,
                "devices_online": 0,
                "channels_active": 0,
                "channels_needing_attention": 0,
                "channels_by_type": []
            },
            "deletion_requested_at": "2026-10-01T09:15:02Z",
            "purge_at": "2026-10-01T09:15:02Z",
            "created_at": "2026-10-01T09:15:02Z",
            "updated_at": "2026-10-01T09:15:02Z"
        },
        "actor": {
            "type": "example",
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
        },
        "reason": "Example text."
    }
}

account.deletion_scheduled

The account is `pending_deletion`; `data.account.purge_at` is when it is purged.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "account.deletion_scheduled",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "account": {
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "name": "Example",
            "status": "active",
            "suspended_reason": "example",
            "country_iso": "example",
            "timezone": "example",
            "default_locale": "example",
            "settings": {
                "opt_out": [],
                "compliance": [],
                "quiet_hours": [],
                "frequency_cap": [],
                "links": [],
                "default_expiry_minutes": [],
                "sms": [],
                "channels": [],
                "whatsapp": [],
                "retention": [],
                "automation": [],
                "alerts": [],
                "limits": [],
                "support": []
            },
            "counts": {
                "devices_active": 0,
                "devices_online": 0,
                "channels_active": 0,
                "channels_needing_attention": 0,
                "channels_by_type": []
            },
            "deletion_requested_at": "2026-10-01T09:15:02Z",
            "purge_at": "2026-10-01T09:15:02Z",
            "created_at": "2026-10-01T09:15:02Z",
            "updated_at": "2026-10-01T09:15:02Z"
        },
        "actor": {
            "type": "example",
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
        },
        "reason": "Example text."
    }
}

message.queued

A message was accepted, or a manual retry re-queued it. Opt-in: list it in the endpoint's `events`.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "message.queued",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "message": {
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "account_id": "0198e0aa-3b10-7c52-8a41-5d2f9e7b1c01",
            "channel_id": "0198e0b4-92d3-7a18-b3c6-0e4a7d5f2c02",
            "channel_type": "android_sim",
            "line_id": "0198e0b4-9411-7f60-a2d9-1c8b6e3a4d03",
            "conversation_id": "0198f3a2-7a05-7d33-9f10-2b6c8e1d5a04",
            "contact_id": "0198ea17-5c28-7b94-8e07-3a9d1f4c6b05",
            "identity": {
                "id": "0198ea17-5c31-7e02-b5a8-4f2e0d7c9a06",
                "type": "phone",
                "address": "+923001234567",
                "display": "+92 300 1234567"
            },
            "direction": "outbound",
            "type": "sms",
            "origin": "api",
            "from": "+923451234567",
            "to": "+923001234567",
            "content_type": "text",
            "content": {
                "type": "text",
                "body": "Your order #1094 is ready for pickup."
            },
            "body": "Your order #1094 is ready for pickup.",
            "encoding": "gsm7",
            "segments": 1,
            "media": [],
            "channel_meta": [],
            "provider_message_id": null,
            "category": "transactional",
            "lane": "normal",
            "status": "queued",
            "hold_reason": null,
            "send_after": null,
            "expires_at": "2026-10-02T09:15:02Z",
            "attempts": 0,
            "sender_pinned": false,
            "fallback_of": null,
            "sender_attempts": [
                {
                    "channel_id": "0198e0b4-92d3-7a18-b3c6-0e4a7d5f2c02",
                    "outcome": "queued",
                    "reason": null,
                    "started_at": "2026-10-01T09:15:02Z",
                    "ended_at": null
                }
            ],
            "failure": null,
            "cancel_requested_at": null,
            "reference_id": "order-1094",
            "metadata": {
                "order_id": "1094"
            },
            "template_id": null,
            "campaign_id": null,
            "actor": {
                "type": "api_key",
                "id": "0198e0c1-6f20-7a4d-9b13-7e5c2a8d4f07"
            },
            "created_at": "2026-10-01T09:15:02Z",
            "sent_at": null,
            "delivered_at": null,
            "failed_at": null,
            "expired_at": null,
            "cancelled_at": null,
            "received_at": null,
            "read_at": null,
            "phone_timestamp": null
        },
        "conversation": {
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "created": true
        },
        "sender_attempt_count": 0
    }
}

message.sent

The message moved to `sent`, including phone-typed outbound and an `UNCONFIRMED` resolved by the phone.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "message.sent",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "message": {
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "account_id": "0198e0aa-3b10-7c52-8a41-5d2f9e7b1c01",
            "channel_id": "0198e0b4-92d3-7a18-b3c6-0e4a7d5f2c02",
            "channel_type": "android_sim",
            "line_id": "0198e0b4-9411-7f60-a2d9-1c8b6e3a4d03",
            "conversation_id": "0198f3a2-7a05-7d33-9f10-2b6c8e1d5a04",
            "contact_id": "0198ea17-5c28-7b94-8e07-3a9d1f4c6b05",
            "identity": {
                "id": "0198ea17-5c31-7e02-b5a8-4f2e0d7c9a06",
                "type": "phone",
                "address": "+923001234567",
                "display": "+92 300 1234567"
            },
            "direction": "outbound",
            "type": "sms",
            "origin": "api",
            "from": "+923451234567",
            "to": "+923001234567",
            "content_type": "text",
            "content": {
                "type": "text",
                "body": "Your order #1094 is ready for pickup."
            },
            "body": "Your order #1094 is ready for pickup.",
            "encoding": "gsm7",
            "segments": 1,
            "media": [],
            "channel_meta": [],
            "provider_message_id": null,
            "category": "transactional",
            "lane": "normal",
            "status": "queued",
            "hold_reason": null,
            "send_after": null,
            "expires_at": "2026-10-02T09:15:02Z",
            "attempts": 0,
            "sender_pinned": false,
            "fallback_of": null,
            "sender_attempts": [
                {
                    "channel_id": "0198e0b4-92d3-7a18-b3c6-0e4a7d5f2c02",
                    "outcome": "queued",
                    "reason": null,
                    "started_at": "2026-10-01T09:15:02Z",
                    "ended_at": null
                }
            ],
            "failure": null,
            "cancel_requested_at": null,
            "reference_id": "order-1094",
            "metadata": {
                "order_id": "1094"
            },
            "template_id": null,
            "campaign_id": null,
            "actor": {
                "type": "api_key",
                "id": "0198e0c1-6f20-7a4d-9b13-7e5c2a8d4f07"
            },
            "created_at": "2026-10-01T09:15:02Z",
            "sent_at": null,
            "delivered_at": null,
            "failed_at": null,
            "expired_at": null,
            "cancelled_at": null,
            "received_at": null,
            "read_at": null,
            "phone_timestamp": null
        },
        "conversation": {
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "created": true
        },
        "sender_attempt_count": 0
    }
}

message.delivered

The message moved to `delivered` (best effort).

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "message.delivered",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "message": {
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "account_id": "0198e0aa-3b10-7c52-8a41-5d2f9e7b1c01",
            "channel_id": "0198e0b4-92d3-7a18-b3c6-0e4a7d5f2c02",
            "channel_type": "android_sim",
            "line_id": "0198e0b4-9411-7f60-a2d9-1c8b6e3a4d03",
            "conversation_id": "0198f3a2-7a05-7d33-9f10-2b6c8e1d5a04",
            "contact_id": "0198ea17-5c28-7b94-8e07-3a9d1f4c6b05",
            "identity": {
                "id": "0198ea17-5c31-7e02-b5a8-4f2e0d7c9a06",
                "type": "phone",
                "address": "+923001234567",
                "display": "+92 300 1234567"
            },
            "direction": "outbound",
            "type": "sms",
            "origin": "api",
            "from": "+923451234567",
            "to": "+923001234567",
            "content_type": "text",
            "content": {
                "type": "text",
                "body": "Your order #1094 is ready for pickup."
            },
            "body": "Your order #1094 is ready for pickup.",
            "encoding": "gsm7",
            "segments": 1,
            "media": [],
            "channel_meta": [],
            "provider_message_id": null,
            "category": "transactional",
            "lane": "normal",
            "status": "queued",
            "hold_reason": null,
            "send_after": null,
            "expires_at": "2026-10-02T09:15:02Z",
            "attempts": 0,
            "sender_pinned": false,
            "fallback_of": null,
            "sender_attempts": [
                {
                    "channel_id": "0198e0b4-92d3-7a18-b3c6-0e4a7d5f2c02",
                    "outcome": "queued",
                    "reason": null,
                    "started_at": "2026-10-01T09:15:02Z",
                    "ended_at": null
                }
            ],
            "failure": null,
            "cancel_requested_at": null,
            "reference_id": "order-1094",
            "metadata": {
                "order_id": "1094"
            },
            "template_id": null,
            "campaign_id": null,
            "actor": {
                "type": "api_key",
                "id": "0198e0c1-6f20-7a4d-9b13-7e5c2a8d4f07"
            },
            "created_at": "2026-10-01T09:15:02Z",
            "sent_at": null,
            "delivered_at": null,
            "failed_at": null,
            "expired_at": null,
            "cancelled_at": null,
            "received_at": null,
            "read_at": null,
            "phone_timestamp": null
        },
        "conversation": {
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "created": true
        },
        "sender_attempt_count": 0
    }
}

message.read

The message moved to `read`. Emitted by channels with read receipts, never for SMS.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "message.read",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "message": {
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "account_id": "0198e0aa-3b10-7c52-8a41-5d2f9e7b1c01",
            "channel_id": "0198e0b4-92d3-7a18-b3c6-0e4a7d5f2c02",
            "channel_type": "android_sim",
            "line_id": "0198e0b4-9411-7f60-a2d9-1c8b6e3a4d03",
            "conversation_id": "0198f3a2-7a05-7d33-9f10-2b6c8e1d5a04",
            "contact_id": "0198ea17-5c28-7b94-8e07-3a9d1f4c6b05",
            "identity": {
                "id": "0198ea17-5c31-7e02-b5a8-4f2e0d7c9a06",
                "type": "phone",
                "address": "+923001234567",
                "display": "+92 300 1234567"
            },
            "direction": "outbound",
            "type": "sms",
            "origin": "api",
            "from": "+923451234567",
            "to": "+923001234567",
            "content_type": "text",
            "content": {
                "type": "text",
                "body": "Your order #1094 is ready for pickup."
            },
            "body": "Your order #1094 is ready for pickup.",
            "encoding": "gsm7",
            "segments": 1,
            "media": [],
            "channel_meta": [],
            "provider_message_id": null,
            "category": "transactional",
            "lane": "normal",
            "status": "queued",
            "hold_reason": null,
            "send_after": null,
            "expires_at": "2026-10-02T09:15:02Z",
            "attempts": 0,
            "sender_pinned": false,
            "fallback_of": null,
            "sender_attempts": [
                {
                    "channel_id": "0198e0b4-92d3-7a18-b3c6-0e4a7d5f2c02",
                    "outcome": "queued",
                    "reason": null,
                    "started_at": "2026-10-01T09:15:02Z",
                    "ended_at": null
                }
            ],
            "failure": null,
            "cancel_requested_at": null,
            "reference_id": "order-1094",
            "metadata": {
                "order_id": "1094"
            },
            "template_id": null,
            "campaign_id": null,
            "actor": {
                "type": "api_key",
                "id": "0198e0c1-6f20-7a4d-9b13-7e5c2a8d4f07"
            },
            "created_at": "2026-10-01T09:15:02Z",
            "sent_at": null,
            "delivered_at": null,
            "failed_at": null,
            "expired_at": null,
            "cancelled_at": null,
            "received_at": null,
            "read_at": null,
            "phone_timestamp": null
        },
        "conversation": {
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "created": true
        },
        "sender_attempt_count": 0
    }
}

message.failed

The message moved to `failed`; `data.message.failure` is `{code, message}`.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "message.failed",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "message": {
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "account_id": "0198e0aa-3b10-7c52-8a41-5d2f9e7b1c01",
            "channel_id": "0198e0b4-92d3-7a18-b3c6-0e4a7d5f2c02",
            "channel_type": "android_sim",
            "line_id": "0198e0b4-9411-7f60-a2d9-1c8b6e3a4d03",
            "conversation_id": "0198f3a2-7a05-7d33-9f10-2b6c8e1d5a04",
            "contact_id": "0198ea17-5c28-7b94-8e07-3a9d1f4c6b05",
            "identity": {
                "id": "0198ea17-5c31-7e02-b5a8-4f2e0d7c9a06",
                "type": "phone",
                "address": "+923001234567",
                "display": "+92 300 1234567"
            },
            "direction": "outbound",
            "type": "sms",
            "origin": "api",
            "from": "+923451234567",
            "to": "+923001234567",
            "content_type": "text",
            "content": {
                "type": "text",
                "body": "Your order #1094 is ready for pickup."
            },
            "body": "Your order #1094 is ready for pickup.",
            "encoding": "gsm7",
            "segments": 1,
            "media": [],
            "channel_meta": [],
            "provider_message_id": null,
            "category": "transactional",
            "lane": "normal",
            "status": "queued",
            "hold_reason": null,
            "send_after": null,
            "expires_at": "2026-10-02T09:15:02Z",
            "attempts": 0,
            "sender_pinned": false,
            "fallback_of": null,
            "sender_attempts": [
                {
                    "channel_id": "0198e0b4-92d3-7a18-b3c6-0e4a7d5f2c02",
                    "outcome": "queued",
                    "reason": null,
                    "started_at": "2026-10-01T09:15:02Z",
                    "ended_at": null
                }
            ],
            "failure": null,
            "cancel_requested_at": null,
            "reference_id": "order-1094",
            "metadata": {
                "order_id": "1094"
            },
            "template_id": null,
            "campaign_id": null,
            "actor": {
                "type": "api_key",
                "id": "0198e0c1-6f20-7a4d-9b13-7e5c2a8d4f07"
            },
            "created_at": "2026-10-01T09:15:02Z",
            "sent_at": null,
            "delivered_at": null,
            "failed_at": null,
            "expired_at": null,
            "cancelled_at": null,
            "received_at": null,
            "read_at": null,
            "phone_timestamp": null
        },
        "conversation": {
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "created": true
        },
        "sender_attempt_count": 0
    }
}

message.expired

The message moved to `expired`.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "message.expired",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "message": {
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "account_id": "0198e0aa-3b10-7c52-8a41-5d2f9e7b1c01",
            "channel_id": "0198e0b4-92d3-7a18-b3c6-0e4a7d5f2c02",
            "channel_type": "android_sim",
            "line_id": "0198e0b4-9411-7f60-a2d9-1c8b6e3a4d03",
            "conversation_id": "0198f3a2-7a05-7d33-9f10-2b6c8e1d5a04",
            "contact_id": "0198ea17-5c28-7b94-8e07-3a9d1f4c6b05",
            "identity": {
                "id": "0198ea17-5c31-7e02-b5a8-4f2e0d7c9a06",
                "type": "phone",
                "address": "+923001234567",
                "display": "+92 300 1234567"
            },
            "direction": "outbound",
            "type": "sms",
            "origin": "api",
            "from": "+923451234567",
            "to": "+923001234567",
            "content_type": "text",
            "content": {
                "type": "text",
                "body": "Your order #1094 is ready for pickup."
            },
            "body": "Your order #1094 is ready for pickup.",
            "encoding": "gsm7",
            "segments": 1,
            "media": [],
            "channel_meta": [],
            "provider_message_id": null,
            "category": "transactional",
            "lane": "normal",
            "status": "queued",
            "hold_reason": null,
            "send_after": null,
            "expires_at": "2026-10-02T09:15:02Z",
            "attempts": 0,
            "sender_pinned": false,
            "fallback_of": null,
            "sender_attempts": [
                {
                    "channel_id": "0198e0b4-92d3-7a18-b3c6-0e4a7d5f2c02",
                    "outcome": "queued",
                    "reason": null,
                    "started_at": "2026-10-01T09:15:02Z",
                    "ended_at": null
                }
            ],
            "failure": null,
            "cancel_requested_at": null,
            "reference_id": "order-1094",
            "metadata": {
                "order_id": "1094"
            },
            "template_id": null,
            "campaign_id": null,
            "actor": {
                "type": "api_key",
                "id": "0198e0c1-6f20-7a4d-9b13-7e5c2a8d4f07"
            },
            "created_at": "2026-10-01T09:15:02Z",
            "sent_at": null,
            "delivered_at": null,
            "failed_at": null,
            "expired_at": null,
            "cancelled_at": null,
            "received_at": null,
            "read_at": null,
            "phone_timestamp": null
        },
        "conversation": {
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "created": true
        },
        "sender_attempt_count": 0
    }
}

message.cancelled

The message moved to `cancelled`; `data.reason` says why.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "message.cancelled",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "message": {
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "account_id": "0198e0aa-3b10-7c52-8a41-5d2f9e7b1c01",
            "channel_id": "0198e0b4-92d3-7a18-b3c6-0e4a7d5f2c02",
            "channel_type": "android_sim",
            "line_id": "0198e0b4-9411-7f60-a2d9-1c8b6e3a4d03",
            "conversation_id": "0198f3a2-7a05-7d33-9f10-2b6c8e1d5a04",
            "contact_id": "0198ea17-5c28-7b94-8e07-3a9d1f4c6b05",
            "identity": {
                "id": "0198ea17-5c31-7e02-b5a8-4f2e0d7c9a06",
                "type": "phone",
                "address": "+923001234567",
                "display": "+92 300 1234567"
            },
            "direction": "outbound",
            "type": "sms",
            "origin": "api",
            "from": "+923451234567",
            "to": "+923001234567",
            "content_type": "text",
            "content": {
                "type": "text",
                "body": "Your order #1094 is ready for pickup."
            },
            "body": "Your order #1094 is ready for pickup.",
            "encoding": "gsm7",
            "segments": 1,
            "media": [],
            "channel_meta": [],
            "provider_message_id": null,
            "category": "transactional",
            "lane": "normal",
            "status": "queued",
            "hold_reason": null,
            "send_after": null,
            "expires_at": "2026-10-02T09:15:02Z",
            "attempts": 0,
            "sender_pinned": false,
            "fallback_of": null,
            "sender_attempts": [
                {
                    "channel_id": "0198e0b4-92d3-7a18-b3c6-0e4a7d5f2c02",
                    "outcome": "queued",
                    "reason": null,
                    "started_at": "2026-10-01T09:15:02Z",
                    "ended_at": null
                }
            ],
            "failure": null,
            "cancel_requested_at": null,
            "reference_id": "order-1094",
            "metadata": {
                "order_id": "1094"
            },
            "template_id": null,
            "campaign_id": null,
            "actor": {
                "type": "api_key",
                "id": "0198e0c1-6f20-7a4d-9b13-7e5c2a8d4f07"
            },
            "created_at": "2026-10-01T09:15:02Z",
            "sent_at": null,
            "delivered_at": null,
            "failed_at": null,
            "expired_at": null,
            "cancelled_at": null,
            "received_at": null,
            "read_at": null,
            "phone_timestamp": null
        },
        "conversation": {
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "created": true
        },
        "sender_attempt_count": 0,
        "reason": "Example text."
    }
}

message.received

An inbound message was stored. `data` adds `contact_created` and `mirrored`; `conversation.created` is true when this message created the conversation. A line that mirrors the channel gets a copy marked `mirrored`. An endpoint for all lines receives both events, so filter on `mirrored`.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "message.received",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "message": {
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "account_id": "0198e0aa-3b10-7c52-8a41-5d2f9e7b1c01",
            "channel_id": "0198e0b4-92d3-7a18-b3c6-0e4a7d5f2c02",
            "channel_type": "android_sim",
            "line_id": "0198e0b4-9411-7f60-a2d9-1c8b6e3a4d03",
            "conversation_id": "0198f3a2-7a05-7d33-9f10-2b6c8e1d5a04",
            "contact_id": "0198ea17-5c28-7b94-8e07-3a9d1f4c6b05",
            "identity": {
                "id": "0198ea17-5c31-7e02-b5a8-4f2e0d7c9a06",
                "type": "phone",
                "address": "+923001234567",
                "display": "+92 300 1234567"
            },
            "direction": "outbound",
            "type": "sms",
            "origin": "api",
            "from": "+923451234567",
            "to": "+923001234567",
            "content_type": "text",
            "content": {
                "type": "text",
                "body": "Your order #1094 is ready for pickup."
            },
            "body": "Your order #1094 is ready for pickup.",
            "encoding": "gsm7",
            "segments": 1,
            "media": [],
            "channel_meta": [],
            "provider_message_id": null,
            "category": "transactional",
            "lane": "normal",
            "status": "queued",
            "hold_reason": null,
            "send_after": null,
            "expires_at": "2026-10-02T09:15:02Z",
            "attempts": 0,
            "sender_pinned": false,
            "fallback_of": null,
            "sender_attempts": [
                {
                    "channel_id": "0198e0b4-92d3-7a18-b3c6-0e4a7d5f2c02",
                    "outcome": "queued",
                    "reason": null,
                    "started_at": "2026-10-01T09:15:02Z",
                    "ended_at": null
                }
            ],
            "failure": null,
            "cancel_requested_at": null,
            "reference_id": "order-1094",
            "metadata": {
                "order_id": "1094"
            },
            "template_id": null,
            "campaign_id": null,
            "actor": {
                "type": "api_key",
                "id": "0198e0c1-6f20-7a4d-9b13-7e5c2a8d4f07"
            },
            "created_at": "2026-10-01T09:15:02Z",
            "sent_at": null,
            "delivered_at": null,
            "failed_at": null,
            "expired_at": null,
            "cancelled_at": null,
            "received_at": null,
            "read_at": null,
            "phone_timestamp": null
        },
        "conversation": {
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "created": true
        },
        "sender_attempt_count": 0,
        "contact_created": true,
        "mirrored": true
    }
}

conversation.read

The conversation was marked read (portal, API or automation).

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "conversation.read",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "conversation": {
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "channel_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "channel_type": "example",
            "contact_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "contact_identity_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "address": "+923001234567",
            "contact_display_name": "example",
            "status": "queued",
            "unread_count": 1,
            "last_message_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "last_message_at": "2026-10-01T09:15:02Z",
            "last_message_preview": "example",
            "last_direction": "example",
            "last_outbound_at": "2026-10-01T09:15:02Z",
            "last_inbound_at": "2026-10-01T09:15:02Z",
            "blocked_at": "2026-10-01T09:15:02Z",
            "suppressed": true,
            "channel_meta": [],
            "created_at": "2026-10-01T09:15:02Z"
        },
        "actor": {
            "type": "example",
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
        }
    }
}

conversation.unread

The conversation was marked unread.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "conversation.unread",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "conversation": {
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "channel_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "channel_type": "example",
            "contact_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "contact_identity_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "address": "+923001234567",
            "contact_display_name": "example",
            "status": "queued",
            "unread_count": 1,
            "last_message_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "last_message_at": "2026-10-01T09:15:02Z",
            "last_message_preview": "example",
            "last_direction": "example",
            "last_outbound_at": "2026-10-01T09:15:02Z",
            "last_inbound_at": "2026-10-01T09:15:02Z",
            "blocked_at": "2026-10-01T09:15:02Z",
            "suppressed": true,
            "channel_meta": [],
            "created_at": "2026-10-01T09:15:02Z"
        },
        "actor": {
            "type": "example",
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
        }
    }
}

conversation.archived

The conversation was archived.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "conversation.archived",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "conversation": {
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "channel_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "channel_type": "example",
            "contact_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "contact_identity_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "address": "+923001234567",
            "contact_display_name": "example",
            "status": "queued",
            "unread_count": 1,
            "last_message_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "last_message_at": "2026-10-01T09:15:02Z",
            "last_message_preview": "example",
            "last_direction": "example",
            "last_outbound_at": "2026-10-01T09:15:02Z",
            "last_inbound_at": "2026-10-01T09:15:02Z",
            "blocked_at": "2026-10-01T09:15:02Z",
            "suppressed": true,
            "channel_meta": [],
            "created_at": "2026-10-01T09:15:02Z"
        },
        "actor": {
            "type": "example",
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
        }
    }
}

conversation.unarchived

The conversation was unarchived; an inbound that reopens it carries actor `system`.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "conversation.unarchived",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "conversation": {
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "channel_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "channel_type": "example",
            "contact_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "contact_identity_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "address": "+923001234567",
            "contact_display_name": "example",
            "status": "queued",
            "unread_count": 1,
            "last_message_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
            "last_message_at": "2026-10-01T09:15:02Z",
            "last_message_preview": "example",
            "last_direction": "example",
            "last_outbound_at": "2026-10-01T09:15:02Z",
            "last_inbound_at": "2026-10-01T09:15:02Z",
            "blocked_at": "2026-10-01T09:15:02Z",
            "suppressed": true,
            "channel_meta": [],
            "created_at": "2026-10-01T09:15:02Z"
        },
        "actor": {
            "type": "example",
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
        }
    }
}

conversation.deleted

The conversation was permanently deleted, after its messages.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "conversation.deleted",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "conversation_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "contact_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "actor": {
            "type": "example",
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
        }
    }
}

contact.opted_out

A suppression was created (any method). With scope `contact` one event is emitted per suppressed identity.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "contact.opted_out",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "contact_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "identity_type": "example",
        "address": "+923001234567",
        "method": "example",
        "keyword": "example",
        "message_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "suppression_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "actor": {
            "type": "example",
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
        },
        "occurred_at": "2026-10-01T09:15:02Z"
    }
}

contact.opted_in

A suppression was removed (any method); `suppression_id` is the removed suppression.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "contact.opted_in",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "contact_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "identity_type": "example",
        "address": "+923001234567",
        "method": "example",
        "keyword": "example",
        "message_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "suppression_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "actor": {
            "type": "example",
            "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10"
        },
        "occurred_at": "2026-10-01T09:15:02Z"
    }
}

ping

Sent by the endpoint test action only; not subscribable.

{
    "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "type": "ping",
    "api_version": "2.0.0",
    "created_at": "2026-10-01T09:15:02Z",
    "account_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "line_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
    "channel": {
        "id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "type": "example"
    },
    "data": {
        "endpoint_id": "0198f3a2-7c41-7e0b-9d52-6a1f3b8c4e10",
        "message": "Example text."
    }
}