Skip to content
agentusehub
MarketingIntermediateStartups

Weekly paid-media report written for you every Monday

Every Monday, get a Slack summary of spend, CPA and ROAS by campaign, with week-over-week changes and anomalies flagged before standup.

Time saved
4h / week
Setup time
2 hours
Running cost
$5/mo
Cost range
Under $25/mo

The problem it solves

Monday mornings go to pulling ad exports, pasting them into the reporting sheet and writing the same "spend up, CPA flat" note for the team. The number that matters, like a campaign whose CPA doubled on Thursday, gets lost in a table nobody reads closely. By the time someone spots it, a week of budget has gone to the wrong place.

How it flows
  1. Monday 07:00 cron
  2. Compute WoW deltas
  3. Claude writes report
  4. Post to #paid-media

Step-by-step setup

  1. Standardise the export sheet

    Create a Raw tab where weekly exports from both platforms land with identical columns: week_start, platform, campaign, spend, impressions, clicks, conversions, revenue. Add a Targets tab with target CPA and target ROAS per campaign.

  2. Schedule the workflow

    In n8n, add a Schedule Trigger for Mondays at 07:00 and two Google Sheets "Get Row(s)" nodes for the Raw and Targets tabs. Filter Raw to the last two complete weeks.

  3. Do the math in code, not in the model

    Use a Code node to sum by campaign and compute CPA (spend / conversions), ROAS (revenue / spend) and the week-over-week change for each. Claude then only explains numbers and never has to calculate them.

  4. Flag anomalies with fixed rules

    In the same Code node, flag any campaign where CPA rose more than 30%, ROAS fell below target, spend moved more than 40% week over week, or conversions dropped to zero. Skip campaigns under $100 of weekly spend so small-budget noise does not crowd out real problems.

  5. Write the report with Claude

    Pass the computed table and the flags as JSON to a Basic LLM Chain with an Anthropic Chat Model node and the report prompt below. Keep the output under 200 words so it reads in Slack without expanding.

  6. Post and archive

    Send the text to #paid-media with the Slack node, including a link to the sheet. Append each report and its flags to a Reports tab so you can see which campaigns get flagged week after week.

Example prompts

Weekly report prompt
You write the Monday paid-media update for the {{company_name}} marketing team.

All numbers below are already calculated. Do not recalculate them or round them differently.
Totals this week vs last week: {{totals_json}}
By campaign: {{campaigns_json}}
Flags raised by our rules: {{flags_json}}

Write a Slack message under 200 words:
1. One line on total spend, conversions, blended CPA and ROAS, with the week-over-week change.
2. "Needs attention": each flagged campaign, what moved, and the most likely cause visible in the data (for example, spend up while conversions stayed flat).
3. "Working": the one or two campaigns beating target by the widest margin.
4. One suggested action for this week, tied to a specific campaign.

If there are no flags, say so plainly. No emoji.
Marketing · Beginner
  1. Brief in Sheets
  2. ChatGPT writes 20
  3. Claude scores rules

Generate and test 20 ad variants from one brief

Turn one campaign brief into 20 Meta and Google ad variants, score each against your brand rules and limits, and queue the best for approval.

ChatGPT · Claude · Make · Google Sheets
Sales · Beginner
  1. Form submit
  2. Fetch company site
  3. Claude scores fit

Auto-qualify inbound leads before a rep sees them

Score every demo request against your ICP, update HubSpot and ping the right rep in Slack within a minute of the form submit.

n8n · Claude · HubSpot · Slack
Customer Support · Intermediate
  1. New ticket webhook
  2. Claude classifies
  3. Draft from help docs

Triage support tickets and draft first replies

Every new Zendesk ticket gets a category, priority and sentiment tag plus a draft reply in an internal note before an agent opens it.

Zendesk · n8n · Claude