meta_ads_copy — Meta Ads Copy Set
| Field | Value |
|---|---|
| Type key | meta_ads_copy |
| Label | Meta Ads Copy Set |
| Agent queue | meta-ads-writer |
| Plan tier | Pro only (professional plan) |
| Credits/unit | 2 |
| Monthly range | 1–3 |
What it produces
A Meta (Facebook/Instagram) Ads copy set with multiple creative variants, each containing: primary text (up to 125 chars for preview, full body for expanded), headline, description, and CTA button text. Output is structured JSON stored in Activity.outputPayload.
Typical structure:
{
"campaignName": "Spring Landscaping Promo",
"objective": "LEAD_GENERATION",
"variants": [
{
"primaryText": "Is your garden ready for spring? Our team handles everything — from design to planting. Book a free survey today.",
"headline": "Expert Landscaping Services",
"description": "Free site survey included",
"callToAction": "LEARN_MORE"
},
{
"primaryText": "Transform your outdoor space this spring. Award-winning landscapers serving London & Surrey.",
"headline": "Book Your Free Garden Survey",
"description": "Limited April slots available",
"callToAction": "BOOK_NOW"
}
]
}Pipeline sequence
meta-ads-writer ──→ Activity: done
│
[auto-approved — no review]
│
Deliverable status: approvedNo HITL gates. Meta 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. Meta Ads copy auto-approves on completion. The agency uploads it to Meta Ads Manager directly.
Dependencies
None. The writer uses tenant context (services, offers, USP, target audience demographics, tone) from the client context file and strategy.
DB records created
| Record | Created by | Notes |
|---|---|---|
DeliverableTemplate | deliverable-planner | Monthly quota (1–3 copy sets) |
Activity | activity-planner | One per copy set; type = meta_ads_copy |
Deliverable | meta-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 meta_ads_copy if facebook or instagram 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 | Meta Ads? |
|---|---|---|
starter | 0 (free) | No |
growth | 0 (free) | No |
professional | 1 (pro) | Only if Meta channel connected |
Key rules
- Multiple variants per set give the agency options for A/B testing in Meta Ads Manager.
- No publishing integration — copy is delivered as structured data for the agency to upload.
- Monthly volume (1–3) is determined by the deliverable planner based on campaign objectives and active ad spend.