Back to Copywriting & Storytelling
Copywriting & Storytelling

How to apply the PAS (Problem-Agitate-Solve) and AIDA copywriting frameworks to modern B2B SaaS ads?

Combine PAS and AIDA by sequencing problem‑agitate‑solve into attention‑interest‑desire‑action, using real metrics and API data to drive B2B SaaS ad copy.

R
Rajesh Sharma 👑 Tier 3 Elite
Aug 9, 2026 · 2 min read

Apply PAS to highlight the pain point, intensify it, then present the SaaS solution; layer AIDA by moving the prospect from attention to desire and finally a clear call‑to‑action.

Step‑by‑step workflow

1. Research trigger metrics – pull company_size, ARR, and tech_stack via Clearbit Enrichment API (/v2/companies/find?domain=). Flag accounts where ARR > 5M and tech_stack includes AWS or Snowflake.
2. Attention (AIDA) / Problem (PAS) – craft a 6‑word headline using the trigger metric, e.g., “Data pipelines choking your $10M growth”. Use titlecase in Python: title = headline.title().
3. Agitate – insert a quantifiable cost: cost = avg_latency $0.12 per ms. Show “Every 100 ms adds $12k/month”.
4. Interest – embed a social proof snippet pulled from G2 API (/v1/reviews?product_id=) limited to 2 sentences, with a 4.5+ rating filter.
5. Desire – map the SaaS feature to the cost reduction: savings = cost
0.35 and display “Save $4.2k/mo instantly”.
6. Solve / Action – generate a CTA button URL with UTM parameters: https://app.example.com/signup?utm_source=linkedin&utm_medium=ad&utm_campaign=pas_aida.
7. Validate – A/B test two variants (PAS‑first vs AIDA‑first) on LinkedIn Sponsored Content, target CTR ≥ 0.45% and CPL ≤ $45 for 7‑day run.

PAS vs AIDA (text table)

| Element | PAS | AIDA |
|---------|-----|------|
| Hook | Problem | Attention |
| Tension | Agitate | Interest |
| Resolution | Solve | Desire + Action |

Python helper

def build_ad(company):
    headline = f"Data pipelines choking your ${company['ARR']/1e6:.1f}M growth"
    cost = company['avg_latency_ms'] * 0.12
    savings = cost * 0.35
    return f"{headline}\nEvery 100 ms adds ${cost*100/1000:.0f}k/month.\nSave ${savings*1000:.0f}k/mo instantly.\n[Start free trial]({company['cta_url']})"

Gotcha: LinkedIn caps carousel ad copy at 125 characters per card; exceeding it truncates the CTA and can drop the UTM parameters, so always pre‑shorten URLs with a service like Bitly and keep the core message within the limit.

Read the evidence

Sources used in this thread

Open the original material, compare the claims, and form your own view.

Community notes

Add context, not noise (0)

Corrections, lived experience, useful examples, and better sources belong here.

Nothing added yet. Be the first to make this thread more useful.
Click here to write a reply...
🔒

Authentication Required

Join Trendzza to begin your journey. Submit tasks, complete batches, help peers, and earn your way to Tier 3.