Weekly SEO refresh for stale Shopify product descriptions

By General Input

Every Sunday, find stale or non-converting Shopify products, rewrite their descriptions for SEO, and log every change in Notion for review.

Integrations

  • Shopify
  • Notion

Type

Agentic Task

Categories

  • Marketing
  • Operations

Build me an agent workflow that runs once a week on a cron trigger (Sunday at 6pm America/New_York) and refreshes the descriptions of stale or underperforming Shopify products with SEO-friendly rewrites, logging every change to a Notion audit database.

Selecting which products to refresh. Call Shopify List Products to enumerate active products, paginating until done. Call Shopify List Orders filtered to the last 30 days (any financial status) and build a set of product IDs that appear in line items. A product is a candidate for refresh if it meets either condition: (a) status = active AND updated_at is older than 120 days, or (b) status = active AND its product ID does not appear in any order line item from the last 30 days. From the candidate pool, pick at most 20 products per run. Prefer products that hit BOTH conditions, then the oldest updated_at first, so the catalog never gets rewritten all at once.

Drafting the new copy. For each selected product, read the existing title, body_html, vendor, product_type, and tags. Then draft a new SEO-friendly description that: opens with an improved meta-style first sentence (one tight line with the primary keyword); is 80 to 150 words total; uses 3 to 5 scannable bullets covering benefits, materials or specs, and use cases; weaves the product title and one or two relevant keywords from the title/tags in naturally without keyword stuffing; matches a clean, friendly DTC voice. Keep brand-specific language and any compliance phrasing from the original (warranty, sourcing claims, allergen info) intact.

Writing it back. For each selected product, call Shopify Update Product to set body_html to the new description. Do not change title, price, variants, images, or status.

Auditing in Notion. For every product that was updated, call Notion Create a Page as a child of the audit database (I will provide the database ID at setup) with these properties: Product ID, Product Handle, Product Title, Reason Flagged (one of: stale, no_recent_sales, both), Old Description (truncated to fit Notion's rich text limit if needed), New Description, and Run Timestamp. Use the page body to store the full old and new descriptions side by side as two headings with paragraph content, in case the rich text properties get truncated.

Guardrails. Cap the run at 20 products. Skip any product whose tags include 'do-not-rewrite' or 'hero'. If Shopify returns a rate limit (429), back off and retry. If the Notion audit page fails to create for a product, do NOT update that product in Shopify on retry; the audit log must exist for every rewrite. Log a short summary at the end: how many products were considered, how many were rewritten, and which were skipped and why.

Inputs I will set at install time: the Notion audit database ID, the weekly cap (default 20), the staleness threshold in days (default 120), the no-sales window in days (default 30), and an optional list of vendor names or tags to exclude.

Related prompts

Explore more prompts
Receiving dock console for inspecting and restocking Loop returnsSee which influencer creators actually drove Shopify salesScreen chartered vessels for AIS gaps and sanctions red flagsMorning dispatch board for your local delivery runsAnswer Instagram and Messenger DMs with the order on screenCompare candidate store locations with drive time trade areasBrowse every competitor ad and build a Notion swipe fileAudience persona studio for brand and product marketersWhite glove queue for the VIP customers waiting on youArtwork desk for the Notion posts still missing an image