Monday morning foot-traffic digest for your shopping center portfolio

Every Monday at 7am, get a Slack digest with the top risers, top fallers, and any sharp drops across your shopping centers and key stores.

Agentic Task
Sites USAGoogle SheetsSlackOperationsDaily DigestsAI ReportsResearch & Monitoring

Build me an agent workflow that runs on a cron every Monday at 7am local time and posts a weekly foot-traffic momentum digest to a Slack channel for my shopping center portfolio.

Inputs the agent should read at the top of every run:

1) A Google Sheet that lists my portfolio locations. Use Google Sheets Get Values to read it. The sheet has one row per location, with one column for the Sites USA shopping center ID and one column for the merchant Placekey for the specific store inside that center. Include extra label columns like location name or region if present, and use them as display names in the digest. The spreadsheet ID, sheet/tab name, and column mapping should be configurable inputs.

2) A configurable drop threshold for the alert section, defaulting to 15 percent.

3) The target Slack channel ID for the digest.

For each row in the sheet, call Sites USA Get Store Visits by Shopping Center using the shopping center ID, and Sites USA Get Store Visits by Placekey using the Placekey, to retrieve the trailing twelve months of monthly visit data for both the center and the specific store. Pace requests to respect the Sites USA 1 call per second limit.

For each location, compute month-over-month change (most recent complete month vs the prior month) and year-over-year change (most recent complete month vs the same month last year), as both absolute visit counts and percent change. Do this at both the shopping center level and the store/Placekey level so the digest can show both.

Then build the digest with these sections, in this order:

- A one-line headline with the reporting period (the most recent complete month) and a quick portfolio-wide read (e.g. how many locations are up year-over-year vs down).

- Top 3 risers, ranked by year-over-year percent change. For each, show the location label, the year-over-year delta, the month-over-month delta, and a one-sentence agent interpretation of what is likely driving the move.

- Top 3 fallers, same shape as risers.

- A "watchlist" section listing every location whose year-over-year drop exceeds the configurable threshold (default 15 percent), even if they are not in the top 3 fallers. Same per-line format with a one-sentence interpretation.

- A short footer titled "No data this cycle" listing any locations where either Sites USA call returned no visit data, so nothing gets silently dropped.

Post the assembled digest to the configured Slack channel using Slack Send a Message. Format with Slack mrkdwn: use *bold* (single asterisks) for section headers and location names, and keep each location bullet to one or two compact lines. Round percentages to whole numbers and prefix with + or - so direction is obvious at a glance.

Operational notes: handle Sites USA 401 by re-authenticating (the credential is an API key that exchanges for a JWT good for 12 hours). Treat empty arrays from either Sites USA call as "no data" and route the location to the footer rather than failing the run. If the Slack post fails, retry once before erroring.

Additional information

What does this prompt do?
  • Reads your portfolio of shopping centers and key tenant locations from a Google Sheet you already maintain.
  • Pulls the trailing twelve months of foot-traffic data for every center and store, then calculates month-over-month and year-over-year changes.
  • Ranks the three biggest risers and the three biggest fallers and flags any location with a visit drop above your alert threshold.
  • Posts the whole thing as a clean Monday-morning Slack digest, with a short footer listing any locations that returned no data this cycle.
What do I need to use this?
  • A Sites USA account with API access through your REGIS Online subscription.
  • A Google Sheet listing each portfolio location with a column for the shopping center ID and a column for the merchant Placekey.
  • A Slack workspace and the channel you want the digest posted to.
How can I customize it?
  • Change the schedule. Run it daily, biweekly, or on a different day of the week, in your local time zone.
  • Adjust the alert threshold. The default flags any location down more than 15 percent year-over-year, but you can raise or lower the number.
  • Pick a different Slack channel, or split the digest across multiple channels by region or asset class.
  • Add or remove ranking sections, like surfacing the top five movers instead of three, or focusing only on fallers.

Frequently asked questions

What goes in my portfolio Google Sheet?
One row per location with two columns. One column holds the Sites USA shopping center ID, the other holds the Placekey for the specific merchant or store inside that center. You can add extra columns like asset name or region, and the digest will use them as labels in the Slack post.
What if a location returns no foot-traffic data that week?
It will not be silently dropped. Locations with no data this cycle appear in a short footer at the bottom of the Slack digest, so you always know which sites the agent could not measure.
How is a riser or faller actually defined?
The agent compares the most recent month of visits to the prior month and to the same month last year. The top three risers and top three fallers are chosen by year-over-year change, and any location below your drop threshold gets called out separately.
Can I post to more than one Slack channel?
Yes. You can run a single digest to a central portfolio channel, or split it by region, fund, or asset class and post each slice to a different channel.
Do my tenants or partners see this?
No. The agent posts only to the Slack channels you choose. Sharing the digest outside Slack is entirely up to you.

Stop chasing foot-traffic dashboards one site at a time.

Connect Sites USA, Google Sheets, and Slack once, and every Monday at 7am your portfolio momentum lands in one tidy message.