marketing · 2026-05-01

Video ad CPV vs CPA calculator

Convert video ad cost-per-view (CPV) to cost-per-acquisition (CPA) — through view-completion, click-through, landing-page conversion.

Cost per acquisition
$46

Inputs

Cost per view ($)$0
View completion % (50%+)30%
Completer click %4%
Landing → buy %4.5%

Supporting metrics

Effective cost per click$2
Acquisitions per 1,000 views0.5
Cost per 1k views$25

About this calculator

Video ad math — what cheap CPV actually costs you per buyer

Video ads are sold on cost-per-view (CPV) but what matters for ROI is cost-per-acquisition (CPA). The funnel from view to purchase has 3 multiplicative drops:

CPA = (CPV × 1000) ÷ (1000 × completion% × click% × convert%)

Default scenario: $0.025 CPV, 30% completion, 4% click rate, 4.5% landing conversion → 1,000 views deliver 0.54 acquisitions. CPA = $46.30.

Platform CPV ranges

What changes the math fastest

  1. Click rate — strong CTAs + immediate offer copy double clicks. Going 4%→8% halves CPA.
  2. Landing conversion — match landing page to ad creative. 5% standard; 8-10% achievable with focused PDPs.
  3. View completion — depends on creative + length. 15-second cuts win on Reels; 30+ seconds work on YouTube with strong hook in first 5s.

Where video CPV is misleading

FAQ

Is YouTube TrueView better than other formats?

For DTC: usually yes. Skippable formats select for engaged viewers; you only pay for true watch time. Non-skippable formats inflate CPV without raising buyer intent. Bumper ads (6-sec non-skip) work for brand recall but have ~0% direct CPA.

Should I include retargeting CPM?

If your video flow includes retargeting: yes, separately. Most successful video campaigns: prospecting at $0.03 CPV reaches new audiences; retargeting at $0.10-0.20 CPV converts them. Combined CPA is much lower than prospecting alone but the math gets complicated. Track separately.

What's a good completion rate?

YouTube TrueView 30%+ is decent. Reels 15-25% is strong. TikTok 10-20% is good. If completion is below platform median, your hook isn't working — fix the first 3 seconds before optimizing anything else.