google_ads_copy — Google Ads RSA Set
| Field | Value |
|---|---|
| Type key | google_ads_copy |
| Label | Google Ads RSA Set |
| Agent queue | google-ads-writer |
| Plan tier | Pro only (professional plan) |
| Credits/unit | 2 |
| Monthly range | 1–3 |
What it produces
A Responsive Search Ad (RSA) set for Google Ads: up to 15 headlines (30 chars each), up to 4 descriptions (90 chars each), and recommended pinned positions for priority assets. Output is structured JSON stored in Activity.outputPayload.
Typical structure:
{
"campaignName": "Spring Landscaping Services",
"finalUrl": "https://example.com/landscaping",
"headlines": [
{ "text": "Expert Landscaping in London", "pin": 1 },
{ "text": "Free Quote — Book Online Today", "pin": null },
...
],
"descriptions": [
{ "text": "Transform your outdoor space with our award-winning landscaping team. Call now for a free survey.", "pin": null },
...
]
}Pipeline sequence
google-ads-writer ──→ Activity: done
│
[auto-approved — no review]
│
Deliverable status: approvedNo HITL gates. Google Ads copy auto-approves on agent completion.
Status machine
Status tracked on the parent Activity record only.
| Activity status | Meaning |
|---|---|
pending | Scheduled, waiting |
queued | Submitted to BullMQ |
in_progress | Worker running |
done | Copy written, outputPayload saved |
failed | Worker error |
The Deliverable moves from generating → approved automatically on done.
HITL gates
None. Google Ads copy auto-approves on completion. The agency uploads it to Google Ads directly.
Dependencies
None. The writer uses tenant context (services, offers, USP, target locations, tone) from the client context file and strategy. If a keyword_cluster was produced this month, the primary keyword informs ad targeting.
DB records created
| Record | Created by | Notes |
|---|---|---|
DeliverableTemplate | deliverable-planner | Monthly quota (1–3 RSA sets) |
Activity | activity-planner | One per RSA set; type = google_ads_copy |
Deliverable | google-ads-writer worker | Auto-approved on completion |
No dedicated content model. Ad copy lives in Activity.outputPayload.
Plan and channel restrictions
Plan restriction: Professional plan only.
Channel restriction: The deliverable planner only schedules google_ads_copy if google_ads is listed in the tenant’s connected channels. Unlike social posts, ad copy requires the channel to be declared at planning time.
| DB plan name | Tier | Google Ads? |
|---|---|---|
starter | 0 (free) | No |
growth | 0 (free) | No |
professional | 1 (pro) | Only if Google Ads channel connected |
Key rules
- RSA headlines must be ≤ 30 characters; descriptions must be ≤ 90 characters — the agent is prompted to respect these limits.
- No publishing integration — ad copy is delivered as structured data for the agency to upload to Google Ads Manager.
- Monthly volume (1–3) is determined by the deliverable planner based on campaign objectives and active ad campaigns.