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

# Stop a campaign

Stop an SMS campaign that is scheduled or still sending, so no new messages go out.

**Where:** SMS → Campaigns → **View** → **Stop campaign** · `/projects/<project>/sms/campaigns/<id>/view`

## Before you start

* The campaign is **Scheduled**, **Registered**, **Started** or **Processing**. Only then does its details page show **Stop campaign**.
* You need the `sms:update` permission on SMS campaigns.
* Stopping is final: a stopped campaign cannot be resumed.

## Steps

1. Open **SMS → Campaigns** and press **View** on the campaign — here the scheduled `Appointment reminder`.
2. Press the red **Stop campaign** at the top right.

   <figure><img src="https://712692422-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHy372bqsaex2cqS3ikhL%2Fuploads%2Fgit-blob-1a9a1881da1f41480f2f5fd2ac2c52c7c6adf2bf%2Fcampaigns-stop-1.png?alt=media" alt="SMS Campaign of a Scheduled campaign with the red Stop campaign button next to Actions"><figcaption><p>A scheduled campaign with the Stop campaign button.</p></figcaption></figure>
3. The browser asks: *Stop this campaign? Batches already being sent will finish, but no new recipients will be messaged. This cannot be undone.* Press **OK**. While the request runs, the button says **Stopping…**.

## Result

The status badge and the **Status** row turn **Stopped**, the **Stop campaign** button disappears, and the campaigns list shows **Stopped** too. A scheduled campaign is never sent; a running one finishes the batches already handed to the provider and starts no new batch.

<figure><img src="https://712692422-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHy372bqsaex2cqS3ikhL%2Fuploads%2Fgit-blob-ac6c2768ea9fe7e7aee1a5af325d61909ceb8a16%2Fcampaigns-stop-2.png?alt=media" alt="SMS Campaign after the stop: Stopped badge, Status Stopped, no Stop campaign button, only Actions"><figcaption><p>The campaign is stopped.</p></figcaption></figure>

## Change or remove it later

* **Send it again** — **Actions → Create new from this** opens a new campaign with the same template; pick the audience and tokens again.
* **Delete** — **Actions → Delete campaign...** (see [Campaign details](/codemash/cloud/sms/campaigns/details.md#change-or-remove-it-later)).
* Turning the SMS module off in [Settings](/codemash/cloud/sms/settings.md) stops every scheduled or running campaign the same way.

## Do it from code

The SDK sends the campaign id only in the address, but the gateway also reads it from the body; pass it a second time as `Id` until this is fixed.

```ts
// The SDK puts the id only into the address; the gateway also wants it in the body (Id).
await norbix.hub.notifications.stopSmsCampaign({ id, Id: id } as any);
```

```sh
norbix raw -X POST /v2/notifications/sms/campaigns/cmp_3Y4KFJQ1aTZZVXqDJws8qk/stop -b '{"id":"cmp_3Y4KFJQ1aTZZVXqDJws8qk"}'
```

`norbix hub notifications sms campaign stop` fails the same way today (*missing required properties including: 'id'*), so the CLI line uses `norbix raw`. The API stops a campaign in any status — check it with Get Sms Campaign first. The client setup is on the [SMS page](/codemash/cloud/sms.md#use-it-from-code). API: [Stop Sms Campaign](/codemash/api-reference/notifications/sms/stop-sms-campaign.md)
