> For the complete documentation index, see [llms.txt](https://docs.codemash.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.codemash.io/cloud/push/campaigns/log.md).

# Message log

Delivery history of one push message.

> The full story of a single push message — its final content, who it went to, and what happened to it.

*Last updated 2026-09-11 · Applies to any project with the Push module enabled*

## Why it exists

A campaign tells you how the send went overall. Sooner or later someone asks about one person: what exactly did they receive, in which language, with which tokens filled in, and did it arrive. This screen is that answer for one message.

## When you'd use it

* A user says the notification showed `Hello ,` — you need to see which token came out empty.
* A single recipient in an otherwise Completed batch shows Failed and you want the reason.

## Where to find it

Push → Campaigns → campaign → batch → message · `/projects/<project>/push/campaigns/<id>/view/<messageId>/message`

{% hint style="danger" %}
This screen is **not built yet** — it renders only a placeholder ("MessageViewPage"). The full message view exists in the source but is commented out. Tracked in testing-plan area **15-push**. Read the message through the API in the meantime; the steps below show how.
{% endhint %}

## How to read a message until the screen exists

Requires a role that carries `…:notifications:push:campaigns:push:read`.

1. Get the campaign's batches — you need the batch id that holds the message.
2. List that batch's notifications to find the message id.
3. Fetch the single batch notification for the whole record: bound title and body, the recipient, the delivery family (iOS, Android, Chrome, Safari, Expo) and the status.

## Good to know

* A message keeps the content as it was **rendered**, not a pointer to the template. Editing the template later does not change what this message says.
* `Viewed` and `Clicked` are reported by your app. If it never reports them, a delivered message stays at Completed.
* A message can be Completed and still not be on the phone: the status means the provider accepted it. A token that has expired is only discovered later, by the provider.

## Do it in code

{% tabs %}
{% tab title="JavaScript / TypeScript" %}

```ts
const batches = await norbix.hub.notifications.getPushCampaignBatches({
  projectId: '<your-project-id>',
  id: 'cmp_4RXMBq6T24SOIilOBtkao9',
});

const message = await norbix.hub.notifications.getPushCampaignBatchNotification({
  projectId: '<your-project-id>',
  id: 'cmp_4RXMBq6T24SOIilOBtkao9',
  batchId: '<batch-id>',
  notificationId: '<notification-id>',
});
```

{% endtab %}

{% tab title="Python" %}

```python
message = norbix.notifications.get_push_campaign_batch_notification(
    "cmp_4RXMBq6T24SOIilOBtkao9", "<batch-id>", "<notification-id>",
    projectId="<your-project-id>",
)
```

{% endtab %}

{% tab title="Go" %}

```go
var message map[string]any
err := c.Hub.Notifications.GetPushCampaignBatchNotification(
	ctx, "cmp_4RXMBq6T24SOIilOBtkao9", "<batch-id>", "<notification-id>",
	map[string]any{"projectId": "<your-project-id>"}, &message)
```

{% endtab %}

{% tab title=".NET" %}
Not available yet — the .NET SDK has no push client methods. Call the REST endpoints below.
{% endtab %}
{% endtabs %}

Reference: [Get Push Campaign Batch Notification](/sdks-and-cli/notifications/push/get-push-campaign-batch-notification.md) · [Get Push Campaign Message](/sdks-and-cli/notifications/push/get-push-campaign-message.md) CLI: no command for a single message.

## API reference

Endpoints: [Get Push Campaign Message](/api-reference/notifications/push/get-push-campaign-message.md), [Get Push Campaign Messages](/api-reference/notifications/push/get-push-campaign-messages.md), [Get Push Campaign Batch Notification](/api-reference/notifications/push/get-push-campaign-batch-notification.md), [Get Push Campaign Batch Notifications](/api-reference/notifications/push/get-push-campaign-batch-notifications.md).

## Related

[Campaign details](/cloud/push/campaigns/details.md) · [Campaigns list](/cloud/push/campaigns.md) · [Devices](/cloud/push/devices.md)
