start-vibing-stacks 2.28.0 → 2.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/dist/migrate.js +81 -43
  2. package/dist/setup.js +20 -1
  3. package/package.json +1 -1
  4. package/stacks/_shared/ads-agents/README.md +452 -0
  5. package/stacks/_shared/ads-agents/RESEARCH-REPORT.md +157 -0
  6. package/stacks/_shared/ads-agents/SKILL.md +210 -0
  7. package/stacks/_shared/ads-agents/SKILLS-UPDATE-REPORT.md +255 -0
  8. package/stacks/_shared/ads-agents/agents/audit-budget.md +116 -0
  9. package/stacks/_shared/ads-agents/agents/audit-compliance.md +131 -0
  10. package/stacks/_shared/ads-agents/agents/audit-creative.md +127 -0
  11. package/stacks/_shared/ads-agents/agents/audit-google.md +113 -0
  12. package/stacks/_shared/ads-agents/agents/audit-meta.md +112 -0
  13. package/stacks/_shared/ads-agents/agents/audit-tracking.md +134 -0
  14. package/stacks/_shared/ads-agents/agents/copy-writer.md +188 -0
  15. package/stacks/_shared/ads-agents/agents/creative-strategist.md +199 -0
  16. package/stacks/_shared/ads-agents/agents/format-adapter.md +175 -0
  17. package/stacks/_shared/ads-agents/agents/visual-designer.md +245 -0
  18. package/stacks/_shared/ads-agents/references/additional-platforms.md +106 -0
  19. package/stacks/_shared/ads-agents/references/benchmarks.md +257 -0
  20. package/stacks/_shared/ads-agents/references/bidding-strategies.md +333 -0
  21. package/stacks/_shared/ads-agents/references/brand-dna-template.md +190 -0
  22. package/stacks/_shared/ads-agents/references/budget-allocation.md +150 -0
  23. package/stacks/_shared/ads-agents/references/compliance.md +280 -0
  24. package/stacks/_shared/ads-agents/references/conversion-tracking.md +246 -0
  25. package/stacks/_shared/ads-agents/references/copy-frameworks.md +187 -0
  26. package/stacks/_shared/ads-agents/references/funnel-content-copy-rules.md +44 -0
  27. package/stacks/_shared/ads-agents/references/gaql-notes.md +49 -0
  28. package/stacks/_shared/ads-agents/references/google-audit.md +217 -0
  29. package/stacks/_shared/ads-agents/references/google-creative-specs.md +119 -0
  30. package/stacks/_shared/ads-agents/references/image-providers.md +133 -0
  31. package/stacks/_shared/ads-agents/references/linkedin-audit.md +141 -0
  32. package/stacks/_shared/ads-agents/references/linkedin-creative-specs.md +129 -0
  33. package/stacks/_shared/ads-agents/references/mcp-integration.md +125 -0
  34. package/stacks/_shared/ads-agents/references/meta-audit.md +141 -0
  35. package/stacks/_shared/ads-agents/references/meta-creative-specs.md +134 -0
  36. package/stacks/_shared/ads-agents/references/microsoft-audit.md +158 -0
  37. package/stacks/_shared/ads-agents/references/microsoft-creative-specs.md +123 -0
  38. package/stacks/_shared/ads-agents/references/platform-specs.md +276 -0
  39. package/stacks/_shared/ads-agents/references/scoring-system.md +169 -0
  40. package/stacks/_shared/ads-agents/references/tiktok-audit.md +165 -0
  41. package/stacks/_shared/ads-agents/references/tiktok-creative-specs.md +139 -0
  42. package/stacks/_shared/ads-agents/references/voice-to-style.md +87 -0
  43. package/stacks/_shared/ads-agents/references/youtube-creative-specs.md +134 -0
  44. package/stacks/_shared/ads-agents/skills/ads-apple/SKILL.md +225 -0
  45. package/stacks/_shared/ads-agents/skills/ads-audit/SKILL.md +108 -0
  46. package/stacks/_shared/ads-agents/skills/ads-budget/SKILL.md +198 -0
  47. package/stacks/_shared/ads-agents/skills/ads-competitor/SKILL.md +198 -0
  48. package/stacks/_shared/ads-agents/skills/ads-create/SKILL.md +198 -0
  49. package/stacks/_shared/ads-agents/skills/ads-creative/SKILL.md +208 -0
  50. package/stacks/_shared/ads-agents/skills/ads-dna/SKILL.md +245 -0
  51. package/stacks/_shared/ads-agents/skills/ads-generate/SKILL.md +173 -0
  52. package/stacks/_shared/ads-agents/skills/ads-google/SKILL.md +192 -0
  53. package/stacks/_shared/ads-agents/skills/ads-landing/SKILL.md +186 -0
  54. package/stacks/_shared/ads-agents/skills/ads-linkedin/SKILL.md +200 -0
  55. package/stacks/_shared/ads-agents/skills/ads-math/SKILL.md +216 -0
  56. package/stacks/_shared/ads-agents/skills/ads-meta/SKILL.md +167 -0
  57. package/stacks/_shared/ads-agents/skills/ads-microsoft/SKILL.md +163 -0
  58. package/stacks/_shared/ads-agents/skills/ads-photoshoot/SKILL.md +220 -0
  59. package/stacks/_shared/ads-agents/skills/ads-plan/SKILL.md +176 -0
  60. package/stacks/_shared/ads-agents/skills/ads-test/SKILL.md +199 -0
  61. package/stacks/_shared/ads-agents/skills/ads-tiktok/SKILL.md +190 -0
  62. package/stacks/_shared/ads-agents/skills/ads-youtube/SKILL.md +199 -0
  63. package/stacks/_shared/hooks/_state.ts +8 -2
  64. package/stacks/_shared/hooks/plan-gate.ts +138 -0
  65. package/stacks/_shared/memories/funnel-content-copy.md +81 -0
  66. package/templates/CLAUDE-python.md +6 -0
@@ -0,0 +1,190 @@
1
+ # Brand DNA Template
2
+
3
+ <!-- Updated: 2026-03-12 -->
4
+ <!-- Used by: ads-dna (extraction), ads-create (consumption), ads-generate (style injection) -->
5
+
6
+ ## Purpose
7
+
8
+ Defines the canonical schema for `brand-profile.json`. All agents that produce or
9
+ consume brand data must use these exact field names and value types.
10
+
11
+ ---
12
+
13
+ ## JSON Schema
14
+
15
+ ```json
16
+ {
17
+ "schema_version": "1.0",
18
+ "brand_name": "string",
19
+ "website_url": "string (full URL including https://)",
20
+ "extracted_at": "ISO-8601 timestamp (e.g. 2026-03-12T14:30:00Z)",
21
+
22
+ "voice": {
23
+ "formal_casual": 7,
24
+ "rational_emotional": 4,
25
+ "playful_serious": 5,
26
+ "bold_subtle": 8,
27
+ "traditional_innovative": 6,
28
+ "expert_accessible": 5,
29
+ "descriptors": ["authoritative", "warm", "direct"]
30
+ },
31
+
32
+ "colors": {
33
+ "primary": "#1A2E4A",
34
+ "secondary": ["#F4A623", "#FFFFFF"],
35
+ "forbidden": ["#FF0000"],
36
+ "background": "#F9F9F9",
37
+ "text": "#1A1A1A"
38
+ },
39
+
40
+ "typography": {
41
+ "heading_font": "Inter",
42
+ "body_font": "Source Sans Pro",
43
+ "pairing_descriptor": "modern sans-serif, clean and readable"
44
+ },
45
+
46
+ "imagery": {
47
+ "style": "professional photography",
48
+ "subjects": ["people using product", "clean product shots", "diverse workforce"],
49
+ "composition": "clean backgrounds, good negative space",
50
+ "forbidden": ["stock photo clichés", "corporate handshakes", "cheesy smiles"]
51
+ },
52
+
53
+ "aesthetic": {
54
+ "mood_keywords": ["trustworthy", "modern", "approachable"],
55
+ "texture": "minimal, flat",
56
+ "negative_space": "generous"
57
+ },
58
+
59
+ "brand_values": ["transparency", "innovation", "customer-first"],
60
+
61
+ "target_audience": {
62
+ "age_range": "28-45",
63
+ "profession": "marketing managers and small business owners",
64
+ "pain_points": ["time-consuming reporting", "unclear ROI"],
65
+ "aspirations": ["grow efficiently", "look professional"]
66
+ },
67
+
68
+ "screenshots": {
69
+ "homepage": "./brand-screenshots/example_com_desktop.png",
70
+ "secondary": ["./brand-screenshots/example_com_pricing_desktop.png"]
71
+ }
72
+ }
73
+ ```
74
+
75
+ ---
76
+
77
+ ## Field Reference
78
+
79
+ ### Voice Axes (1-10 scale)
80
+
81
+ Score interpretation: 1 = extreme left pole, 10 = extreme right pole, 5 = neutral.
82
+
83
+ | Field | 1 (Left) | 10 (Right) | Ad Implication |
84
+ |-------|----------|------------|----------------|
85
+ | `formal_casual` | Very formal, corporate | Very casual, conversational | Headlines tone |
86
+ | `rational_emotional` | Data-driven, logical | Emotionally evocative | Story vs stats |
87
+ | `playful_serious` | Fun, humorous | Serious, no-nonsense | CTA phrasing |
88
+ | `bold_subtle` | Big claims, loud | Understated, nuanced | Visual hierarchy |
89
+ | `traditional_innovative` | Classic, established | Cutting-edge, disruptive | Imagery style |
90
+ | `expert_accessible` | Deep expertise, jargon | Everyone can understand | Copy complexity |
91
+
92
+ `descriptors` (array of 3-5 strings): Free-form adjectives capturing tone not covered by axes.
93
+
94
+ ### Colors
95
+
96
+ - `primary`: Main brand color. **Always inject into image generation prompts.**
97
+ - `secondary`: Supporting palette. Use for accents in generation prompts.
98
+ - `forbidden`: Colors to explicitly exclude from prompts (e.g., competitor brand colors).
99
+ - `background` / `text`: Digital UI colors (less relevant for ad image generation).
100
+
101
+ **Null handling:** If extraction fails for a color, set to `null`. Agents must skip null
102
+ color injection rather than defaulting to arbitrary colors.
103
+
104
+ ### Typography
105
+
106
+ Used by `copy-writer` agent for tone calibration. Not injected into image prompts
107
+ (typography is handled by ad platform copy fields, not image generation).
108
+
109
+ ### Imagery
110
+
111
+ - `style`: Main descriptor passed to image generation (e.g., "professional photography",
112
+ "illustration", "flat design").
113
+ - `subjects`: Array injected as subject guidance in prompts.
114
+ - `composition`: Passed verbatim as a composition constraint.
115
+ - `forbidden`: Converted to negative prompt modifiers (e.g., "no corporate handshakes").
116
+
117
+ ### Aesthetic
118
+
119
+ - `mood_keywords`: Injected directly into generation prompts as atmosphere descriptors.
120
+ - `texture`: Passed as texture preference.
121
+ - `negative_space`: "generous" → "plenty of white space, uncluttered composition".
122
+
123
+ ### Screenshots (optional, populated by `/ads dna`)
124
+
125
+ - `homepage`: Desktop screenshot of homepage. **Primary visual style reference** for
126
+ `visual-designer` agent. When present, generation auto-uses `gemini-3.1-flash-image-preview`
127
+ (Nano Banana 2) for better brand style-transfer.
128
+ - `secondary`: Additional pages (pricing, about, product). Supplemental context.
129
+ - **If field absent**: `visual-designer` falls back to text-only generation (`gemini-2.5-flash-image`).
130
+ - **If field present but file missing on disk**: `visual-designer` logs a warning and falls back gracefully.
131
+ - Set by `ads-dna` Step 2b. Omitted entirely if screenshot capture failed or `--quick` was used.
132
+
133
+ ---
134
+
135
+ ## Extraction Guide
136
+
137
+ ### Pages to scan (in order)
138
+
139
+ 1. **Homepage**: Primary brand impression, dominant colors, hero headline tone
140
+ 2. **About / Our Story**: Brand values, voice descriptors, team photography style
141
+ 3. **Product / Service page**: Imagery style, composition, subject matter
142
+ 4. **Existing ads** (if accessible via Meta Ad Library or Google Ads Transparency): Override
143
+
144
+ ### CSS extraction targets
145
+
146
+ ```
147
+ background-color, color → colors.primary / secondary
148
+ font-family → typography.heading_font / body_font
149
+ @import url (Google Fonts) → typography (font name from URL path)
150
+ og:image meta tag → imagery.style (analyze dominant visual)
151
+ ```
152
+
153
+ ### Voice scoring heuristics
154
+
155
+ | Signal | Scoring |
156
+ |--------|---------|
157
+ | Uses "you" and "your" frequently | formal_casual +2 (casual) |
158
+ | Industry jargon in hero text | expert_accessible -2 (expert) |
159
+ | Short sentences (≤10 words) | bold_subtle +1 (bold) |
160
+ | Testimonials lead with emotion | rational_emotional +2 (emotional) |
161
+ | "Trusted by 10,000+ companies" | traditional_innovative -1 (traditional) |
162
+
163
+ ### Fallback heuristics
164
+
165
+ - **No Google Fonts detected**: Set `typography.heading_font` to "system-ui"
166
+ - **Sparse content (< 200 words)**: Mark `extracted_at` note: "low confidence extraction"
167
+ - **Dark mode site**: If background is dark (#333 or darker), swap `background` and `text`
168
+ - **Cannot extract primary color**: Use most prominent color from og:image analysis
169
+
170
+ ---
171
+
172
+ ## Usage in Generation Prompts
173
+
174
+ When building image generation prompts, inject brand DNA as:
175
+
176
+ ```
177
+ "[subject], [imagery.style], [imagery.composition],
178
+ brand colors [colors.primary] and [colors.secondary[0]],
179
+ [aesthetic.mood_keywords joined by comma] atmosphere,
180
+ [aesthetic.texture] texture, [aesthetic.negative_space] composition,
181
+ no [imagery.forbidden joined by comma]"
182
+ ```
183
+
184
+ Example output:
185
+ ```
186
+ "person using laptop, professional photography, clean backgrounds good negative space,
187
+ brand colors #1A2E4A and #F4A623, trustworthy modern approachable atmosphere,
188
+ minimal flat texture, generous white space composition,
189
+ no stock photo clichés, no corporate handshakes"
190
+ ```
@@ -0,0 +1,150 @@
1
+ # Budget Allocation & Scaling Framework
2
+
3
+ <!-- Updated: 2026-02-10 -->
4
+ <!-- Sources: Google Research PDF 2, Claude Research, Gemini Research -->
5
+
6
+ ## Platform Selection Matrix by Business Type
7
+
8
+ | Business Type | Platform 1 | Platform 2 | Platform 3 | Other | Min Monthly | Primary KPI | Time to Profit |
9
+ |--------------|------------|------------|------------|-------|-------------|-------------|---------------|
10
+ | SaaS B2B | Google 35-45% | LinkedIn 30-40% | Meta 15-25% | YouTube 10% | $5,000 | Pipeline ROI, LTV:CAC | 3-6 months |
11
+ | E-commerce DTC | Meta 50-68% | Google PMax 23-30% | TikTok 5-15% | Email 5% | $3,000 | ROAS, MER, POAS | 0-2 months |
12
+ | Local Service | Google LSA/Search 60% | Meta 30% | Bing 10% | N/A | $1,500 | Cost Per Lead/Booking | 1 month |
13
+ | B2B Enterprise | LinkedIn 39-60% | Google 20-35% | ABM Display 15-20% | Programmatic 11% | $10,000 | Pipeline, SQLs | 6-12 months |
14
+ | Info Products | YouTube 40% | Meta 40% | Email 20% | N/A | $2,000 | ROAS, Webinar CPL | 1-3 months |
15
+ | Mobile App | Apple Search 30% | Google App 30% | Meta/TikTok 40% | N/A | $5,000 | CPI, LTV, D7 Retention | 3-6 months |
16
+ | Real Estate | Meta Lead Forms 50% | Google Search 40% | LinkedIn 10% | N/A | $2,500 | Cost Per Lead | 2-4 months |
17
+ | Healthcare | Google Search 55% | Meta 20% | Microsoft 10% | YouTube/Display 15% | $4,000 | Cost Per Patient | 2-5 months |
18
+ | Finance/Fintech | Google Search 40-50% | LinkedIn 20-30% | Meta 15% | YouTube/Display 10% | $8,000 | CAC, LTV:CAC | 4-8 months |
19
+ | Agency (Own) | LinkedIn 50% | Meta 30% | Google 20% | N/A | $1,500 | Cost Per Lead | 1-3 months |
20
+ | B2C / DTC | Meta 50% | Google 20% | TikTok 30% | N/A | $2,000 | ROAS, CAC | 1-3 months |
21
+
22
+ ## Budget Distribution Rule: 70/20/10
23
+
24
+ ```
25
+ 70% → Proven performers (campaigns with established positive ROAS/CPA)
26
+ 20% → Promising growth (campaigns showing traction, need scale)
27
+ 10% → Experiments (new platforms, audiences, formats)
28
+ ```
29
+
30
+ ## Scaling Decision Tree
31
+
32
+ ### 20% Rule (Scale Up)
33
+ ```
34
+ IF actual_CPA < target_CPA by > 10%
35
+ AND conversions_last_7d >= learning_threshold
36
+ AND campaign NOT in learning phase
37
+ THEN increase budget by 20%
38
+ → Wait 3-5 days before next increase
39
+ → Never increase more than 20% at once on Meta (triggers learning reset)
40
+ ```
41
+
42
+ ### 3× Kill Rule (Pause)
43
+ ```
44
+ IF spend > 3× target_CPA
45
+ AND conversions == 0
46
+ THEN pause ad/ad set/campaign immediately
47
+ → Review: creative, targeting, landing page, tracking
48
+ → Don't restart without changes
49
+ ```
50
+
51
+ ### Decreasing Returns Detection
52
+ ```
53
+ IF CPA increased > 15% after last budget increase
54
+ THEN roll back to previous budget level
55
+ → Wait 7 days
56
+ → Try horizontal scaling instead (new audiences, platforms)
57
+ ```
58
+
59
+ ### Saturation Signals
60
+ | Platform | Signal | Threshold | Action |
61
+ |----------|--------|-----------|--------|
62
+ | Google | Impression Share | >80% | Diminishing returns; diversify |
63
+ | Meta | Frequency (7-day) | >4.0 | Audience exhausted; refresh creative or expand |
64
+ | TikTok | Frequency | >3.0 | Creative fatigue; replace assets |
65
+ | LinkedIn | Audience penetration | >50% | Audience exhausted; expand targeting |
66
+
67
+ ## Marketing Efficiency Ratio (MER)
68
+
69
+ ```
70
+ MER = Total Revenue / Total Ad Spend (all platforms combined)
71
+ ```
72
+
73
+ | Business Type | Healthy MER | Excellent MER | Danger Zone |
74
+ |--------------|-------------|---------------|-------------|
75
+ | E-commerce | 3.0-5.0 | >5.0 | <2.0 |
76
+ | SaaS | Use LTV:CAC (3:1 target) | >4:1 | <2:1 |
77
+ | Lead Gen | Revenue/Lead × CVR / CPL | N/A | <1.5 |
78
+
79
+ **Why MER over ROAS:**
80
+ - ROAS is platform-reported (overclaims by 20-40%)
81
+ - MER captures true business economics
82
+ - Cross-platform; not inflated by attribution overlap
83
+
84
+ ## Seasonality Adjustments
85
+
86
+ ### Q4 (October-December)
87
+ - CPMs increase 30-50%
88
+ - Reduce ROAS targets by 20%
89
+ - Front-load creative testing in September
90
+ - Increase budgets 40-60% for Black Friday / Cyber Monday
91
+ - Meta: Advantage+ Sales performs best during peaks
92
+
93
+ ### Q1 (January-March)
94
+ - CPMs decrease 20-30% post-holiday
95
+ - Best time for new campaign testing
96
+ - Aggressive customer acquisition (lower competition)
97
+ - Meta Jan 2026 CPC: $0.85 (24% below prior January)
98
+
99
+ ### Q2 (April-June)
100
+ - Steady CPMs, good testing window
101
+ - Mother's Day / Father's Day spikes for retail
102
+
103
+ ### Q3 (July-September)
104
+ - LinkedIn CPC peaks in Q3 ($15.72 average)
105
+ - Back-to-school surge for education
106
+ - Good time to build retargeting pools for Q4
107
+
108
+ ## Incrementality Testing (Geo-Lift)
109
+
110
+ ### Setup
111
+ - Duration: 2-4 weeks minimum
112
+ - Holdout: 10% of geographic regions (matched pairs)
113
+ - Method: Compare conversion rates exposed vs holdout
114
+ - Statistical significance: p < 0.05
115
+
116
+ ### Tools
117
+ - Meta: Robyn (R-based, open source), best for ~80% of orgs
118
+ - Google: Meridian (Python, Bayesian, geo-level)
119
+ - Advanced: PyMC-Marketing (fully customizable)
120
+ - Budget: Significant; allocate 10% of monthly spend for testing
121
+
122
+ ### Post-Purchase Surveys
123
+ - Fill ~30% of attribution gap that digital tracking misses
124
+ - Question: "How did you first hear about us?"
125
+ - Implement on order confirmation page
126
+ - Weight responses against platform-reported data
127
+
128
+ ## Minimum Viable Budgets
129
+
130
+ | Platform | Minimum Monthly | Rationale |
131
+ |----------|----------------|-----------|
132
+ | Google Ads | $1,000 | 15+ conv/month minimum for Smart Bidding |
133
+ | Meta Ads | $600-$800 | 50 conv/week/ad set × $CPA |
134
+ | LinkedIn Ads | $3,000 | High CPCs; $10/day minimum × multiple campaigns |
135
+ | TikTok Ads | $300 | $50/day campaign min × creative testing needs |
136
+ | Microsoft Ads | $200-$300 | 20-30% of Google budget |
137
+
138
+ ## Cross-Platform Attribution Hierarchy
139
+
140
+ ```
141
+ Source of Truth (best → worst):
142
+ 1. CRM Data (actual revenue, closed deals, LTV)
143
+ 2. MER (total revenue / total ad spend)
144
+ 3. Post-Purchase Surveys ("How did you hear about us?")
145
+ 4. Google Analytics 4 (cross-channel, multi-touch)
146
+ 5. Platform-Reported Data (always overclaims 20-40%)
147
+
148
+ RULE: Never trust platform-reported ROAS alone.
149
+ Always cross-reference with ≥2 other data sources.
150
+ ```
@@ -0,0 +1,280 @@
1
+ # Advertising Compliance & Privacy Reference
2
+
3
+ <!-- Updated: 2026-05-14 | v1.6 -->
4
+ <!-- Sources: Claude Research, Gemini Research, 2026 Verification Pass -->
5
+
6
+ ## Google Ads Policies
7
+
8
+ ### Enforcement System: Three-Strike Policy
9
+ | Strike | Consequence | Duration |
10
+ |--------|------------|----------|
11
+ | Strike 1 | 90-day probation | Warning period |
12
+ | Strike 2 | 90-day restriction | Limited functionality |
13
+ | Strike 3 | Permanent suspension | Account terminated |
14
+
15
+ ### Prohibited Content (Immediate Disapproval)
16
+ - Counterfeit goods
17
+ - Dangerous products or services
18
+ - Dishonest behavior enablement
19
+ - Inappropriate content (hate speech, violence, shocking content)
20
+
21
+ ### Restricted Categories (Certification Required)
22
+ | Category | Requirement |
23
+ |----------|-------------|
24
+ | Online pharmacies | Google certification + LegitScript |
25
+ | Telemedicine | Platform certification |
26
+ | Health insurance | Certification in applicable regions |
27
+ | Gambling | State/country-specific licensing |
28
+ | Political ads | Identity verification + disclosures |
29
+ | Cryptocurrency | Certification required |
30
+ | Financial services | Clear APR/fee/terms disclosures |
31
+ | Alcohol | Age-gating + regional restrictions |
32
+ | Adult content | Age restriction + limited placements |
33
+
34
+ ### Common Disapprovals
35
+ - Misleading claims (superlatives without evidence)
36
+ - Missing landing page content (404s, under construction)
37
+ - Destination mismatch (ad promise ≠ landing page)
38
+ - Prohibited content in ad text
39
+ - Trademark infringement
40
+ - Restricted healthcare claims
41
+
42
+ ### Recommendations Tab: What to Accept/Reject
43
+
44
+ **Safe to accept:**
45
+ - Optimized ad rotation
46
+ - Relevant extensions
47
+ - Fix disapproved ads
48
+
49
+ **Usually reject:**
50
+ - "Raise your budget"
51
+ - "Add broad match keywords"
52
+ - "Add new keywords" (auto-suggested)
53
+ - Auto-created RSAs
54
+ - Bidding strategy switches
55
+ - Turn off Optimization Score auto-apply
56
+
57
+ ---
58
+
59
+ ## Meta Ads Policies
60
+
61
+ ### Special Ad Categories (Restricted Targeting)
62
+ | Category | Restrictions |
63
+ |----------|-------------|
64
+ | Housing | No ZIP code, age must be 18-65+, no lookalike |
65
+ | Employment | Same restrictions as Housing |
66
+ | Credit | Same restrictions as Housing |
67
+ | **Financial Products** | **New Jan 2025**, enforced as Special Category |
68
+
69
+ All Special Ad Categories:
70
+ - Cannot target by age (18-65+ only range)
71
+ - Cannot target by ZIP code / postal code
72
+ - Cannot use Lookalike Audiences
73
+ - Must declare category before campaign creation
74
+
75
+ ### Enforcement Scale
76
+ - Over 1.3 billion ads rejected or removed in 2024
77
+ - Account restrictions escalate with repeated violations
78
+ - Appeal process available but slow
79
+
80
+ ### Detailed Targeting Exclusions (Removed)
81
+ - Removed from new ad sets: March 31, 2025
82
+ - Removed from boosted posts: June 10, 2025
83
+ - Existing campaigns with old exclusions stopped: January 15, 2026
84
+ - Meta cites 22.6% lower median cost per conversion without exclusions
85
+
86
+ ### Content Rules
87
+ - No misleading health/weight loss claims
88
+ - Before/after images: heavily restricted
89
+ - Cryptocurrency: certification required
90
+ - Political ads: "Paid for by" disclosure required
91
+ - Personal attributes: cannot imply user has specific condition
92
+ - Sensational content: no clickbait tactics
93
+
94
+ ---
95
+
96
+ ## LinkedIn Ads Policies
97
+
98
+ ### Restricted Industries
99
+ - Gambling and betting
100
+ - Tobacco and related products
101
+ - Weapons and ammunition
102
+ - Adult content
103
+ - Multi-level marketing
104
+ - Cryptocurrency (restricted, not prohibited)
105
+
106
+ ### Professional Standards
107
+ - B2B focus expected; casual/misleading content penalized
108
+ - Thought Leader Ads must come from genuine employees
109
+ - Lead Gen Forms must have clear privacy policy
110
+ - Job postings must comply with employment laws
111
+
112
+ ---
113
+
114
+ ## TikTok Ads Policies
115
+
116
+ ### Platform Requirements
117
+ - Content must feel native (not overly polished/corporate)
118
+ - Audio required (TikTok is sound-on)
119
+ - Must comply with music licensing for commercial use
120
+ - Creator content (Spark Ads) requires creator approval
121
+
122
+ ### Restricted Categories
123
+ - Age-restricted products (alcohol, gambling): geo-gated
124
+ - Health claims: evidence required
125
+ - Financial products: risk disclosures required
126
+ - Political ads: banned in many markets
127
+
128
+ ### TikTok Shop Policies
129
+ - Products must meet marketplace standards
130
+ - No counterfeit or restricted goods
131
+ - Seller verification required
132
+ - Available in 11 countries (US, UK, key Asian/European markets)
133
+
134
+ ---
135
+
136
+ ## Microsoft Ads Policies
137
+
138
+ ### Import Considerations
139
+ - Google Ads policy approvals don't transfer
140
+ - Microsoft has separate review process
141
+ - Some Google-approved ads may be disapproved on Microsoft
142
+ - Bing audience skews older/more conservative; creative should match
143
+
144
+ ### Copilot Placement Policies
145
+ - Ads in Copilot must be clearly labeled
146
+ - Copilot Checkout (Jan 2026): commerce within conversations
147
+ - Higher quality standards for conversational context
148
+
149
+ ---
150
+
151
+ ## Privacy Regulations (February 2026)
152
+
153
+ ### Global Privacy Landscape
154
+
155
+ | Regulation | Region | Status | Key Requirement |
156
+ |-----------|--------|--------|-----------------|
157
+ | GDPR | EU/EEA | Active | Consent before tracking; data minimization |
158
+ | UK GDPR | UK | Active | Similar to EU GDPR |
159
+ | CCPA/CPRA | California | Active | Right to opt out; mandatory audits |
160
+ | 20 State Laws | US (various) | Active Jan 2026 | Indiana, Kentucky, Rhode Island newest |
161
+ | LGPD | Brazil | Active | Consent and transparency |
162
+ | PIPL | China | Active | Consent and data localization |
163
+
164
+ ### Key Privacy Facts (2026)
165
+
166
+ **Privacy Sandbox is DEAD:**
167
+ - Google officially retired October 2025
168
+ - Third-party cookies remain in Chrome (~67% browser share)
169
+ - Safari and Firefox already block third-party cookies
170
+ - No separate consent prompt coming
171
+
172
+ **iOS App Tracking Transparency (ATT):**
173
+ - Average opt-in rate: ~35% (Q2 2025, up from 29% in 2022)
174
+ - Gaming highest: 37-50%
175
+ - Education lowest: 7-14%
176
+ - Apps with <30% opt-in lose 58% of ad revenue on average
177
+
178
+ **Consent Mode v2 (Mandatory for EU/EEA):**
179
+ - Enforcement tightened July 2025
180
+ - Without: 90-95% metric drops
181
+ - Advanced mode recovers 30-50% of lost conversions
182
+ - ~31% of users globally accept tracking cookies
183
+
184
+ **US State Privacy:**
185
+ - 20 state laws active by January 2026
186
+ - Texas AG: $1.4 billion settlement for tracking violations
187
+ - California CPPA: mandatory cybersecurity audits + data processing risk assessments
188
+ - Server-side tracking now architecturally necessary for compliance
189
+
190
+ ### Compliance Decision Tree
191
+
192
+ ```
193
+ IF serving_region INCLUDES "EU/EEA":
194
+ → Consent Mode v2 = MANDATORY
195
+ → Cookie consent banner = MANDATORY
196
+ → Data Processing Agreement = MANDATORY
197
+ → Enhanced Conversions with consent = RECOMMENDED
198
+
199
+ IF serving_region INCLUDES "California":
200
+ → CCPA/CPRA compliance = MANDATORY
201
+ → "Do Not Sell" link = MANDATORY
202
+ → Data processing risk assessment = MANDATORY (2026)
203
+
204
+ IF serving_region INCLUDES any US state:
205
+ → Check specific state law requirements
206
+ → 20 states have active laws as of Jan 2026
207
+
208
+ FOR ALL REGIONS:
209
+ → Server-side tracking = RECOMMENDED (bypasses most client-side issues)
210
+ → First-party data strategy = ESSENTIAL
211
+ → Privacy policy on landing pages = MANDATORY
212
+ ```
213
+
214
+ ### Healthcare-Specific Compliance
215
+
216
+ | Rule | Enforcement |
217
+ |------|-------------|
218
+ | No remarketing/retargeting for health services | Google policy: account suspension risk |
219
+ | No targeting by health conditions | Google, Meta, all platforms |
220
+ | Online pharmacy certification | Google: LegitScript required |
221
+ | Telemedicine certification | Google: platform certification |
222
+ | HIPAA considerations | US: no PHI in tracking pixels |
223
+ | Use contextual targeting | Instead of audience targeting |
224
+
225
+ ### Financial Services Compliance
226
+
227
+ | Rule | Enforcement |
228
+ |------|-------------|
229
+ | Clear APR/fee/terms disclosures | Google, Meta: ad disapproval |
230
+ | Lending certification | Google: account level |
231
+ | Crypto certification | Google: account level |
232
+ | Risk disclosures | All platforms |
233
+ | Financial Products Special Category | Meta (Jan 2025): restricted targeting |
234
+ | No misleading income claims | All platforms: account suspension |
235
+
236
+ ---
237
+
238
+ ## 2025-2026 Changes
239
+
240
+ ### Microsoft Consent Mode Deadline
241
+ - **May 5, 2025**: Consent Mode required for all campaigns targeting EEA, UK, and Switzerland
242
+ - Without implementation, conversion tracking in these regions will be severely degraded
243
+
244
+ ### Meta Link Clicks Redefinition (Feb 2025)
245
+ - "Link clicks" metric now **excludes social engagement clicks** (likes, comments, shares)
246
+ - Only counts clicks that navigate away from Meta surfaces
247
+ - Affects historical benchmarking: year-over-year comparisons will show apparent drops
248
+ - Use "outbound clicks" or "landing page views" for continuity
249
+
250
+ ### Meta Shops Native Checkout Phase-Out (June-August 2025)
251
+ - Native in-app checkout phased out between June and August 2025
252
+ - All checkout flows now redirect to the advertiser's website
253
+ - Update any campaigns relying on Shops checkout conversion events
254
+
255
+ ### Google Call Ads Deprecation
256
+ - **February 2026**: No new call-only ad creation permitted
257
+ - **February 2027**: Existing call ads stop serving entirely
258
+ - **Migration path**: Use call assets (extensions) within Responsive Search Ads (RSAs)
259
+
260
+ ### Apple Ads Rebrand (April 2025)
261
+ - "Apple Search Ads" officially renamed to **"Apple Ads"**
262
+ - Reflects expanded inventory beyond App Store search (Today tab, Search tab, product pages)
263
+ - Update all client-facing reports and documentation to use new branding
264
+
265
+ ### EU Sponsored Messaging: LinkedIn (Discontinued Jan 2022)
266
+ - Message Ads and Conversation Ads **cannot be delivered to EU members** since January 2022
267
+ - LinkedIn removed EU targeting for these formats due to ePrivacy Directive
268
+ - **Never recommend Message/Conversation Ads for EU-targeting campaigns**
269
+ - Use alternative formats: Sponsored Content, Lead Gen Forms, or InMail via Sales Navigator
270
+
271
+ ### Google Enhanced CPC (ECPC): Fully Deprecated (March 2025)
272
+ - ECPC bidding strategy **fully removed** as of March 2025
273
+ - Existing ECPC campaigns auto-migrated to Manual CPC (no bid adjustments)
274
+ - Recommended migration: Target CPA or Maximize Conversions with optional target
275
+
276
+ ### Google Rule-Based Attribution Models (Deprecated)
277
+ - First click, linear, time decay, and position-based attribution models all removed
278
+ - All campaigns using these models were **auto-upgraded to Data-Driven Attribution (DDA)**
279
+ - DDA is now the only multi-touch attribution option in Google Ads
280
+ - Audit note: flag any client reports still referencing legacy attribution models