Skip to content

Every 6 hours

Track prices from a watch list

You're told when a product in your sheet drops below your target price.

Runs
Every 6 hours
Apps
Google Sheets
AI
Yes, uses the built-in AI allowance
Access
read+write

Send this to your assistant

Create a ClickRuntime automation: every 6 hours, check the price at each URL in my Watchlist sheet, write the price and time in the row, and email me if it's below the Target column.

Paste it into your assistant. It tells you what it will send or change before it runs live.

First time? Adding ClickRuntime to your assistant takes about two minutes.

Why use it

Why teams use this automation

Watching prices by hand means opening the same ten tabs every few days and trying to remember whether that standing desk was 340 or 360 last time. Resellers, procurement people and ordinary shoppers all end up with a sheet of product links and a target price in the next column, and the sheet is only as useful as the last time somebody refreshed it. Meanwhile the sale lasts two days.

Every 6 hours, each URL in the sheet is fetched, the price is extracted from the page (the built-in AI can help when the layout is awkward), and the current price and a timestamp are written next to the product. If a price falls below the target in that row, you get an email naming the product and the price.

It is handy for a wish list, for supplier cost tracking, or for monitoring competitor pricing on a handful of items.

What you get out of it

  • Buy at the dip instead of by luck

    An email arrives when the price crosses your target, so you act during the sale rather than reading about it afterward. On big purchases the difference can be real money.

  • A price history builds up in your own sheet

    Each check writes the current price and time, so you can see whether a discount is genuine or just a return to the usual level, and chart it if you want.

  • Supplier changes spotted early

    A procurement lead tracking component costs sees an unexpected increase within hours, which leaves time to renegotiate or reorder before a quote expires. A few percent on a recurring order adds up quickly.

  • No browser extension or paid tracker

    The list lives in a sheet you control, with no subscription to a price-watching service and no limit on which shops you can add. If a retailer closes or changes its page, you only have to fix one row.

  • Fewer wasted trips to product pages

    Instead of checking twenty pages weekly, you look at one column and one inbox. That removes a chore most people quietly stop doing after a month. Over a year that is a lot of small interruptions you simply stop doing.

How it works

What happens, step by step

  1. Every 6 hours ClickRuntime reads the product links and target prices in your Google Sheet.

  2. It opens each product page and finds the current price.

  3. The price and the time it was checked are written back into the sheet.

  4. When a price drops below your target, you get an email with the product, the new price and a link.

Before it runs live

  • Connect your Google Sheets account and pick the spreadsheets it may use

What you get

RunsEvery 6 hours
Track prices from a watch listtoday, 9:00Succeeded
Email · 1 prices below targetAcme standing desk: 389.00 (target 400) https://shop.example.com/acme-standing-desk

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • Your own rules

    Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.

  • Any number of apps

    One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.

  • AI where it helps

    Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.

  • On a schedule or on each event

    Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.

Changes you can ask for

  • Run it at a different time, more or less often, or only on weekdays
  • Change what the AI looks for, or how it writes the result
  • Add another app, for example also send it to Slack
  • Combine it with other Google Sheets steps into one automation

Under the hood

The code that runs this automation

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
price_tracker_from_a_sheet_of_product_urls.pyexample
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from datetime import datetime, timezone
from bs4 import BeautifulSoup
from clickruntime import on_trigger, credentials, http, ai, notify

SHEET_ID = "your-spreadsheet-id"

@on_trigger
def run(event):
    sheets = build("sheets", "v4", credentials=Credentials(credentials.connection("google", "work")), cache_discovery=False).spreadsheets()
    rows = sheets.values().get(spreadsheetId=SHEET_ID, range="Watchlist!A2:E").execute().get("values", [])
    now, data, deals = datetime.now(timezone.utc).strftime("%Y-%m-%d %H:%M"), [], []
    for i, row in enumerate(rows, start=2):
        name, url, target = (row + ["", "", ""])[:3]
        text = BeautifulSoup(http.get(url, timeout=15).text, "lxml").get_text(" ", strip=True)[:4000]
        raw = ai.generate(f"What is the current price of the main product on this page? Reply with a number only.\n{text}",
                          max_output_tokens=10).text.strip().replace(",", "")
        try:
            price = float(raw.lstrip("$£€"))
        except ValueError:
            continue
        data.append({"range": f"Watchlist!D{i}:E{i}", "values": [[price, now]]})
        if target and price < float(target):
            deals.append(f"{name}: {price:.2f} (target {target})\n{url}")
    sheets.values().batchUpdate(spreadsheetId=SHEET_ID, body={"valueInputOption": "RAW", "data": data}).execute()
    if deals:
        notify.email_me(f"{len(deals)} prices below target", "\n\n".join(deals))
    return {"checked": len(data), "below_target": len(deals)}

FAQ

Common questions

Will it work on any shop's product page?
Most pages that show a price in their HTML work, and the AI helps pull the number from awkward layouts. Pages that load prices only after login or through heavy scripts may not return a value, so test a few links before relying on it.
How is the target price set?
Each row has its own target in a column next to the URL. When the extracted price is lower than that number, the row is included in the alert email. Rows without a target are tracked but never alert.
Will I get emailed again every 6 hours for the same drop?
The alert is built around rows whose current price is below target after the check. If you want one email per drop instead of repeats, ask your AI assistant to remember alerted rows, and approve the change before it applies.
What permissions does it need?
read+write. Nothing else in your accounts is used.
Does it need AI?
Yes. It uses ClickRuntime's built-in AI, so you don't need an OpenAI or Anthropic key. Every plan includes a monthly AI allowance.
How many runs does it use?
One run each time it runs (every 6 hours). Checks that find nothing to do and stop right away aren't counted.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

Set up “Track prices from a watch list” from your assistant

Copy the prompt above, or connect your assistant first. Free plan, no credit card.