Daily Warmforge deliverability log to Google Sheets

By General Input

Every morning at 6am, log yesterday's warmup and inbox placement numbers for every mailbox into a Google Sheet you can chart forever.

Integrations

  • Warmforge
  • Google Sheets

Type

Deterministic Code

Categories

  • Operations
  • Marketing

Build a code workflow that runs on a cron every day at 6am and snapshots yesterday's Warmforge deliverability numbers into a Google Sheet, so we have a chartable long-term history outside the Warmforge dashboard.

Trigger: cron, daily at 06:00 in the user's local timezone. Compute the report date once at the start of the run as yesterday in YYYY-MM-DD (Warmforge uses date strings, not ISO timestamps).

Pipeline (deterministic, no reasoning needed):

1. Call warmforge.List Workspaces to enumerate every workspace the API key can see. Iterate pages until currentPage equals totalPages.

2. For each workspace, call warmforge.List Mailboxes with status=all and paginate through every mailbox. Keep the workspace id and name alongside each mailbox.

3. For each mailbox, call warmforge.Get Warmup Stats with from and to both set to yesterday's YYYY-MM-DD. Pull warmup sends, warmup replies, spam count, and reply rate for that single day. If the mailbox has no stats for that day, emit zeros rather than skipping the row.

4. For each workspace, call warmforge.Get Latest Placement Results for Mailboxes in batches keyed by mailbox address. Map the integer result enum to a human label (Inbox, Spam, Promotions, Pending, Missing) and capture the placement test id. Mailboxes with no placement test get Missing and a blank id.

5. Assemble one row per mailbox with these columns in this exact order: date, workspace, mailbox address, status, warmup sends, warmup replies, spam count, reply rate, latest placement result, placement test id.

6. Append all rows in a single google-sheets.Append Values call to a spreadsheet and tab the user configures (default range like Deliverability!A:J), with valueInputOption=USER_ENTERED so numbers and dates are parsed correctly. Assume the header row already exists in row 1.

Design goals: same schema lands every morning so downstream Sheets charts and Looker Studio dashboards stay stable. No AI reasoning steps. Handle Warmforge 429s with backoff. URL-encode the @ in mailbox addresses when they appear in path segments. Log a short run summary at the end: number of workspaces, mailboxes, and rows appended.

Inputs to expose as workflow config: the Google Sheet spreadsheet id, the target tab name (default Deliverability), and an optional list of workspace ids to include (empty means all).

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentLocal listing health board for every location you manageLet support send one-off Loops emails without an engineerStop cold emails to anyone with a live deal in PipedriveiMessage campaign console with pre-flight checks and delivery boardLinkedIn Ads budget pacing dashboard for every client accountFront desk appointment confirmation board for the next 3 daysGive your team Looker numbers without buying more seatsBuild audience segments from product usage and push to LoopsTurn the people who engage with your posts into Pipedrive leads