Daily Form 4 insider trading digest to Slack

Every weekday at 8am ET, scan your watchlist for new insider buys and sells, then post a ranked Slack digest with every trade logged in a sheet.

Agentic Task
SEC EDGARGoogle SheetsSlackFinancePersonal ProductivityDaily DigestsNotifications & AlertsResearch & Monitoring

Build a weekday morning workflow that monitors my stock watchlist for new insider trading activity and digests the results to Slack. Trigger it on a cron every weekday at 8:00 AM Eastern, Monday through Friday. Skip Saturdays, Sundays, and U.S. market holidays, and exit early on those days.

At the start of each run, read my ticker watchlist from the first tab of a Google Sheet using Get Values. The sheet has one ticker per row in column A. Trim whitespace and uppercase each symbol before using it.

For each ticker, resolve the company to its SEC CIK by calling SEC EDGAR's List Company Tickers operation and matching on the ticker symbol. Zero-pad the CIK to 10 digits before any data.sec.gov call. Then call Get Company Submissions for each CIK and zip the columnar filings.recent arrays by index (accessionNumber, form, filingDate, primaryDocument) to find Form 4 filings with a filingDate equal to the most recent trading day.

For every new Form 4, fetch the primary filing document from the SEC Archives URL pattern (https://www.sec.gov/Archives/edgar/data/{CIK}/{ACCESSION_NO_NODASHES}/{primaryDocument}) and parse the structured transaction blocks. Extract: the reporting person's name and role (CEO, CFO, director, 10% owner, other officer), the transaction code (P for open-market buy, S for open-market sale, A for grant or award, M for option exercise, F for tax withholding, G for gift), share count, average price per share, total dollar value, and a permalink back to the filing. Always send a descriptive User-Agent header on SEC requests.

Judge significance with these rules. Highly notable: open-market purchases (code P) by C-suite or directors, cluster buys (two or more insiders at the same company on the same day), and first-time insider purchases. Notable: any single transaction whose total dollar value exceeds a configurable threshold (default $250,000). Background noise: planned 10b5-1 sales, small grants, and tax-withholding transactions. Log everything, but only surface notable and highly-notable trades in the Slack digest.

Append every parsed transaction as a row to a tab called 'Form 4 Log' in the same Google Sheet using Append Values, with columns: date, ticker, insider name, role, transaction type (human-readable like 'Open-market buy'), shares, price, dollar value, and filing URL. Before appending, read the existing log and dedupe by accession number plus reporting person so reruns do not double-post.

Finally, post one grouped Slack digest to a designated channel using Send a Message. Group transactions by ticker, lead with the most significant signals (cluster buys, first-time insider purchases, unusually large sales), and include insider name, role, shares, price, and dollar value per line with the filing link. End with a one-line 'quiet day' note if nothing material crossed the threshold. Keep the message under Slack's length limit by truncating long sections and linking to the sheet for the full log.

Ask me for: the Google Sheet ID (or URL), the Slack channel name or ID, the dollar threshold (default $250,000), and the run time (default 8:00 AM ET).

Additional information

What does this prompt do?
  • Reads your ticker watchlist from a Google Sheet and checks each company for new insider trading filings from the prior trading day.
  • Flags the trades that actually matter first: open-market purchases by C-suite and directors, cluster buys across multiple insiders, and unusually large sales.
  • Filters out routine planned sales and anything below a dollar threshold you set (default $250,000) so the digest stays signal, not noise.
  • Posts one grouped Slack message organized by ticker, and appends every parsed transaction to a running log tab in the same sheet for later review.
What do I need to use this?
  • A Google account with access to a spreadsheet that holds your ticker watchlist
  • A Slack workspace and the channel where the digest should land
  • A list of tickers you want to monitor (SEC EDGAR is public data, so no signup or API key is needed)
How can I customize it?
  • Change the time, day, or holiday schedule the digest runs on
  • Adjust the dollar threshold or restrict the digest to insider buys only, skipping sales entirely
  • Route different tickers to different Slack channels, or add new columns to the log tab

Frequently asked questions

What is a Form 4 filing?
A Form 4 is a required SEC filing whenever a company's officers, directors, or 10% owners buy or sell company stock. They become public the same day, which is why insider trading watchers follow them closely.
Do I need an SEC EDGAR account or API key?
No. SEC EDGAR is a free public data source. You can pull filings for any U.S. listed company without signing up or paying.
What if my watchlist has hundreds of tickers?
The workflow loops through every ticker, but it only writes to Slack for the ones with new filings, so the digest stays short even with a long list.
Can I add or remove tickers without rebuilding the workflow?
Yes. Edit the first tab of your Google Sheet and the next morning's run picks up the change. No code edits needed.
Will it double-post if I run it more than once a day?
No. Each run checks the existing log tab and skips any transaction already recorded, so reruns are safe.
How does it tell a meaningful trade from a routine one?
Open-market buys by C-suite or directors and same-day cluster buys are surfaced first. Pre-planned sales and small trades below your dollar threshold are logged but not posted.

Stop missing the insider trades that actually matter.

Connect SEC EDGAR, Google Sheets, and Slack once, and Geni runs this every weekday morning before the open.