> ## Documentation Index
> Fetch the complete documentation index at: https://docs.retailgrid.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Schedule and automate pricing runs

> Run Price Optimization and Dynamic Pricing on a schedule, auto-approve prices that clear your guardrails, and get an email when a run finishes.

Most pricing work doesn't need you sitting in front of it. The **Automation** tab on [Price Optimization](/agents/price-optimization) and [Dynamic Pricing](/agents/dynamic-pricing) lets a run happen on a schedule, approve the prices that clear limits you set, and email you the outcome — so an overnight run is finished and reviewed by the time you open Grid.

Automation is opt-in and per agent configuration. Nothing here changes how prices are calculated; it changes when a run happens and what happens to the proposals afterward.

## Open the Automation tab

Open [Price Optimization](/agents/price-optimization) or [Dynamic Pricing](/agents/dynamic-pricing) from the **Agents** menu in the grid toolbar. The configuration dialog has an **Automation** tab alongside **General** and **Source**. Set your schedule and approval options there, then save them with the agent's existing **Enable automation** / **Apply settings** action — the same action that saves the rest of the configuration.

<Frame>
  <img src="https://mintlify.s3.us-west-1.amazonaws.com/retailgrid/images/agents/automation-tab.png" alt="The Automation tab on Price Optimization, showing the schedule controls and the run-finished email toggle" />
</Frame>

## Schedule a run

A schedule decides when the run fires. You can run:

* **Daily**, at a time and timezone you set.
* **Weekly**, on the weekdays you choose.
* **After data updates** — the run fires when new data lands for the grid, so prices follow your latest imports without a fixed clock.

The tab shows the saved schedule, the next run, and the controls to change or disable it. A scheduled run appears in [Runs](/runs/overview) like any other, triggered by `system`.

## Auto-approve prices that pass your guardrails

By default every proposed price waits for you in [Price Approval](/agents/price-approval). Auto-approval lets a scheduled run clear the safe, in-policy changes on its own and hold everything else for review.

Turn on **Automatically approve and export qualifying prices**. It's off for new and existing automations until you enable it. Two limits then apply to every proposal:

* **Minimum unit margin (%)** — the smallest unit gross margin a proposed price may have, at the proposed price after tax treatment and unit cost.
* **Maximum price change (%)** — the largest move from the current price, up or down, allowed in a single run.

<Frame>
  <img src="https://mintlify.s3.us-west-1.amazonaws.com/retailgrid/images/agents/auto-approve.png" alt="The Price approval section of the Automation tab, with the auto-approve checkbox and the two guardrail fields" />
</Frame>

A proposal is approved and queued for export only when it clears **both** limits. Everything else stays in Price Approval with a reason that names the value and the limit it missed.

### What qualifies

Each proposal is judged after the full run finishes and all pricing rules and rounding have produced the final price:

* **Unit margin** is measured against the proposed price net of tax and the item's unit cost, following your organization's prices-exclude-tax setting.
* **Price change** is measured against the current price the run started from, and the same limit applies to increases and decreases. It's a per-run limit, not a running weekly total — successive runs can accumulate a larger move as current prices change.
* Rows are always held for review when an input is missing or invalid (no unit cost, no valid price, missing tax data), when a pricing rule is violated, or for **No Change** and manually overridden rows. A missing cost is never treated as zero.

Only fresh proposals from that run qualify. Existing overrides, earlier proposals, and rows you already decided are left alone.

### What auto-approval does and doesn't do

* It **approves and queues** qualifying prices for export, following the same explicit-export lifecycle as a manual approval. Queuing a price for export is not the same as changing your live price — delivery to your webshop, ERP, or Shopify happens through your existing export path.
* It **does not** change the proposed price or bypass your pricing rules. The guardrails decide eligibility only.
* Automatic decisions stay visible in Price Approval and in approved-price history, with the run, the user who set up the automation, the applied limits, and the values used.
* Turning auto-approval off stops further automatic approvals, including a run already in flight that hasn't reached that step. Prices already delivered are not rolled back; pending exports can still be cancelled through your normal export controls.

## Email a summary when a run finishes

Check **Email me when the run finishes (including failures)** on a schedule to get one message when its run completes. Existing schedules default to off.

The email tells you what happened without opening the app:

* The agent, the grid, and the run's start and finish in your timezone.
* The outcome, and a short impact summary — products in scope, prices raised, cut, and unchanged, the average change, and the forecasted effect on gross profit, revenue, and units.
* A link that opens the run's results straight in Grid.

You get **one email per completed run**. A chained run (Price Optimization → Dynamic Pricing → Price Approval) sends one email for the chain, not one per step, and retries or duplicate triggers don't produce duplicate emails. A failure reports the failing step and reason instead of a misleading success.

## Common pitfalls

* **Expecting live prices to change.** Auto-approval queues prices for export; it doesn't push them live on its own. Confirm your export path is set up if you rely on downstream delivery.
* **Setting the change limit too tight.** A very low maximum price change holds most proposals for review — useful when you're cautious, but check the held count if you expected more to clear.
* **Forgetting the limits are per run.** The maximum change caps a single run, not a week of runs. Frequent runs can move a price further over time as its current price shifts.

## Related

* [Review and approve price changes](/agents/price-approval)
* [Price Optimization](/agents/price-optimization)
* [Dynamic Pricing](/agents/dynamic-pricing)
* [Runs](/runs/overview)
