Loading

Robin

Offload attribution

9/22/2020 · 7 min read

Uninstall attribution

Why should we use uninstall attribution?

Find the reasons why users uninstall and reduce user churn

User structure composition

  • User

  • Surviving users

    • Active Users

    – Silent User

  • Uninstall user

Uninstallation hypothesis

  • Add new user
  • Uninstall before starting:
  • Unopened & uninstalled events
  • Not experiencing the full product features
  • Novice experience funnel (all pages before the novice reaches the results page)
    • 发生该事件,且未发生该事件可能的后续事件的卸载用户数/当日未体验功能的卸载用户卸载用户数
  • Uninstalled after trying it, not satisfied with the function:

-Experience the function, uninstall and compare

  • 体验该功能后,且未体验其它功能的卸载用户数 / 当日已体验功能的的卸载用户数
  • Uninstallation time judgment
  • After using a function, uninstall it immediately. The event time used by the function and the uninstallation time are less than 1 minute

-Old Users

  • Infrequently used
  • Among users who have uninstalled the function and used it: the average of the time of the last results page and the time of uninstallation. The longer the distance, the longer it has been useless.
  • Among users who have uninstalled the function and have not used it: the time since the uninstall was added.
  • Tired of it
  • Frequent use, but found no effect
  • Among users who have uninstalled and experienced the function: the average frequency of result pages for a single function on that day. Used too often and found it useless
  • Number of notification reminders
  • Among users who have uninstalled and experienced the function: the average number of ad impressions on that day, a high frequency indicates that it may be due to advertising
  • Others
  • Feedback

Query the number of uninstalls of new users in 24 hours

```SELECT

DATE(TIMESTAMP_ADD(TIMESTAMP_MICROS( AFO.app_first_open_time ), INTERVAL -8 HOUR)) AS D,

AFO.country as country,

COUNT(DISTINCT AFO.users_id) AS users

FROM (

SELECT

user_pseudo_id AS users_id,

Event_timestamp AS app_first_open_time,

geo.country as country

FROM

`one-booster-55090.analytics_214127162.events_*`

WHERE

_TABLE_SUFFIX BETWEEN '20200325'

AND '20200401'

and event_name = 'first_open'

and geo.country in( 'United States','Japan','South Korea')

AND app_info.id = 'com.cleanteam.oneboost'

GROUP BY

users_id,

app_first_open_time,

Country) AFO

INNER JOIN (

SELECT

user_pseudo_id AS users_id,

Event_timestamp AS app_remove_time,

geo.country as country

FROM

`one-booster-55090.analytics_214127162.events_*`

WHERE

_TABLE_SUFFIX BETWEEN '20200325'

AND '20200401'

and event_name = 'app_remove'

and geo.country in( 'United States','Japan','South Korea')

AND app_info.id = 'com.cleanteam.oneboost'

GROUP BY

users_id,

app_remove_time,

Country) AR

ON

(AFO.users_id = AR.users_id)

WHERE

AR.app_remove_time - AFO.app_first_open_time < 24606010001000

AND AR.app_remove_time - AFO.app_first_open_time > 0

group by D,country

order by D

```

Added in 24h

```SELECT

DATE(TIMESTAMP_ADD(TIMESTAMP_MICROS( event_timestamp ), INTERVAL -8 HOUR)) AS D,

geo.country as country,

count(distinct user_pseudo_id) AS users

FROM

`one-booster-55090.analytics_214127162.events_*`

WHERE

_TABLE_SUFFIX BETWEEN '20200325'

AND '20200401'

and event_name = 'first_open'

and geo.country in( 'United States','Japan','South Korea')

AND app_info.id = 'com.cleanteam.oneboost'

GROUP BY

D,

country

```

Users who uninstalled and did not fully experience the functions

```SELECT

DATE(TIMESTAMP_ADD(TIMESTAMP_MICROS( AFO.app_first_open_time ), INTERVAL -8 HOUR)) AS D,

AFO.country as country,

COUNT(DISTINCT AFO.users_id) AS users

FROM (

select

a.users_id,

a.app_first_open_time,

a.country

from

(SELECT

user_pseudo_id AS users_id,

Event_timestamp AS app_first_open_time,

geo.country as country

FROM

`one-booster-55090.analytics_214127162.events_*`

WHERE

_TABLE_SUFFIX BETWEEN '20200325'

AND '20200401'

and event_name = 'first_open'

and geo.country in( 'United States','Japan','South Korea')

AND app_info.id = 'com.cleanteam.oneboost'

GROUP BY

users_id,

app_first_open_time,

country) as a

left join

(SELECT

user_pseudo_id AS users_id,

geo.country as country

FROM

`one-booster-55090.analytics_214127162.events_*`

WHERE

_TABLE_SUFFIX BETWEEN '20200325'

AND '20200401'

and event_name in ('result_page')

and geo.country in( 'United States','Japan','South Korea')

AND app_info.id = 'com.cleanteam.oneboost'

GROUP BY

users_id,

Country) as b

on a.users_id=b.users_id

Where b.users_id is null

) AFO

INNER JOIN (

SELECT

User_pseudo_id AS users_id,

Event_timestamp AS app_remove_time,

geo.country as country

FROM

`one-booster-55090.analytics_214127162.events_*`

WHERE

_TABLE_SUFFIX BETWEEN '20200325'

AND '20200401'

and event_name = 'app_remove'

and geo.country in( 'United States','Japan','South Korea')

AND app_info.id = 'com.cleanteam.oneboost'

GROUP BY

users_id,

app_remove_time,

Country) AR

ON

(AFO.users_id = AR.users_id)

WHERE

AR.app_remove_time - AFO.app_first_open_time < 24606010001000

AND AR.app_remove_time - AFO.app_first_open_time > 0

group by D,country

order by D```

New users who have experienced the function and uninstalled it within 24 hours Frequency of notification pop-ups

```

SELECT

DATE(TIMESTAMP_ADD(TIMESTAMP_MICROS( event_timestamp ), INTERVAL -8 HOUR)) AS D,

Count(user_pseudo_id)AS event,

Count(distinct user_pseudo_id)AS users,

geo.country as country,

FROM

`one-booster-55090.analytics_214127162.events_*`

WHERE

_TABLE_SUFFIX BETWEEN '20200325'

AND '20200401'

and event_name in ('notice_cleanjunk_show','notice_boost_show','notice_saver_show','notice_security_show','batteryoptimize_use_show','notice_cpucooler_show')

and geo.country in( 'United States','Japan','South Korea')

and user_pseudo_id in((SELECT

AFO.users_id as user_pseudo_id

FROM (

select

a.users_id,

a.app_first_open_time,

a.country

from

(SELECT

user_pseudo_id AS users_id,

Event_timestamp AS app_first_open_time,

geo.country as country

FROM

`one-booster-55090.analytics_214127162.events_*`

WHERE

_TABLE_SUFFIX BETWEEN '20200325'

AND '20200401'

and event_name = 'first_open'

and geo.country in( 'United States','Japan','South Korea')

GROUP BY

users_id,

app_first_open_time,

country) as a

inner join

(SELECT

user_pseudo_id AS users_id,

geo.country as country

FROM

`one-booster-55090.analytics_214127162.events_*`

WHERE

_TABLE_SUFFIX BETWEEN '20200325'

AND '20200401'

and event_name in ('result_page')

and geo.country in( 'United States','Japan','South Korea')

GROUP BY

users_id,

Country) as b

on a.users_id=b.users_id

) AFO

INNER JOIN (

SELECT

user_pseudo_id AS users_id,

Event_timestamp AS app_remove_time,

geo.country as country

FROM

`one-booster-55090.analytics_214127162.events_*`

WHERE

_TABLE_SUFFIX BETWEEN '20200325'

AND '20200401'

and event_name = 'app_remove'

and geo.country in( 'United States','Japan','South Korea')

GROUP BY

users_id,

app_remove_time,

Country) AR

ON

(AFO.users_id = AR.users_id)

WHERE

AR.app_remove_time - AFO.app_first_open_time < 24606010001000

AND AR.app_remove_time - AFO.app_first_open_time > 0)

GROUP BY

D,

country

Order by D

```

Query events that occurred 1 minute before uninstallation

SELECT

DATE(TIMESTAMP_ADD(TIMESTAMP_MICROS( AFO.app_first_open_time ), INTERVAL -8 HOUR)) AS D,

AFO.country as country,

AR.event_name as event_name,

COUNT(DISTINCT AFO.users_id) AS users

FROM (

SELECT

user_pseudo_id AS users_id,

Event_timestamp AS app_first_open_time,

geo.country as country

FROM

`one-booster-55090.analytics_214127162.events_*`

WHERE

_TABLE_SUFFIX BETWEEN '20200325'

AND '20200401'

and event_name = 'first_open'

and geo.country in( 'United States','Japan','South Korea')

GROUP BY

users_id,

app_first_open_time,

Country) AFO

INNER JOIN (

select a.app_remove_time as app_remove_time,

b.last_time as last_time,

a. country as country,

a.users_id as users_id,

b.event_name as event_name

from

(SELECT

user_pseudo_id AS users_id,

Event_timestamp AS app_remove_time,

geo.country as country

FROM

`one-booster-55090.analytics_214127162.events_*`

WHERE

_TABLE_SUFFIX BETWEEN '20200325'

AND '20200401'

and event_name = 'app_remove'

and geo.country in( 'United States','Japan','South Korea')

GROUP BY

users_id,

app_remove_time,

country) as a

inner join

(SELECT

user_pseudo_id AS users_id,

Event_timestamp AS last_time,

geo.country as country,

Event_name

FROM

`one-booster-55090.analytics_214127162.events_*`

WHERE

_TABLE_SUFFIX BETWEEN '20200325'

AND '20200401'

and geo.country in( 'United States','Japan','South Korea')

GROUP BY

users_id,

last_time,

Country,event_name)as b

on a.users_id=b.users_id

Where a.app_remove_time-b.last_time<=6010001000*10

) AR

ON

(AFO.users_id = AR.users_id)

WHERE

AR.app_remove_time - AFO.app_first_open_time < 24606010001000

AND AR.app_remove_time - AFO.app_first_open_time > 0

group by D,country,event_name

order by D

The last event that occurred before uninstallation

select

b.event_name as event_name,

a.users_id as users_id,

b.last_time as last_time

from

(SELECT

user_pseudo_id AS users_id,

Event_timestamp AS app_remove_time,

FROM

`one-booster-55090.analytics_214127162.events_*`

WHERE

_TABLE_SUFFIX BETWEEN '20200328'

AND '20200401'

and event_name = 'app_remove'

and geo.country in( 'United States')

and (event_timestamp-user_first_touch_timestamp )<=10001000606024

GROUP BY

users_id,

app_remove_time

) as a

inner join

(SELECT

user_pseudo_id AS users_id,

Event_timestamp AS last_time,

Event_name

FROM

`one-booster-55090.analytics_214127162.events_*`

WHERE

_TABLE_SUFFIX BETWEEN '20200328'

AND '20200401'

and geo.country in( 'United States')

GROUP BY

users_id,event_name,last_time

)as b

on a.users_id=b.users_id

24h new uninstall notification display

select

a.D as D,

a. country as country,

count(distinct b.users_id) as user,

count(b.users_id) as event

from

(SELECT

DATE(TIMESTAMP_ADD(TIMESTAMP_MICROS( user_first_touch_timestamp), INTERVAL -8 HOUR)) AS D,

user_pseudo_id AS users_id,

Event_timestamp AS app_remove_time,

geo.country as country

FROM

`one-booster-55090.analytics_214127162.events_*`

WHERE

_TABLE_SUFFIX BETWEEN '20200325'

AND '20200401'

and event_name = 'app_remove'

and geo.country in( 'United States','Japan','South Korea')

AND app_info.id = 'com.cleanteam.oneboost'

and (event_timestamp-user_first_touch_timestamp )<=10001000606024

) as a

inner join

(SELECT

user_pseudo_id AS users_id,

Event_timestamp AS last_time,

geo.country as country

FROM

`one-booster-55090.analytics_214127162.events_*`

WHERE

_TABLE_SUFFIX BETWEEN '20200325'

AND '20200401'

and event_name in ('notice_cleanjunk_show','notice_boost_show','notice_saver_show','notice_security_show','batteryoptimize_use_show','notice_cpucooler_show')

and geo.country in( 'United States','Japan','South Korea')

AND app_info.id = 'com.cleanteam.oneboost'

)as b

on a.users_id=b.users_id

group by D,country

Order by D

New notification

select

DATE(TIMESTAMP_ADD(TIMESTAMP_MICROS( b.D), INTERVAL -8 HOUR)) AS D,

a. country as country,

count(distinct b.user) as user,

count(b.user) as event

from

(SELECT

Event_timestamp as D,

user_pseudo_id as user,

geo.country as country

FROM

`one-booster-55090.analytics_214127162.events_*`

WHERE

_TABLE_SUFFIX BETWEEN '20200325'

AND '20200401'

and event_name in ('notice_cleanjunk_show','notice_boost_show','notice_saver_show','notice_security_show','batteryoptimize_use_show','notice_cpucooler_show')

and geo.country in( 'United States','Japan','South Korea')

AND app_info.id = 'com.cleanteam.oneboost'

) as a

inner join

(SELECT

Event_timestamp as D,

user_pseudo_id as user,

geo.country as country

FROM

`one-booster-55090.analytics_214127162.events_*`

WHERE

_TABLE_SUFFIX BETWEEN '20200325'

AND '20200401'

and event_name in ('first_open')

and geo.country in( 'United States','Japan','South Korea')

AND app_info.id = 'com.cleanteam.oneboost'

) as b

on a.user=b.user

Where a.D-b.D<=10001000606024

group by D,country

Order by D

Looking at the uninstall rate from the time dimension

SELECT

DATE(TIMESTAMP_ADD(TIMESTAMP_MICROS( AFO.app_first_open_time ), INTERVAL -8 HOUR)) AS D,

(CASE

WHEN (AR.app_remove_time - AFO.app_first_open_time < 5601000*1000) THEN '10min'

WHEN (AR.app_remove_time - AFO.app_first_open_time > 56010001000 AND AR.app_remove_time - AFO.app_first_open_time < 106010001000) THEN '10min'

WHEN (AR.app_remove_time - AFO.app_first_open_time > 106010001000 AND AR.app_remove_time - AFO.app_first_open_time < 206010001000) THEN '20min'

WHEN (AR.app_remove_time - AFO.app_first_open_time > 206010001000 AND AR.app_remove_time - AFO.app_first_open_time < 306010001000) THEN '30min'

WHEN (AR.app_remove_time - AFO.app_first_open_time > 306010001000 AND AR.app_remove_time - AFO.app_first_open_time < 360601000*1000) THEN '3h'

WHEN (AR.app_remove_time - AFO.app_first_open_time > 3606010001000 AND AR.app_remove_time - AFO.app_first_open_time < 6606010001000) THEN '6h'

WHEN (AR.app_remove_time - AFO.app_first_open_time > 666010001000 AND AR.app_remove_time - AFO.app_first_open_time < 6606010001000) THEN '12h'

ELSE 'Other'

END

) AS seg,

AFO.country as country,

COUNT(DISTINCT AFO.users_id) AS users

FROM (

SELECT

user_pseudo_id AS users_id,

Event_timestamp AS app_first_open_time,

geo.country as country

FROM

`one-booster-55090.analytics_214127162.events_*`

WHERE

_TABLE_SUFFIX BETWEEN '20200325'

AND '20200401'

and event_name = 'first_open'

and geo.country in( 'United States','Japan','South Korea')

AND app_info.id = 'com.cleanteam.oneboost'

GROUP BY

users_id,

app_first_open_time,

Country) AFO

INNER JOIN (

SELECT

user_pseudo_id AS users_id,

Event_timestamp AS app_remove_time,

geo.country as country

FROM

`one-booster-55090.analytics_214127162.events_*`

WHERE

_TABLE_SUFFIX BETWEEN '20200325'

AND '20200401'

and event_name = 'app_remove'

and geo.country in( 'United States','Japan','South Korea')

AND app_info.id = 'com.cleanteam.oneboost'

GROUP BY

users_id,

app_remove_time,

Country) AR

ON

(AFO.users_id = AR.users_id)

WHERE

AR.app_remove_time - AFO.app_first_open_time < 24606010001000

AND AR.app_remove_time - AFO.app_first_open_time > 0

group by D,country,seg

order by D

View notifications by time period

24h new uninstall notification display

select

a.D as D,

a. country as country,

(CASE

WHEN (a.app_remove_time - a.app_first_open_time < 5601000*1000) THEN '10min'

WHEN (a.app_remove_time - a.app_first_open_time > 56010001000 AND a.app_remove_time - a.app_first_open_time < 106010001000) THEN '10min'

WHEN (a.app_remove_time - a.app_first_open_time > 106010001000 AND a.app_remove_time - a.app_first_open_time < 206010001000) THEN '20min'

WHEN (a.app_remove_time - a.app_first_open_time > 206010001000 AND a.app_remove_time - a.app_first_open_time < 306010001000) THEN '30min'

WHEN (a.app_remove_time - a.app_first_open_time > 306010001000 AND a.app_remove_time - a.app_first_open_time < 360601000*1000) THEN '3h'

WHEN (a.app_remove_time - a.app_first_open_time > 3606010001000 AND a.app_remove_time - a.app_first_open_time < 6606010001000) THEN '6h'

WHEN (a.app_remove_time - a.app_first_open_time > 666010001000 AND a.app_remove_time - a.app_first_open_time < 6606010001000) THEN '12h'

ELSE 'Other'

END

) AS seg,

count(distinct b.users_id) as user,

count(b.users_id) as event

from

(SELECT

DATE(TIMESTAMP_ADD(TIMESTAMP_MICROS( user_first_touch_timestamp), INTERVAL -8 HOUR)) AS D,

User_first_touch_timestamp as app_first_open_time,

user_pseudo_id AS users_id,

Event_timestamp AS app_remove_time,

geo.country as country

FROM

`one-booster-55090.analytics_214127162.events_*`

WHERE

_TABLE_SUFFIX BETWEEN '20200325'

AND '20200401'

and event_name = 'app_remove'

and geo.country in( 'United States','Japan','South Korea')

AND app_info.id = 'com.cleanteam.oneboost'

and (event_timestamp-user_first_touch_timestamp )<=10001000606024

) as a

inner join

(SELECT

user_pseudo_id AS users_id,

Event_timestamp AS last_time,

geo.country as country

FROM

`one-booster-55090.analytics_214127162.events_*`

WHERE

_TABLE_SUFFIX BETWEEN '20200325'

AND '20200401'

and event_name in ('notice_cleanjunk_show','notice_boost_show','notice_saver_show','notice_security_show','batteryoptimize_use_show','notice_cpucooler_show')

and geo.country in( 'United States','Japan','South Korea')

AND app_info.id = 'com.cleanteam.oneboost'

)as b

on a.users_id=b.users_id

group by D,country,seg

Order by D

Related posts