Daily watchlist close-of-day digest in Slack

Every weekday at 4:15pm ET, post a tidy close-of-day summary of every ticker on your watchlist to Slack, with alerts when prices cross your targets.

Deterministic Code
RapidAPIGoogle SheetsSlackFinancePersonal ProductivityDaily DigestsNotifications & AlertsResearch & Monitoring

Build a code workflow that runs on a cron trigger every weekday (Monday through Friday) at 4:15pm America/New_York and posts a close-of-day watchlist digest to Slack.

Step 1. Read my watchlist from Google Sheets. Use Google Sheets' Get Values operation against the 'watchlist' tab of a spreadsheet I'll configure. Each row has columns: ticker, target_above, target_below, notes. Skip the header row. The list of tickers comes entirely from this tab. Treat target_above and target_below as optional numeric thresholds (either or both may be blank).

Step 2. For each ticker, fetch today's market data using RapidAPI's Call a Subscribed Hub API operation. Default to the Real-Time Finance Data API on the RapidAPI Hub (host: real-time-finance-data.p.rapidapi.com), with YH Finance as a fallback option I can swap in. From the response, extract: close price, day change percent, day volume, 52-week high, and 52-week low. If the API returns no data for a ticker, log a warning and keep going. Respect rate limits with a small delay between calls and retry on 429.

Step 3. Append one row per ticker per day to the 'history' tab of the same spreadsheet using Google Sheets' Append Values operation. Columns: date (YYYY-MM-DD in ET), ticker, close, change_pct, volume.

Step 4. Build a single Slack digest message and send it with Slack's Send a Message operation to the channel #markets (make the channel a configurable input). Format it tightly using Slack mrkdwn:

- Header line with today's date in ET and a quick summary count (e.g. 'Watchlist close: 12 tickers, 3 alerts').

- A compact table section with one line per ticker showing: ticker, close price, an up arrow (▲) or down arrow (▼) with the day change percent, day volume in shortened form (e.g. 12.4M), and the notes field if present.

- A separate 'Alerts' section listing only tickers whose close >= target_above or close <= target_below from the watchlist. For each alert, show ticker, close, which threshold it crossed, and the threshold value. Omit the section entirely if there are no alerts.

Keep the formatting tight (one row per ticker, no blank padding lines, no em dashes). Use periods or commas instead of em dashes anywhere in the message. The whole digest should fit comfortably without a 'See more' truncation in Slack.

Inputs I should be able to configure: the Google Sheets spreadsheet ID, the watchlist tab name (default 'watchlist'), the history tab name (default 'history'), the Slack channel (default '#markets'), the RapidAPI host for the finance API, and the cron timezone (default America/New_York).

Additional information

What does this prompt do?
  • Pulls your watchlist (ticker, upper target, lower target, notes) from a Google Sheets tab so you stay in control of which symbols are tracked.
  • Fetches the close price, day change, day volume, and 52-week high/low for every ticker right after the U.S. market closes.
  • Logs one row per ticker per day to a history tab in the same spreadsheet so you can chart trends over time.
  • Posts a single tidy Slack message to your markets channel with one row per ticker and a separate alerts section that calls out anything that crossed your target prices.
What do I need to use this?
  • A RapidAPI account with an active subscription to a real-time finance API on the Hub (for example, Real-Time Finance Data or YH Finance).
  • A Google account with edit access to a spreadsheet that has a watchlist tab and a history tab.
  • A Slack workspace and the name of the channel where the daily digest should land (for example, #markets).
How can I customize it?
  • Change the schedule. The default is 4:15pm ET on weekdays, but you can move it earlier or later, or run it twice a day for pre-market and post-market.
  • Adjust your watchlist anytime by editing the spreadsheet. Add or remove tickers, change the upper and lower target prices, or add notes that show up next to each row in Slack.
  • Pick a different finance API on RapidAPI if your current one runs out of quota or you want richer fields like analyst targets or option volume.
  • Change the destination. Post to a different Slack channel, send a direct message to yourself, or route alerts-only messages to a separate channel.

Frequently asked questions

Do I need to pay for a finance data API?
Most real-time finance APIs on the RapidAPI Hub have a free tier that covers a few hundred to a few thousand calls per month, which is plenty for a personal watchlist of 10 to 50 tickers. Heavier use or institutional-grade data may require a paid plan.
Can I track non-U.S. stocks, crypto, or ETFs?
Yes. As long as the finance API you subscribe to on RapidAPI supports the symbol, the workflow will pick it up. Just add the ticker to your watchlist tab using the symbol format that provider expects (for example, BTC-USD or VOD.L).
What happens when a ticker crosses one of my target prices?
The digest includes a dedicated alerts section that lists every ticker whose close crossed either the upper or lower target you set in the watchlist. Nothing crosses on a quiet day, the section stays empty.
How do I change which Slack channel it posts to?
Just edit the channel name in the workflow settings after you connect Slack. You can also point it at a private channel or send the digest to yourself as a direct message.
Will the history tab fill up forever?
Yes, by design. One row per ticker per day gives you a clean dataset to chart in Sheets, export to a notebook, or feed into a portfolio review later. You can always archive old rows manually if the sheet gets long.

Get your watchlist in Slack before you close your laptop.

Connect Google Sheets, Slack, and a finance API on RapidAPI once, and Geni delivers a close-of-day digest every weekday at 4:15pm ET.