Ad copy — headlines, primary text, CTA
Per platform char limits and CTA enum. Meta 125/40/30; Google Search RSA 30/90; TikTok 100. Test 3-5 variations per ad set.
Written By Salvatore Sinigaglia
Last updated About 5 hours ago
Per platform char limits and CTA enum. Meta 125/40/30; Google Search RSA 30/90; TikTok 100. Test 3-5 variations per ad set.
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
Plus the destination URL (where the click goes — see cc-117 UTM Builder).
Per-platform character limits
Meta (Facebook + Instagram)
Google Search (Responsive Search Ads)
Google auto-combines headlines/descriptions per query — provide many variations for max performance.
TikTok
Taboola
Snapchat
CTA options
Verified apps/backend/src/types/campaigns/canonical.enums.ts CallToAction enum covers the standard set:
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]Main image or video creative appears between primary text and headline.[Headline] [CTA button][Description (optional)][domain.com display]Meta Stories / Reels
Full-screen vertical creative appears behind the headline and CTA area.[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
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.primaryTextad.copy.headlinead.copy.descriptionad.cta // CallToAction enumad.destinationUrlCommon 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.
FAQ
What are the character limits for Meta ad copy?
On Meta, primary text allows 125 characters (roughly 80 visible on small screens), headline 40, and link description 30. Because most views are mobile, front-load your key message in the first 80 characters before truncation. Wevion's creative step shows a live character counter and a per-placement preview for each field.
How does Google Search copy differ in Wevion?
For Google Responsive Search Ads, Wevion lets you add up to 15 headlines (30 characters each) and up to 4 descriptions (90 characters each), plus two 15-character URL paths. Google auto-combines them per query, so provide many variations — 10 or more headlines — for the best performance. Pro mode and Bulk Launch array fields support this.
How do I set the CTA button on an ad?
The CTA comes from a platform-specific dropdown backed by Wevion's CallToAction enum, covering options like LEARN_MORE, SHOP_NOW, SIGN_UP, DOWNLOAD, BOOK_NOW, and GET_OFFER. Match the CTA to your objective — a Sales objective pairs better with SHOP_NOW than LEARN_MORE — or Wevion shows a validation warning when they conflict.
How many copy variations should I test?
Test 3-5 copy variations per ad set, keeping the same audience and creative for a clean A/B test. Vary the hook angle, length, question versus statement, or CTA, then scale winners after 100+ clicks per variation. You can ask Wavo to suggest headline variations and save winning copy as a Campaign Template.