See llms.txt for all machine-readable content.

Back to Templates

Monitor Google Maps listing changes with Apify, OpenAI, Sheets, Slack, and Gmail

Quick Overview

This workflow runs daily to monitor Google Maps listing changes via an Apify actor, scores each change with OpenAI and rules, logs results to Google Sheets, and routes hot items to Slack for approval and warm items to a Gmail digest, with a separate weekly email report.

How it works

  1. Runs on a daily schedule (or manually), and on Mondays runs a weekly-report-only schedule.
  2. For daily runs, starts the Apify Google Maps listing change monitor actor, then waits and polls the Apify run status until it succeeds or fails.
  3. Downloads the Apify dataset results, validates required fields, and deduplicates records against prior runs using workflow static data.
  4. Scores each change with a rule-based urgency score and then uses OpenAI to produce a structured fit score, verdict, summary, outreach angle, and red flags, combining both into a final tier.
  5. Upserts all scored rows into a Google Sheets tab keyed by a unique record key to avoid duplicates across reruns.
  6. Sends hot-tier items as a single Slack approval message (approve/dismiss) and writes the review decision back to the same Google Sheets rows.
  7. Sends warm-tier items as an HTML email digest via Gmail, while cold-tier items remain stored in Google Sheets only.
  8. For weekly runs, reads the last 7 days of rows from Google Sheets, builds a top-items summary, and emails the weekly report via Gmail, and on any workflow failure posts an error alert to Slack.

Setup

  1. Add an Apify API token as an HTTP Header Auth credential (Authorization: Bearer <token>) and select it on the Apify HTTP Request steps.
  2. Connect Google Sheets credentials, create a spreadsheet tab for the listing-change log, and set the Google Sheet ID and tab name in the Config values.
  3. Connect an OpenAI credential (or replace the chat model node with another provider) and ensure the workflow can return structured JSON output for the verdict fields.
  4. Connect Slack credentials, set the target Slack channel ID for approvals (and the separate error-alert channel ID if different), and ensure interactive approvals are enabled for send-and-wait.
  5. Connect Gmail credentials and set the digestEmail address in Config to receive the warm daily digest and weekly report.
  6. Update the Apify actor input in Config (searches, max places, alertOn events, thresholds, and monitorKey) and adjust scoring thresholds (hotScore/warmScore) and AI criteria as needed.