Daily price sync from Google Sheets to Craigslist

By General Input

Every weekday at 7am ET, push price changes from your Google Sheet inventory to your live Craigslist postings and recap the run in Slack.

Integrations

  • Google Sheets
  • Craigslist
  • Slack

Type

Agentic Task

Categories

  • Operations
  • Marketing

Build me an agent workflow that keeps my Craigslist posting prices in lockstep with a Google Sheet inventory. It should run on a cron trigger every weekday at 7:00am America/New_York.

Inputs I will configure: the Google Sheet ID and tab range that holds my inventory (each row has at minimum a Craigslist posting ID column and a current asking price column, plus optional area and category columns), the Slack channel for the recap, and a guardrail percentage for suspicious drops (default 40 percent).

Step 1. Read the inventory rows with Google Sheets Get Values against the configured sheet and range. Parse out posting ID and target price per row.

Step 2. For each row, call Craigslist Get Posting Price to fetch the current live price. If the posting's category does not support pricing (Get Posting Price returns the not-supported signal, or you have already determined the category is unsupported via Get Current Pricing for that area + category), skip the row and record it as skipped with the reason.

Step 3. Compare the sheet's target price to the live price. If they match, record as unchanged and move on. If they differ, decide whether to push the update:

- If the target is a price drop greater than the guardrail percentage (default 40 percent) below the live price, do NOT push. Record it as flagged for human review with both prices and the percent delta.

- Otherwise, call Craigslist Edit Posting Price with the new value. Craigslist money is fixed-point shaped as { amount, currency, exponent }, e.g. $1,000.00 is { amount: 100000, currency: "USD", exponent: 2 }. Convert the sheet's dollar value to that envelope before sending.

Step 4. Treat every Craigslist response as potentially partial. Even on HTTP 200, inspect the response's errors array. If errors is non-empty, record that posting as errored with the message and continue with the next row. Do not abort the whole run on a single bad row.

Step 5. After all rows are processed, send one Slack message with Send a Message to the configured channel that summarizes the run with four labeled groups: Updated (posting ID, old price, new price), Unchanged (count and a few sample IDs), Flagged for review (posting ID, live price, target price, percent drop, reason), and Errors (posting ID and the Craigslist error text). Keep the message scannable so the operator knows exactly where to look.

Guardrails: the sheet is the source of truth for price. Never touch the sheet, only Craigslist. Never push a price for a flagged row, the operator must adjust the sheet and let the next run handle it. Never push the same price that is already live. Make the guardrail percentage and Slack channel easy to change without editing the workflow logic.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentLocal listing health board for every location you manageWin back LiveChat visitors whose chats went unansweredLet 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 boardChat quality review board for LiveChat support leadsLinkedIn Ads budget pacing dashboard for every client accountFront desk appointment confirmation board for the next 3 daysGive your team Looker numbers without buying more seats