Ad copy — headlines, primary text, CTA
Last updated: May 19, 2026
Ad copy — headlines, primary text, CTA
Ad copy is the text that accompanies your creative. Per-platform character limits: Meta primary text 125 / headline 40 / description 30; Google Search RSA up to 15 headlines × 30 char + 4 descriptions × 90 char; TikTok 100. CTA from a platform-specific dropdown. Test 3-5 variations per ad set.
Who is this for
Mediabuyers + copywriters preparing ad text. Anyone whose ad got rejected for "too much text" or "wrong CTA".
The 4 text fields per ad
Field | Purpose | Used by |
|---|---|---|
Primary text | Main message above/below visual | Meta, TikTok, Snapchat |
Headline | Bold short statement | Meta, Google Search, LinkedIn |
Description | Supporting line under headline | Meta (optional), Google Search |
CTA (button) | Action prompt | All platforms |
Plus the destination URL (where the click goes — see cc-117 UTM Builder).
Per-platform character limits
Meta (Facebook + Instagram)
Field | Max chars | Mobile truncation |
|---|---|---|
Primary text | 125 | ~80 on small screens |
Headline | 40 | ~25 |
Description (link) | 30 | full |
Link URL display | 30 | shortened to domain |
Google Search (Responsive Search Ads)
Field | Count | Max chars each |
|---|---|---|
Headlines | up to 15 | 30 each |
Descriptions | up to 4 | 90 each |
Path 1 / Path 2 (URL display) | 1 each | 15 each |
Google auto-combines headlines/descriptions per query — provide many variations for max performance.
TikTok
Field | Max chars |
|---|---|
Ad text | 100 |
CTA | dropdown choice |
Taboola
Field | Max chars |
|---|---|
Headline | 60 |
Description | 200 |
Snapchat
Field | Max chars |
|---|---|
Headline | 34 |
Brand name | 25 |
Description | 150 |
CTA options
Verified apps/backend/src/types/campaigns/canonical.enums.ts CallToAction enum covers the standard set:
CTA | Best for |
|---|---|
| Awareness, top-funnel content |
| E-commerce direct conversion |
| Account creation, newsletter |
| App install, content download |
| Reservations, appointments |
| Promo / discount campaign |
| Subscription product |
| B2B inquiry, service-based |
| Loans, job applications |
| Video content drive |
... | (full enum per |
CTA must match objective (Sales objective → SHOP_NOW more sensible than LEARN_MORE).
How copy renders per placement
Meta Feed
[Profile pic] [Brand name]
[Primary text — main message — wraps after ~80 chars]
[Visual: image or video]
[Headline] [CTA button]
[Description (optional)]
[domain.com display]
Meta Stories / Reels
[Visual: full-screen vertical]
[Small overlay: brand + CTA]
[Swipe-up area at bottom]
Headline + description not visible in Stories — focus on visual + burned-in text + CTA.
Google Search
Ad · [Headline 1] | [Headline 2] | [Headline 3]
domain.com/path1/path2
[Description 1]. [Description 2].
[Optional sitelinks below]
Google picks 3 headlines + 2 descriptions per query from your set of 15 + 4.
TikTok In-Feed
[Full-screen vertical video]
[Bottom overlay]:
@brand
[Ad text — 100 chars truncated on small screens]
[CTA button]
Copy strategy
Test 3-5 variations per ad set
Same audience + same creative + different copy = clean A/B test. Common variations:
Hook angle: pain point vs aspiration vs curiosity vs authority
Length: short (40-60 chars) vs long (100-125 chars)
Question vs statement: "Tired of slow shipping?" vs "We ship in 24h"
Emoji vs no-emoji: Meta allows but doesn't heavily penalize/reward
CTA variation: Learn More vs Shop Now vs Get Offer
After 100+ clicks per variation, scale winners.
Avoid common rejection triggers
Excessive emojis (Meta sometimes flags)
ALL CAPS ("SUMMER SALE!!!" → rejected)
Excessive punctuation ("BUY NOW!!!!!!!" → flagged)
Misleading claims ("Lose 20 lbs in 1 week" → policy violation)
Comparative health claims without medical evidence
Personal attributes ("You look tired in those clothes" → policy violation, makes user uncomfortable)
Price claims without proof ("Now 90% off" — if regular price not legitimately 10x lower)
Trademarks misused (your competitor's brand name in your ad copy)
Match copy to funnel stage
Stage | Copy approach |
|---|---|
Awareness | Storytelling, brand voice, education |
Consideration | Value prop, benefits, social proof |
Conversion | Direct offer, urgency, clear CTA |
Retargeting | Personalized recap, "Still interested?", discount |
Mobile-first writing
Most ad views are on mobile. Front-load value in the first 80 characters (after that, text often truncated).
Multi-language copy
For multi-country campaigns:
Pre-translate professionally (machine translation often inadequate for marketing copy)
Use per-country variants in Bulk Launch (one row per country, localized copy)
Or use Meta's Advantage+ multi-language (auto-translates within Meta)
In Wevion's launchers
Express creative step
Primary text field (with char counter)
Headline field (with char counter)
Description field (with char counter, optional)
CTA dropdown (filtered by platform)
Destination URL field
Inline preview on right (shows how copy renders per placement)
Pro mode
Per-ad copy with all fields
Multi-line text editor for primary text
Multi-headline / multi-description for Google RSA (add up to 15 headlines per ad)
Live preview per placement
Bulk Launch
Copy columns per row
For RSA: array fields (
headlines: ["headline 1", "headline 2", ...])
In the data model
Verified CanonicalAd (apps/backend/src/types/campaigns/canonical.types.ts):
ad.copy.primaryText
ad.copy.headline
ad.copy.description
ad.cta // CallToAction enum
ad.destinationUrl
Common issues
Truncated on mobile: primary text too long. Move key message to first 80 chars OR shorten.
CTA not matching objective: validation warning. Use a CTA aligned with the campaign goal.
Headline rejected for trademark: avoid competitor brand names.
Copy rejected for policy: review Meta/Google's ad policies; rewrite without prohibited claims.
Special characters not rendering: some platforms strip emoji or special unicode. Test in preview.
RSA performance poor (Google): provide more headline variations (10+); Google needs variation to optimize.
Best practices for testing
Match creative + copy variations
Don't test creative changes AND copy changes simultaneously — can't tell what drove the result. Test one variable at a time.
Use Wavo for ideation
Ask Wavo: "Suggest 5 headline variations for this offer" or "What CTA should I use for this campaign?". Wavo references the campaign context.
Save winning copy as template
After identifying winning copy in a test: save as Campaign Template (cc-118) for reuse.
Related
Creative — images — visual companion to copy
Creative — videos — video copy + captions
Publish paused vs active — verify copy in preview before activating