Adset.ProAdset.ProKnowledge base
Home/Training Materials/LTV and Cohorts: How to Read and Use

LTV and Cohorts: How to Read and Use

Why LTV Analysis is Needed

LTV (Lifetime Value) — the total income from a user over the entire period of their activity. In the context of gambling/betting, this is the initial deposit + subsequent deposits (redeposits).

Why LTV is critically important for an arbitrageur:

Imagine: two traffic sources.

  • Source A: 100 FTD, LTV per FTD = $45 → total income $4,500

  • Source B: 80 FTD, LTV per FTD = $120 → total income $9,600

If you look only at FTD — Source A is "better" (100 vs 80). But in terms of actual income, Source B brings in twice as much. Without LTV, you scale the wrong source.

When LTV is more important than ROI in the short term:

  • When launching a new GEO — the first few days ROI may be negative, but if LTV is growing — the traffic is quality

  • When comparing two offers from the same affiliate — one gives many FTDs with low LTV, the other fewer FTDs but "long-term" users

  • When assessing traffic payback after 30-90 days — D0 shows only the first day, while the main profit comes later

Feature for iGaming: In gambling/betting, the main income comes not from the first deposit, but from redeposits (CPA_REDEP). A user may deposit $20, and in the next month — another $200. LTV D0 will show only $20, while LTV D31-90 may show $220.


How Cohorts are Structured

Cohort — a group of users united by the date of their first action.

In Adset.Pro there are two types of cohorts (through different group keys):

FTD Cohorts (by first deposit date)

Group Key

Description

cohort_day

Cohort by FTD day

cohort_week

Cohort by FTD week

cohort_month

Cohort by FTD month

lifetime_days

Number of days from FTD to last redeposit

When to use: Monetization analysis of paying users. You answer the question: "How much do I earn from a user who deposited in January?"

Reg Cohorts (by registration date)

Group Key

Description

reg_cohort_day

Cohort by registration day (CPA_HOLD)

reg_cohort_week

Cohort by registration week

reg_cohort_month

Cohort by registration month

lifetime_days_from_reg

Number of days from registration to last action

When to use: Analysis of conversion from registration to deposit and behavior of all registered users (not just those who deposited). You answer the question: "What % of registrants reach a deposit and how much do they bring?"

Practical Example of the Difference

  • Case 1: "I want to know how much I earn from a user who deposited in January" → FTD cohort (cohort_month) + ltv_per_ftd

  • Case 2: "I want to know what % of registrants reach a deposit" → Reg cohort (reg_cohort_month) + reg_to_ftd_rate

  • Case 3: "I want to see income from registration, including FTD and all redeposits" → Reg cohort + ltv_per_reg


LTV Windows (Time Periods)

FTD-based LTV

Each user is tracked over 4 time horizons after the first deposit (CPA_ACCEPT):

Metric

Period

What it measures

ltv_d0

Day 0 (FTD day)

Initial deposit + redeposits on the same day (CPA_ACCEPT + CPA_REDEP)

ltv_d1_7

Days 1–7 after FTD

Early redeposits (first week, only CPA_REDEP)

ltv_d8_30

Days 8–30 after FTD

Medium-term retention (2-4 week, only CPA_REDEP)

ltv_d31_90

Days 31–90 after FTD

Long-term retention (2-3 month, only CPA_REDEP)

Total metrics:

  • ltv_total = ltv_d0 + ltv_d1_7 + ltv_d8_30 + ltv_d31_90

  • ltv_per_ftd = ltv_total / cpa_accept (average LTV per FTD)

Reg-based LTV

Similar structure, but counting from registration date (CPA_HOLD):

Metric

Period

What it measures

ltv_reg_d0

Day 0 (registration day)

CPA_ACCEPT + CPA_REDEP on registration day

ltv_reg_d1_7

Days 1–7 after registration

CPA_REDEP for the first week

ltv_reg_d8_30

Days 8–30 after registration

CPA_REDEP for 2-4 week

ltv_reg_d31_90

Days 31–90 after registration

CPA_REDEP for 2-3 month

Total:

  • ltv_reg_total = sum of all periods

  • ltv_per_reg = ltv_reg_total / registrations (average LTV per registration)

Important Notes on Windows

  1. D0 is not the entire LTV, but only the beginning. Usually, D0 accounts for 30-50% of the total LTV D0-D90

  2. D31-90 should only be viewed if 3+ months have passed since the FTD date. Otherwise, the window is still "open" and the data is incomplete

  3. Incomplete window: If the cohort was created 2 weeks ago, then ltv_d8_30 will be incomplete (only 14 days have passed out of 30), and ltv_d31_90 — empty

  4. Currency conversion: All LTV metrics are automatically converted to USD via event_fx_to_usd if the postback currency differs


Lifetime Days

Lifetime Days (lifetime_days) — the number of days from FTD to the last active action (redeposit).

Formula: dateDiff('day', ftd_time, event_time) — an integer number of days.

How to read the distribution of lifetime days:

Value

What it means

lifetime_days = 0

The user deposited and never returned (FTD without redeposits)

lifetime_days = 1-7

Short-term activity (returned 1-2 times in the first week)

lifetime_days = 8-30

Average retention (active for 2-4 weeks)

lifetime_days = 31-90

Loyal user (active for months)

Practical application:

  • If 70%+ of the cohort has lifetime_days = 0 — it means there are almost no redeposits, the problem lies in traffic quality or the offer

  • Breakdown by lifetime_days + cpa_redep — shows a heatmap: on which days users make redeposits

  • Compare lifetime_days between campaigns/sources — which gives "long-term" users

Analogue for reg cohorts: lifetime_days_from_reg — days from registration (CPA_HOLD) to the last action.


Additional Metrics

Metric

Formula

Application

ftd_to_redep_rate

redep_unique_clicks / cpa_accept

What % of FTDs made at least one redeposit

reg_to_ftd_rate

cpa_accept / cpa_hold

What % of registrations reached a deposit

dep_to_redep

cpa_redep / cpa_accept

Ratio of redeposits to deposits

total_deposits

cpa_accept + cpa_redep

Total number of deposits

total_deposit_revenue

cpa_accept_revenue + cpa_redep_revenue

Total revenue from all deposits


How to Filter in LTV Analysis

Available filters in LTV reports are limited to attribution fields:

Filter

What it does

cmp_campaign

Filter by campaign

cmp_source

Filter by traffic source

cmp_offer

Filter by offer

cmp_cpa

Filter by CPA network

user_country

Filter by user country

Why is there no filter by device/browser? LTV analysis works with user cohorts through the events_ltv table. A single user may have multiple sessions on different devices. Filtering by device would lead to duplication and incorrect data.

How to use a combination of filters:

  • "Compare LTV of two offers from the same affiliate" → filter: cmp_cpa = X, breakdown: cmp_offer

  • "LTV of traffic from Ukraine for the last 3 months" → filter: user_country = UA, group: cohort_month

  • "Traffic quality by sources" → filter: none, breakdown: cmp_source, metric: ltv_per_ftd


Breakdowns

In LTV analysis, you can add breakdowns for cohort comparison:

Breakdown (Group Key)

Application

cmp_campaign + cmp_campaign_name

Compare traffic quality between campaigns

cmp_source

Which source gives more "heavy" users

cmp_offer + cmp_offer_name

Compare two offers from the same affiliate by LTV

cmp_cpa + cmp_cpa_name

Compare different affiliates by monetization

user_country + user_country_name

LTV by GEO (usually Tier-1 > Tier-3)

cohort_day / cohort_week / cohort_month

Cohort period — for tracking trends

lifetime_days

Heatmap of activity by days

Typical Cases

  1. "Which offer from 1win gives the best LTV for UA traffic?"

    • Filter: user_country = UA, cmp_cpa = 1win

    • Breakdown: cmp_offer

    • Metric: ltv_per_ftd

  2. "How has traffic quality changed over the months?"

    • Breakdown: cohort_month

    • Metrics: ltv_d0, ltv_d1_7, ltv_d8_30, cpa_accept

  3. "Which source gives users with redeposits?"

    • Breakdown: cmp_source

    • Metric: ftd_to_redep_rate


Recommendations for Query Setup

  1. Data period ≥ 90 days — to capture complete LTV windows (D0, D1-7, D8-30, D31-90)

  2. LTV metrics only work with events_ltv table — it is automatically selected when using cohort groups or LTV metrics

  3. Cohort groups activate LTV calculations — cohort_day/cohort_week/cohort_month trigger JOIN with ftd_times CTE

  4. Reg cohort groups — reg_cohort_day/reg_cohort_week/reg_cohort_month trigger JOIN with reg_times CTE


Typical Metrics and Interpretation

Metric

Good Value

Bad Value

What to Do

ltv_d0 / Avg deposit

Close to the average deposit of the affiliate

Significantly lower → junk leads or small deposits

Check status mapping, offer quality

ltv_d1_7 / ltv_d0 ratio

> 30-40% (active redeposits in the first week)

< 10% → users deposited and left

Check offer UX, affiliate bonus program

ftd_to_redep_rate

> 20-30%

< 10% → almost no one redeposits

Problem with traffic quality or the offer

reg_to_ftd_rate

> 30-40% (for gambling)

< 15% → there are registrations, but they don't deposit

Problem with affiliate onboarding or bonuses

lifetime_days median

5-15 days (active first 1-2 weeks)

0-1 day (deposited-and-gone)

Typical for Tier-3 GEO or fraud


Frequently Asked Questions

Q: Why does LTV in Adset.Pro not match the data in the affiliate's cabinet?

Reasons for discrepancies:

  1. Postback delays — the affiliate may send redeposits with a delay (from hours to days)

  2. Timezone — the cohort date is determined by the timezone specified in the request. Different timezones = different dates

  3. Deduplication — Adset.Pro discards duplicate conversions (if acceptDuplicates is not included)

  4. Currency conversion — Adset.Pro converts via event_fx_to_usd, the affiliate may show in a different currency

Q: The cohort was created a week ago — why is D8-30 empty?

This is normal. The D8-30 window means "days 8-30 after FTD". If the cohort is only 7 days old, data for D8-30 has not yet arrived. Wait another 3-4 weeks — data will start to appear.

Q: How to compare LTV of two campaigns that were launched in different months?

Seasonality issue: the January cohort may have been more active due to New Year promotions, while the February cohort — less so. Solutions:

  1. Use cohort_month + ltv_per_ftd — compare metrics within the cohort, not absolute numbers

  2. Look at ftd_to_redep_rate — it is less sensitive to seasonality

  3. Compare LTV for the same period after FTD (for example, only D0+D1-7 for both cohorts)

Q: Why are reg cohorts needed if there are FTD cohorts?

FTD cohorts include only users who deposited. Reg cohorts include all registered and allow you to see:

  • Conversion from reg → FTD (reg_to_ftd_rate)

  • LTV per registration (ltv_per_reg) — takes into account that not all registrants deposit

  • A more complete picture of the funnel: how many people came vs how many actually brought money