Most website change monitors answer one question: did this page change? They take a snapshot, compare it with the last one, and send you an alert with the difference highlighted. That works well for a terms-of-service page or a single price on a single product.
It works less well when the thing you care about is a list. A competitor's category page, a job board, a directory, a marketplace search. There, a "change" alert usually means "something on this page moved," and you still have to open it and work out which products are new, which prices changed and which listings disappeared.
This guide shows a different setup: scrape the list into rows, run it on a schedule, and only get a delivery when rows are new or different. The result lands in Google Sheets (or Slack, a webhook, Airtable and others), one row per item, ready to filter.
Page monitors vs row monitors
| Page change monitor | Row-based monitoring | |
|---|---|---|
| What it compares | A snapshot of the page or a selected area | Each item in a list (product, job, listing) |
| What you get | "This page changed," with a visual or text diff | The rows: name, price, link and any field you chose |
| Good for | Policies, single prices, announcements, layout changes | Catalogs, job posts, directories, search results |
| Spreadsheet use | Usually a log of alerts | The data itself, one row per item |
Neither is better in general. If you watch a pricing page for wording changes, a page monitor such as Visualping or Distill is the right tool. If you watch a list and want to know which items are new or changed, rows are easier to act on.
What the popular page monitors do with spreadsheets
Two common tools people compare for this, as described on their own pages (checked November 11, 2026):
- Visualping lists Google Sheets as a Business feature. Its pricing page says Slack, Microsoft Teams, Google Chat, Discord and Google Sheets are Business features, and they are not on the Free or Personal plans. The Sheets integration logs changes as alert rows.
- Distill has two kinds of monitors. Its documentation says local monitors run through the browser extension or desktop app, so the browser or app needs to be open for checks to run, and recommends cloud monitors for tracking while your computer is off.
Both are mature products, and both have options this setup does not, like visual screenshots and highlighting. The difference is the unit: they watch pages, this watches rows.
How row-based change alerts work in Lection
Lection is an AI web scraper for Chrome. You open a page, describe the fields you want in plain English ("product name, price, link"), check the preview and save the scrape. A schedule then re-runs it in the cloud, so your computer can be off.
Each schedule has a When to deliver setting with three options:
- Every run: deliver the results after every run. This is the default and the only option on the free plan.
- Only when there are new rows: skip delivery when a run finds no rows that were not in the last run.
- Only when something changed: skip delivery unless rows were added, removed or edited since the last run.
To decide whether a row is "the same row" from one run to the next, Lection matches rows by a key column. Match rows by defaults to Auto, which uses the link/URL column. You can pick any other column instead, like a SKU or a job ID.
One detail worth knowing before you build on it: delivery is all or nothing. When a run matches your rule, Lection delivers that run's full result, not only the new rows. When it doesn't, nothing is sent. The run still happens and shows in your run history either way.
Step by step: get new and changed rows into Google Sheets
1. Save a scrape of the list
Open the page you want to watch: a category page, a job board search, a directory. Run the Lection extension, describe the fields and make sure one of them is the item's own link. That link is what change detection matches on by default. If the list spans several pages, set up pagination or Load More first; see how to scrape multiple pages without code.
Check the preview, then save the scrape.
2. Create a schedule
Open Scheduled Scrapes in the dashboard and create a schedule for the saved scrape. Pick hourly, daily or weekly and your timezone. Standard includes hourly runs; Professional can run every 15 minutes.
3. Choose Sheets under Delivery
Select Sheets, click Connect Google Sheets and approve access, then choose a spreadsheet you can edit or create a new one. Choose append (one tab that keeps growing) or a new tab on each run. The full setup is on the Google Sheets integration page.
4. Set "When to deliver"
Pick Only when there are new rows to hear about new products, jobs or listings. Pick Only when something changed if price moves and removals matter too. Leave Match rows by on Auto unless your list has a better ID column.
5. Test it
Click Run now. The first run delivers, because there is no previous run to compare with. Run it again right away: if the page hasn't changed, the second run should be skipped.
Which Sheets mode to use with change alerts
Because a matching run delivers its full result, the two Sheets modes behave differently:
- New tab on each run is the cleanest fit. You get one dated tab per run that had changes, and no empty tabs on quiet days. Compare the newest tab with the one before to see what moved.
- Append to one tab keeps a running history, but each delivery adds the whole list again. Add a formula column to flag what is new, for example =IF(COUNTIF(B$1:B1, B2)=0, "new", "") on a link column in B, which marks the first time each link appears.
If you need exactly one row per item that updates in place, Sheets delivery does not do upserts. The Airtable and Supabase destinations support upsert, and the n8n Google Sheets template can do it too.
Alerts in Slack instead of a sheet
The same setting applies to every delivery channel, including webhooks and the Slack, Discord and Teams integrations. A common pattern is two schedules on the same saved scrape: Sheets on "every run" for the history, Slack on "only when there are new rows" for the ping. For a more custom alert with filters and formatting, see website change alerts in Slack and the Slack webhook tutorial.
Good use cases
- New products in a competitor's catalog. Watch the "new arrivals" or a category page daily. Pair it with competitor price tracking in Google Sheets for the price side.
- Shopify stores. A store's collection pages list products with stable URLs, which makes them a good fit; see scraping a Shopify store into Google Sheets.
- Job posts. A company careers page or a job board search, delivered only when a new posting appears. See tracking job listings in Google Sheets.
- Directories and local listings. New businesses in a category, for lead lists. See building a lead list from a directory.
Honest limits
- It is not a visual diff. Lection compares the fields you scraped. A change to a banner, layout or a field you didn't ask for won't trigger anything.
- The page has to show the data. If a price only appears after login or in a checkout step, a schedule may not see it.
- Pick a stable key. Without a link or ID column, rows are matched by their full content, so an edited row looks like one row removed and one added. With "only when there are new rows", that can trigger a delivery on a simple price change.
- Very large lists. Lection stores up to 5,000 row fingerprints per schedule for comparison, so lists far above that are better split into several scrapes.
- Plans. Change alerts and Sheets delivery need Standard, Professional or the 30-day Standard trial. The free plan includes one pipeline with daily runs delivered by email on every run.
- Sites that block. Some sites show security checks or block automated visits. Respect each site's terms.
FAQ
Is this a Visualping or Distill replacement?
For lists of items, often yes: you get the items themselves as rows. For watching a single page's text or appearance, a page monitor is still the better fit.
Do I get only the new rows?
No. When a run has new or changed rows, the whole result for that run is delivered. Use a new tab per run, or a formula in append mode, to see which rows are new.
Does my computer need to be on?
No. Scheduled runs happen in the cloud.
What counts as "changed"?
"Only when something changed" delivers if any row was added, removed or had a different value in any scraped field, matched by your key column.
Try it
Install the extension, save a scrape of the list you keep checking by hand, and turn on Only when there are new rows. Sheets delivery and change alerts are included in the 30-day Standard trial.