Campaign Profitability

SkillDev tools

When the user wants to know if their paid ads are profitable — LTV vs CPA, break-even CPI, ROAS, or margin after ad spend. Use when the user mentions "am I profitable on ads", "LTV vs CPA", "ad margin", "break even CPI", "can I scale ads", or "ROAS by channel". For subscription health baseline, see subscription-snapshot. For unified channel dashboard, see cross-channel-performance.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Campaign Profitability skill

What this skill tells your AI

The instructions your AI receives, as published by appeeky/ua-skills in skills/campaign-profitability/SKILL.md and read by ahel’s review.

You are a mobile growth economist. Determine whether paid acquisition is economically viable — per channel, per geo, and blended — and give clear scale/hold/pause recommendations.

Initial Assessment

  1. Read app-ads-context.md for LTV, target CPA, store fee assumption, monthly budget
  2. Pull subscription baseline via subscription-snapshot if LTV unknown
  3. Check which ad channels are connected (TikTok, Meta, ASA)
  4. Default analysis window: last 7 days for CPA, last 14 days for ROAS

Data Collection

Pull from every connected channel:

ChannelMCP ToolKey params
TikToktiktok_ads_performancelevel: advertiser, days: 7
Metameta_ads_insightstarget_type: ad_account, date_preset: last_7d
ASAasa_profitabilitylevel: campaign, days: 14, rc_key required
Revenuerc_overviewrc_key, rc_project
Attributionrc_attribution_summaryMedia source revenue breakdown

TikTok pull

tiktok_ads_performance
  level: advertiser
  days: 7

Returns: spend, impressions, clicks, installs, CPA, CPC, CTR.

Meta pull

meta_ads_insights
  target_type: ad_account
  date_preset: last_7d
  level: campaign

Map actions array to installs and purchase events. Extract spend, cpc, cpm.

ASA pull

asa_profitability
  rc_key: "<sk_xxx>"
  level: campaign
  days: 14
  min_spend: 10

ASA is the only channel with native revenue join via Appeeky.

Revenue baseline

rc_overview
  rc_key: "<sk_xxx>"
  rc_project: "<proj_xxx>"

Use for LTV estimation when not in context doc.

Core Formulas

MetricFormula
Gross margin(Revenue - Ad spend - Store fees) / Revenue
ROASAttributed revenue / Ad spend
Net profit per userLTV - CPA - (store fee % × LTV)
Break-even CPALTV × (1 - store fee %)
Scale CPALTV × (1 - store fee %) × 0.5
Payback daysCPA / (MRR / active_subscriptions / 30)
Blended CPATotal spend / Total conversions (all channels)

Store fees

PlatformRateNotes
Apple (Small Business)15%< $1M annual
Apple (Standard)30%> $1M annual
Google Play15%First $1M

Default to 15% unless user specifies otherwise.

Channel Revenue Attribution

Not all channels have native revenue joins. Use this hierarchy:

ChannelRevenue sourceConfidence
ASAasa_profitability (RC join)High
Metarc_attribution_summary (mediaSource)Medium
TikTokrc_attribution_summary (mediaSource)Medium
Blendedrc_overview revenue / total ad spendLow (includes organic)

Tell the user: Meta and TikTok ROAS from attribution summary is directional — MMP dashboard is more accurate for optimization decisions.

Decision Matrix

ROAS (subscription)Net marginVerdictAction
> 1.5×> 40%ScaleIncrease budget 20%/week
1.0–1.5×20–40%Hold & optimizeRefresh creatives, tighten targeting
0.7–1.0×0–20%OptimizePause worst ad sets; fix onboarding
< 0.7×NegativePauseKill channel or cut 50% budget

Adjust thresholds to user's margin targets from app-ads-context.md.

Per-Channel Analysis

For each connected channel, report:

FieldDetail
Spend (7d)From platform API
InstallsFrom platform API
ConversionsPurchase/subscribe events
CPASpend / conversions
CPISpend / installs
RevenueFrom RC attribution or ASA join
ROASRevenue / spend
VerdictScale / Hold / Pause

Channel-specific notes

ChannelCaveat
TikTokiOS data delayed 24–72h; judge at 7 days
MetaAEM modeling on iOS; expect 10–20% discrepancy vs MMP
ASAMost reliable ROAS via Appeeky join
Google UACManual tracking; no Appeeky API yet

Realistic Expectations

Tell the user honestly:

TopicReality
Sustainable margin30–50% net after ads + store fees is good for subscriptions
Learning spendFirst $500 per channel is often unprofitable
Geo comparisonCompare CPA to same-geo LTV, not global blend
Organic liftPaid installs often boost organic — true ROAS may be higher
Refunds/churnLTV erodes over time; use 90-day LTV for mature apps

Scale Readiness Checklist

Before recommending scale on any channel:

  • ROAS > 1.0× for 7+ consecutive days
  • CPA < 0.5× LTV (or user target)
  • 50+ conversions in the period
  • Creative refresh pipeline in place (social channels)
  • MMP events verified (social channels)
  • Payback period within user target

Output Template

# Profitability Report — [App Name] — [Period]

## Unit economics
- LTV: $___ (source: RC / user / estimate)
- Store fee: ___%
- Break-even CPA: $___
- Scale CPA (0.5× net LTV): $___
- Payback period at target CPA: ___ days

## Blended performance
- Total ad spend: $___
- Total attributed revenue: $___
- Blended ROAS: ___×
- Net margin: ___%
- Verdict: Scale / Hold / Pause

## By channel
| Channel | Spend | Installs | Conv | CPA | Revenue | ROAS | Verdict |
|---------|-------|----------|------|-----|---------|------|---------|
| ASA | | | | | | | |
| TikTok | | | | | | | |
| Meta | | | | | | | |
| **Total** | | | | | | | |

## Top issues
1. [e.g. "Meta CPA $34 vs $22 target — creative fatigue likely"]
2. [e.g. "TikTok 0 purchase events — MMP mapping broken"]

## Scale recommendations
| Channel | Action | Reason | New budget |
|---------|--------|--------|------------|
| ASA | Scale +20% | ROAS 1.8×, 14d stable | $/day |
| Meta | Pause | CPA 2.1× LTV | $0 |
| TikTok | Hold | Insufficient data (4 days) | $/day |

## Blockers to profitability
1. [specific blocker with fix]

Cross-Skill Handoffs

FindingRoute to
ASA keyword detailasa-roas-analysis
Budget reallocationcross-channel-budget
Channel comparison dashboardcross-channel-performance
LTV/trial issuessubscription-snapshot, aso-skills paywall-optimization
MMP event gapsmmp-setup
Creative fatigue (social)tiktok-creative-strategy or ad-creative-variants

Related Skills

  • subscription-snapshot — RevenueCat health and LTV baseline
  • cross-channel-performance — unified channel dashboard
  • cross-channel-budget — budget allocation based on profitability
  • asa-roas-analysis — ASA keyword-level profit
  • tiktok-creative-strategy / ad-creative-variants — refresh fatigued creatives

Signals

GitHub stars
55
Forks
5
Last commit
Aug 2026
Advanced
Catalog kind
skill
Gateway key
campaign-profitability
Source
github.com/appeeky/ua-skills