Weekly favorite artist concert radar in Slack

Every Wednesday morning, get a Slack digest of every new show your favorite artists just announced within driving distance of your city.

Agentic Task
TicketmasterGoogle SheetsSlackPersonal ProductivityNotifications & AlertsResearch & MonitoringDaily Digests

Build me an agent workflow that runs every Wednesday at 9am in my local timezone and posts a Slack digest of newly announced shows by my favorite artists, within driving distance of my city.

Trigger: cron, weekly on Wednesday at 9:00 in my local timezone.

Inputs the agent should accept when I configure the workflow: (1) the Google Sheet ID and tab name where my favorite artists live, (2) my home city as a latitude/longitude string (latlong), (3) a default search radius in miles, (4) the Slack channel ID or user ID to post the digest to, and (5) the look-ahead window in months (default 6).

Sheet shape: one artist per row. Column A is the artist name (required). Optional columns: B = city override as latlong, C = radius override in miles, D = last_notified_event_id (the agent writes back here so it can dedupe future runs).

Step 1: Read the artist list from Google Sheets using the Get Values operation. Pull columns A through D so the agent can see existing dedupe state.

Step 2: For each artist row, call Ticketmaster Search Attractions with the artist name to resolve the Ticketmaster attraction ID. If there are multiple matches, pick the music attraction with the highest upcoming event count. If nothing matches, skip the row and note it for the digest.

Step 3: For each resolved attraction ID, call Ticketmaster Search Events filtered by attractionId, latlong (the artist's row override or my default), radius (artist override or default), unit=miles, startDateTime = now, and endDateTime = now + look-ahead window. Read events out of _embedded.events. If the row already has a last_notified_event_id, drop any events with an id at or before that id (Ticketmaster returns events in date order, so newer events have later announcement dates). Also drop events whose id matches anything we previously notified for this artist.

Step 4: For every new event, capture: artist name, event name, local event date and time, venue name and city, ticket URL, on-sale start datetime (sales.public.startDateTime), and presale windows if present (sales.presales[].name + startDateTime + endDateTime). On-sale and presale times are the actionable bits, do not omit them.

Step 5: Post a single Slack message via the Send a Message operation to the configured channel or DM. Format as a short header, then one bullet per new show in Slack mrkdwn: *Artist* — Date · Venue, City · <ticketUrl|Get tickets> · On sale Sat Jun 7 10am (presale Thu 10am with code ARTIST). Group bullets under each artist if there are multiple shows. If no new shows surfaced, post a short message instead: "No new tour dates from your favorites this week. I'll check again next Wednesday." Never stay silent.

Step 6: Update dedupe state. For each artist that had new shows, write the newest event ID back to column D of that artist's row using the Google Sheets Append Values operation against a tracking tab named "notified_log" (columns: timestamp, artist, event_id, event_name, event_date). Also overwrite column D of the artist's row in the main tab with the newest event_id so the next run can short-circuit. Use valueInputOption RAW for both writes.

Guardrails: throttle Ticketmaster calls to about 4 requests per second and back off on HTTP 429. Cap the digest at 25 shows so the Slack message stays readable; if there are more, mention the overflow count at the bottom. Skip any artist row with a blank name. Treat Ticketmaster errors per-artist (one bad lookup should not kill the whole run).

Additional information

What does this prompt do?
  • Reads your favorite-artists list straight from a Google Sheet, so you can add or drop names without touching any code.
  • Checks for any newly announced shows within a radius of your city over the next six months.
  • Posts a single, easy-to-scan Slack message with the date, venue, ticket link, and on-sale or presale times for each new show.
  • Tracks what it has already told you about, so the same announcement never shows up twice.
What do I need to use this?
  • A Google account with a sheet that lists the artists you want to follow (one per row).
  • A free Ticketmaster developer account so we can look up tour dates.
  • A Slack workspace where you want the weekly digest posted (a personal channel or DM works great).
How can I customize it?
  • Change the day or time the radar runs. Wednesday at 9am is a default, not a rule.
  • Adjust the search radius around your city, or set a different radius per artist directly in the sheet.
  • Pick where the digest lands: a private channel, a public band-nerds channel, or a DM to yourself.
  • Widen or narrow the six-month look-ahead window if you book travel further out (or only care about this month).

Frequently asked questions

Do I need a paid Ticketmaster account?
No. A free Ticketmaster developer account gives you a key with plenty of room for a weekly personal digest like this one.
What does my Google Sheet need to look like?
One artist per row in the first column is enough to start. You can optionally add a city column and a radius column to override the default for specific artists.
Will it spam me with shows I already know about?
No. The radar remembers what it has already mentioned and only posts shows that are genuinely new since the last run.
What happens if none of my artists have new shows that week?
You still get a short Slack message saying there are no new dates this week, so you always know the radar ran.
Can I follow venues or genres instead of specific artists?
Yes. The same setup can watch venues you love or a genre filter. Ask Geni to swap the sheet column from artist names to venues or a category when you build the workflow.

Never miss a tour announcement again.

Connect Google Sheets, Ticketmaster, and Slack once, and Geni will check on your favorite artists every Wednesday morning.