Compare commits
45 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f23b665461 | |||
| 880386085e | |||
| dffa2fd3cb | |||
| db34fa2a21 | |||
| 0d586e4952 | |||
| 9125d8216e | |||
| 50e72e0a2d | |||
| 978051caf1 | |||
| e8623ad57d | |||
| e659c764dd | |||
| 58a9947df4 | |||
| ea4704a905 | |||
| 883f9b6380 | |||
| 743f718a7c | |||
| 5616e31192 | |||
| 2570f6ad4e | |||
| eb4256891a | |||
| 3448f557de | |||
| 9f9c2d6f59 | |||
| 7df49f2be8 | |||
| 2c7c108bd5 | |||
| fe670959f7 | |||
| 4874fe8979 | |||
| d88009d1a4 | |||
| 78da95de86 | |||
| 7c2e29c526 | |||
| 49f520f4eb | |||
| ef8e08ffd2 | |||
| e10c33406c | |||
| c31adfe89e | |||
| 1f295fa5c8 | |||
| af9fe5fb09 | |||
| bb54a76215 | |||
| 884cf5e108 | |||
| 295f1eef37 | |||
| 5c90bb8075 | |||
| 2fe1310881 | |||
| 6020ef6943 | |||
| dba8570870 | |||
| 314230b6db | |||
| 330d220aca | |||
| c4cb25cb6c | |||
| 4ceaf88e96 | |||
| 7d85256e19 | |||
| 7c13fccdd9 |
@@ -12,17 +12,18 @@
|
||||
"plugins": [
|
||||
{
|
||||
"name": "marketing-skills",
|
||||
"description": "34 marketing skills for technical marketers and founders: ASO, CRO, copywriting, cold email, SEO, AI SEO, paid ads, ad creative, churn prevention, pricing strategy, referral programs, revenue operations, sales enablement, customer research, site architecture, and more",
|
||||
"description": "36 marketing skills for technical marketers and founders: ASO, CRO, copywriting, cold email, SEO, AI SEO, paid ads, ad creative, churn prevention, pricing strategy, referral programs, revenue operations, sales enablement, customer research, site architecture, and more",
|
||||
"source": "./",
|
||||
"strict": false,
|
||||
"skills": [
|
||||
"./skills/ab-test-setup",
|
||||
"./skills/ad-creative",
|
||||
"./skills/ai-seo",
|
||||
"./skills/aso-audit",
|
||||
"./skills/analytics-tracking",
|
||||
"./skills/aso-audit",
|
||||
"./skills/churn-prevention",
|
||||
"./skills/cold-email",
|
||||
"./skills/community-marketing",
|
||||
"./skills/competitor-alternatives",
|
||||
"./skills/content-strategy",
|
||||
"./skills/copy-editing",
|
||||
|
||||
@@ -54,17 +54,19 @@ See each skill's **Related Skills** section for the full dependency map.
|
||||
<!-- SKILLS:START -->
|
||||
| Skill | Description |
|
||||
|-------|-------------|
|
||||
| [ab-test-setup](skills/ab-test-setup/) | When the user wants to plan, design, or implement an A/B test or experiment. Also use when the user mentions "A/B... |
|
||||
| [ab-test-setup](skills/ab-test-setup/) | When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program.... |
|
||||
| [ad-creative](skills/ad-creative/) | When the user wants to generate, iterate, or scale ad creative — headlines, descriptions, primary text, or full ad... |
|
||||
| [ai-seo](skills/ai-seo/) | When the user wants to optimize content for AI search engines, get cited by LLMs, or appear in AI-generated answers.... |
|
||||
| [analytics-tracking](skills/analytics-tracking/) | When the user wants to set up, improve, or audit analytics tracking and measurement. Also use when the user mentions... |
|
||||
| [aso-audit](skills/aso-audit/) | When the user wants to audit or optimize an App Store or Google Play listing. Also use when the user mentions 'ASO... |
|
||||
| [churn-prevention](skills/churn-prevention/) | When the user wants to reduce churn, build cancellation flows, set up save offers, recover failed payments, or... |
|
||||
| [cold-email](skills/cold-email/) | Write B2B cold emails and follow-up sequences that get replies. Use when the user wants to write cold outreach emails,... |
|
||||
| [community-marketing](skills/community-marketing/) | Build and leverage online communities to drive product growth and brand loyalty. Use when the user wants to create a... |
|
||||
| [competitor-alternatives](skills/competitor-alternatives/) | When the user wants to create competitor comparison or alternative pages for SEO and sales enablement. Also use when... |
|
||||
| [content-strategy](skills/content-strategy/) | When the user wants to plan a content strategy, decide what content to create, or figure out what topics to cover. Also... |
|
||||
| [copy-editing](skills/copy-editing/) | When the user wants to edit, review, or improve existing marketing copy. Also use when the user mentions 'edit this... |
|
||||
| [copy-editing](skills/copy-editing/) | When the user wants to edit, review, or improve existing marketing copy, or refresh outdated content. Also use when the... |
|
||||
| [copywriting](skills/copywriting/) | When the user wants to write, rewrite, or improve marketing copy for any page — including homepage, landing pages,... |
|
||||
| [customer-research](skills/customer-research/) | When the user wants to conduct, analyze, or synthesize customer research — including interview transcripts, surveys, support tickets, review mining, Reddit/G2/forum research, persona generation, and voice of customer (VOC)... |
|
||||
| [customer-research](skills/customer-research/) | When the user wants to conduct, analyze, or synthesize customer research. Use when the user mentions "customer... |
|
||||
| [email-sequence](skills/email-sequence/) | When the user wants to create or optimize an email sequence, drip campaign, automated email flow, or lifecycle email... |
|
||||
| [form-cro](skills/form-cro/) | When the user wants to optimize any form that is NOT signup/registration — including lead capture forms, contact forms,... |
|
||||
| [free-tool-strategy](skills/free-tool-strategy/) | When the user wants to plan, evaluate, or build a free tool for marketing purposes — lead generation, SEO value, or... |
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
---
|
||||
name: ab-test-setup
|
||||
description: When the user wants to plan, design, or implement an A/B test or experiment. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "hypothesis," "should I test this," "which version is better," "test two versions," "statistical significance," or "how long should I run this test." Use this whenever someone is comparing two approaches and wants to measure which performs better. For tracking implementation, see analytics-tracking. For page-level conversion optimization, see page-cro.
|
||||
description: When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "hypothesis," "should I test this," "which version is better," "test two versions," "statistical significance," "how long should I run this test," "growth experiments," "experiment velocity," "experiment backlog," "ICE score," "experimentation program," or "experiment playbook." Use this whenever someone is comparing two approaches and wants to measure which performs better, or when they want to build a systematic experimentation practice. For tracking implementation, see analytics-tracking. For page-level conversion optimization, see page-cro.
|
||||
metadata:
|
||||
version: 1.1.0
|
||||
version: 1.2.0
|
||||
---
|
||||
|
||||
# A/B Test Setup
|
||||
@@ -229,6 +229,93 @@ Document every test with:
|
||||
|
||||
---
|
||||
|
||||
## Growth Experimentation Program
|
||||
|
||||
Individual tests are valuable. A continuous experimentation program is a compounding asset. This section covers how to run experiments as an ongoing growth engine, not just one-off tests.
|
||||
|
||||
### The Experiment Loop
|
||||
|
||||
```
|
||||
1. Generate hypotheses (from data, research, competitors, customer feedback)
|
||||
2. Prioritize with ICE scoring
|
||||
3. Design and run the test
|
||||
4. Analyze results with statistical rigor
|
||||
5. Promote winners to a playbook
|
||||
6. Generate new hypotheses from learnings
|
||||
→ Repeat
|
||||
```
|
||||
|
||||
### Hypothesis Generation
|
||||
|
||||
Feed your experiment backlog from multiple sources:
|
||||
|
||||
| Source | What to Look For |
|
||||
|--------|-----------------|
|
||||
| Analytics | Drop-off points, low-converting pages, underperforming segments |
|
||||
| Customer research | Pain points, confusion, unmet expectations |
|
||||
| Competitor analysis | Features, messaging, or UX patterns they use that you don't |
|
||||
| Support tickets | Recurring questions or complaints about conversion flows |
|
||||
| Heatmaps/recordings | Where users hesitate, rage-click, or abandon |
|
||||
| Past experiments | "Significant loser" tests often reveal new angles to try |
|
||||
|
||||
### ICE Prioritization
|
||||
|
||||
Score each hypothesis 1-10 on three dimensions:
|
||||
|
||||
| Dimension | Question |
|
||||
|-----------|----------|
|
||||
| **Impact** | If this works, how much will it move the primary metric? |
|
||||
| **Confidence** | How sure are we this will work? (Based on data, not gut.) |
|
||||
| **Ease** | How fast and cheap can we ship and measure this? |
|
||||
|
||||
**ICE Score** = (Impact + Confidence + Ease) / 3
|
||||
|
||||
Run highest-scoring experiments first. Re-score monthly as context changes.
|
||||
|
||||
### Experiment Velocity
|
||||
|
||||
Track your experimentation rate as a leading indicator of growth:
|
||||
|
||||
| Metric | Target |
|
||||
|--------|--------|
|
||||
| Experiments launched per month | 4-8 for most teams |
|
||||
| Win rate | 20-30% is common for mature programs (sustained higher rates may indicate conservative hypotheses) |
|
||||
| Average test duration | 2-4 weeks |
|
||||
| Backlog depth | 20+ hypotheses queued |
|
||||
| Cumulative lift | Compound gains from all winners |
|
||||
|
||||
### The Experiment Playbook
|
||||
|
||||
When a test wins, don't just implement it — document the pattern:
|
||||
|
||||
```
|
||||
## [Experiment Name]
|
||||
**Date**: [date]
|
||||
**Hypothesis**: [the hypothesis]
|
||||
**Sample size**: [n per variant]
|
||||
**Result**: [winner/loser/inconclusive] — [primary metric] changed by [X%] (95% CI: [range], p=[value])
|
||||
**Guardrails**: [any guardrail metrics and their outcomes]
|
||||
**Segment deltas**: [notable differences by device, segment, or cohort]
|
||||
**Why it worked/failed**: [analysis]
|
||||
**Pattern**: [the reusable insight — e.g., "social proof near pricing CTAs increases plan selection"]
|
||||
**Apply to**: [other pages/flows where this pattern might work]
|
||||
**Status**: [implemented / parked / needs follow-up test]
|
||||
```
|
||||
|
||||
Over time, your playbook becomes a library of proven growth patterns specific to your product and audience.
|
||||
|
||||
### Experiment Cadence
|
||||
|
||||
**Weekly (30 min)**: Review running experiments for technical issues and guardrail metrics. Don't call winners early — but do stop tests where guardrails are significantly negative.
|
||||
|
||||
**Bi-weekly**: Conclude completed experiments. Analyze results, update playbook, launch next experiment from backlog.
|
||||
|
||||
**Monthly (1 hour)**: Review experiment velocity, win rate, cumulative lift. Replenish hypothesis backlog. Re-prioritize with ICE.
|
||||
|
||||
**Quarterly**: Audit the playbook. Which patterns have been applied broadly? Which winning patterns haven't been scaled yet? What areas of the funnel are under-tested?
|
||||
|
||||
---
|
||||
|
||||
## Common Mistakes
|
||||
|
||||
### Test Design
|
||||
|
||||
+26
-13
@@ -1,12 +1,6 @@
|
||||
---
|
||||
name: aso-audit
|
||||
description: >
|
||||
Use when auditing an App Store or Google Play listing for optimization.
|
||||
Triggers: "ASO audit", "app store optimization", "optimize my app listing",
|
||||
"improve app visibility", "app store ranking", "audit my listing", or when
|
||||
user shares an App Store / Google Play URL and wants to improve it. Also
|
||||
triggers on: "why aren't people downloading my app", "improve my app
|
||||
conversion", "keyword optimization for app", "compare my app to competitors".
|
||||
description: "When the user wants to audit or optimize an App Store or Google Play listing. Also use when the user mentions 'ASO audit,' 'app store optimization,' 'optimize my app listing,' 'improve app visibility,' 'app store ranking,' 'audit my listing,' 'why aren't people downloading my app,' 'improve my app conversion,' 'keyword optimization for app,' or 'compare my app to competitors.' Use when the user shares an App Store or Google Play URL and wants to improve it."
|
||||
metadata:
|
||||
version: 1.0.0
|
||||
---
|
||||
@@ -90,14 +84,13 @@ work with what's available. Ask the user to paste missing fields if critical.
|
||||
|
||||
### Visual asset assessment
|
||||
|
||||
WebFetch cannot extract screenshot images or caption text. **Always use the
|
||||
Playwright browser tool** to get visual data:
|
||||
WebFetch cannot extract screenshot images or caption text. **Take a screenshot
|
||||
of the listing page** to get visual data:
|
||||
|
||||
1. Navigate to the listing URL with `browser_navigate`
|
||||
2. Take a full-page screenshot with `browser_take_screenshot`
|
||||
3. Read the screenshot image to assess: icon, screenshot count, caption text,
|
||||
1. Navigate to the listing URL and capture a full-page screenshot
|
||||
2. Assess the screenshot for: icon quality, screenshot count, caption text,
|
||||
messaging quality, preview video presence, feature graphic (Google Play)
|
||||
4. If Playwright is unavailable, ask the user to share a screenshot of the
|
||||
3. If browser tools are unavailable, ask the user to share a screenshot of the
|
||||
listing page
|
||||
|
||||
**Promotional text (Apple):** This 170-char field appears above the description
|
||||
@@ -297,3 +290,23 @@ the app's brand maturity tier — they may be deliberate choices for Dominant ap
|
||||
|
||||
- [ ] No developer responses to negative reviews _(note volume — responding at 10M+ reviews is a different challenge than at 1K)_
|
||||
- [ ] Generic "What's New" text _(acceptable at weekly+ release cadence for Established/Dominant)_
|
||||
|
||||
---
|
||||
|
||||
## Task-Specific Questions
|
||||
|
||||
1. What is the App Store or Google Play URL?
|
||||
2. Is this your app or a competitor's?
|
||||
3. What category does the app compete in?
|
||||
4. Do you have competitor URLs to compare against?
|
||||
5. Are you focused on search visibility, conversion rate, or both?
|
||||
6. Do you have access to App Store Connect or Google Play Console data?
|
||||
|
||||
---
|
||||
|
||||
## Related Skills
|
||||
|
||||
- **page-cro**: For optimizing the conversion of web-based landing pages that drive app installs
|
||||
- **ad-creative**: For creating App Store and Google Play ad creatives
|
||||
- **analytics-tracking**: For setting up install attribution and in-app event tracking
|
||||
- **customer-research**: For understanding user needs and language to inform listing copy
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: community-marketing
|
||||
description: Build and leverage online communities to drive product growth and brand loyalty. Use when the user wants to create a community strategy, grow a Discord or Slack community, manage a forum or subreddit, build brand advocates, increase word-of-mouth, drive community-led growth, engage users post-signup, or turn customers into evangelists. Trigger phrases: "build a community," "community strategy," "Discord community," "Slack community," "community-led growth," "brand advocates," "user community," "forum strategy," "community engagement," "grow our community," "ambassador program," "community flywheel."
|
||||
description: "Build and leverage online communities to drive product growth and brand loyalty. Use when the user wants to create a community strategy, grow a Discord or Slack community, manage a forum or subreddit, build brand advocates, increase word-of-mouth, drive community-led growth, engage users post-signup, or turn customers into evangelists. Trigger phrases: \"build a community,\" \"community strategy,\" \"Discord community,\" \"Slack community,\" \"community-led growth,\" \"brand advocates,\" \"user community,\" \"forum strategy,\" \"community engagement,\" \"grow our community,\" \"ambassador program,\" \"community flywheel.\""
|
||||
metadata:
|
||||
version: 1.0.0
|
||||
---
|
||||
@@ -141,3 +141,23 @@ Depending on what the user needs, produce one of:
|
||||
- **Health Audit Report** — Current metrics, diagnosis, top 3 priorities to fix
|
||||
|
||||
Always be specific. Generic advice ("be consistent," "provide value") is not useful. Give the user something they can act on today.
|
||||
|
||||
---
|
||||
|
||||
## Task-Specific Questions
|
||||
|
||||
1. What platform are you building on (or considering)?
|
||||
2. What stage is the community at? (Pre-launch, early, growing, established)
|
||||
3. What's the primary business goal? (Retention, activation, word-of-mouth, support deflection)
|
||||
4. Who is the ideal community member and what motivates them?
|
||||
5. Do you have existing users or customers to seed from?
|
||||
6. How much time can you dedicate to community management weekly?
|
||||
|
||||
---
|
||||
|
||||
## Related Skills
|
||||
|
||||
- **referral-program**: For structured referral and ambassador incentive programs
|
||||
- **churn-prevention**: For retention strategies that complement community engagement
|
||||
- **social-content**: For content creation across social platforms
|
||||
- **customer-research**: For understanding your community members' needs and language
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
---
|
||||
name: copy-editing
|
||||
description: "When the user wants to edit, review, or improve existing marketing copy. Also use when the user mentions 'edit this copy,' 'review my copy,' 'copy feedback,' 'proofread,' 'polish this,' 'make this better,' 'copy sweep,' 'tighten this up,' 'this reads awkwardly,' 'clean up this text,' 'too wordy,' or 'sharpen the messaging.' Use this when the user already has copy and wants it improved rather than rewritten from scratch. For writing new copy, see copywriting."
|
||||
description: "When the user wants to edit, review, or improve existing marketing copy, or refresh outdated content. Also use when the user mentions 'edit this copy,' 'review my copy,' 'copy feedback,' 'proofread,' 'polish this,' 'make this better,' 'copy sweep,' 'tighten this up,' 'this reads awkwardly,' 'clean up this text,' 'too wordy,' 'sharpen the messaging,' 'refresh this content,' 'update this page,' 'this content is outdated,' or 'content audit.' Use this when the user already has copy and wants it improved or refreshed rather than rewritten from scratch. For writing new copy, see copywriting."
|
||||
metadata:
|
||||
version: 1.1.0
|
||||
version: 1.3.0
|
||||
---
|
||||
|
||||
# Copy Editing
|
||||
@@ -256,6 +256,57 @@ For every statement, ask "Okay, so what?" If the copy doesn't answer that questi
|
||||
|
||||
---
|
||||
|
||||
## Expert Panel Scoring
|
||||
|
||||
Use this after completing the Seven Sweeps for an additional quality gate. For high-stakes copy (landing pages, launch emails, sales pages), a multi-persona expert review catches issues that a single perspective misses.
|
||||
|
||||
### How It Works
|
||||
|
||||
1. **Assemble 3-5 expert personas** relevant to the copy type
|
||||
2. **Each persona scores the copy 1-10** on their area of expertise
|
||||
3. **Collect specific critiques** — not just scores, but what to fix
|
||||
4. **Revise based on feedback** — address the lowest-scoring areas first
|
||||
5. **Re-score after revisions** — iterate until all personas score 7+, with an average of 8+ across the panel
|
||||
|
||||
### Recommended Expert Panels
|
||||
|
||||
**Landing page copy:**
|
||||
- Conversion copywriter (clarity, CTA strength, benefit hierarchy)
|
||||
- UX writer (scannability, cognitive load, user flow)
|
||||
- Target customer persona (does this speak to me? do I trust it?)
|
||||
- Brand strategist (voice consistency, positioning accuracy)
|
||||
|
||||
**Email sequence:**
|
||||
- Email marketing specialist (subject lines, open/click optimization)
|
||||
- Copywriter (hooks, storytelling, persuasion)
|
||||
- Spam filter analyst (deliverability red flags, trigger words)
|
||||
- Target customer persona (relevance, value, unsubscribe risk)
|
||||
|
||||
**Sales page / long-form:**
|
||||
- Direct response copywriter (offer structure, objection handling, urgency)
|
||||
- Skeptical buyer persona (proof gaps, trust issues, red flags)
|
||||
- Editor (flow, readability, conciseness)
|
||||
- SEO specialist (keyword coverage, search intent alignment)
|
||||
|
||||
### Scoring Rubric
|
||||
|
||||
| Score | Meaning |
|
||||
|-------|---------|
|
||||
| 9-10 | Publish-ready. No meaningful improvements. |
|
||||
| 7-8 | Strong. Minor tweaks only. |
|
||||
| 5-6 | Functional but has clear gaps. Needs another pass. |
|
||||
| 3-4 | Significant issues. Major revision needed. |
|
||||
| 1-2 | Fundamentally broken. Rethink approach. |
|
||||
|
||||
### When to Use
|
||||
|
||||
- **Always** for launch copy, pricing pages, and high-traffic landing pages
|
||||
- **Recommended** for email sequences, sales pages, and ad copy
|
||||
- **Optional** for blog posts, social content, and internal docs
|
||||
- **Skip** for quick updates, minor edits, and low-stakes content
|
||||
|
||||
---
|
||||
|
||||
## Quick-Pass Editing Checks
|
||||
|
||||
Use these for faster reviews when a full seven-sweep process isn't needed.
|
||||
@@ -416,6 +467,15 @@ This iterative process ensures each edit doesn't create new problems while respe
|
||||
## References
|
||||
|
||||
- [Plain English Alternatives](references/plain-english-alternatives.md): Replace complex words with simpler alternatives
|
||||
- [Content Refresh](references/content-refresh.md): Full checklist, refresh vs. rewrite matrix, and cadence guide
|
||||
|
||||
---
|
||||
|
||||
## Content Refresh Editing
|
||||
|
||||
Copy editing isn't just for new content. Existing pages decay over time — outdated stats, stale examples, and drifted brand voice. Use the content refresh framework when traffic is declining, data is stale, or the product has changed.
|
||||
|
||||
**For the full refresh checklist, refresh vs. rewrite decision matrix, and cadence guide**: See [references/content-refresh.md](references/content-refresh.md)
|
||||
|
||||
---
|
||||
|
||||
@@ -425,6 +485,7 @@ This iterative process ensures each edit doesn't create new problems while respe
|
||||
2. What action should readers take?
|
||||
3. Are there specific concerns or known issues?
|
||||
4. What proof/evidence do you have available?
|
||||
5. Is this new copy or a refresh of existing content?
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
# Content Refresh Editing
|
||||
|
||||
Copy editing isn't just for new content. Existing pages and posts decay over time — outdated stats, stale examples, drifted brand voice, and missed SEO opportunities. A content refresh applies the same editing rigor to content that's already published.
|
||||
|
||||
## When to Refresh
|
||||
|
||||
- **Traffic declining** on a page that used to perform well
|
||||
- **Stats or data** are more than 12 months old
|
||||
- **Product has changed** — features, pricing, or positioning no longer match
|
||||
- **Competitors updated** their version of the same content
|
||||
- **AI search visibility** matters — outdated content gets cited less (see ai-seo skill)
|
||||
|
||||
## Content Refresh Checklist
|
||||
|
||||
1. **Freshness pass** — Update all dates, stats, and examples. Replace "in 2024" with current data. Remove references to deprecated features or tools.
|
||||
2. **Accuracy pass** — Verify all claims are still true. Check that linked resources still exist. Confirm pricing and feature descriptions match current state.
|
||||
3. **Voice pass** — Does the tone match your current brand voice? Older content often reflects an earlier stage of the company.
|
||||
4. **SEO pass** — Has search intent shifted for this topic? Are there new keywords or questions to address? Add "Last updated: [date]" prominently.
|
||||
5. **Proof pass** — Can you add newer testimonials, case studies, or data points that didn't exist when this was first published?
|
||||
6. **Structure pass** — Add comparison tables, FAQ sections, or other scannable formats that make the content easier to consume.
|
||||
|
||||
## Refresh vs. Rewrite
|
||||
|
||||
| Signal | Action |
|
||||
|--------|--------|
|
||||
| Core message still valid, details outdated | Refresh (update facts, stats, examples) |
|
||||
| Brand voice has evolved significantly | Refresh + voice rewrite |
|
||||
| Topic angle or audience has shifted | Full rewrite |
|
||||
| Page structure doesn't match current search intent | Full rewrite |
|
||||
| Just needs updated stats and links | Light refresh |
|
||||
|
||||
## Refresh Cadence
|
||||
|
||||
- **Pricing and product pages**: Every quarter, or when pricing/features change
|
||||
- **High-traffic blog posts**: Every 6 months
|
||||
- **Comparison and alternatives pages**: Every 3-6 months (competitors change fast)
|
||||
- **Evergreen guides**: Annually, unless traffic drops sooner
|
||||
- **Low-traffic pages**: Only when traffic data suggests an opportunity
|
||||
@@ -245,6 +245,8 @@ Before launching campaigns, ensure proper tracking and account setup.
|
||||
|
||||
**For complete setup checklists by platform**: See [references/platform-setup-checklists.md](references/platform-setup-checklists.md)
|
||||
|
||||
**For conversion pixel installation and event setup**: See [references/conversion-tracking.md](references/conversion-tracking.md)
|
||||
|
||||
### Universal Pre-Launch Checklist
|
||||
- [ ] Conversion tracking tested with real conversion
|
||||
- [ ] Landing page loads fast (<3 sec)
|
||||
@@ -302,7 +304,7 @@ For implementation, see the [tools registry](../../tools/REGISTRY.md). Key adver
|
||||
| **LinkedIn Ads** | B2B, job title targeting | - | [linkedin-ads.md](../../tools/integrations/linkedin-ads.md) |
|
||||
| **TikTok Ads** | Younger demographics, video | - | [tiktok-ads.md](../../tools/integrations/tiktok-ads.md) |
|
||||
|
||||
For tracking, see also: [ga4.md](../../tools/integrations/ga4.md), [segment.md](../../tools/integrations/segment.md)
|
||||
For tracking setup, see [references/conversion-tracking.md](references/conversion-tracking.md), [ga4.md](../../tools/integrations/ga4.md), [segment.md](../../tools/integrations/segment.md)
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -0,0 +1,361 @@
|
||||
# Conversion Tracking Setup
|
||||
|
||||
How to set up conversion tracking pixels across ad platforms. This guide covers installation, event configuration, and validation — everything a marketer needs to ensure ad spend is properly attributed.
|
||||
|
||||
---
|
||||
|
||||
## Why This Matters
|
||||
|
||||
Without conversion tracking:
|
||||
- Ad platforms can't optimize for your actual goals
|
||||
- You're flying blind on ROAS and CPA
|
||||
- Retargeting audiences can't be built
|
||||
- You'll waste budget on impressions that don't convert
|
||||
|
||||
Get tracking right before spending a dollar on ads.
|
||||
|
||||
---
|
||||
|
||||
## Platform Pixels Overview
|
||||
|
||||
| Platform | Pixel/Tag Name | Events API | Key Events |
|
||||
|----------|---------------|:----------:|------------|
|
||||
| **Google Ads** | Google tag (gtag.js) | Enhanced Conversions | purchase, sign_up, generate_lead |
|
||||
| **Meta** | Meta Pixel + CAPI | Conversions API | Purchase, Lead, ViewContent, AddToCart |
|
||||
| **LinkedIn** | Insight Tag | Conversions API | conversion (URL or event-based) |
|
||||
| **TikTok** | TikTok Pixel | Events API | Purchase, ViewContent, AddToCart, CompleteRegistration |
|
||||
| **Twitter/X** | Twitter Pixel | - | Purchase, SignUp, Download |
|
||||
|
||||
---
|
||||
|
||||
## Google Ads
|
||||
|
||||
### Install the Google tag
|
||||
|
||||
Add to every page, in `<head>`:
|
||||
|
||||
```html
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=AW-XXXXXXXXX"></script>
|
||||
<script>
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'AW-XXXXXXXXX');
|
||||
</script>
|
||||
```
|
||||
|
||||
Replace `AW-XXXXXXXXX` with your Conversion ID from Google Ads > Tools > Conversions.
|
||||
|
||||
### Set up conversion actions
|
||||
|
||||
In Google Ads > Goals > Conversions > New conversion action:
|
||||
|
||||
| Conversion | Category | Value | Count |
|
||||
|-----------|----------|-------|-------|
|
||||
| Purchase | Purchase | Dynamic (order value) | Every |
|
||||
| Sign up / Lead | Sign-up | Fixed ($X estimated value) | One |
|
||||
| Demo request | Lead | Fixed ($X estimated value) | One |
|
||||
| Free trial start | Sign-up | Fixed ($X estimated value) | One |
|
||||
|
||||
### Fire conversion events
|
||||
|
||||
```javascript
|
||||
// Purchase
|
||||
gtag('event', 'conversion', {
|
||||
'send_to': 'AW-XXXXXXXXX/CONVERSION_LABEL',
|
||||
'value': 99.00,
|
||||
'currency': 'USD',
|
||||
'transaction_id': 'ORDER-123'
|
||||
});
|
||||
|
||||
// Lead / Sign up
|
||||
gtag('event', 'conversion', {
|
||||
'send_to': 'AW-XXXXXXXXX/CONVERSION_LABEL',
|
||||
'value': 50.00,
|
||||
'currency': 'USD'
|
||||
});
|
||||
```
|
||||
|
||||
### Enhanced Conversions
|
||||
|
||||
Sends hashed first-party data (email, phone) to improve attribution after cookie restrictions. Enable in Google Ads > Goals > Settings > Enhanced conversions.
|
||||
|
||||
```javascript
|
||||
gtag('set', 'user_data', {
|
||||
'email': 'user@example.com', // auto-hashed by gtag
|
||||
'phone_number': '+11234567890'
|
||||
});
|
||||
```
|
||||
|
||||
### Google Tag Manager alternative
|
||||
|
||||
If using GTM instead of inline gtag.js:
|
||||
1. Install GTM container on all pages
|
||||
2. Create Google Ads conversion tags in GTM
|
||||
3. Set triggers for conversion events (form submissions, purchases)
|
||||
4. Use the Data Layer to pass dynamic values (order amount, transaction ID)
|
||||
5. Test with GTM Preview mode before publishing
|
||||
|
||||
---
|
||||
|
||||
## Meta (Facebook/Instagram)
|
||||
|
||||
### Install the Meta Pixel
|
||||
|
||||
Add to every page, in `<head>`:
|
||||
|
||||
```html
|
||||
<script>
|
||||
!function(f,b,e,v,n,t,s)
|
||||
{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
|
||||
n.callMethod.apply(n,arguments):n.queue.push(arguments)};
|
||||
if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
|
||||
n.queue=[];t=b.createElement(e);t.async=!0;
|
||||
t.src=v;s=b.getElementsByTagName(e)[0];
|
||||
s.parentNode.insertBefore(t,s)}(window, document,'script',
|
||||
'https://connect.facebook.net/en_US/fbevents.js');
|
||||
fbq('init', 'YOUR_PIXEL_ID');
|
||||
fbq('track', 'PageView');
|
||||
</script>
|
||||
```
|
||||
|
||||
Replace `YOUR_PIXEL_ID` from Meta Events Manager.
|
||||
|
||||
### Standard events
|
||||
|
||||
```javascript
|
||||
// View a product or key page
|
||||
fbq('track', 'ViewContent', {
|
||||
content_name: 'Pro Plan',
|
||||
content_category: 'Pricing',
|
||||
value: 29.00,
|
||||
currency: 'USD'
|
||||
});
|
||||
|
||||
// Lead capture (form submit, demo request)
|
||||
fbq('track', 'Lead', {
|
||||
content_name: 'Demo Request',
|
||||
value: 50.00,
|
||||
currency: 'USD'
|
||||
});
|
||||
|
||||
// Purchase
|
||||
fbq('track', 'Purchase', {
|
||||
value: 99.00,
|
||||
currency: 'USD',
|
||||
content_type: 'product',
|
||||
contents: [{ id: 'pro-plan', quantity: 1 }]
|
||||
});
|
||||
|
||||
// Add to cart (e-commerce)
|
||||
fbq('track', 'AddToCart', {
|
||||
content_ids: ['SKU-123'],
|
||||
content_type: 'product',
|
||||
value: 49.00,
|
||||
currency: 'USD'
|
||||
});
|
||||
```
|
||||
|
||||
### Conversions API (CAPI)
|
||||
|
||||
Server-side tracking that works alongside the pixel. Required for accurate tracking after iOS 14+ and cookie restrictions.
|
||||
|
||||
Set up via:
|
||||
- **Direct integration** — send events from your server to Meta's API
|
||||
- **Partner integrations** — Shopify, WooCommerce, Segment, etc. have built-in CAPI support
|
||||
- **Conversions API Gateway** — Meta's managed solution via AWS
|
||||
|
||||
Key: send the same events from both pixel (browser) AND CAPI (server), with a shared `event_id` for deduplication.
|
||||
|
||||
### Aggregated Event Measurement
|
||||
|
||||
Required for iOS 14+ tracking. In Events Manager > Aggregated Event Measurement:
|
||||
1. Verify your domain
|
||||
2. Configure and prioritize your top 8 events in order of business importance
|
||||
3. Purchase should typically be #1, Lead #2
|
||||
|
||||
---
|
||||
|
||||
## LinkedIn
|
||||
|
||||
### Install the Insight Tag
|
||||
|
||||
Add to every page, before `</body>`:
|
||||
|
||||
```html
|
||||
<script type="text/javascript">
|
||||
_linkedin_partner_id = "YOUR_PARTNER_ID";
|
||||
window._linkedin_data_partner_ids = window._linkedin_data_partner_ids || [];
|
||||
window._linkedin_data_partner_ids.push(_linkedin_partner_id);
|
||||
(function(l) {
|
||||
if (!l){window.lintrk = function(a,b){window.lintrk.q.push([a,b])};
|
||||
window.lintrk.q=[]}
|
||||
var s = document.getElementsByTagName("script")[0];
|
||||
var b = document.createElement("script");
|
||||
b.type = "text/javascript";b.async = true;
|
||||
b.src = "https://snap.licdn.com/li.lms-analytics/insight.min.js";
|
||||
s.parentNode.insertBefore(b, s);})(window.lintrk);
|
||||
</script>
|
||||
```
|
||||
|
||||
### Conversion tracking
|
||||
|
||||
LinkedIn supports two methods:
|
||||
|
||||
**URL-based**: Fires when someone visits a specific URL (e.g., `/thank-you`).
|
||||
Set up in Campaign Manager > Analyze > Conversion Tracking > Create Conversion.
|
||||
|
||||
**Event-based**: Fire manually on specific actions:
|
||||
|
||||
```javascript
|
||||
window.lintrk('track', { conversion_id: YOUR_CONVERSION_ID });
|
||||
```
|
||||
|
||||
### LinkedIn CAPI
|
||||
|
||||
For server-side tracking, LinkedIn offers a Conversions API. Set up via partner integrations (Segment, Tealium) or direct API calls. Deduplicates with the Insight Tag automatically when configured correctly.
|
||||
|
||||
---
|
||||
|
||||
## TikTok
|
||||
|
||||
### Install the TikTok Pixel
|
||||
|
||||
Add to every page, in `<head>`:
|
||||
|
||||
```html
|
||||
<script>
|
||||
!function (w, d, t) {
|
||||
w.TiktokAnalyticsObject=t;var ttq=w[t]=w[t]||[];
|
||||
ttq.methods=["page","track","identify","instances","debug","on","off",
|
||||
"once","ready","alias","group","enableCookie","disableCookie","holdConsent",
|
||||
"revokeConsent","grantConsent"],ttq.setAndDefer=function(t,e)
|
||||
{t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}};
|
||||
for(var i=0;i<ttq.methods.length;i++)ttq.setAndDefer(ttq,ttq.methods[i]);
|
||||
ttq.instance=function(t){for(var e=ttq._i[t]||[],n=0;
|
||||
n<ttq.methods.length;n++)ttq.setAndDefer(e,ttq.methods[n]);return e};
|
||||
ttq.load=function(e,n){var r="https://analytics.tiktok.com/i18n/pixel/events.js",
|
||||
o=n&&n.partner;ttq._i=ttq._i||{},ttq._i[e]=[],ttq._i[e]._u=r,
|
||||
ttq._t=ttq._t||{},ttq._t[e]=+new Date,ttq._o=ttq._o||{},
|
||||
ttq._o[e]=n||{};var s=document.createElement("script");
|
||||
s.type="text/javascript",s.async=!0,s.src=r+"?sdkid="+e+"&lib="+t;
|
||||
var a=document.getElementsByTagName("script")[0];
|
||||
a.parentNode.insertBefore(s,a)};
|
||||
ttq.load('YOUR_PIXEL_ID');
|
||||
ttq.page();
|
||||
}(window, document, 'ttq');
|
||||
</script>
|
||||
```
|
||||
|
||||
### Standard events
|
||||
|
||||
```javascript
|
||||
// View content
|
||||
ttq.track('ViewContent', {
|
||||
content_id: 'pro-plan',
|
||||
content_type: 'product',
|
||||
content_name: 'Pro Plan',
|
||||
value: 29.00,
|
||||
currency: 'USD'
|
||||
});
|
||||
|
||||
// Complete registration / sign up
|
||||
ttq.track('CompleteRegistration', {
|
||||
content_name: 'Free Trial'
|
||||
});
|
||||
|
||||
// Purchase
|
||||
ttq.track('Purchase', {
|
||||
content_id: 'pro-plan',
|
||||
content_type: 'product',
|
||||
value: 99.00,
|
||||
currency: 'USD',
|
||||
quantity: 1
|
||||
});
|
||||
|
||||
// Add to cart
|
||||
ttq.track('AddToCart', {
|
||||
content_id: 'SKU-123',
|
||||
content_type: 'product',
|
||||
value: 49.00,
|
||||
currency: 'USD'
|
||||
});
|
||||
```
|
||||
|
||||
### Events API (server-side)
|
||||
|
||||
TikTok's Events API works like Meta's CAPI — send the same events from your server for better attribution. Use `event_id` for deduplication with browser pixel events.
|
||||
|
||||
### Advanced Matching
|
||||
|
||||
Pass hashed user data for better attribution:
|
||||
|
||||
```javascript
|
||||
ttq.identify({
|
||||
email: 'user@example.com', // auto-hashed
|
||||
phone_number: '+11234567890'
|
||||
});
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Validation Checklist
|
||||
|
||||
After installing any pixel, verify before going live:
|
||||
|
||||
### Browser-side checks
|
||||
|
||||
- [ ] Pixel fires on every page (check via browser extension)
|
||||
- [ ] Conversion events fire at the right moment (after confirmed action, not on button click)
|
||||
- [ ] Event parameters contain correct values (currency, amount, content IDs)
|
||||
- [ ] No duplicate events firing on the same action
|
||||
- [ ] Events fire on both desktop and mobile
|
||||
|
||||
### Platform-side checks
|
||||
|
||||
- [ ] Events appear in the platform's event manager/diagnostics
|
||||
- [ ] Test conversions show correct values
|
||||
- [ ] Event match quality is acceptable (Meta: score > 6)
|
||||
- [ ] Server-side events are deduplicating with browser events (not double-counting)
|
||||
|
||||
### Debugging tools
|
||||
|
||||
| Platform | Tool |
|
||||
|----------|------|
|
||||
| Google | Google Tag Assistant, Chrome DevTools Network tab |
|
||||
| Meta | Meta Pixel Helper (Chrome extension), Events Manager Test Events |
|
||||
| LinkedIn | Insight Tag Validator in Campaign Manager |
|
||||
| TikTok | TikTok Pixel Helper (Chrome extension), Events Manager |
|
||||
| All | GTM Preview Mode (if using Google Tag Manager) |
|
||||
|
||||
---
|
||||
|
||||
## Common Mistakes
|
||||
|
||||
- **Firing purchase events on button click instead of confirmed payment** — always fire on the success/thank-you page or after server confirmation
|
||||
- **Missing deduplication between pixel and server events** — without a shared `event_id`, you'll double-count conversions
|
||||
- **Not testing on mobile** — many pixels break on mobile browsers or in-app webviews
|
||||
- **Hardcoded test values** — remove test transaction amounts before going live
|
||||
- **Forgetting to exclude internal traffic** — your team's visits inflate conversion data
|
||||
- **Installing pixels without consent management** — GDPR/CCPA require user consent before firing tracking pixels in applicable regions
|
||||
- **Pixel installed but no conversion actions created** — the pixel collects data, but the ad platform won't optimize without defined conversion actions
|
||||
|
||||
---
|
||||
|
||||
## When to Use Server-Side Tracking
|
||||
|
||||
Browser-only tracking is increasingly unreliable due to:
|
||||
- iOS 14+ App Tracking Transparency
|
||||
- Third-party cookie deprecation
|
||||
- Ad blockers (30%+ of tech audiences)
|
||||
|
||||
**Use server-side (CAPI/Events API) when:**
|
||||
- Running Meta or TikTok ads (strongly recommended)
|
||||
- Your audience is tech-savvy (higher ad blocker usage)
|
||||
- You need accurate purchase/revenue attribution
|
||||
- You're spending >$5K/month on any platform
|
||||
|
||||
**Server-side is optional when:**
|
||||
- Running Google Ads only (Enhanced Conversions covers most gaps)
|
||||
- Low ad spend / testing phase
|
||||
- B2B with LinkedIn only (Insight Tag is still reliable)
|
||||
@@ -2,7 +2,7 @@
|
||||
name: social-content
|
||||
description: "When the user wants help creating, scheduling, or optimizing social media content for LinkedIn, Twitter/X, Instagram, TikTok, Facebook, or other platforms. Also use when the user mentions 'LinkedIn post,' 'Twitter thread,' 'social media,' 'content calendar,' 'social scheduling,' 'engagement,' 'viral content,' 'what should I post,' 'repurpose this content,' 'tweet ideas,' 'LinkedIn carousel,' 'social media strategy,' or 'grow my following.' Use this for any social media content creation, repurposing, or scheduling task. For broader content strategy, see content-strategy."
|
||||
metadata:
|
||||
version: 1.1.0
|
||||
version: 1.2.0
|
||||
---
|
||||
|
||||
# Social Content
|
||||
@@ -49,6 +49,7 @@ Gather this context (ask if not provided):
|
||||
| Facebook | Communities, local businesses | 1-2x/day | Groups, native video |
|
||||
|
||||
**For detailed platform strategies**: See [references/platforms.md](references/platforms.md)
|
||||
|
||||
**For hashtag limits and character counts**: See [references/platform-limits.md](references/platform-limits.md)
|
||||
|
||||
---
|
||||
@@ -108,7 +109,7 @@ The first line determines whether anyone reads the rest.
|
||||
|
||||
## Content Repurposing System
|
||||
|
||||
Turn one piece of content into many:
|
||||
Turn one piece of content into many. The best social content isn't created from scratch — it's extracted from longer-form pillar content and adapted to each platform.
|
||||
|
||||
### Blog Post → Social Content
|
||||
|
||||
@@ -120,13 +121,61 @@ Turn one piece of content into many:
|
||||
| Instagram | Carousel with visuals |
|
||||
| Instagram | Reel summarizing the post |
|
||||
|
||||
### Podcast / Video → Social Content
|
||||
|
||||
Extract "content atoms" — self-contained moments from any long-form content that work on their own:
|
||||
|
||||
| Atom Type | What to Look For | Best Platform |
|
||||
|-----------|-----------------|---------------|
|
||||
| Quotable moment | A bold claim, hot take, or memorable line (15-60 sec) | Twitter/X, LinkedIn, TikTok |
|
||||
| Story arc | A complete mini-story with setup, conflict, resolution (60-90 sec) | Instagram Reels, TikTok, YouTube Shorts |
|
||||
| Tactical tip | A specific how-to or framework explained clearly (30-60 sec) | LinkedIn, YouTube Shorts |
|
||||
| Controversial take | A contrarian opinion that sparks debate | Twitter/X, LinkedIn |
|
||||
| Data/stat callout | A surprising number or research finding | LinkedIn carousel, Twitter/X |
|
||||
| Behind-the-scenes | Authentic, unpolished moments | Instagram Stories, TikTok |
|
||||
|
||||
**Podcast repurposing workflow:**
|
||||
1. **Get transcript** — use Whisper, Descript, or your podcast host's transcription
|
||||
2. **Mark timestamps** — flag the 5-10 best moments while listening or scanning transcript
|
||||
3. **Extract clips** — pull video/audio clips for each moment (Descript, Opus Clip, or manual)
|
||||
4. **Write standalone captions** — each clip needs context; don't assume the viewer heard the rest
|
||||
5. **Add subtitles** — most social video is watched without sound
|
||||
6. **Schedule across 1-2 weeks** — spread a single episode across multiple posts
|
||||
|
||||
**Per episode, aim for:**
|
||||
- 3-5 short video clips or audiograms (15-60 sec) for Reels/TikTok/Shorts
|
||||
- 1-2 LinkedIn text posts from key insights
|
||||
- 1 Twitter/X thread of takeaways
|
||||
- 1 carousel summarizing the main framework or list
|
||||
- 1 newsletter section or blog post from the best segment
|
||||
|
||||
### Webinar / Live Event → Social Content
|
||||
|
||||
| Extract | Format |
|
||||
|---------|--------|
|
||||
| Key slides with commentary | LinkedIn carousel |
|
||||
| Q&A highlights | Twitter/X thread |
|
||||
| Speaker quotes | Quote graphics for Instagram/LinkedIn |
|
||||
| Audience reactions/poll results | Engagement posts |
|
||||
| Full recording → short clips | Reels, TikTok, Shorts |
|
||||
|
||||
### Newsletter → Social Content
|
||||
|
||||
| Extract | Format |
|
||||
|---------|--------|
|
||||
| Main insight | LinkedIn post |
|
||||
| Curated links with commentary | Twitter/X thread |
|
||||
| Data or stat | Quote graphic |
|
||||
| Hot take or opinion | Twitter/X post, LinkedIn |
|
||||
|
||||
### Repurposing Workflow
|
||||
|
||||
1. **Create pillar content** (blog, video, podcast)
|
||||
2. **Extract key insights** (3-5 per piece)
|
||||
3. **Adapt to each platform** (format and tone)
|
||||
4. **Schedule across the week** (spread distribution)
|
||||
5. **Update and reshare** (evergreen content can repeat)
|
||||
1. **Create pillar content** (blog, video, podcast, webinar, newsletter)
|
||||
2. **Extract content atoms** (5-10 per piece — quotes, stories, tips, data)
|
||||
3. **Adapt to each platform** (format, length, and tone)
|
||||
4. **Write standalone captions** (each post must work without context)
|
||||
5. **Schedule across the week** (spread distribution, don't dump all at once)
|
||||
6. **Update and reshare** (evergreen content can repeat every 3-6 months)
|
||||
|
||||
---
|
||||
|
||||
|
||||
+4
-4
@@ -61,7 +61,7 @@ Quick reference for AI agents to discover tool capabilities and integration meth
|
||||
| meta-ads | Ads | ✓ | - | [✓](clis/meta-ads.js) | ✓ | [meta-ads.md](integrations/meta-ads.md) |
|
||||
| linkedin-ads | Ads | ✓ | - | [✓](clis/linkedin-ads.js) | - | [linkedin-ads.md](integrations/linkedin-ads.md) |
|
||||
| tiktok-ads | Ads | ✓ | - | [✓](clis/tiktok-ads.js) | ✓ | [tiktok-ads.md](integrations/tiktok-ads.md) |
|
||||
| zapier | Automation | ✓ | ✓ | [✓](clis/zapier.js) | - | [zapier.md](integrations/zapier.md) |
|
||||
| zapier | Automation | ✓ | ✓ | [✓](clis/zapier.js) | ✓ | [zapier.md](integrations/zapier.md) |
|
||||
| hotjar | CRO | ✓ | - | [✓](clis/hotjar.js) | - | [hotjar.md](integrations/hotjar.md) |
|
||||
| optimizely | A/B Testing | ✓ | - | [✓](clis/optimizely.js) | ✓ | [optimizely.md](integrations/optimizely.md) |
|
||||
| calendly | Scheduling | ✓ | - | [✓](clis/calendly.js) | - | [calendly.md](integrations/calendly.md) |
|
||||
@@ -202,9 +202,9 @@ Workflow automation and integration platforms.
|
||||
|
||||
| Tool | Best For | MCP Available |
|
||||
|------|----------|:-------------:|
|
||||
| **zapier** | No-code integrations | ✓ |
|
||||
| **zapier** | No-code integrations + SDK for 8,000+ apps | ✓ |
|
||||
|
||||
**Agent recommendation**: Zapier for connecting tools without code.
|
||||
**Agent recommendation**: Zapier SDK for agents that need to interact with any app directly. Zaps for always-on automations.
|
||||
|
||||
### CRO & A/B Testing
|
||||
|
||||
@@ -456,7 +456,7 @@ These tools have Model Context Protocol servers available, enabling direct agent
|
||||
- **mailchimp** - Email campaign management
|
||||
- **google-ads** - Ad campaign management
|
||||
- **resend** - Transactional email sending
|
||||
- **zapier** - Workflow automation
|
||||
- **zapier** - Workflow automation + SDK for 8,000+ app integrations
|
||||
- **zoominfo** - B2B contacts and intent data
|
||||
- **clay** - Data enrichment and outbound automation
|
||||
- **supermetrics** - Cross-platform marketing data
|
||||
|
||||
@@ -122,7 +122,9 @@ async function main() {
|
||||
case 'hooks':
|
||||
switch (sub) {
|
||||
case 'send': {
|
||||
// Sends a POST to a Zapier webhook catch hook URL (e.g. https://hooks.zapier.com/hooks/catch/...)
|
||||
if (!args.url) { result = { error: '--url required' }; break }
|
||||
if (!args.url.startsWith('https://')) { result = { error: '--url must use https://' }; break }
|
||||
if (!args.data) { result = { error: '--data required (JSON string)' }; break }
|
||||
let data
|
||||
try {
|
||||
|
||||
+129
-35
@@ -1,6 +1,6 @@
|
||||
# Zapier
|
||||
|
||||
Workflow automation platform connecting apps without code.
|
||||
Workflow automation platform connecting 8,000+ apps. The Zapier SDK gives AI agents direct access to any app's actions without building OAuth flows or reverse-engineering APIs.
|
||||
|
||||
## Capabilities
|
||||
|
||||
@@ -8,16 +8,110 @@ Workflow automation platform connecting apps without code.
|
||||
|-------------|-----------|-------|
|
||||
| API | ✓ | REST API for Zaps, tasks, and webhooks |
|
||||
| MCP | ✓ | Available via Zapier MCP server |
|
||||
| CLI | - | Not available |
|
||||
| SDK | - | API and webhooks only |
|
||||
| CLI | ✓ | `@zapier/zapier-sdk-cli` for app discovery and type generation |
|
||||
| SDK | ✓ | `@zapier/zapier-sdk` — TypeScript SDK for 8,000+ app integrations |
|
||||
|
||||
## Authentication
|
||||
|
||||
### Legacy API (Zaps management)
|
||||
|
||||
- **Type**: API Key
|
||||
- **Header**: `X-API-Key: {api_key}`
|
||||
- **Get key**: Settings > API in Zapier account
|
||||
|
||||
## Common Agent Operations
|
||||
### SDK Authentication
|
||||
|
||||
**Browser-based login (development):**
|
||||
```bash
|
||||
npx zapier-sdk login
|
||||
```
|
||||
|
||||
**Server-side (production):**
|
||||
- Client Credentials — store as environment variables
|
||||
- Direct token — set `ZAPIER_CREDENTIALS` env var
|
||||
|
||||
Browser-based login only works locally. Use Client Credentials for any server-side deployment.
|
||||
|
||||
## SDK Quick Start
|
||||
|
||||
### Install
|
||||
|
||||
```bash
|
||||
npm install @zapier/zapier-sdk
|
||||
npm install -D @zapier/zapier-sdk-cli @types/node typescript
|
||||
npm pkg set type=module
|
||||
```
|
||||
|
||||
### Initialize
|
||||
|
||||
```typescript
|
||||
import { createZapierSdk } from "@zapier/zapier-sdk";
|
||||
const zapier = createZapierSdk();
|
||||
```
|
||||
|
||||
### CLI Commands
|
||||
|
||||
| Command | Purpose |
|
||||
|---------|---------|
|
||||
| `npx zapier-sdk login` | Authenticate (dev only) |
|
||||
| `npx zapier-sdk list-apps --search "query"` | Search available apps |
|
||||
| `npx zapier-sdk list-actions APP_KEY` | List actions for an app |
|
||||
| `npx zapier-sdk add [app-key]` | Generate TypeScript types |
|
||||
|
||||
### SDK Methods
|
||||
|
||||
| Method | Purpose |
|
||||
|--------|---------|
|
||||
| `zapier.listConnections()` | List authenticated app connections |
|
||||
| `zapier.findFirstConnection()` | Find a specific connection |
|
||||
| `zapier.runAction()` | Execute an action on a connected app |
|
||||
| `zapier.apps.slack()` | App proxy pattern for clean syntax |
|
||||
| `zapier.fetch()` | Custom authenticated API calls |
|
||||
|
||||
### Example: Send a Slack Message
|
||||
|
||||
```typescript
|
||||
import { createZapierSdk } from "@zapier/zapier-sdk";
|
||||
|
||||
const zapier = createZapierSdk();
|
||||
const slack = await zapier.apps.slack();
|
||||
|
||||
await slack.sendChannelMessage({
|
||||
channel: "#marketing",
|
||||
message: "Campaign launched!"
|
||||
});
|
||||
```
|
||||
|
||||
### Example: Create a HubSpot Contact
|
||||
|
||||
```typescript
|
||||
const hubspot = await zapier.apps.hubspot();
|
||||
|
||||
await hubspot.createContact({
|
||||
email: "lead@example.com",
|
||||
firstName: "Jane",
|
||||
lastName: "Doe"
|
||||
});
|
||||
```
|
||||
|
||||
### Pagination
|
||||
|
||||
Use `.items()` for large datasets:
|
||||
|
||||
```typescript
|
||||
const contacts = await hubspot.listContacts({ maxItems: 100 });
|
||||
for await (const contact of contacts.items()) {
|
||||
console.log(contact.email);
|
||||
}
|
||||
```
|
||||
|
||||
### Governance Note
|
||||
|
||||
Direct API calls via `zapier.fetch()` are not subject to org app/action restriction policies. Use pre-built actions where possible if your org has governance requirements.
|
||||
|
||||
---
|
||||
|
||||
## Zaps API (Legacy)
|
||||
|
||||
### List Zaps
|
||||
|
||||
@@ -82,30 +176,29 @@ POST https://hooks.zapier.com/hooks/catch/{account_id}/{hook_id}/
|
||||
|
||||
## Common Marketing Automations
|
||||
|
||||
### Lead capture to CRM
|
||||
```
|
||||
Typeform → Zapier → HubSpot
|
||||
### With SDK (recommended for agents)
|
||||
|
||||
```typescript
|
||||
// Lead capture to CRM
|
||||
const hubspot = await zapier.apps.hubspot();
|
||||
await hubspot.createContact({ email, firstName, lastName });
|
||||
|
||||
// New customer notification
|
||||
const slack = await zapier.apps.slack();
|
||||
await slack.sendChannelMessage({ channel: "#revenue", message: `New customer: ${email}` });
|
||||
|
||||
// Add to email sequence
|
||||
const customerio = await zapier.apps.customerio();
|
||||
await customerio.createOrUpdatePerson({ email, plan: "pro" });
|
||||
```
|
||||
|
||||
### New customer notifications
|
||||
```
|
||||
Stripe (new customer) → Zapier → Slack
|
||||
```
|
||||
### With Zaps (no-code)
|
||||
|
||||
### Email sequence triggers
|
||||
```
|
||||
Form submission → Zapier → Customer.io
|
||||
```
|
||||
|
||||
### Social proof automation
|
||||
```
|
||||
New review → Zapier → Twitter/Slack
|
||||
```
|
||||
|
||||
### Referral tracking
|
||||
```
|
||||
New referral → Zapier → Spreadsheet + Slack
|
||||
```
|
||||
- Typeform → Zapier → HubSpot (lead capture)
|
||||
- Stripe → Zapier → Slack (new customer alerts)
|
||||
- Form submission → Zapier → Customer.io (email sequences)
|
||||
- New review → Zapier → Slack (social proof)
|
||||
- New referral → Zapier → Spreadsheet + Slack (referral tracking)
|
||||
|
||||
## Webhook Payload Structure
|
||||
|
||||
@@ -123,24 +216,24 @@ When sending to Zapier, structure data as flat JSON:
|
||||
|
||||
## Key Concepts
|
||||
|
||||
- **Zap** - Automated workflow
|
||||
- **Zap** - Automated workflow (no-code)
|
||||
- **SDK** - Programmatic access to 8,000+ app integrations
|
||||
- **Trigger** - Event that starts a Zap
|
||||
- **Action** - Task performed by Zap
|
||||
- **Action** - Task performed by Zap or SDK
|
||||
- **Task** - Single action execution
|
||||
- **Filter** - Conditional logic
|
||||
- **Path** - Branching logic
|
||||
- **Connection** - Authenticated link to an app (shared between Zaps and SDK)
|
||||
|
||||
## When to Use
|
||||
|
||||
- Connecting marketing tools without code
|
||||
- Automating lead routing
|
||||
- Syncing data between platforms
|
||||
- Triggering notifications
|
||||
- Building marketing workflows
|
||||
- **SDK**: When an AI agent needs to interact with any app directly — send messages, create records, sync data
|
||||
- **Zaps**: When you need always-on automation without code
|
||||
- **Webhooks**: When triggering workflows from your own app
|
||||
- **API**: When managing Zaps programmatically
|
||||
|
||||
## Rate Limits
|
||||
|
||||
- 100 requests per minute
|
||||
- API: 100 requests per minute
|
||||
- SDK: Rate limits per connected app
|
||||
- Task limits by plan tier
|
||||
|
||||
## Relevant Skills
|
||||
@@ -148,3 +241,4 @@ When sending to Zapier, structure data as flat JSON:
|
||||
- email-sequence
|
||||
- analytics-tracking
|
||||
- referral-program
|
||||
- revops
|
||||
|
||||
Reference in New Issue
Block a user