# How approvals work in Piste

> Piste reads and answers on its own, and asks a person before it changes your store, ad accounts or apps. See who can approve, and where you decide.

Source: https://www.usepiste.com/docs/approvals

Piste reads your store and answers on its own, but it asks a person before it changes anything in your store, your ad accounts or your connected apps. It asks in two ways: an **approval** pauses a conversation until someone presses Approve, and a **proposal** is a change an automation run (or a conversation) leaves on a card for someone to decide later.

## What does Piste do without asking?

Piste goes ahead on its own when a step only reads, only changes things inside Piste, or costs very little.

| Piste does this on its own | Example |
|---|---|
| Reads your store and connected accounts | Sales questions, reports, charts, stock checks |
| Answers and writes reports | A reply in chat, an automation's post |
| Changes things inside Piste | Saving an automation the owner asked for, a report page for the workspace |
| Uses a connected app's read-only tools | Reading from an app in the owner's own conversation or automation |
| Calls your own [MCP servers](https://www.usepiste.com/docs/mcp-servers) when the call is judged to only read, or to make a small, reversible change to your own records | A lookup in your own system |
| Spends a little on paid data | A [data tools](https://www.usepiste.com/docs/data-tools) call estimated at $0.50 or less, inside the monthly allowance |

Plain reads aren't logged. Everything else in this table is recorded in the [decision log](https://www.usepiste.com/docs/approvals/decision-log) as "Ran without asking", with the reason.

## What needs a person?

| Change | How Piste asks |
|---|---|
| Prices, discounts, pre-orders and order holds in Shopify | A [store edit](https://www.usepiste.com/docs/approvals/store-edits) card |
| Reverting a price change or a discount | A [change follow-up](https://www.usepiste.com/docs/approvals/change-follow-ups) card |
| Google Ads and Meta changes (early access) | An [ad change](https://www.usepiste.com/docs/approvals/ad-changes) card, or an approval in the owner's conversation |
| Publishing landing page content to your store | An approval in the conversation |
| Sending or changing something in a connected app | An approval in the owner's own conversation |
| A call to your own MCP server that could do harm, or whose effect is unclear | An approval in the owner's own conversation |
| A paid data call estimated over $0.50, one with no price, or one that changes something | An approval in the conversation |
| Making a report page public | An approval the owner gives |
| Creating a store trigger, or deleting an automation | An approval the owner gives |

An automation run has nobody to ask, so a step on this list that would need an approval is refused there, apart from store and ad changes, which a run leaves as proposals.

## Approvals and proposals: what's the difference?

An **approval** happens in a conversation. Piste stops before the step, shows what it wants to do, and waits for the button. Only the workspace owner, or the person who started that conversation, can approve. A teammate can't ask for an approval in a conversation someone else started: Piste tells them "Only the person who started this conversation can ask for this. Start a new thread or DM to ask."

A **proposal** is a change Piste stores and puts on a card with buttons. An automation run doesn't wait for anyone to approve a change to your store or ad accounts: each change it wants is a proposal, and the run posts its result with the cards underneath and ends. A conversation can raise proposals too, for example when you ask Piste to limit a leaked discount code. Read more in [Proposals and cards](https://www.usepiste.com/docs/approvals/proposals).

| | Approval | Proposal |
|---|---|---|
| Raised by | A conversation | An automation run, or a conversation |
| Waits for | A press of Approve before the conversation goes on | A press of a card's button, whenever someone gets to it |
| Who decides | The owner, or the person who started the conversation | Depends on where it was raised (below) |

## Who can decide what?

| What's waiting | Who can press the button |
|---|---|
| An approval in a conversation | The workspace owner, or the person who started the conversation |
| A card under an automation run's post in Slack | Any full, active member of the Slack workspace Piste is installed in |
| A card raised in a conversation | The workspace owner only |
| Switching on a pre-order | The workspace owner only, wherever the card is |
| Creating a Gmail draft | The workspace owner only, wherever the card is |
| A standing approval (early access) | The workspace owner only |
| Releasing an order hold | The person who held the order, or the owner |
| An ad change an agency proposed in an [agency room](https://www.usepiste.com/docs/agency-rooms) (early access) | Any full, active member of your own Slack workspace, never the agency's people |
| Anything in Needs you on the web | The workspace owner, the only person who signs in on the web |

Piste checks with Slack on every press that the person is a full, active member. Guests, deactivated accounts and people from another organisation in a shared channel can't decide. Someone who presses a card for the first time joins the workspace as a [light member](https://www.usepiste.com/docs/team). When a teammate presses a card that's the owner's alone, nothing changes; for a pre-order or a Gmail draft, Piste also asks the owner in the card's thread.

## Where do you decide?

| Where | What you see | Buttons |
|---|---|---|
| Web chat | An approval card: "Piste needs your approval before it does this." | `Approve`, `Deny` |
| Slack conversation | An approval card in the thread, with what the step will be given | `Cancel`, `Approve` |
| Slack post or thread | A proposal card for each change | Each kind's own, such as `Keep it` or `Leave it` |
| Needs you on the web | Approvals waiting in your web chats and iMessage conversation, and open ad changes, store edits and change follow-ups | `Approve` and `Deny` for an approval; the same buttons as the Slack card for a change |
| iMessage | A link to approve in Piste, since iMessage has no buttons | None |

Only the owner signs in to Piste on the web, so the web chat's approvals and [Needs you](https://www.usepiste.com/docs/web-app) are the owner's. Budget changes aren't decided in Needs you: it shows how many are waiting and links to the Measurement page. Standing approval offers and Gmail drafts are decided only from their Slack cards.

Over [iMessage](https://www.usepiste.com/docs/imessage), Piste replies "This needs an approval before I go on. Your workspace owner can approve it in Piste:" with a link to the chat. When an automation posts to iMessage, its text ends with how many changes are waiting and the link to Needs you.

Once an approval is decided, the web chat card reads "You approved this." or "You denied this. Nothing was done."

## What about dry runs?

When you press `Try it now` on an [automation](https://www.usepiste.com/docs/automations), the run is a dry run. Anything that would change something is stopped, nobody is asked, and nothing is posted. The decision log shows each stopped step as "Preview: nothing was changed".

## What Piste never does without a person

- It never applies a store edit, ad change or Gmail draft without someone pressing the card's button. The one exception for ads is a [standing approval](https://www.usepiste.com/docs/approvals/standing-approvals) the owner switched on.
- It never sends or changes anything in a connected app during an automation run. A run can only propose a Gmail draft, which the owner creates from its card, and a draft sends nothing.
- The one store write nobody presses a button for is a price probe's price going back at its end, and only to exactly what the probe replaced.

## Related

- [Proposals and cards](https://www.usepiste.com/docs/approvals/proposals): every kind of card, its buttons and when it goes out of date.
- [Store edits](https://www.usepiste.com/docs/approvals/store-edits): what Piste can change in Shopify, and how to undo it.
- [Decision log](https://www.usepiste.com/docs/approvals/decision-log): what ran, what was asked and who answered.
- [Team and roles](https://www.usepiste.com/docs/team): owners, members and light members.

## Questions

### Can Piste change my Shopify store without asking?

No. Every change to prices, discounts, pre-orders or order holds is a proposal that a person applies from a card. The one exception is a price probe putting a price back to exactly what it was when the probe ends.

### Who can approve something Piste asks for in a Slack thread?

The workspace owner, or the person who started that conversation. Anyone else in the thread is told they can't approve it.

### Who can press the buttons on an automation's card in Slack?

Any full, active member of the Slack workspace where Piste is installed. Guests, deactivated accounts and people from another organisation in a shared channel can't, and a few cards are the owner's alone.

### Do I need Slack to approve changes?

No. Needs you in the web app lists the approvals waiting in your web chats and iMessage conversation, and the ad changes, store edits and change follow-ups waiting for a decision, with the same buttons as their Slack cards. Budget changes are decided on the Measurement page, and standing approval offers and Gmail drafts only from their Slack cards.

### Can I type "approve" instead of pressing the button?

No. A typed reply doesn't settle an approval. Press the button on the card.

### Does an automation wait for my approval before changing my store?

No. When an automation run wants to change your store or an ad account, it doesn't wait. The change becomes a proposal with a card, the run ends, and nothing changes until someone presses the card's button.
