Sync CourtListener docket activity to Notion every hour
Mirror new filings, orders, and motions from every case you track into a Notion case tracker, hands free.
Every hour on the hour, mirror new CourtListener docket activity into our Notion "Case Tracker" database. This is a deterministic feed-to-database sync with no summarization or AI judgement: I just want the court record copied into Notion exactly once per filing.
At the top of the workflow, expose the configuration as workflow variables so I can edit them without changing code:
1) A list of CourtListener docket IDs to track. 2) The Notion database ID of the Case Tracker database. 3) A per-docket watermark variable storing the date_created of the most recent docket entry we have already synced for that docket. Default each watermark to empty so the first run can backfill or pick a sensible starting date.
Trigger: cron, every hour on the hour.
For each tracked docket ID, run this sequence:
Step 1: Call CourtListener Get Docket for that docket ID to fetch case metadata. Hold onto case_name, docket_number, court, and absolute_url. We will reuse them on every Notion row for this docket.
Step 2: Call CourtListener List Docket Entries scoped to that docket, ordered by -date_filed, and filtered so date_created is strictly greater than the saved watermark for this docket. Paginate until there are no more results. Collect the new entries in chronological order (oldest new entry first) so we write them into Notion in the order they were filed.
Step 3: For each new docket entry, call Notion Create a Page as a child of the Case Tracker database, with these properties: Case Name (title) = case_name from Get Docket; Docket Number (rich_text) = docket_number; Court (rich_text) = court; Entry Date (date) = date_filed; Entry Number (number) = entry_number; Document Description (rich_text) = description; CourtListener URL (url) = https://www.courtlistener.com plus the docket's absolute_url. Skip rows where required fields are missing rather than failing the run.
Step 4: After all new entries for that docket have been written to Notion successfully, update the per-docket watermark workflow variable to the date_created of the newest entry processed. If any Notion write failed for a given entry, do not advance the watermark past that entry, so the next run retries it. This keeps the sync idempotent and prevents duplicate rows.
Respect CourtListener rate limits: pace requests so we stay under 5 per minute, and if a 429 comes back, honor the Retry-After header before continuing.
What does this prompt do?
- Watches a fixed list of CourtListener dockets you care about and checks them every hour.
- Adds a new row to your Notion case tracker for each new filing, with case name, docket number, court, entry date, and a link back to the docket.
- Remembers what it has already synced, so the same filing never lands twice.
- Runs as a deterministic pipeline, so there is no AI guesswork between the court record and your database.
What do I need to use this?
- A CourtListener account so we can read docket activity on your behalf.
- A Notion workspace with a Case Tracker database shared with your General Input connection.
- The list of CourtListener docket IDs you want to track.
How can I customize it?
- Change the check cadence from hourly to a different schedule, like every 15 minutes or once a day.
- Add or remove docket IDs from the tracked list as your caseload changes.
- Tweak which properties land in Notion, for example adding a Status column or a link to the underlying document.
FAQs
Will the same filing show up twice in Notion?
Do I need a paid CourtListener account?
Can I track state court cases too?
How do I add a new case to track?
Does this pull the actual filed documents?
Related templates
Every six hours we check each ship on your watchlist for unexplained tracking gaps and off-port transfers, then log real findings and alert your team.
Open one place to see every candidate site mapped with 5, 10 and 15 minute drive time areas, competitor counts, and a site brief you can defend.
See what your competitors are running on Google, Meta and LinkedIn in one screen, save the best ads to a shared Notion swipe file, and get a teardown on demand.
Pick a brand, competitor, category or hashtag and get persona cards from real social conversation, saved each quarter so you can track how your audience shifts.
Open one screen each Monday to see which upcoming posts still have no image, generate three on-brand options, and file the one you pick.
See how your brand's news coverage and sentiment stack up against four competitors, then let an assistant write the weekly report for you.
Stop manually checking court dockets every morning.
Connect CourtListener and Notion once, and let Geni keep your case tracker current every hour.