Prune losing chat cards and launch one challenger per winner
Checks that a ChatGPT Ads campaign measures leads, scores every chat card against your target cost per lead, pauses the clear losers and drafts one single-variable challenger per winner, all as a preview awaiting approval.
When to use it
When your ChatGPT Ads chat cards have run for a few weeks and you need to cut the ones that cost too much per lead and test new versions of the ones that work.
What you get
A table with a verdict for every card, previews of the pauses and one paused single-variable challenger per winner, all waiting for your approval.
Does it change anything in my account?
Only with your approval. The assistant first shows a preview of every change and waits for your go-ahead.
Works with
ChatGPT Ads
Fill in before sending
[ChatGPT Ads campaign][target cost per lead][challenger image URL]
Start by checking conversion tracking for ChatGPT Ads campaign [ChatGPT Ads campaign]. Use chatgpt_ads_conversion_setup with check_recent_events=true to see the pixels, the event settings and which campaigns each setting is attached to, and chatgpt_ads_details on the campaign to confirm the attached conversion events. If no lead-type event (lead_created, appointment_scheduled, registration_completed or a custom lead event) is attached to this campaign, stop and tell me, because judging chat cards on CTR alone is misleading. An empty recent-events list only means nothing arrived in the last ~15 minutes, so mention it but do not treat it as broken tracking on its own.
If tracking is in place, pull the last 30 days with chatgpt_ads_insights: scope_id = the campaign id, level = ad, days = 30, conversions = true, include_zero = true, and no segment (conversions cannot be combined with a segment). For each ad show impressions, clicks, CTR, spend, conversions and cost per conversion (spend divided by conversions). Then read each ad with chatgpt_ads_details to get its ad group, current status, title, body, destination URL and image.
My target cost per lead is [target cost per lead]. Apply these rules only to ads with at least 1,000 impressions:
- Pause an ad if it has spent 2x the target with zero conversions.
- Pause an ad if its cost per lead is more than 1.5x the target with 3 or more conversions.
- Mark an ad as a winner if its cost per lead is at or below the target.
- Never leave an ad group with fewer than 2 active ads. If a pause would break this, keep the ad running and say so.
For each winner, write one challenger that changes only ONE element: the opening line of the body, the offer, or the call-to-action wording. Keep the title or body you are not testing, the destination URL and the image identical to the winner, so we learn what actually moved results. Reuse the winner's image if chatgpt_ads_details returns a usable public image URL. If it does not, use [challenger image URL]; if I attached the image file instead, turn it into a public URL with upload_image. An image is required for a chat card, so do not draft a challenger without one.
Show me a table with these columns: ad, ad group, metrics, verdict and reason. Then show the previews: chatgpt_ads_status with kind = ad, action = pause, confirm = false for each pause, and create_chatgpt_ads_ad with confirm = false for each challenger in the winner's ad group, created paused (no activate). Remind me that every new ad goes through OpenAI review before it can serve. Wait for my approval before calling anything with confirm = true.
Reads every enabled RSA in a campaign, matches each final URL to its WordPress page (Elementor included) and rates whether the page repeats the ad's keyword, offer and CTA. Proposes the smallest fix and applies nothing without approval.
When to use itWhen people click your ads but the WordPress landing page does not repeat what the ad promised, hurting conversions or Quality Score.
Lists disapproved and limited RSAs with Google's policy reason and evidence, rewrites only the assets Google flags, and edits the existing ad after a before and after preview. Flags issues that text changes cannot fix.
When to use itWhen some of your Google Ads are disapproved or running with limited serving and you need to fix the wording that Google flagged.
A list of fatigued Meta ads by frequency, CTR and cost thresholds, with two replacement copy versions for each and a safe in-place swap after approval.
When to use itWhen your Meta ads have been running a long time and results are slipping while frequency climbs.