publ betaReference (MCP guide)
Open publ console

Change coupon notification push settings

# Change coupon notification push settings

A separately configured notification service and MANAGE_PROMOTION on the selected channel are prerequisites.

1. Call [promotion_notifications_get](../tools/publ_promotion_notifications_get.md). Check canEdit and the stored event state. The notification center's locked-on appearance does not override stored inactivity, and the third-party switch is an installation indicator.
2. Copy revision to expectedRevision and choose one stable requestId. Supply one or both supported booleans to [promotion_notifications_apply](../tools/publ_promotion_notifications_apply.md). Omission preserves the other switch. Review sourceBody using dryRun:true; a changed save also applies the source receiver/realtime constants while preserving activation/email.
3. Repeat the same request with dryRun:false. A matching requested value is a no-op. A changed operation sends one PUT and validates the returned partial acknowledgement and then requires full stable readback. A missing receipt channelId is not a missing full-read identity. Only generated top-level updatedAt may change across a save; all other unedited business data remains protected.
4. If pending, retain the same requestId and use promotion-notifications task recovery. A sent PUT is never repeated. Check a completed operation with a fresh get when current state matters; historical completion is not current verification.

Read the event:

```json
{"channelCode":"selected-channel-code"}
```

Preview the requested change; replace the illustrative digest with the observed revision:

```json
{"channelCode":"selected-channel-code","requestId":"coupon-push-002","expectedRevision":"0000000000000000000000000000000000000000000000000000000000000000","settings":{"isSendPwaPush":false},"dryRun":true}
```

Inspect a saved task:

```json
{"taskId":"coupon-push-002","taskType":"promotion-notifications"}
```

Inactive events require human action; there is no hidden activation, email editing, event initialization, limited-time writer, app install or test-send operation. Successful storage does not verify delivery, consent, subscriptions, visitor behavior or message capacity. [Campaign offer changes](promotion-campaigns.md) have their own human handoff.

## Saved plan replay

An existing matching task's `dryRun` returns a historical saved plan, with
`historical:true`, `replayed:true`, `phase`, `taskId` and false current verification.
It has no current console/action link and does not reread target business state,
repeat effects or change the journal. Follow `nextStep` for a current observation;
retain the original task ID for status/resume or uncertain-outcome inspection.
A new task keeps normal fresh-plan validation.

`nextStep`: `promotion_notifications_get` retains the original channel and fixed coupon event. The plan code remains `PROMOTION_NOTIFICATIONS_PLAN`; `existingPhase` is retained alongside `phase` and `taskId`. No current event/app-indicator read or message delivery occurs. There is no notification activation, installation or financial action.