# Refresh

## What is a refresh?

A refresh fetches fresh data for every widget on a dashboard. Vistazo runs each widget's stages and
transform again ([Widgets](/docs/dashboards/widgets#where-does-a-widgets-data-come-from)) and records when
it ran. A scheduled refresh replaces the published data everyone sees. A refresh by hand does the
same or gives you your own view, depending on who runs it
([Dashboards](/docs/dashboards/overview#what-does-each-reader-see)). You can
refresh by hand at any time, or give the dashboard a schedule.

## What does a refresh cost?

A refresh runs the transform the widget already has, the small piece of code that shapes the rows.
That makes no model call and counts toward no allowance. Schedules are available on every plan.

The model comes back only when a source changes shape and the transform no longer fits. Vistazo then
rewrites the transform, and that repair counts toward inference. See [Usage](/docs/billing/usage).

A schedule repairs any one chart at most once a day. If the source changes shape again that day, the
chart reads **Source changed** over its last published data until the next day's run. A refresh you start from the dashboard
can repair the chart straight away. On any refresh, one widget gets at most 10 repair attempts in 6
hours. A refresh your agent starts never repairs a transform. It reports the chart as
stale, and your agent sends a corrected transform itself.

On a scheduled run, a repair counts toward the inference of the person who last turned the schedule
on or changed it. If that person has left the workspace, it counts toward the owner's. If neither has
any left, that chart keeps its last data and the
schedule carries on. A workspace admin can turn repairs off with **Repair broken charts with AI**,
under **Settings → Assistant → Dashboards**.

When a schedule cannot repair a chart, because the repair failed, the day's repair is used or
repairs are off, the chart reads **Source changed**. Its last published data stays behind the line,
faded. An owner or editor also gets **Repair**, which opens the dashboard's assistant with a message
naming the chart. The assistant finds out why and proposes the fix, and its turn counts toward your
inference like any other. Anyone else sees the line alone, and the chart's status dot says an editor
can fix it. A filter whose source changed keeps its current options. For an owner or editor, the
Filters panel marks it with a red alert and shows one **Source changed** strip whose **Repair**
covers every such filter.

A chart also reads **Source changed** when its source renamed or removed the tool or arguments
the chart calls. No refresh rewrites a call on its own, since a wrong rewrite would draw a believable
chart with the wrong numbers, so it waits for **Repair**.

## How do you schedule a refresh?

Open **Settings → General** on the dashboard and switch on **Refresh automatically** in the Schedule
card. The schedule reads as one line, **Every [n] [unit]**.

| Unit | How it runs |
|---|---|
| Minutes | A rolling interval of 15, 30 or 45 minutes |
| Hours | A rolling interval |
| Days | At a time of day, in a time zone |
| Weeks | The same, on the days of the week you pick |
| Months | The same, on the day of the month you pick |

Fifteen minutes is the shortest interval on every plan. Scheduled runs start in 15-minute
steps, so minutes come from a fixed list.

Turning a schedule on or changing it takes an owner or editor role on the dashboard, since every
scheduled run publishes for everyone. Any editor can turn a schedule off. One person can keep 25
dashboards on a schedule in each workspace. Past that, the 25 oldest dashboards run, and the Schedule
card on the rest says why.

## Whose connections does a schedule use?

A scheduled refresh runs as the dashboard owner, on the owner's data connections. An editor can set
the schedule and rewire widgets, but their own connections never run it.

If the owner leaves the workspace, the schedule stops and the Schedule card says why. Giving the
dashboard a new owner turns it back on. See [Dashboards](/docs/dashboards/overview#who-owns-a-dashboard).

## When does a schedule pause for inactivity?

A schedule pauses itself after 30 days with no visits, so nothing runs for a dashboard nobody reads.
A member opening the dashboard turns it back on and queues a catch-up run. That run lands on the
next 15-minute check, and the **Refresh all** button spins until it finishes.

Readers of the public page or an embed keep a running schedule running. They have no way to fix a
broken chart themselves, so the schedule keeps going to repair it for them. Their visits also keep
the dashboard from being archived for inactivity. The demo dashboard Vistazo added to the workspace
is never archived for inactivity.

A public view or an embed never restarts a paused schedule. Only a member opening the dashboard in
the app does. A guest, someone outside the workspace who was invited to this dashboard
([Permissions](/docs/sharing/permissions)), neither keeps a schedule running nor restarts one.

## When does a failing schedule pause?

A schedule also pauses when no chart can update. That happens when every chart drawing on a connected
source fails on three scheduled runs in a row, spread across at least a day. A daily schedule pauses
on its third failed day, and an hourly one after a full day of failures. Charts built on uploaded
files and text widgets are left out of the count, since they have nothing to fetch.

The usual causes are an expired connection or a transform every chart depends on. The owner and the
editors subscribed to the dashboard, meaning they get its notifications
([Notifications](/docs/account/notifications)), are notified once, with the sources the charts read from. Switch on
**Refresh automatically** in the Schedule card to resume it. The owner's refresh also resumes it once a chart
updates again. Opening the dashboard does not.

Three runs in a row that fail because a connection needs signing in again also pause the schedule,
however short the span. A notification and the Schedule card both say a connection needs to be
reconnected. Reconnect it, then switch on **Refresh automatically** again.

## How do you refresh by hand?

Refresh a whole dashboard with **Refresh all**, or a single widget from its menu. Your agent can also
refresh one stage of a widget that draws on several sources.

**Refresh all** spins while any chart on the page is refreshing, whoever started it. When charts
fail, it carries a red dot, and its tooltip counts them. A failed chart keeps showing its last data,
and its own dot turns gray and says how long the data has been stale and why. A chart with no data to
fall back on reads **Unable to load**, with **Retry**, and its red dot names the error. A chart whose
source changed reads **Source changed** instead, as above, since a retry cannot fix it.

A refresh by an owner or editor publishes for everyone. A viewer's refresh, or anyone's with filters
applied, runs the charts for that person alone. Either way the refresh is free. If a publishing
refresh has to repair a chart, the repair draws on your inference.

When a refresh fails or stalls, you get a notification with the error. See
[Notifications](/docs/account/notifications).

## When does published data expire?

Every published set of rows records when it was fetched. The public view shows this as a "data as of"
line, so an outside reader can see how old the numbers are. In the app, expand a widget to see when
each of its sources last ran.

Published rows expire after 28 days. A dashboard whose schedule lapsed that long ago is expired, and
each expired chart's status dot turns amber. Tap the dot, or hover on a computer, to see who can
bring it back. What happens next depends on the reader.

| Reader | What they get |
|---|---|
| Public view or embed | A line saying the data has expired |
| Guest | A line asking the person who shared the dashboard to refresh it |
| Owner or editor | Expired charts fetched and republished for everyone as the page loads |
| Any other member | Expired charts loaded for them alone as the page loads, on their own connections, at no cost |
| Member missing a connection | A note that the chart needs a connection they do not have. That chart is not fetched |

Sometimes a chart cannot be drawn for a member's own view. Its status dot then reads **data expired —
an editor can fix it**, and the owner and the editors subscribed to the dashboard are notified once.
