Weekday morning competitor pricing watch in Slack

Every weekday at 8am, pull your competitors' pricing pages, log a snapshot in Google Sheets, and post a Slack digest only when tiers, plans, or prices actually moved.

Agentic Task
TinyFishGoogle SheetsSlack BotMarketingOperationsResearch & MonitoringNotifications & AlertsDaily Digests

Build an agent workflow that runs every weekday at 8am in my local timezone and watches my competitors' pricing pages.

Trigger: cron, Monday through Friday at 8am.

Inputs (from a Google Sheet I maintain): a list of competitor pricing page URLs, and the prior snapshot for each URL (most recent stored tiers, plan names, prices, and feature bullets). Use the Google Sheets Get Values operation to read both the URL list and the last known snapshot rows. Assume one tab named 'competitors' with columns: competitor_name, pricing_url; and a second tab named 'snapshots' with columns: timestamp, competitor_name, pricing_url, tiers_json, raw_excerpt.

For each competitor URL, use the TinyFish Fetch URLs operation (https://api.fetch.tinyfish.ai) to pull the current rendered page content. Batch URLs in groups of up to 10 per Fetch call. Do not use the TinyFish Search API for this; Fetch is the right tool and has higher rate limits. Extract the visible tiers (tier name, monthly price, billing terms, included seats or units, key feature bullets, and any prominent public claims like 'most popular' or 'free forever').

Diff today's pull against the prior snapshot row for that same URL. Decide which changes are meaningful and which are noise. Meaningful changes include: any price change greater than 3 percent up or down, a new tier added, a tier removed or renamed, a plan limit changed (seats, requests, storage), or a public marketing claim changed on a tier. Ignore noise like reordered feature bullets, whitespace, copy tweaks that do not change meaning, or cosmetic changes.

After every fetch, append a fresh snapshot row for that competitor to the 'snapshots' tab using the Google Sheets Append Values operation, regardless of whether anything changed. This keeps a full history.

If at least one competitor had a meaningful change, post a single Slack digest using the Slack Bot Send a Message operation to my competitive intel channel. Group the message by competitor. For each competitor with changes, include a one-line summary of what moved (for example: 'Pro tier: $49 → $59 (+20%)', 'New Enterprise tier added', 'Removed Starter plan', 'Team plan now includes SSO'), and link the pricing page URL. Keep the message terse. Use Slack mrkdwn formatting (*bold*, _italics_, <url|text> links).

If zero competitors had meaningful changes, skip the Slack post entirely. Do not send 'nothing to report' messages.

Be resilient: if a single URL fails to fetch (timeout, bot block, 404), note it in the snapshot row as an error, skip the diff for that competitor, and continue with the rest. If multiple URLs fail on the same run, include a short 'fetch issues' line at the bottom of the Slack digest naming the affected competitors. Do not retry aggressively on TinyFish 429 errors; back off and continue.

Additional information

What does this prompt do?
  • Reads your competitor pricing page URLs from a Google Sheet and pulls fresh content from each one every weekday morning.
  • Compares today's tiers, plan names, prices, and feature bullets against the last snapshot and decides which changes are worth surfacing.
  • Appends a clean snapshot row to your sheet so you keep a full history of every pricing page over time.
  • Posts a tight Slack digest grouped by competitor when something meaningful changed, and stays silent when nothing did.
What do I need to use this?
  • A list of competitor pricing page URLs in a Google Sheet you can read and write to.
  • A TinyFish account for fetching the live pricing pages.
  • A Slack workspace and the channel you want the digest posted in.
How can I customize it?
  • Change the schedule, the days it runs, or the timezone so the digest lands when your team starts the day.
  • Tune what counts as a meaningful change, like the price percent threshold, or what you treat as noise.
  • Pick a different Slack channel, switch to a private channel, or route certain competitors to different channels.

Frequently asked questions

How is this different from a simple price alert?
Most price alerts just compare a single number. This one tracks the whole pricing page, including tier names, plan structure, and feature bullets, then judges which changes actually matter so your channel does not get spammed.
What happens if nothing meaningful changed?
It stays quiet. The snapshot still gets logged in Google Sheets for your history, but no Slack message is sent on quiet days.
Will it work on pricing pages that block ordinary scrapers?
Yes. TinyFish renders pages in a real browser, so it handles pricing pages that rely on JavaScript or push back on basic bots.
How do I add or remove a competitor?
Add or remove the row in your Google Sheet. The workflow reads the list fresh on every run, so changes take effect the next morning.
Can it post to more than one Slack channel?
Yes. You can split competitors by team or product line and route each group to its own channel, or keep everything in a single competitive intel channel.

Stop refreshing competitor pricing pages by hand.

Connect Google Sheets, TinyFish, and Slack once, and Geni runs this watch every weekday at 8am.