> AI agents: this is one page from Mammoth Analytics documentation. The index of all pages as Markdown is https://mammoth.io/docs/llms.txt. Append `.md` to any docs URL, or send `Accept: text/markdown`, to get Markdown.

# Pause a pipeline for approval with a Checkpoint

> Add a Checkpoint to a Mammoth pipeline to email your team or call a webhook, or pause the pipeline until a reviewer approves the data, with approval steps.

A **Checkpoint** is a pipeline task that tells people when the data reaches a point, and can hold the pipeline until someone approves it. Add one from the Transform menu under **Controls** > **Checkpoint Alert**. A Project Admin, or a member whose custom role includes **Approve/reject Checkpoint gates**, can approve a paused pipeline.

> **Got an approval email?** Go to [Approve a Checkpoint that is waiting for you](#approve-a-checkpoint-that-is-waiting-for-you).

To test data automatically instead of asking a person, use a Data Check. See [Remove duplicate rows and add data quality checks](https://mammoth.io/docs/learn/clean-and-shape/duplicates-and-checks/).

## Choose an Alert or an Approval Gate

|  | **Alert** | **Approval Gate** |
| --- | --- | --- |
| What it does | Sends notifications and the pipeline carries on | Sends notifications and **pauses** the pipeline until someone approves |
| Needs action | No | Yes: someone must click **Approve and Continue** |
| Use it when | You want people to know, with no manual step | A person must review before data moves on |
| Status after it triggers | Sent | Pending (the status window shows *Pending Approval*) |

## Add a Checkpoint to a pipeline

![Checkpoint Alert panel with the Notify only and Pause for approval choices, a Notify by email field, and Add a message and Add webhook links](https://mammoth.io/docs/images/20261009_132120_Checkpoint-Alert-Panel.webp)

1. Open the Transform menu and choose the **Controls** category.
2. Select **Checkpoint Alert**.
3. Under *When the pipeline reaches this checkpoint*, choose **Notify only** (an Alert) or **Pause for approval** (an Approval Gate).
4. Choose email recipients from the project's members. Optional: click **Add webhook** and enter a URL.
5. Optional: click **Add a message** to add context to the email. For an Approval Gate, the approver also sees it in the status window.
6. Click **Apply**.

The Checkpoint appears in the Pipeline panel with its type and number of recipients, for example *Approval Gate - 2 recipients*.

A Checkpoint needs email, a webhook or both. If you turn on email, choose at least one recipient.

### What the Checkpoint email contains

Recipients get an email as soon as an Alert triggers, or when an Approval Gate needs approval. It includes:

- the View name, the project name and a link to the View;
- where the Checkpoint sits, for example task 4 of 8, and when it triggered;
- whether it is an Alert (*Checkpoint reached*) or an Approval Gate (*Approval required*);
- your message, if you added one.

## Send a Checkpoint to Slack, Teams or another system by webhook

Click **Add webhook** and enter a URL that starts with `https://`. Mammoth calls it when the Checkpoint triggers, for example to post to Slack, Teams, PagerDuty or your own endpoint. The request times out after 10 seconds.

The payload is fixed: you can't change it. Every Checkpoint webhook sends this JSON body in a POST request:

```json
{
  "checkpoint_id": 123,
  "checkpoint_name": "Finance team approval before final report",
  "checkpoint_type": "approval",
  "task_sequence": 4,
  "dataview_id": 654,
  "dataview_name": "View 1",
  "workspace_id": 22
}
```

`checkpoint_type` is `"alert"` or `"approval"`.

### Test that the webhook URL is reachable

1. Click **Payload** under the webhook URL to open the payload editor.
2. Write a test payload. **Test** turns on once the payload has content.
3. Click **Test**. Your browser sends the draft to the URL.
4. Read the result: *Delivered · 200* or *Endpoint returned an error*.

The editor accepts these tokens: `{{pipeline_name}}`, `{{pipeline_id}}`, `{{checkpoint_type}}`, `{{step_number}}`, `{{step_name}}`, `{{timestamp}}`, `{{status}}`, `{{project_name}}` and `{{triggered_by}}`. Unknown tokens are sent as they are. The payload can be up to 10KB with up to 5 levels of nesting.

The test payload is never saved and doesn't change what is sent. A real trigger always sends the fixed payload above.

## What happens when a pipeline reaches an Approval Gate

1. **The pipeline pauses.** It stops at the Checkpoint. Later tasks don't run.
2. **Notifications go out.** Email recipients get the message and any webhook fires.
3. **The status changes to pending.** The Checkpoint shows a *Pending* chip, and its status window is titled *Checkpoint Alert - Pending Approval*.
4. **A reviewer opens it.** They sign in, open the View and open the Checkpoint status window.
5. **The reviewer checks the data.** The output up to this point is available while the pipeline is paused.
6. **The reviewer approves.** They click **Approve and Continue**, then **Yes, Approve** in the *Approve this checkpoint?* confirmation.
7. **The pipeline resumes** from the task after the Checkpoint.
8. **The status changes to Approved.**

![Checkpoint - Pending Approval dialog with run details, people notified, and Cancel and Approve and Continue buttons](https://mammoth.io/docs/images/20260427_111854_pending-checkpoint-approval-modal1.webp)

## Approve a Checkpoint that is waiting for you

You got an email because a pipeline paused at an Approval Gate and is waiting for review.

1. Click the link in the email. It opens the View in Mammoth.
2. Sign in if asked. You need a Mammoth account with access to the project.
3. In the Pipeline panel, click the **Pending** chip on the Checkpoint task.
4. Read the *Message from pipeline owner* and check the data if you need to.
5. Click **Approve and Continue**.
6. In *Approve this checkpoint?*, click **Yes, Approve**.

The Checkpoint shows *Approved* and the pipeline continues on its own.

### Who can approve

Approving needs the project permission **Approve/reject Checkpoint gates**. Of the standard roles, only **Project Admin** has it. A custom role can include it. For anyone else, **Approve and Continue** is turned off and its tooltip reads "Your role doesn't have permission to perform this action". See [Projects](https://mammoth.io/docs/learn/workspace/projects/) and [Members, roles and custom roles](https://mammoth.io/docs/learn/workspace/members-and-roles/).

### Find Checkpoints waiting for approval in Monitor

A waiting Approval Gate appears in **Monitor**, on the **Needs Attention** tab, in the **Governance** section. It reads *Checkpoint: approval required*, with the View and a line such as *Task 4 of 8 is waiting for approval*. Click **Approve** on the row to open the View, check the data and approve.

![Pending Items dialog, Pending Checkpoints tab, listing one checkpoint waiting with a Review & Approve button](https://mammoth.io/docs/images/20260427_113608_pending-checkpoints-with-items.webp)

## Checkpoint statuses

| Status | Meaning |
| --- | --- |
| **Sent** | An Alert triggered. Notifications went out and the pipeline carried on. |
| **Pending** (*Pending Approval* in the status window) | An Approval Gate triggered. The pipeline is paused until someone approves. |
| **Approved** | A reviewer approved. The pipeline has resumed or finished. |
| **Bypassed** | The Checkpoint was skipped in a partial rerun |

## Why a Checkpoint shows Bypassed after a partial rerun

When you rerun a pipeline from a task partway down, Checkpoints before that task are marked **Bypassed**. A Checkpoint that is already waiting for approval, or already approved, keeps that status.

A Bypassed Checkpoint doesn't trigger again in that rerun, so no notification goes out and no approval is asked for. The pipeline moves past it. To test the Checkpoint again from scratch, run the full pipeline from the start.

## Troubleshooting

| Symptom | Cause | Fix |
| --- | --- | --- |
| The Checkpoint won't save | It has no notification method, or email is on with no recipient | Add a webhook, or choose at least one email recipient |
| **Approve and Continue** is greyed out with "Your role doesn't have permission to perform this action" | Your role lacks **Approve/reject Checkpoint gates** | Ask a Project Admin to approve, or to change your role |
| The webhook test shows *Endpoint returned an error* | The URL refused or failed the request | Check the URL and your endpoint, then test again |
| No email arrived after a rerun | The rerun started after the Checkpoint, so it was Bypassed | Run the full pipeline |
| The pipeline is still paused | The Approval Gate is waiting for approval | Approve it from the **Pending** chip or from Monitor |

## Related

- [Remove duplicate rows and add data quality checks](https://mammoth.io/docs/learn/clean-and-shape/duplicates-and-checks/): automated checks with a pause or a flag.
- [How the pipeline works](https://mammoth.io/docs/learn/clean-and-shape/how-the-pipeline-works/): reruns, task order and previews.
- [Fix a failing step](https://mammoth.io/docs/learn/clean-and-shape/fix-a-failing-step/): when a task errors instead of pausing.
- [Activity log and Monitor](https://mammoth.io/docs/learn/automate/activity-log/): the Needs Attention tab.
- [Notifications](https://mammoth.io/docs/learn/automate/notifications/): other ways Mammoth tells you what happened.

---
Source: https://mammoth.io/docs/learn/clean-and-shape/checkpoints.md · Updated: 2026-11-08
