Pre-market watchlist brief from a Google Sheet to Slack

Every weekday at 8am ET, your watchlist becomes a short Slack brief: biggest movers first, the news behind each one, and any analyst rating shifts.

Agentic Task
FinnhubGoogle SheetsSlack BotFinanceOperationsDaily DigestsAI ReportsResearch & Monitoring
PromptCreate

Every weekday at 8:00am Eastern, before the US market opens, post a pre-market brief on my watchlist to a Slack channel I configure. The goal is one short, readable message that tells me what moved overnight and why, not a table of prices.

Trigger: cron schedule, Monday through Friday at 8:00am America/New_York.

Step 1. Read the watchlist. Use Google Sheets Get Values to read the ticker symbols from the watchlist tab of a spreadsheet I specify. I will give you the spreadsheet id and the range, for example Watchlist!A2:A41. Treat one symbol per row, skip empty cells and any header row, and normalize symbols to uppercase.

Step 2. For each ticker, gather three things from Finnhub. Use Quote for the latest price and the percent change on the day. Use Company News for headlines published in the last 24 hours, passing yesterday and today as the from and to dates. Use Recommendation Trends for the current analyst consensus, comparing the most recent period against the one before it so you can detect a shift rather than just reporting a snapshot.

Pace the Finnhub calls. The free plan allows 60 calls per minute and each ticker needs three calls, so keep the watchlist to roughly 40 symbols and spread the requests so a single run never trips the limit. If Finnhub returns a 429, back off briefly and retry rather than dropping the ticker silently. If a symbol returns no data at all, note it once at the end of the brief instead of failing the whole run.

Step 3. Filter before writing. Drop any ticker that moved less than 1 percent on the day and also has no fresh news in the last 24 hours. Those are the quiet names, and including them is what makes this kind of brief unreadable. Keep a ticker if it has either a meaningful move or real news, not necessarily both. This filter matters most during earnings season, when news volume is much heavier and an unfiltered brief turns into a wall of text.

Step 4. Synthesize one brief, written as short prose and bullets rather than a data dump. Lead with the biggest movers, largest absolute percent change first. For each one, explain what news appears to be driving the move by pairing the price change with a specific same-day headline. That pairing is the entire point of this brief: a price move with the reason sitting next to it is useful, a price list is not. If a mover has no headline that plausibly explains it, say so plainly rather than inventing a cause. Then call out any ticker where analyst consensus shifted, for example upgrades outnumbering downgrades versus the prior period, or a visible change in the strong buy or sell counts. Close with a single line: one thing to watch today.

Step 5. Format for Slack using mrkdwn, which means single asterisks for bold rather than double. Bold the tickers and show moves as +2.3% or -1.8%. Keep the whole thing to roughly one screen. Post it with Slack Bot Send a Message to the channel I configure.

Keep the brief scoped to my watchlist. Do not add market-wide indexes, top gainer lists, or most-active lists. The value here is depth on the names I actually hold or follow, not broad market coverage.

Configurable inputs the workflow should expose: the Google Sheets spreadsheet id and watchlist range, the Slack channel id, the percent move threshold (default 1 percent), the news lookback window (default 24 hours), and the time zone.

Example output

*Pre-market brief, Tue Aug 4* *NVDA* +4.2% on a report that next-gen accelerator shipments were pulled forward a quarter. Consensus firmed: 42 buy vs 38 last month, no sells. *TSLA* -3.1% after an overnight filing showed China deliveries down 9% month over month. No rating changes. *AAPL* +1.4%, no clear catalyst. Headlines are supplier chatter, nothing company-confirmed. *Consensus shifts:* AMD picked up two upgrades this month, now 31 buy / 4 hold / 0 sell. *Watch today:* CPI print at 8:30am ET. The rate-sensitive names on the list tend to move on the surprise, not the level. _Skipped 34 quiet tickers (moved under 1%, no fresh news)._

Additional information

What does this prompt do?
  • Reads your watchlist straight from a Google Sheet, so you update tickers in a spreadsheet instead of editing the automation.
  • Checks the latest price move, fresh headlines from the last 24 hours, and the current analyst consensus for every symbol on the list.
  • Writes one short brief that leads with the biggest movers and explains what news is actually driving each one.
  • Posts it to your Slack channel before the US market opens, with quiet tickers filtered out so it stays readable.
What do I need to use this?
  • A Finnhub account for market data. The free plan covers everything this workflow uses.
  • A Google Sheet with your ticker symbols in a column, for example AAPL, MSFT, NVDA.
  • A Slack workspace and a channel where the morning brief should land.
How can I customize it?
  • Change the schedule or time zone, for example 7:30am for an earlier pre-market read or 4:30pm for a closing wrap.
  • Raise or lower the move threshold that decides which tickers are quiet enough to skip.
  • Point it at a different Slack channel or a DM, and swap the watchlist tab whenever your coverage changes.

FAQs

Do I need a paid Finnhub plan?
No. Prices, company news, and analyst consensus are all available on the Finnhub free plan. That plan allows 60 calls a minute, which is why we suggest keeping the watchlist to around 40 symbols.
How many tickers can I track?
Around 40 works comfortably on the free plan, since each symbol needs three lookups. If you want a much longer list, either upgrade your Finnhub plan or split the watchlist across two runs at different times.
Why do some of my tickers not show up in the brief?
That is intentional. Any symbol that moved less than one percent and has no fresh news gets left out, so the brief stays short and the names that actually matter stand out. You can change that threshold.
How is this different from the daily stock market morning brief?
That one scans the whole US market for top gainers, losers, and index moves. This one covers only the symbols on your own watchlist, adds analyst rating changes, and lets you manage the list in a Google Sheet.
Will it post on weekends or market holidays?
It runs Monday through Friday by default. You can ask Geni to also skip US market holidays if you want a strict trading-day schedule.

Related templates

Chase past-due JobNimbus invoices with escalating emails

Every weekday, find every unpaid JobNimbus invoice, email each customer one reminder that gets firmer as it ages, and post a receivables summary to Slack.

JobNimbus
Gmail
Slack Bot
Agentic Task
Flag at-risk students in Canvas before they fall behind

Every weekday at 7am, your active courses are checked for missing work, silent logins, and slipping grades, with a ranked list sent to your advising channel.

Canvas
Google Sheets
Slack Bot
Agentic Task
Catch Jira service desk tickets before their SLA runs out

Every hour, find the tickets closest to breaching, leave a nudge on each one, and post a ranked at-risk list to your support channel.

Jira Service Management
Slack Bot
Agentic Task
Send Canvas students a kind nudge about missing work

Every weekday afternoon, each student who is behind gets a warm, personal message in their Canvas inbox listing exactly what they owe.

Canvas
Slack Bot
Agentic Task
Weekly Canvas grading backlog report in Slack and Sheets

Every Monday at 8am, see exactly which assignments have work waiting, sorted worst first, posted to Slack and logged to a spreadsheet.

Canvas
Slack Bot
Google Sheets
Deterministic Code
Revoke Bitwarden access when someone leaves in BambooHR

Every weekday morning we compare your password vault against your HR records and suspend access for anyone who has already left.

Bitwarden
BambooHR
Slack Bot
Agentic Task

Know what moved your watchlist before the bell.

Connect Finnhub, Google Sheets, and Slack once, and your team gets a written pre-market brief every weekday morning.