Daily Better Stack uptime tracker in Google Sheets

Post every Better Stack monitor's live uptime and incident count to a shared Google Sheet each morning so anyone can filter, chart, or pivot without a monitoring seat.

Deterministic Code
Better StackGoogle SheetsEngineeringOperationsData SyncResearch & MonitoringDaily Digests
PromptCreate

Every day at 7am, sync the current state of every Better Stack monitor into a Google Sheet so finance, ops, and customer success have a live uptime tracker without needing a Better Stack seat.

Trigger: cron on the org timezone at 07:00 daily.

Step 1. Call Better Stack List Monitors and page through until every monitor is collected. Keep each monitor's id, name (pretty_name or url as fallback), url, status, and last_checked_at.

Step 2. For each monitor, call Better Stack Get Monitor Availability (SLA) twice: once with from/to covering the last 24 hours (now minus 24h to now) and once covering the last 30 days (now minus 30d to now). From each response, take the availability percentage, the total downtime, and the incident count. Round uptime percentages to two decimals when writing the row.

Step 3. Build one row per monitor with these columns in order: name, url, current status, 24h uptime %, 30d uptime %, 30d incident count, last checked timestamp (ISO 8601 in UTC). Also stamp the run time as the first column (labelled Run Date) so the sheet builds up a running history when the workflow runs each day.

Step 4. Call Google Sheets Append Values against the configured spreadsheet, target range Monitors!A:H, valueInputOption USER_ENTERED, and write all rows in one append call. Do not clear existing rows — every run appends, so the tab becomes a time series.

Configuration knobs to expose at the top of the workflow: the Google Sheet spreadsheet id, the target tab name (default Monitors), and the cron expression. Handle rate limits with a short backoff on HTTP 429 from either service. If a monitor's availability call fails, still write the row with the fields that succeeded and leave the failed metrics blank rather than aborting the whole run.

What does this prompt do?

  • Pulls every monitor from your Better Stack account once a day
  • Writes each monitor's current status, 24-hour uptime, 30-day uptime, and 30-day incident count to a shared Google Sheet
  • Gives finance, ops, and customer success a live uptime tracker they can filter, chart, or pivot without a Better Stack seat
  • Runs on a schedule you control (defaults to 7am every morning)

What do I need to use this?

  • A Better Stack account with the monitors you care about already set up
  • A Google account with edit access to the destination spreadsheet
  • A Google Sheet with a tab named Monitors (or your preferred tab name) ready to receive rows

How can I customize it?

  • Change the run time or cadence (hourly, twice a day, weekdays only)
  • Point the workflow at a different spreadsheet or a differently named tab
  • Add or reorder columns such as monitor group, region, owner team, or a custom SLA target

FAQs

Do my stakeholders need a Better Stack account to read the sheet?
No. Only the workflow needs access to Better Stack. Anyone with access to the Google Sheet can filter, chart, or pivot the uptime data on their own.
What uptime numbers get written to the sheet?
For every monitor, the workflow records the current status, uptime over the last 24 hours, uptime over the last 30 days, incident count over the last 30 days, and the timestamp of the last check.
Will this create a fresh row every day?
Yes. The workflow appends one row per monitor every morning, so the sheet builds up a running history you can chart or pivot over time.
Can I run it more than once a day?
Yes. Adjust the schedule to run hourly, twice a day, weekdays only, or on any cadence you want.
Does it cover monitors that are not on a public status page?
Yes. The workflow reads every monitor on your Better Stack team directly, whether or not it appears on a public status page.

Related templates

Call overdue Xero customers with an AI collections agent

Every weekday at 10am, an AI voice agent phones your most overdue Xero accounts, logs what each customer promised, and reports back to finance in Slack.

LiveKit
Xero
Deepgram
+2
Agentic Task
Local listing health board for every location you manage

See every Google Maps listing you manage on one screen, ranked worst first, with an audit button that writes the fix list for you.

Local Business Data
Google Sheets
App
Let support send one-off Loops emails without an engineer

Your team picks a template, finds the customer, checks they are safe to email, then sends it, with every send logged where the whole team can see it.

Loops.so
Stripe
Google Sheets
App
Stop cold emails to anyone with a live deal in Pipedrive

Every night at 2am, pull the contacts on your open and won deals and block them from your cold outreach before the next send goes out.

Mailshake
Pipedrive
Google Sheets
Deterministic Code
iMessage campaign console with pre-flight checks and delivery board

Build every text campaign in one screen: check who is actually reachable, see a realistic send plan, then watch delivery land row by row.

LoopMessage
Google Sheets
HubSpot
App
LinkedIn Ads budget pacing dashboard for every client account

See every LinkedIn ad account's spend against the budget you committed to, catch overspend early, and rebalance without rebuilding a spreadsheet.

LinkedIn Ads
Google Sheets
Slack Bot
App

Give ops the uptime numbers without giving them a Better Stack seat

Ship a shared Google Sheet that refreshes itself every morning and becomes the single source of truth for stakeholders outside the on-call team.