# Automatic sync of import sources

> A source set to sync is read again every month on Pro and every week on Business. New reviews arrive as Pending or Approved, with an alert when some are found.

Automatic sync reads a source again by itself, so new reviews on a platform
reach your Inbox without anyone pressing a button. You set it with **How
often** when you [add a source](/docs/testimonials/import-sources#adding-a-source),
or later on the source's page: **Testimonials**, the **Import** tab, then
the source's name.

## What your plan syncs

- The Free plan has no automatic sync. A source is read once, and again
  when you press **Run now**.
- Pro reads a source **Every month**.
- Business and Enterprise read a source **Every week**, or **Every month**
  when you choose that.

A pace your plan does not have cannot be chosen in the form, and a line
under the choices links to the plans. Through the API and MCP it is refused
with `402` and the code `plan_limit`.

## The settings

| Setting | What it does |
|---|---|
| **How often** | **One time**, **Every month** or **Every week** |
| **Approve new 4 and 5 star reviews automatically** | Reviews a sync finds with 4 or 5 stars arrive as **Approved**. Fewer stars, or no rating, always arrive as **Pending** |
| **Paused** | On the source's page, for a source that syncs. A paused source is not read until you resume it. **Pause** and **Resume** are also in the row menu of the sources table |

Each source has its own weekday and hour, fixed for that source, so it is
always read at the same time of the week. **Every month** means every
fourth week. The **Next run** column of the sources table shows the day.

## What a sync run does

- It reads the newest pages only, 2 at most, and stops after the first
  page that holds a review already stored.
- There is no review step. New reviews are stored as **Pending**, or as
  **Approved** with the switch above.
- A review that looks like one you already have is not added. It waits in
  the source's [review step](/docs/testimonials/imports#the-review-step)
  for you to decide.
- **What a sync brings in counts toward your
  [monthly testimonials](/docs/testimonials/limits).** The first run of a
  source, like every import, does not.
- In the run history its **Started by** is **Automatic sync**.

## The alert

When you first set a source of a site to sync, the site gets an
[alert](/docs/reports/alerts#testimonials) named **New reviews found**.
Each sync that finds something new triggers it once: it says which source
and how many reviews, and **Open** goes to the pending testimonials in the
Inbox, where you approve or reject them. It emails the workspace's first
email channel (or a new channel with your address when there is none).

It is an ordinary alert rule: open **All alerts** from the bell in the menu to
send it to Slack or other channels, mute it, pause it or delete it. It is
made once, for the first source of a site that syncs. To stop hearing
about syncs while sources keep syncing, pause the rule.

## When things go quiet or wrong

| Situation | What happens |
|---|---|
| Nothing new for eight weekly runs in a row | The source is read every month instead and shows **Every month**. It returns to weekly as soon as a run finds something |
| Your monthly testimonials are used | The source shows **Paused at the monthly limit** and nothing is fetched. If the month runs out part way through a run, the rest waits in the review step. The source is checked once a day and starts again when there is room: on the 1st, or after an upgrade |
| Three runs in a row cannot read the page | The source shows **Check the link** and is not read again until you press **Try again** on its page |
| Our reading service is refusing us | No sync is started until it works again. Nothing changes on your sources |

## After a change of plan

A source keeps the pace you chose for it. The pace it really runs at is the
slower of that and the plan's, and both the sources table and the source's
page say so.

| Change | What happens to a source set to every week |
|---|---|
| Business to Pro | It is read every month. The table shows **Monthly on your plan** |
| Any plan to Free | It is not read again by itself. Its state is **One time** and the table shows **Stopped by your plan**. **Run now** still works, as the month's fetched import |
| Back to a plan with sync | It starts again by itself within a day, at the pace the plan allows |

Its testimonials, its setting and its run history stay through all of
this.

## Webhooks

| Event | When it is sent |
|---|---|
| `testimonial_sync.new_found` | A sync stored at least one new review. It carries the source, the platform, the run, the count, how many were approved automatically and the ids of the first 100 |
| `testimonial_import.finished` | A first run, a **Run now**, the website find, a spreadsheet or a move from another tool finished reading. A run from a link or a move that failed sends it too, with the reason |

A sync does not also send `testimonial.received` for every review.

## API and MCP

Sync is set with the tools of a source, on
[Import sources](/docs/testimonials/import-sources#api-and-mcp).

| Action | MCP tool | Permission |
|---|---|---|
| Set the pace, the auto-approve switch, pause or resume | `testimonial_import_sources_update` | `content.write` |
| Read the pace a source really runs at | `testimonial_import_sources_get` | `analytics.read` |

A source carries `sync` (what was chosen), `effective_sync` (the pace it
really runs at) and `sync_held` (`slowed` or `stopped` when the plan holds
it back). The list's `meta` carries the pace the plan allows. The rest is in
the [API reference](/docs/api) and the [MCP reference](/docs/mcp).

## Good to know

- A sync never asks before it stores. If you want to look first, keep the
  source on **One time** and use **Run now**.
- Only the testimonials a sync stores count toward the month. Reading a
  source that has nothing new costs you nothing.
- A link to one post (the **Automatic sync** column of
  [Platforms we read](/docs/testimonials/import-sources#platforms-we-read)
  says **No**) cannot be synced, because nothing new can appear on it.
- A scheduled sync is not the Free plan's fetched import, since the Free
  plan has no sync.
