Copywriting CTA is an agent skill for content. Designing an end-of-article CTA is a function of three inputs: the objective (what action), the audience (who reads it, in what relationship to the author). The samber/cc-skills repository on GitHub, maintained by samber, has 152 stars and the MIT license. To add it, run npx skills add samber/cc-skills --skill copywriting-cta
Designing an end-of-article CTA is a function of three inputs: the objective (what action), the audience (who reads it, in what relationship to the author), and the context (independent writing. It stands out by giving content production a defined shape, so the agent asks for better context and returns a more usable result.
INPUTS02
Context for content production: your goals, audience, constraints, and any source material the skill asks for.
OUTPUT03
A ready-to-use result for content production: the analysis, copy, or recommendations the agent produces.
§04
INSTALL
One command adds this skill from its source repository.
Designing an end-of-article CTA is a function of three inputs: the objective (what action), the audience (who reads it, in what relationship to the author), and the context (independent writing, newsletter, brand publication). Get those three right and the copy + form follow almost mechanically. Skip them and you get the universal failure mode: a generic "Subscribe for more" or "Learn More" that converts at the noise floor.
This skill runs a tight interview to capture those three inputs, then prescribes a CTA: copy (what it says), form (how it looks and sits on the page), mechanism (whether to use urgency, scarcity, curiosity, reciprocity, social proof, or none), an A/B test plan, and an accessibility check.
Run the four steps below in order. Do not skip the interview. The user may have given partial context already; pull what's available from the conversation, then ask only for the missing pieces.
Use the ask_user_input_v0 tool. Ask one question at a time. Do not stack questions in prose. Each question must have 2-4 tappable options. Fall back to free text only if the answer genuinely cannot be enumerated.
Ask these in order, skipping any already answered:
Q1. Article context. Options: Personal / independent blog or essay · Newsletter / paid publication (Substack, beehiiv, Ghost, etc.) · Brand / company / content-marketing blog · Other (free text)
Q2. Primary objective. (Pick the one outcome you most want from a reader who finishes the article. If they say "all of them," push back: multiple objectives is the #1 cause of CTA failure.)
Options:
Newsletter / email subscription
Social follow / personal branding
Lead generation (download / gated asset)
Product or service signup / free trial
Demo or sales call booking
Direct purchase
Community join (Discord / Slack / forum)
Engagement (reply / comment / share / restack)
Reader support (paid subscription / tip / sponsorship)
Try-it / direct action (use the code, run the tool, fork the template, open the calculator)
Other (free text)
If the user lists more than one, ask which is primary. You can offer 1-2 secondaries later, but the primary must be singular.
Q4. Funnel stage. (Where is the reader mentally?) Options: TOFU: discovery, learning, no buying intent yet · MOFU: evaluating options, comparing · BOFU: ready to act, just needs a nudge · Not applicable (no buying funnel — e.g., personal blog, journalism, hobby content)
Q5. Mechanism preference. (Only ask if a mechanism could legitimately help. See references/mechanisms.md. For sophisticated, skeptical, or repeat-reader audiences, default to "None / value-only" without asking.) Options: None: value statement only · Curiosity gap ("Want to know more?") · Reciprocity (free asset first) · Discount / offer · Urgency (real deadline) · Scarcity / FOMO (limited spots) · Social proof (count / testimonial)
Capture any free-text constraints the user volunteers (length limit, brand voice, no popups, multi-language, etc.). Note them.
Map the inputs to a CTA archetype. The decision logic:
TEXT · 27 LINES
context = INDEPENDENT / PERSONAL
├── objective = newsletter / email → Archetype A: Author-signature subscribe
├── objective = try-it / direct action → Archetype B: Inline action + source link
├── objective = reader support / tip → Archetype C: Reader-supported funding link
├── objective = community → Archetype D: Proof-counted community invite
├── objective = social follow → Archetype A (variant: lead with social links)
├── objective = engagement → Archetype E: Specific reply prompt
└── objective = product / demo → ⚠️ FLAG. Only valid on personal/professional
blog where the author IS the product
(consultants, coaches, solo founders, indie devs).
Frame as "if you hit this, here's how I help"
— never "Book a Demo" verbatim.
context = NEWSLETTER PUBLICATION
├── objective = growth / subs → Archetype F: Share/restack + native widget
├── objective = engagement → Archetype E: Specific reply prompt
├── objective = paid conversion → Archetype G: Value-gap tease
├── objective = monetization / sponsor → Archetype H: Inline sponsor block (not bottom)
├── objective = community → Archetype D
└── objective = direct purchase → Archetype K (rare on newsletters; use BOFU only)
context = BRAND / CONTENT MARKETING
├── stage = TOFU → Archetype I: Transitional asset (lead magnet)
├── stage = MOFU → Archetype J: Direct + Transitional pair
├── stage = BOFU → Archetype K: Direct CTA + risk reversal
├── objective = community → Archetype D
└── objective = engagement → Archetype E (rarely the right call here)
Read references/taxonomy.md for the full archetype catalog with copy templates, form specs, when each works, and verbatim examples from named publications.
Output the recommendation in this exact structure. Do not deviate. Do not add filler.
markdown · 48 LINES
## Recommended CTA
**Archetype:** [letter + name from decision tree] **Why this fits:** [1-2 sentences naming the input combination]
### Content (copy)
**Headline / value line:**
> [exact text]
**Body / proof line (1-2 lines):**
> [exact text]
**Button copy:**
> [exact text]
**Risk reversal / subtext (if applicable):**
> [exact text, or "Omit: would feel forced for this audience"]
### Form (structure)
- **Placement:** [end-only / end + sticky / end + mid-article repeat]
- **Visual weight:** [low / medium / high, with justification]
- **Layout:** [single button / button + text link / native widget cluster / one-line signature]
- **Proof to co-locate:** [subscriber count / star count / testimonial / named recommenders / logo wall / none]
### Mechanism
[Named mechanism + 1 sentence on why it is appropriate, OR "None: value statement carries it. Mechanisms would erode trust for this audience."]
### A/B test plan
- **First test:** [single variable, e.g., button copy A vs. B]
- **Why this one first:** [1 sentence]
- **Sample size needed:** [rough estimate based on baseline traffic, or "skip A/B for now — traffic too low" with the alternative recommendation]
- **Next 2 tests to queue:** [in priority order]
### Accessibility check
- **Color contrast:** [target ratio + concrete pairing if colors known]
- **Touch target:** [size requirement]
- **Semantic markup:** [<button> vs. <a> vs. form]
- **ARIA:** [only if non-obvious]
- **Keyboard / focus:** [requirement]
- **Color-independence:** [non-color affordance]
After printing the recommendation, list 2-3 anti-patterns the user is at risk of falling into given their inputs, directly, as a contrarian check. Pull these from references/anti-patterns.md.
If the user is writing in a non-English language, translate the content section into that language but keep the structure (headings, labels) in English. Honor formality cues (e.g., tu vs. vous in French, du vs. Sie in German) based on prior conversation context, and flag the choice explicitly.
Steelman the opposite. Offer to design the CTA you would recommend against — e.g., the hard-sell version on a TOFU post — so the user can see why it fails.
Variant for a different audience or platform. If the article will be cross-posted (own site + Medium + LinkedIn + a syndication network), offer to rewrite per platform.
End-to-end review. Offer to audit the rest of the article for CTA-supporting signals: author bio, related-post links, in-line proof.
Read these as needed during diagnosis and composition. Read the relevant file in full before composing the recommendation; do not paraphrase from memory.
references/taxonomy.md: All 11 archetypes (A through K) with copy templates, form specs, verbatim examples from named publications, and conversion expectations.
references/mechanisms.md: When to use urgency, scarcity, FOMO, discount, curiosity, reciprocity, social proof, authority, unity. When NOT to use them.
references/ab-testing.md: Priority order of variables to test, sample-size rules of thumb, common pitfalls, when to skip A/B testing entirely.
One primary CTA per post. Multiple competing CTAs is the dominant failure mode (single-CTA pages convert ~30%+ better than multi-CTA pages in repeated case studies).
Match the voice of the publication. A personal-essay footer that reads like a SaaS landing page collapses credibility. A SaaS footer that reads like a casual signature converts at noise.
Specificity beats cleverness. "Get one essay a week on indie filmmaking" beats "Subscribe to our awesome newsletter." Joanna Wiebe's "I want to ___" completion test is the cleanest filter for button copy.
Proof co-located with the ask. Subscriber count, testimonial, customer logos, star count, named recommenders — whichever signal is honest for the context, place it inside or adjacent to the CTA block.
Mechanisms are tools, not garnish. Most well-written value statements need no mechanism. Add urgency, scarcity, FOMO, or discount only when the context genuinely supports them; theatrical mechanisms erode trust faster than they lift conversion.
Push back on bad asks. If the user wants "Book a Demo" at the bottom of a beginner tutorial for first-time visitors, say so. Do not produce a polished version of a CTA that will fail. Propose the alternative, explain why, then if the user still wants the original, deliver it with the failure mode flagged.
A/B testing CTAs is high-leverage when you have enough traffic. It is theatre when you don't. This file covers what to test, in what order, with what sample size, and the failure modes that produce confidently wrong conclusions.
If any of the following is true, skip A/B testing and just ship a single well-designed CTA:
Article gets fewer than ~1,000 unique readers per month. Below this threshold, runs take forever and confidence intervals are noise.
Baseline conversion rate is below 0.5%. The signal is too weak to detect any but the largest lifts.
You haven't written a strong baseline yet. Testing "Subscribe" vs. "Sign up" on a generic CTA is rearranging deck chairs; rewrite the value statement first.
You don't have event tracking wired up. Without per-CTA click and downstream conversion tracking, you can't measure outcomes.
Effort is better spent improving the baseline CTA copy and content quality until traffic justifies testing.
Number of CTAs. One primary vs. one primary + one secondary vs. multiple equal-weight CTAs. Single-CTA pages convert ~30%+ better than multi-CTA pages in repeated case studies.
Value statement. "Subscribe to our newsletter" vs. "Get one [specific thing] a week." This is the single highest-impact variable in most tests.
Specificity of the offer. "Download our guide" vs. "Download the 14-line shell script we used to cut infra costs 40%." Specific concrete artifacts can lift conversion 2-5x.
Button color. Red vs. green vs. orange vs. blue. The well-known ~21% lift cited in CXL is real but small and contextual. Contrast with surroundings matters more than the specific color.
Microcopy variations ("100% spam-free" vs. "We respect your inbox"). Stop here unless top tiers are exhausted.
Always change one variable per test. HubSpot's Carly Stec: "Avoid testing multiple variables at the same time." Multi-variable tests produce results you can't attribute. The lift could be from any of the changes or from interactions between them.
Exception: if you're testing two entirely different CTA concepts (e.g., transitional asset vs. direct demo CTA on a MOFU post), that's a multi-variable test by necessity. Frame it as "concept A vs. concept B", not as a granular optimization.
The honest formula is full statistical power calculation; the rule of thumb for end-of-article CTAs is:
Baseline conversion rate < 1%: need ~20,000+ visitors per variant to detect a 20% relative lift at 95% confidence.
Baseline 1-3%: need ~7,000-15,000 per variant.
Baseline 3-10%: need ~2,000-5,000 per variant.
Baseline > 10%: need ~500-2,000 per variant.
If you're trying to detect smaller lifts (10% relative), roughly 4x these numbers. If you're trying to detect larger lifts (50% relative), roughly one-quarter.
Calculator: any standard A/B test sample size calculator (Optimizely, VWO, Evan Miller's online calculator). Plug in baseline rate + minimum detectable effect + power (typically 80%) + significance (typically 95%).
Run time: at least one full week, preferably two, regardless of when you hit the sample size. Weekday vs. weekend traffic differs. Newsletter readers behave differently right after publish vs. one week later.
Stopping early. "We hit significance at day 3, declared winner." This is the #1 cause of false positives. Pre-commit to a sample size or duration and don't peek.
Multiple comparisons. Testing five variants simultaneously and picking the winner inflates false-positive rate. If you test 20 things at p=0.05, one will "win" by chance. Use Bonferroni correction or test only two variants at a time.
Wrong success metric. Optimizing CTR (clicks) when you actually want downstream conversions (paid subscribers, qualified leads). Always measure to the actual business outcome, not just the click.
Sample contamination. Existing subscribers seeing the new-visitor CTA. Segment tests by cookie state (new vs. returning) where possible.
Seasonality. Testing in mid-December when reader behavior is anomalous. Test in normal traffic periods.
Survivorship bias in self-reported case studies. "We lifted CTR 1,617%!" usually means baseline was anomalously low and the test surfaced an obvious fix. Treat dramatic published case studies as directional, not predictive of your situation.
For an independent author managing their own blog without a marketing team:
Tier 1 tests: Run these. Even one well-designed Tier-1 test can lift conversion 2-5x.
Tier 2 tests: Run if you have traffic and a Tier-1 winner already.
Tier 3-4 tests: Skip unless traffic is large (10k+ unique per month per article).
The honest summary: most authors should test exactly one thing — the value statement and offer specificity — and commit to the winner for 6+ months. The rest is decoration.
Pick the variable with the highest plausible impact, write two genuinely different variants (not "Submit" vs. "Submit Now"), run for at least one full week to a pre-committed sample size, measure the downstream business outcome, and commit to the winner. Repeat one variable at a time. Resist the urge to test six things at once.
A CTA that excludes readers with disabilities is a CTA that converts at a lower ceiling. This is also an EAA / WCAG compliance concern for any commercial European-facing content as of June 2025.
This file lists the WCAG 2.2 requirements that apply to end-of-article CTA blocks, with concrete pass/fail criteria. Apply all of these to every CTA you ship. There is no acceptable trade-off.
UI components (button boundaries, focus indicators, form fields): contrast ratio ≥ 3:1 against the adjacent background. SC 1.4.11, AA requirement.
Common failure: light-gray "Subscribe" text on white#
"Subtle" gray-on-white CTAs (#999 on #FFF = 2.84:1) fail WCAG by a wide margin. The fix: use a darker text color (#595959 on #FFF = 7.02:1) or fill the button.
Icon-only button:<button aria-label="Subscribe to newsletter">📩</button>. Without the label, a screen reader announces "button" with no purpose.
Button label that's ambiguous out of context: "Read more" or "Click here" link should have an aria-label that names the destination ("Read more about [article title]"). Better: rewrite the visible text to be self-describing.
Form field without a visible label:<input aria-label="Email address">. Better: include a visible <label> and link it with for=.
aria-label="Submit" on a button that already says "Submit": redundant, can produce double announcements.
role="button" on a <button>: redundant, sometimes overrides native behavior in older AT.
aria-hidden="true" on a focusable element: screen reader users see the focus, hear nothing. Use either tabindex="-1" to remove from focus or remove aria-hidden.
Every CTA must be reachable by Tab and activatable by Enter (and Space for <button>). This is automatic with native <button> and <a>. Custom JS-driven CTAs require manual handling.
Focus indicator must be visible.outline: none without an explicit replacement is a WCAG 2.4.7 failure.
Recommended focus style: ≥ 2px solid outline with ≥ 3:1 contrast against both the button and the page background. WCAG 2.2 SC 2.4.11 (Focus Not Obscured) requires that the focused element be at least partly visible — no full overlay by sticky headers or footers.
Tab order must be logical. If the visual order is "Primary CTA → Secondary text link", the DOM order must match.
Only difference between primary and secondary CTA is color: colorblind users (~8% of male readers) cannot distinguish them. Add a visual difference (filled vs. outlined, larger vs. smaller, button vs. text link).
Error states shown only with red text: pair with an icon or explicit text ("Error:").
Required form fields shown only with red asterisk color: include the asterisk as a character and the word "(required)".
Animated CTAs (pulsing, bouncing) must respect prefers-reduced-motion. If a user has set that media query, freeze the animation.
Auto-scrolling sticky CTAs: disable on prefers-reduced-motion.
Countdown timers that animate: ensure the number itself is announced, not just visually counting. Use aria-live="polite" updates at coarse intervals (every 10s or 1m, not every second).
Quick test: turn on VoiceOver, navigate to the CTA via Tab, listen to the announcement. It should clearly state: (1) the action, (2) the element type. Example: "Subscribe to the newsletter, button" or "Get the template, link".
If the announcement is "button" or "link" with no purpose, the CTA fails.
Touch target ≥ 44×44px (recommended) or ≥ 24×24px (minimum)
Native <button> or <a> (no <div onClick>)
Keyboard-reachable (Tab) and activatable (Enter/Space)
Focus indicator visible, ≥ 2px, ≥ 3:1 contrast
No information conveyed by color alone
Form has visible labels (not just placeholders) and label for=
Icon-only buttons have aria-label
prefers-reduced-motion honored for any animation
Screen reader announces purpose, not just element type
lang attribute set; multilingual content wrapped with lang=
If you can't tick every box, fix the failures before shipping. There is no "we'll do accessibility later" — readers excluded today are conversions lost forever.
Anti-Patterns — Failure Modes to Call Out by Name#
Twelve failure modes that recur across end-of-article CTAs. When the user's inputs put them at risk of one of these, call it out explicitly. Do not soften.
Why it fails: Says nothing about value, frequency, content, or who else is in. Conversion floor.
Fix: State the value proposition, frequency, and a proof signal in one line. "Get one debugging trick a week. Friday morning. 12,000+ engineers read it."
Why they fail: Andy Crestodina is blunt: these are not calls to action. They name no value and no destination. NN/g's "Get Started" Stops Users documents how "Get Started" specifically funnels first-time visitors into signup flows they didn't ask for.
Fix: Replace with the specific noun and verb. "Read more" → "Read the deep-dive on Go runtime maps." "Get Started" → "Start the 5-minute tutorial."
Why it fails: Hick's Law. Equal visual weight on multiple CTAs creates decision paralysis. Reader picks none.
Fix: One primary CTA (button), demote others to subordinate text links or smaller secondaries. The StoryBrand "direct + transitional" dyad is the proven pattern.
Why it fails: "Let me know what you think in the comments!" gets ignored. The reader can't think of anything specific to say and bounces.
Fix: Ask a specific question that requires recall of a personal experience or technical opinion. "What's the worst bug you shipped on a Friday afternoon?" gets answers; "What do you think?" does not.
5. Hard-sell CTA ("Book a Demo" / "Talk to Sales") on a TOFU post#
Why it fails: Top-of-funnel readers are discovering the topic, not ready to buy. A hard-sell ask at the bottom collapses credibility for the rest of the article retroactively. For sophisticated audiences (technical, professional, niche-expert), the effect is even stronger. Yacine Hmito (Head of Technology, Fabriq): "If I see 'Book a demo' or 'Talk to Sales,' I am out." The same reflex applies to readers in professional services, healthcare, journalism, and any context where credibility is the readership currency.
Fix: Use a transitional asset (PDF, template, calculator, checklist) if this is brand content. Use an author-signature subscribe if this is independent content. Save "Book a Demo" for BOFU content that explicitly precedes a buying decision — and even then, prefer "Talk to a Human" or "Get a 20-min audit" verbs (both produced documented 110%+ conversion lifts vs. "Book a Demo").
Why it fails: Generic adjectives stack without adding information. Every industry has its own catalog: tech ("AI-infused," "enterprise-grade," "single pane of glass," "synergy," "leverage," "seamless," "scalable," "at scale," "digital transformation" — Redis published an audit of buzzwords developers hate), finance ("alpha," "asymmetric upside," "best-in-class"), wellness ("transformative," "holistic," "intentional," "elevated"), B2B SaaS ("unlock," "empower," "supercharge"). Each empty word cuts credibility. By word four, the reader has tuned out.
Fix: Replace every adjective with a concrete number or example. "Enterprise-grade reliability" → "99.99% uptime, measured over the last 24 months." "Seamless integration" → "Three steps, works with [specific tools]." "Transformative coaching" → "12-week program, 1:1, every session recorded."
Why it fails: Countdown timers that reset on page refresh; "Only 2 left!" on infinite digital goods; "Offer ends soon!" recurring weekly. Sophisticated readers detect this in 0.5 seconds and bounce — permanently.
Fix: Only use urgency when the deadline is real (cohort starts, conference tickets sell out, beta closes). State the actual date and what happens if the reader misses it. If you don't have real urgency, don't manufacture it.
Why it fails: "Trusted by leading companies" with no logos. "Join thousands of happy users." "Award-winning newsletter" with no award named. Vague proof performs worse than no proof — it signals "we know we should have specifics, but we don't."
Fix: Real number, named logos, named testimonial. "Join 2,437 engineers" beats "thousands." Recognizable brand logos beat "Fortune 500 customers." Named testimonial with role and company beats "Happy Reader."
Why it fails: Each additional form field reduces conversion. Email-only forms convert 2-5x better than multi-field forms in most published case studies.
Fix: Capture email only. Ask for name, role, or preferences after the initial subscribe, via a welcome email or a profile completion prompt. Never block the first conversion on metadata you can collect later.
Why it fails: Article argues vendor neutrality, then footer says "Sign up for our SaaS." Article teaches readers to do X themselves, then footer says "Let us do X for you." The CTA undermines the article's thesis.
Fix: Align the CTA with the article's argument. A vendor-neutral piece earns a newsletter / RSS subscribe. A teach-yourself piece earns a deeper-content offer. Save the product pitch for posts where the product is the thesis.
11. Marketing voice on an independent / credibility-driven publication#
Why it fails: End-of-article CTAs in over-eager marketing tone immediately downgrade the perceived authority of the entire post. The pattern crosses every topic: a journalist's essay ending in "Don't miss out on our amazing weekly insights!"; a niche-expert newsletter closing with "Subscribe now to join thousands of happy readers!"; a personal blog footer that reads like a B2B SaaS hero. Each one tells the reader "the human who wrote the article isn't the human who wrote this CTA."
Fix: Adopt the voice of the author signing off. Restrained, specific, no exclamation marks, no royal-we. Compare:
❌ "Don't miss out on our amazing weekly insights! Subscribe now to join thousands of happy readers!"
✅ "If this was useful, the weekly digest covers one thing in depth every Friday. Subscribe here. RSS over here."
For technical blogs specifically, Cecilia Stallsmith (Calyx) put it this way: "Run content by your dev team. If they cringe, edit." The same test works for any audience: read the CTA aloud to one trusted reader from your target audience; if they wince, rewrite.
Why it fails: A "Subscribe to the newsletter" CTA glued to the bottom of every post — tutorial, opinion essay, release announcement, conference recap — treats every reader the same. Tutorial readers want depth; release-announcement readers want to try the code; conference-recap readers want next year's event.
Fix: Three to five CTA templates, one per post type. Tutorial → newsletter or related deep-dive. Product / project release announcement → try-it action + source link. Opinion piece → reply prompt + newsletter. Conference / event recap → next event registration + photo album. Review post → comments + related reviews. The post tells you which template fits; never default to one.
When composing a CTA recommendation, scan this list against the user's inputs. If their context or stated goal would put them on one of these failure modes, surface it before writing the CTA. Format:
⚠️ Anti-pattern risk: [name from this list]. [One sentence on why it applies to your case]. [The fix.]
Do not soften the language. The user pays for direct, contrarian feedback; sycophancy is a disservice.
CTA Mechanisms — When Each Helps, When Each Backfires#
A "mechanism" is the persuasion lever layered on top of the value statement. Most end-of-article CTAs need zero mechanism — the value statement carries it. Mechanisms are tools, not garnish. Each one has a cost in trust if applied to the wrong audience.
The default for sophisticated, skeptical, or repeat-reader audiences is None / value-only. Add a mechanism only if the audience and context support it.
Use when: Audience is sophisticated, skeptical, or has high BS-detection (independent-publication readers, repeat subscribers, professionals, niche-expert audiences). Or when the offer is intrinsically valuable and the value statement does the work alone.
Example: "Get one well-researched essay a week. No spam, no upsells."
Why this is the default for independent content: Any mechanism risks signaling "marketing playbook" and breaking the peer-to-peer voice that made the article credible in the first place. Sophisticated readers exit at the first whiff of theatrics — the technical-audience version of this is documented (Yacine Hmito, Head of Technology at Fabriq: "If I see 'Book a demo' or 'Talk to Sales,' I am out"), and the same pattern shows up in independent journalism, niche-expertise newsletters, and credibility-driven personal essays.
Use when: The article hints at deeper content in the paid / next / forthcoming piece. The reader's curiosity is already engaged by the post itself.
How to write it well:
Be specific about what the gap is. "Want to know more?" alone is empty. "The full breakdown — including the spreadsheet and three case studies I couldn't share publicly — is in the paid version" is specific.
Name the missing thing. Don't tease abstractly.
How it fails: Vague teases ("Want the secret?") read as clickbait. Curiosity gaps work in proportion to how concretely the missing thing is named.
Where it works best: Newsletter (Archetype G — free → paid conversion). Lenny Rachitsky's free posts use this surgically.
Where it fails: Articles where the reader expects completeness. If the article promises to teach X, withholding the punchline for a paid upgrade breaks the implicit contract. This is especially acute on educational, technical, or how-to content.
Use when: The CTA is a lead-gen capture and you can offer something genuinely useful with zero pre-conditions. Reader gets the asset; you get the email.
Cialdini's principle: People feel obligated to reciprocate gifts. If you give first, asking for something later (email, attention, a paid upgrade) gets a meaningfully higher yes-rate.
How to write it well:
Lead with the gift. "Get the [specific artifact] mentioned above." The ask is implicit (you'll need to enter your email to receive it).
The gift must be valuable on its own — not a watermarked thumbnail of the real thing.
How it fails: Reciprocity collapses when the "gift" is obviously a wrapper for a sales sequence. A "free ebook" that's 80% product pitch is anti-reciprocity — the reader feels manipulated, not gifted.
Where it works best: Marketing / SaaS TOFU (Archetype I). Lead-magnet pattern.
Where it fails: Newsletters where the audience expects the content itself to be the gift; gating a small additional artifact behind an email feels needy.
Use when: Direct-to-purchase or subscription. Discount must be real, time-bounded, and explained (launch promo, end-of-year, audience-specific).
How to write it well:
State the price before and after, or the percentage off and the deadline.
Explain why the discount exists. "Launch discount: 20% off the first 100 subscribers" tells a story. "Save 20%!" is noise.
Pair with an explicit, verifiable end condition (date or seat count).
How it fails:
Permanent "discounts" are not discounts. If your homepage has shown 50% OFF every day for a year, the discount is now the regular price; you've just trained the reader to ignore it.
Discounting B2B SaaS at the blog level often cheapens the brand. Save discounts for landing pages reachable from BOFU posts, not for top-of-funnel content.
Where it works best: Brand / SaaS BOFU posts that directly precede a purchase; paid newsletter relaunches; event tickets near deadline (conference, course, cohort).
Where it fails: Independent blogs (almost always), newsletter free→paid (rarely — "you can expense it" is more durable than "20% off"), TOFU brand content (almost always).
Use when: There is a real deadline — registration closes, course cohort starts, beta access ends, conference tickets sell out.
How to write it well:
State the actual deadline with date and time. "Registration closes Friday at midnight PT" is honest.
Name what happens if the reader misses it. "Next cohort opens in three months" sets the stakes.
How it fails: Fake urgency is the worst CTA failure mode after begging. A countdown timer that resets when the reader returns is reader-hostile. Sophisticated audiences detect this in 0.5 seconds and bounce permanently.
Where it works best: Event-based offers (cohort courses, conference tickets, beta closes, launch windows). Marketing / SaaS BOFU when the deadline is real.
Where it fails: Recurring newsletter offers; evergreen content generally; any context where "ends soon" cannot be substantiated.
Use when: There is real scarcity — N seats in a cohort, N consulting clients per quarter, beta access for first N signups.
How to write it well:
Show the actual count. "8 of 25 seats left" beats "Limited seats!" by an order of magnitude.
Update the count in near-real-time (or refresh on page load). A static "Limited!" is just noise.
How it fails: Fabricated scarcity ("Only 3 left!" on a digital product with infinite supply) detonates trust. The reader doesn't just bounce — they tell others.
Where it works best: Consulting practices ("I take 4 new clients per quarter"), cohort programs, limited beta access.
Where it fails: Mass-market SaaS, newsletters, any digital good with infinite supply.
7. Social proof (count / testimonial / named users)#
Use when: You have honest, verifiable proof: a subscriber count, a star count, a named testimonial, a logo wall of recognizable brands.
How to write it well:
Round to actual numbers, not aspirational ranges. "Join 2,437 engineers" beats "Join thousands of engineers" because it's verifiable and specific.
Testimonials should name a person and (where appropriate) their company / role. Anonymous "Best newsletter ever! — Happy Reader" is anti-proof; sophisticated readers discount it to zero.
Logo walls only help when the logos are recognizable to the audience. Specific named logos relevant to the reader ("Used by Stripe, Cloudflare, and Vercel" for a developer audience; "Featured in The Atlantic, The New Yorker, and Vox" for a journalism audience; "Trusted by Whole Foods, Erewhon, and Sprouts" for a food-industry audience) outperform "Used by 50+ Fortune 500 companies" by a wide margin.
How it fails:
Vague proof ("Join thousands of happy users") performs worse than no proof — it signals "we know we should have proof, but we don't have specifics."
Old / stale proof (subscriber count from two years ago) signals "this newsletter is dying."
Where it works best: Any context, any goal. Social proof is the most universally applicable mechanism. Co-locate it with the ask wherever possible.
Where it fails: Only when the proof is dishonest, vague, or stale.
Use when: The author has earned credibility in the space and the reader needs that signal to commit.
How to write it well:
Named author bio with 1-2 specific credentials. "Built X at Y, maintains Z (17k stars)" beats "Industry expert with decades of experience."
Link to evidence (GitHub, prior work, conference talks).
How it fails: Authority claims without evidence read as self-promotion. "Award-winning marketer" without naming the award is anti-authority.
Where it works best: Personal blogs, newsletters, consulting CTAs. Increasingly important in the AI-content era — the signal "a specific named human writes this" is durable.
Where it fails: Company blogs where the byline is the brand, not a person.
Use when: Your audience identifies with a tribe, movement, or shared identity (e.g., indie hackers, working parents, climate-tech founders, plant-based home cooks, French startup community, queer writers, value investors, ultra-runners).
How to write it well:
Name the tribe explicitly. "For working parents who run their own businesses" is better than "For business owners." "For Go developers who care about runtime internals" is better than "For developers." The pattern: specific identity intersection beats broad category.
How it fails: Pandering to a tribe you're not part of. If you don't actually identify with the audience, they will smell it.
Where it works best: Niche newsletters; community CTAs; conference / event recap posts.
If you have to choose between adding a mechanism and improving the value statement, improve the value statement. Mechanisms amplify; they don't substitute. A weak value statement with three mechanisms layered on top still loses to a strong value statement with no mechanism at all.
Eleven archetypes covering the independent / newsletter / brand contexts × the full goal taxonomy. Each entry includes: when it fits, copy template, form spec, verbatim example from a named publication, and rough conversion expectation.
The archetypes are designed to work across topics: a personal essay on indie filmmaking, a finance newsletter, a SaaS engineering blog, a hobby cooking blog, a B2B HR tech site. Adapt the wording to the topic; the structural prescriptions are general.
A. Author-signature subscribe (independent blog, newsletter growth or social follow)#
When it fits: Personal or independent blog of any topic. Goal is to grow an RSS / email / social audience without alienating the reader. Solo-author voice. First-time and returning visitors mixed.
Copy template:
Posted [date]. If you liked this, you can subscribe to the [newsletter / weekly digest / monthly notes] — [frequency promise]. RSS [here]. [Optional: social handle(s) for follow].
Form:
Single short paragraph or one-line signature, no boxed UI.
Visual weight: low. Reads as a byline, not an ad.
Layout: 1-3 inline text links, no button. Optional: native subscribe widget on its own line below.
Placement: end-only. No mid-article repetition. No sticky.
Verbatim example — Simon Willison (simonwillison.net), technical blog:
Posted [date] at [time]. Follow me on Mastodon, Bluesky, Twitter or subscribe to my newsletter.
Verbatim example — Stripe blog, brand publication using author-signature style:
Stay connected with Stripe and receive new blog posts in your inbox. Stripe builds financial tools and economic infrastructure for the internet. [email field]
Conversion expectation: 0.3-2% of unique readers subscribe per post. Above 2% is top-decile.
B. Inline action + source link (any context, try-it / direct action)#
When it fits: Article walks through a doable action: code, recipe, exercise routine, financial calculation, design template, workout, drill, prompt, configuration. Goal is for the reader to try the action immediately. Reader trusts artifacts over copy.
Source: [link to repo / template / spreadsheet / Figma file / GitHub gist]. Feedback welcome. If you build something with it, [reply / DM / open an issue] — I'd love to see it.
Form:
Code block or embedded artifact (recipe card, downloadable template, interactive calculator) immediately above the link line.
Visual weight: medium. The artifact carries the weight, not a button.
Layout: artifact + 1-2 plain text links.
No "Star the repo!" or "Save the recipe!" button at the bottom. That sort of ask belongs on the artifact's own page, not the blog footer.
Verbatim example — Fly.io blog, technical publication using restrained share-only pattern:
Share this post on Twitter | Share this post on Hacker News | Share this post on Reddit Next post ↑ / Previous post ↓
(Fly.io's blog deliberately omits any subscribe or sign-up ask at the bottom; product CTAs live inline at the top of certain posts. The pattern generalizes: when the artifact in the post is the value, the bottom only needs share affordances.)
Common variants:
OSS / dev context:pip install x, npm install y, go get z, plus repo link.
Finance / spreadsheet context: "Open the calculator in a new tab" + link to a Google Sheet template.
Design / no-code: "Duplicate this Figma file" + link.
Productivity / templates: "Use the Notion template" + link.
Conversion expectation: Hard to attribute directly. Measure via referrer logs on the artifact, downstream artifact-engagement (installs, copies, forks), or query-string tagging (?ref=post-name).
C. Reader-supported funding link (independent context, paid support / tip)#
When it fits: Independent creator with a sustainable readership: writer, journalist, podcaster, indie maintainer, indie analyst, illustrator, researcher. Goal is to convert reader-trust into financial support without begging.
Copy template:
I write / make this on the side. If you find it useful, a [membership / sponsorship / tip] covers about [a day / a week / a month] of work. [Memberful / Patreon / GitHub Sponsors / Buy Me a Coffee / Stripe link] · [one-off tip link]
Form:
Plain text link, no button. Optional: small recurring "members get X" subtext.
Visual weight: low.
Placement: at the top of posts (Dan Luu's documented pattern) OR end-signature. Not both.
Layout: 1-2 inline text links.
Verbatim example — Dan Luu (danluu.com), independent technical writer:
A couple weeks ago, I added a link to Patreon at the top of posts (instead of just having one hiding at the bottom).
Generalization to other creator types:
Indie journalist / Substack writer: "If this is useful, a paid subscription covers the time. [link]"
Podcaster: "Members get the extended cut and the back catalog. [link]"
Illustrator / artist: "Memberships fund the next series. [link]"
Conversion expectation: Reader support is a rare event. Don't optimize for conversion rate; optimize for the signal "this is a serious operation worth funding." A small number of high-value supporters outweighs a long tail of $5 tips on operational sustainability.
D. Proof-counted community invite (any context, community join)#
When it fits: You run a community (Discord / Slack / forum / Circle / Geneva / WhatsApp group) that the article topic touches. Reader could plausibly want ongoing discussion.
Copy template:
Join [N] [readers / makers / writers / parents / investors / climbers / etc.] in [community name] [on platform]. We talk about [specific topic] every [day / week]. [Invite link]
Form:
Boxed block with platform logo + member count + topic.
Visual weight: medium. Button: "Join the [community name]".
Layout: 1 button + 1 text link to a public area / archive (if any).
Critical: The count must be honest. "Join 24 readers" is more compelling than "Join a growing community" because the former is verifiable. Round to actual number, never inflate.
Conversion expectation: 1-3% of readers click; 30-60% of clickers actually join.
E. Specific reply prompt (any context, engagement)#
When it fits: Article makes a claim or shares an experience where the reader plausibly has a counter-example, addition, or related story. Goal is comments / replies / DMs.
Copy template:
[Specific question that requires recall of a personal experience or strong opinion]. Reply, hit comment, or DM me — [contact handle]. I read everything.
Form:
1-2 sentences. No button.
Visual weight: low.
The question must be specific. Replace "What do you think?" with one of:
"What's the worst hire you've ever made and what tipped you off in the first week?"
"Which of these three recipes did you try, and what would you change?"
"What's one investment thesis you've held for 5+ years that you'd defend in public?"
"Which conference talk changed how you work, and why?"
Verbatim example — Patrick McKenzie / Bits about Money (paraphrased pattern):
Counter-arguments and corrections are welcome. Reply to this email; I read everything, even if I don't always respond in time.
Conversion expectation: Specific prompts can hit 1-3% reply rate on newsletters. Generic prompts ("Let me know what you think!") run near zero.
F. Share / restack + native widget (newsletter publication, growth)#
When it fits: Newsletter on Substack, beehiiv, Ghost, or similar. Goal is subscriber growth. Reader is engaged (they finished a long essay).
Copy template:
If this was useful: a [restack / share] helps more than you'd think — it tells [platform] to show it to people whose feeds look like yours. And if a specific person came to mind while reading, forward it to them.
Visual weight: medium. The native widgets do the visual lifting.
Verbatim example — Lenny's Newsletter (free posts), B2B operator newsletter:
If you're finding this newsletter valuable, share it with a friend, and consider subscribing if you haven't already. There are group discounts, gift options, and referral bonuses available.
Conversion expectation: Restack rate 1-8% on Substack. Lenny Rachitsky reports ~78% of free subscribers and ~11% of paid come via Substack recommendations — restacks feed the recommendation algorithm directly.
G. Value-gap tease (newsletter publication, free → paid conversion)#
When it fits: Free post that exists alongside paid content. Goal is to convert free readers to paying subscribers without bait-and-switch.
Copy template:
This is a free post. Paid members got [specific deeper content] last [time period], including [concrete thing the paid version had]. If you find one in [N] of these useful, the math works out — and you can expense it.
Form:
Italicized paragraph, ends with a "Become a paid member" button.
Visual weight: medium.
Subtext: "Cancel anytime · Group discounts available · [Refund policy if any]".
Critical: Name what the paid version contained. "Subscribe for more" tells the reader nothing. "Paid members got the spreadsheet and three case studies I couldn't share publicly" lets them self-qualify.
Conversion expectation: Lenny's documented range is 4-8% free → paid for high-quality newsletters with sustained free → paid teasing. Most newsletters convert 1-3%.
H. Inline sponsor block (newsletter publication, monetization)#
When it fits: Newsletter with sponsor monetization. Goal is to deliver sponsor value without breaking reader trust.
Copy template:
[Sponsor message in author's voice, 2-4 sentences, names the specific value to a specific reader segment. Signed-off with an explicit "this is a sponsored block" disclosure.]
Form:
Boxed block, clearly demarcated from editorial.
Placement: inline, not at bottom. Packy McCormick (Not Boring) places sponsor blocks inline, mid-essay; the bottom is reserved for native widgets.
Visual weight: medium.
Disclosure: "This is sponsored by [X]" or "Today's newsletter is presented by [X]" at the top of the block. Required by FTC for US publications.
Verbatim example — Not Boring (Packy McCormick):
Upgrade your team to Ramp: The Official Business Card of Not Boring [...]
Conversion expectation: Sponsor CTR is the sponsor's problem to optimize. The publication's job is to maintain the integrity of the block so future sponsors keep paying.
I. Transitional asset / lead magnet (brand publication, TOFU)#
When it fits: Top-of-funnel content-marketing post. Reader is discovering the topic, not ready to buy. Goal is to get them on the list with a transitional asset (PDF, template, checklist, calculator, swipe file, quiz result).
Copy template:
Get the [specific artifact mentioned in the post] — [PDF / template / checklist / calculator]. [Frequency promise]. [Proof: "12,000+ [persona] use it"]. No upsell.
Form:
Boxed block with the artifact image / thumbnail visible.
Button: "Send me the [artifact]" or "Download the [artifact]".
Visual weight: high.
Risk reversal: "Unsubscribe anytime" or "We won't email you unless you ask us to."
Critical: The artifact must be the artifact mentioned in the post, not a generic "Ultimate Guide". If the post is "How we cut our customer-support response time by 60%", the asset is "The exact email templates we use", not "The Definitive Guide to Customer Support (47 pages)".
Conversion expectation: 1-5% of blog readers download a well-matched transitional asset. Generic "Ultimate Guide" downloads run 0.1-0.5%.
J. Direct + Transitional pair (brand publication, MOFU)#
When it fits: Middle-of-funnel content-marketing post. Reader is evaluating, comparing. Goal is to capture both buyers (direct) and not-yet-buyers (transitional).
Copy template:
Direct (primary):
Start a [N-day] free trial — no credit card. Set up in under [X] minutes.
Transitional (secondary, text link):
Or download [specific buyer's asset] (PDF, [N] pages).
Form:
Two visually unequal CTAs. Direct gets the button; transitional gets a text link below or beside.
Visual weight: high for direct, low for transitional.
Layout: Button + text link. NOT two equal buttons.
Critical: The visual hierarchy must be unambiguous. Two same-size buttons trigger decision paralysis (Hick's Law). One button + one text link is the high-converting layout. StoryBrand's Donald Miller calls this the "direct + transitional" dyad and treats it as the default for B2B content.
Conversion expectation: Combined click-through 3-8% on a well-targeted MOFU post.
K. Direct CTA + risk reversal (brand publication, BOFU)#
When it fits: Bottom-of-funnel content-marketing post. Reader is ready to act, just needs the friction removed. Goal is signup / demo / purchase.
Copy template:
See [Product / Service] applied to your [workflow / situation]. [N]-minute call. We'll audit your current [process] and show what changes — even if you don't buy. [Book a [N]-min audit] Risk reversal: No sales pitch. We'll send the recording afterwards.
Form:
Single prominent button.
Visual weight: high.
Layout: button + 1-2 lines of risk-reversal subtext directly below.
Proof co-located: small testimonial or logo wall above or below the block.
Critical: The button verb must match the offer. PartnerStack's documented test moved "Book a Demo" → "Get Started" and lifted conversion 111.55%. Mailmodo's documented test moved "Book a Demo" → "Talk to a Human" and lifted conversion 110.35%. "Book a Demo" is the lowest-converting BOFU verb in the published record.
Conversion expectation: 1-3% of blog readers → MQL on a well-targeted BOFU post. 6-11% on a dedicated landing page reached from the post.
If the user gave context + objective, this table picks the archetype:
Context \ Objective
Newsletter sub
Try-it / action
Community
Reader support
Trial/Demo
Lead gen
Engagement
Paid upgrade
Independent / personal
A
B
D
C
⚠️ K (only if BOFU + author IS the product)
I (rare)
E
—
Newsletter publication
F
—
D
H
—
I (rare)
E
G
Brand / content marketing
I (TOFU) / J (MOFU)
—
D
—
K (BOFU)
I
E (rare)
—
SHOWING THE FIRST PART OF 59.7 KB · THE FULL TEXT IS ON THIS PAGE
§06
FAQ
07 QUESTIONS
01What is the Copywriting CTA agent skill?
Designing an end-of-article CTA is a function of three inputs: the objective (what action), the audience (who reads it, in what relationship to the author), and the context (independent writing. It is listed under content in the 100xLab agent skills directory.
02How do I install Copywriting CTA in Cursor, Claude Code, or Codex?
Run npx skills add samber/cc-skills --skill copywriting-cta in the project where you want it, then ask your agent for the skill by name. The --skill flag installs only Copywriting CTA, not every skill in the repository.
03What does the Copywriting CTA SKILL.md cover?
The SKILL.md includes sections on Workflow, Step 1 — Interview, Step 2 — Diagnose, Step 3 — Compose the recommendation, Step 4 — Offer next moves and Style inheritance. Read the full text on this page or in plain markdown at /resources/agent-skills/samber-cc-skills--copywriting-cta--8zm6e5/raw.
04Which agents can use Copywriting CTA?
Copywriting CTA installs with the cross-agent skills installer (npx skills add), which sets it up for agents such as Claude Code, Cursor and Codex. Each agent loads the SKILL.md when you ask for the skill by name.
05What license is Copywriting CTA under?
The samber/cc-skills repository declares the MIT license. Read the license file in the repository before you copy or redistribute the skill.
06Is Copywriting CTA free to use?
Reading, copying and installing Copywriting CTA costs nothing: it is published in a public GitHub repository under the MIT license. Reuse and redistribution follow that license.
07Where is the source of Copywriting CTA?
Copywriting CTA comes from https://github.com/samber/cc-skills, which has 152 GitHub stars. The SKILL.md is at https://github.com/samber/cc-skills/blob/HEAD/skills/copywriting-cta/SKILL.md. The author is samber.
Use this skill whenever a user wants to create a presentation outline, slide deck structure, storyboard slides, or plan a deck for any context (talk, boardroom, email report).
This skill covers two related use cases: (1) Creating high-converting webinar registration and event landing pages, and (2) Repurposing webinar recordings into multiple content assets.
Copywriting CTA was written by its original authors and is published in samber/cc-skills (opens GitHub in a new tab) under the MIT license. All rights stay with the original authors.
100xLab did not write, maintain or endorse this skill. This page lists it for discovery. Repo stars belong to the source repository, not to the skill. Review any skill before you install it.