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
PromptCreate

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.

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.

FAQs

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.

Related templates

Call overdue Xero customers with an AI collections agent

Every weekday at 10am, an AI voice agent phones your most overdue Xero accounts, logs what each customer promised, and reports back to finance in Slack.

LiveKit
Xero
Deepgram
+2
Agentic Task
Local listing health board for every location you manage

See every Google Maps listing you manage on one screen, ranked worst first, with an audit button that writes the fix list for you.

Local Business Data
Google Sheets
App
Let support send one-off Loops emails without an engineer

Your team picks a template, finds the customer, checks they are safe to email, then sends it, with every send logged where the whole team can see it.

Loops.so
Stripe
Google Sheets
App
A brand asset library your marketing team actually searches

Every logo, photo, video cut and ad export in one searchable grid, with previews, campaign tags and rights expiry dates at a glance.

General Input Storage
General Input Database
JigsawStack
+1
App
Turn Mailjet email clicks into ranked HubSpot follow-ups

Twice a day we spot the people clicking your pricing and demo pages, create a follow-up task for their owner, and post a ranked recap to Slack.

Mailjet
HubSpot
Slack Bot
Agentic Task
Clean out the Looker dashboards and Looks nobody opens

One board showing every dashboard and Look with its folder, owner and favorite count, so you can find dead content and retire it safely.

Looker
Slack Bot
App

Stop refreshing competitor pricing pages by hand.

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