# Push Notifications

Send a push notification to end users who have iOS or Android passes installed, letting them know information has changed. By notifying users, they will receive an alert as well as an update to the back of the pass showing the most recent notification.


## Delete notification by pass {#deletepassnotification}

Removes notification field and message from the back of the pass.

[Jump to examples ↓](#deletepassnotification-examples)

### `DELETE /pass/{passId}/notify`

**Security:**

- [httpBasic]({{< ref "/developer/rest-api/wallet/introduction/" >}}#security-httpBasic)
- [oauth2Token]({{< ref "/developer/rest-api/wallet/introduction/" >}}#security-oauth2Token): wnot

**Path parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `passId` | `string` | Required | The `id` of the pass you want send notification to. |

**Responses**

**`200`** Notification is being deleted. The response contains a [`ticketId`](/docs/developer/rest-api/wallet/operations/tickets/) that you can use to look up the operation.

Response body:

**Content-Type:** `application/json`

- **`ticketId`** `integer`

  An identifier for this operation.

**`404`** The pass does not exist.

**Examples**

*Example request*

```http
DELETE /v1/pass/123/notify HTTP/1.1
Authorization: Basic <Base64 key>

```

*Response*

```http
HTTP/1.1 200 OK
Content-Type: application/json

{
   "ticketId": 12345
}

```

---

## Delete notification by pass with external ID {#deletepassnotificationbyexternalid}

Removes notification field and message from the back of the pass.

[Jump to examples ↓](#deletepassnotificationbyexternalid-examples)

### `DELETE /pass/template/{templateId}/id/{passExternalId}/notify`

**Security:**

- [httpBasic]({{< ref "/developer/rest-api/wallet/introduction/" >}}#security-httpBasic)
- [oauth2Token]({{< ref "/developer/rest-api/wallet/introduction/" >}}#security-oauth2Token): wnot

**Path parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `templateId` | `string` | Required | The template ID for the pass you want to send or delete notification for. |
| `passExternalId` | `string` | Required | The custom identifier of the pass you want to send or delete notification for. |

**Responses**

**`200`** Notification is being deleted. The response contains a [`ticketId`](/docs/developer/rest-api/wallet/operations/tickets/) that you can use to look up the operation.

Response body:

**Content-Type:** `application/json`

- **`ticketId`** `integer`

  An identifier for this operation.

**`404`** The pass does not exist.

**Examples**

*Example request*

```http
DELETE /v1/pass/template/12345/id/my_custom_pass_id/notify HTTP/1.1
Authorization: Basic <Base64 key>

```

*Response*

```http
HTTP/1.1 200 OK
Content-Type: application/json

{
   "ticketId": 12345
}

```

---

## Delete notification by segment {#deletesegmentpassnotification}

Delete pass notification for specified segment.

[Jump to examples ↓](#deletesegmentpassnotification-examples)

### `DELETE /segments/{projectId}/{segmentId}/notify`

**Security:**

- [httpBasic]({{< ref "/developer/rest-api/wallet/introduction/" >}}#security-httpBasic)
- [oauth2Token]({{< ref "/developer/rest-api/wallet/introduction/" >}}#security-oauth2Token): wnot

**Path parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `projectId` | `string` | Required | The ID of the project you want to delete the notification for. |
| `segmentId` | `string` | Required | The ID of the segment you want to delete the notification for. |

**Query parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `templateId` | `string` |  | The ID of the template you want to delete the notification for. |

**Responses**

**`200`** Notification is being deleted. The response contains a [`ticketId`](/docs/developer/rest-api/wallet/operations/tickets/) that you can use to look up the operation.

Response body:

**Content-Type:** `application/json`

- **`ticketId`** `integer`

  An identifier for this operation.

**`404`** The segment does not exist.

**Examples**

*Example request*

```http
DELETE /v1/segments/12345/3b13666df-e5b3-4e42-8919-f8d63bd7ce2a/notify?templateId=6789 HTTP/1.1
Authorization: Basic <Base64 key>

```

*Response*

```http
HTTP/1.1 200 OK
Content-Type: application/json

{
   "ticketId": 12345
}

```

---

## Delete notification by tag {#deletetagpassnotification}

Delete notification for passes associated with the specified tag.

[Jump to examples ↓](#deletetagpassnotification-examples)

### `DELETE /tag/{tag}/notify`

**Security:**

- [httpBasic]({{< ref "/developer/rest-api/wallet/introduction/" >}}#security-httpBasic)
- [oauth2Token]({{< ref "/developer/rest-api/wallet/introduction/" >}}#security-oauth2Token): wnot

**Path parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `tag` | `string` | Required | The tag associated with the passes you want to send or delete notification for. |

**Query parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `templateId` | `string` | Required | The template ID associated with the passes you want to send or delete notification for. |

**Responses**

**`200`** Notification is being deleted. The response contains a [`ticketId`](/docs/developer/rest-api/wallet/operations/tickets/) that you can use to look up the operation.

Response body:

**Content-Type:** `application/json`

- **`ticketId`** `integer`

  An identifier for this operation.

**`404`** The tag does not exist.

**Examples**

*Example request*

```http
DELETE /v1/tag/campaign123/notify?templateId=12345 HTTP/1.1
Authorization: Basic <Base64 key>

```

*Response*

```http
HTTP/1.1 200 OK
Content-Type: application/json

{
   "ticketId": 12345
}

```

---

## Delete notification by template {#deletetemplatepassnotification}

Delete pass notification for specified template passes.

[Jump to examples ↓](#deletetemplatepassnotification-examples)

### `DELETE /template/{templateId}/notify`

**Security:**

- [httpBasic]({{< ref "/developer/rest-api/wallet/introduction/" >}}#security-httpBasic)
- [oauth2Token]({{< ref "/developer/rest-api/wallet/introduction/" >}}#security-oauth2Token): wnot

**Path parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `templateId` | `string` | Required | The `id` of the template you want to send or delete notification for. For [External IDs](/docs/developer/rest-api/wallet/introduction/#external-ids), format the `{templateId}` as `id/{templateExternalId}`. |

**Responses**

**`200`** Notification is being deleted. The response contains a [`ticketId`](/docs/developer/rest-api/wallet/operations/tickets/) that you can use to look up the operation.

Response body:

**Content-Type:** `application/json`

- **`ticketId`** `integer`

  An identifier for this operation.

**`404`** The template does not exist.

**Examples**

*Example request*

```http
DELETE /v1/template/123/notify HTTP/1.1
Authorization: Basic <Base64 key>

```

*Example request with external ID*

```http
DELETE /v1/template/id/12345/notify HTTP/1.1
Authorization: Basic <Base64 key>

```

*Response*

```http
HTTP/1.1 200 OK
Content-Type: application/json

{
   "ticketId": 12345
}

```

---

## Send notification by pass {#sendpassnotification}

Send a notification to a pass. Delivers lock screen notification through the wallet app and presents notification field and message on the back of the pass.

[Jump to examples ↓](#sendpassnotification-examples)

### `POST /pass/{passId}/notify`

**Security:**

- [httpBasic]({{< ref "/developer/rest-api/wallet/introduction/" >}}#security-httpBasic)
- [oauth2Token]({{< ref "/developer/rest-api/wallet/introduction/" >}}#security-oauth2Token): wnot

**Path parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `passId` | `string` | Required | The `id` of the pass you want send notification to. |

**Request body**

Send notification to a pass.

**Content-Type:** `application/json`

- **`endTime`** `string` **GOOGLE ONLY**

  The [date-time](/docs/developer/rest-api/wallet/introduction/#datetime-format) string indicating when the message should disappear. Defaults to one hour in the future.

  Format: `date-time`

- **`label`** `string`

  Optional header for the message.

- **`startTime`** `string` **GOOGLE ONLY**

  The [date-time](/docs/developer/rest-api/wallet/introduction/#datetime-format) string indicating when the message should appear. Defaults to the current time.

  Format: `date-time`

- **`value`** `string` **REQUIRED**

  The body of the notification message.

**Responses**

**`200`** Notification is being sent. The response contains a [`ticketId`](/docs/developer/rest-api/wallet/operations/tickets/) that you can use to look up the operation.

Response body:

**Content-Type:** `application/json`

- **`ticketId`** `integer`

  An identifier for this operation.

**`404`** The pass does not exist.

**Examples**

*Example request*

```http
POST /v1/pass/123/notify HTTP/1.1
Content-Type: application/json
Authorization: Basic <Base64 key>

{
  "label": "Last Notification",
  "value": "20% off any one regular priced item",
  "startTime": "2026-03-26T12:00:00Z",
  "endTime": "2026-03-26T13:00:00Z"  
}

```

*Response*

```http
HTTP/1.1 200 OK
Content-Type: application/json

{
   "ticketId": 1234
}

```

---

## Send notification by pass with external ID {#sendpassnotificationbyexternalid}

Send a notification to a pass. Delivers lock screen notification through the wallet app and presents notification field and message on the back of the pass.

[Jump to examples ↓](#sendpassnotificationbyexternalid-examples)

### `POST /pass/template/{templateId}/id/{passExternalId}/notify`

**Security:**

- [httpBasic]({{< ref "/developer/rest-api/wallet/introduction/" >}}#security-httpBasic)
- [oauth2Token]({{< ref "/developer/rest-api/wallet/introduction/" >}}#security-oauth2Token): wnot

**Path parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `templateId` | `string` | Required | The template ID for the pass you want to send or delete notification for. |
| `passExternalId` | `string` | Required | The custom identifier of the pass you want to send or delete notification for. |

**Request body**

Send notification to a pass.

**Content-Type:** `application/json`

- **`endTime`** `string` **GOOGLE ONLY**

  The [date-time](/docs/developer/rest-api/wallet/introduction/#datetime-format) string indicating when the message should disappear. Defaults to one hour in the future.

  Format: `date-time`

- **`label`** `string`

  Optional header for the message.

- **`startTime`** `string` **GOOGLE ONLY**

  The [date-time](/docs/developer/rest-api/wallet/introduction/#datetime-format) string indicating when the message should appear. Defaults to the current time.

  Format: `date-time`

- **`value`** `string` **REQUIRED**

  The body of the notification message.

**Responses**

**`200`** Notification is being sent. The response contains a [`ticketId`](/docs/developer/rest-api/wallet/operations/tickets/) that you can use to look up the operation.

Response body:

**Content-Type:** `application/json`

- **`ticketId`** `integer`

  An identifier for this operation.

**`404`** The pass does not exist.

**Examples**

*Example request*

```http
POST /v1/pass/template/12345/id/my_custom_pass_id/notify HTTP/1.1
Content-Type: application/json
Authorization: Basic <Base64 key>

{
  "label": "Last Notification",
  "value": "20% off any one regular priced item",
  "startTime": "2026-03-26T12:00:00Z",
  "endTime": "2026-03-26T13:00:00Z"
}

```

*Response*

```http
HTTP/1.1 200 OK
Content-Type: application/json

{
   "ticketId": 1234
}

```

---

## Send notification by segment {#sendsegmentpassnotification}

Send a notification to all passes for a segment.

[Jump to examples ↓](#sendsegmentpassnotification-examples)

### `POST /segments/{projectId}/{segmentId}/notify`

**Security:**

- [httpBasic]({{< ref "/developer/rest-api/wallet/introduction/" >}}#security-httpBasic)
- [oauth2Token]({{< ref "/developer/rest-api/wallet/introduction/" >}}#security-oauth2Token): wnot

**Path parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `projectId` | `string` | Required | The ID of the project you want to send the notification to. |
| `segmentId` | `string` | Required | The ID of the segment you want to send the notification to. |

**Query parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `templateId` | `string` | Required | The ID of the template you want to send the notification to. |

**Request body**

Send notification to segment passes.

**Content-Type:** `application/json`

- **`endTime`** `string` **GOOGLE ONLY**

  The [date-time](/docs/developer/rest-api/wallet/introduction/#datetime-format) string indicating when the message should disappear. Defaults to one hour in the future.

  Format: `date-time`

- **`label`** `string`

  Optional header for the message.

- **`startTime`** `string` **GOOGLE ONLY**

  The [date-time](/docs/developer/rest-api/wallet/introduction/#datetime-format) string indicating when the message should appear. Defaults to the current time.

  Format: `date-time`

- **`value`** `string` **REQUIRED**

  The body of the notification message.

**Responses**

**`200`** Notification is being sent. The response contains a [`ticketId`](/docs/developer/rest-api/wallet/operations/tickets/) that you can use to look up the operation.

Response body:

**Content-Type:** `application/json`

- **`ticketId`** `integer`

  An identifier for this operation.

**`404`** The segment does not exist.

**Examples**

*Example request*

```http
POST /v1/segments/12345/3b13666df-e5b3-4e42-8919-f8d63bd7ce2a/notify?templateId=6789 HTTP/1.1
Content-Type: application/json
Authorization: Basic <Base64 key>

{
  "label": "Last Notification",
  "value": "20% off any one regular priced item",
  "startTime": "2026-03-26T12:00:00Z",
  "endTime": "2026-03-26T13:00:00Z"
}

```

*Response*

```http
HTTP/1.1 200 OK
Content-Type: application/json

{
   "ticketId": 1234
}

```

---

## Send notification by tag {#sendtagpassnotification}

Send notification to all passes associated with the specified tag.

[Jump to examples ↓](#sendtagpassnotification-examples)

### `POST /tag/{tag}/notify`

**Security:**

- [httpBasic]({{< ref "/developer/rest-api/wallet/introduction/" >}}#security-httpBasic)
- [oauth2Token]({{< ref "/developer/rest-api/wallet/introduction/" >}}#security-oauth2Token): wnot

**Path parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `tag` | `string` | Required | The tag associated with the passes you want to send or delete notification for. |

**Query parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `templateId` | `string` | Required | The template ID associated with the passes you want to send or delete notification for. |

**Request body**

Send notification to tagged passes.

**Content-Type:** `application/json`

- **`endTime`** `string` **GOOGLE ONLY**

  The [date-time](/docs/developer/rest-api/wallet/introduction/#datetime-format) string indicating when the message should disappear. Defaults to one hour in the future.

  Format: `date-time`

- **`label`** `string`

  Optional header for the message.

- **`startTime`** `string` **GOOGLE ONLY**

  The [date-time](/docs/developer/rest-api/wallet/introduction/#datetime-format) string indicating when the message should appear. Defaults to the current time.

  Format: `date-time`

- **`value`** `string` **REQUIRED**

  The body of the notification message.

**Responses**

**`200`** Notification is being sent. The response contains a [`ticketId`](/docs/developer/rest-api/wallet/operations/tickets/) that you can use to look up the operation.

Response body:

**Content-Type:** `application/json`

- **`ticketId`** `integer`

  An identifier for this operation.

**`404`** The tag does not exist.

**Examples**

*Example request*

```http
POST /v1/tag/campaign123/notify?templateId=12345 HTTP/1.1
Content-Type: application/json
Authorization: Basic <Base64 key>

{
  "label": "Last Notification",
  "value": "20% off any one regular priced item"
  "startTime": "2026-03-26T12:00:00Z",
  "endTime": "2026-03-26T13:00:00Z"
}

```

*Response*

```http
HTTP/1.1 200 OK
Content-Type: application/json

{
   "ticketId": 1234
}

```

---

## Send notification by template {#sendtemplatepassnotification}

Send a notification to all passes belonging to the template.

[Jump to examples ↓](#sendtemplatepassnotification-examples)

### `POST /template/{templateId}/notify`

**Security:**

- [httpBasic]({{< ref "/developer/rest-api/wallet/introduction/" >}}#security-httpBasic)
- [oauth2Token]({{< ref "/developer/rest-api/wallet/introduction/" >}}#security-oauth2Token): wnot

**Path parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `templateId` | `string` | Required | The `id` of the template you want to send or delete notification for. For [External IDs](/docs/developer/rest-api/wallet/introduction/#external-ids), format the `{templateId}` as `id/{templateExternalId}`. |

**Request body**

Send notification to template passes.

**Content-Type:** `application/json`

- **`endTime`** `string` **GOOGLE ONLY**

  The [date-time](/docs/developer/rest-api/wallet/introduction/#datetime-format) string indicating when the message should disappear. Defaults to one hour in the future.

  Format: `date-time`

- **`label`** `string`

  Optional header for the message.

- **`startTime`** `string` **GOOGLE ONLY**

  The [date-time](/docs/developer/rest-api/wallet/introduction/#datetime-format) string indicating when the message should appear. Defaults to the current time.

  Format: `date-time`

- **`value`** `string` **REQUIRED**

  The body of the notification message.

**Responses**

**`200`** Notification is being sent. The response contains a [`ticketId`](/docs/developer/rest-api/wallet/operations/tickets/) that you can use to look up the operation.

Response body:

**Content-Type:** `application/json`

- **`ticketId`** `integer`

  An identifier for this operation.

**`404`** The pass does not exist.

**Examples**

*Example request*

```http
POST /v1/template/123/notify HTTP/1.1
Content-Type: application/json
Authorization: Basic <Base64 key>

{
  "label": "Last Notification",
  "value": "20% off any one regular priced item"
}

```

*Example request with external ID*

```http
POST /v1/template/id/12345/notify HTTP/1.1
Content-Type: application/json
Authorization: Basic <Base64 key>

{
  "label": "Last Notification",
  "value": "20% off any one regular priced item"
}

```

*Response*

```http
HTTP/1.1 200 OK
Content-Type: application/json

{
   "ticketId": 1234
}

```

---

