# Weekly earnings dates for your watchlist, on your calendar

> Every Monday morning, we add this week's earnings dates for the companies you track to your calendar and post the full lineup to Slack.

- Workflow type: code
- Services: Finnhub, Google Calendar, Slack Bot
- Categories: Finance, Personal Productivity
- Published: 2026-08-04

## What it does

- Checks the week ahead for earnings announcements from the companies on your watchlist
- Adds an all-day event to your calendar for each earnings date, with the expected earnings per share, the expected revenue, and whether the company reports before the market opens or after it closes
- Posts the full week's lineup to Slack on Monday morning, sorted by day
- Skips any date already on your calendar, so running it again never creates duplicates

## What you'll need

- A Finnhub account. The free plan covers everything this workflow uses.
- A Google Calendar you want the earnings dates added to
- A Slack workspace and a channel for the weekly lineup
- The list of ticker symbols you want to follow, such as AAPL, MSFT, NVDA

## Prompt

Every Monday at 6:00am, build out the week's earnings schedule for the tickers I follow. Every step here is a fixed lookup, filter, and write with no judgement involved, so build it as a code workflow on a weekly cron trigger.

Keep three plain configurable inputs on the workflow: my list of ticker symbols (a single comma separated text field, for example "AAPL, MSFT, NVDA"), the target Google Calendar id (defaulting to my primary calendar), and the Slack channel for the weekly post. The ticker list must stay a one field edit on the workflow itself. Do not read it from a spreadsheet, a database, or any other external source.

Step one: call Finnhub's Earnings Calendar operation with from set to today and to set to today plus six days. Both are YYYY-MM-DD strings. The response returns an earningsCalendar array where each entry carries symbol, date, epsEstimate, revenueEstimate, hour, quarter, and year.

Step two: filter those results down to my configured ticker list, matching case insensitively and trimming whitespace so a sloppy list like "aapl , MSFT" still works. If nothing matches, skip the calendar writes entirely and post a short Slack message saying the week is clear, then finish.

Step three: the earnings calendar returns only the ticker symbol, not the company name, so resolve each matched symbol to a company name with Finnhub's Company Profile 2 operation. Use Company Profile 2 specifically, since it is the free tier version and the premium Company Profile operation returns a 403 without a paid plan. Look the name up once per unique symbol and reuse it across that symbol's dates. If the lookup returns nothing usable, fall back to just the ticker rather than failing the run.

Step four: before writing anything, dedupe against what is already on the calendar so re-runs never duplicate. Use Google Calendar's List Events operation scoped to the earnings date, and skip creating an event when one already exists for that same ticker and date. Match on the ticker at the start of the event title, which is the naming convention step five sets.

Step five: for each remaining earnings date, use Google Calendar's Create Event operation to create an all-day event on that date. Title it with the ticker and the company name, formatted as "AAPL: Apple Inc earnings". Put the EPS estimate, the revenue estimate, and the reported hour into the event description. Expand the hour code into readable words rather than passing it through raw: bmo becomes "Before market open", amc becomes "After market close", and dmh becomes "During market hours". That distinction is the useful part, since it tells me whether to watch the morning or the evening. When an estimate is missing or null, write "Not available" instead of leaving the line blank or printing null.

Step six: finish by posting the full week's lineup to Slack with Slack Bot's Send a Message operation. Sort by date ascending and group the lines under each day, with one line per company showing the ticker, the company name, the expanded reported hour, and the EPS estimate. Close the message with a count of how many events were added versus how many were already on the calendar.

One operational note: Finnhub's free tier allows 60 calls per minute and returns a 429 when that is exceeded. A watchlist sized ticker list stays well inside that, but back off and retry on a 429 rather than letting the run fail.

## How to customize

- Change the ticker list whenever your holdings change. It is a single field on the workflow, so adding or removing a company is a one line edit.
- Move the run time or day. Monday at 6am is the default, but Sunday evening works well if you like to plan the week the night before.
- Send the events to a separate investing calendar instead of your main one, and pick which Slack channel or direct message gets the lineup.

## Example output

This week's earnings, March 3 to March 9

Tuesday, March 4
• TGT Target Corp, before market open, EPS estimate 2.42
• CRM Salesforce Inc, after market close, EPS estimate 2.61

Wednesday, March 5
• MRVL Marvell Technology, after market close, EPS estimate 0.59

Thursday, March 6
• AVGO Broadcom Inc, after market close, EPS estimate 1.56
• COST Costco Wholesale, after market close, EPS estimate 4.11

5 dates added to your calendar, 0 were already there.

## FAQ

### Does this work on Finnhub's free plan?

Yes. The earnings calendar and the company name lookup are both available on the free tier, and a watchlist sized list of tickers stays well within the free usage limits.

### What happens if it runs twice in the same week?

Nothing gets duplicated. Before adding anything, it checks whether that company already has an event on that date and skips it if one is already there.

### Will it tell me if a company reports in the morning or after hours?

Yes. Every event notes whether the company reports before the market opens, after it closes, or during market hours, so you know whether to watch the morning or the evening.

### What if none of my companies report that week?

You still get a Slack message telling you the week is clear, and nothing is added to your calendar.

### Can I keep the weekly lineup private?

Yes. The lineup posts to whichever Slack destination you choose, including a direct message to yourself instead of a shared channel.

Use this prompt in General Input: https://www.generalinput.com/prompts/weekly-earnings-dates-for-your-watchlist-on-your-calendar