www.adlibertas.com
Open in
urlscan Pro
104.197.180.14
Public Scan
Submitted URL: http://go2.branch.io/MzE1LUZUVC0xMjEAAAGFZNAcrPFZ7gYPVsBy5jNkL4baxp2V31arKU2z6pRD0udysujkKzadJIpL_2-ACPHMnF8YpyU=
Effective URL: https://www.adlibertas.com/choosing-optimal-skadnetwork-conversion-values-for-ios/?utm_campaign=Mobile-Growth-News&utm_medi...
Submission: On July 05 via api from US — Scanned from DE
Effective URL: https://www.adlibertas.com/choosing-optimal-skadnetwork-conversion-values-for-ios/?utm_campaign=Mobile-Growth-News&utm_medi...
Submission: On July 05 via api from US — Scanned from DE
Form analysis
2 forms found in the DOMPOST /choosing-optimal-skadnetwork-conversion-values-for-ios/
<form method="post" enctype="multipart/form-data" id="gform_1" action="/choosing-optimal-skadnetwork-conversion-values-for-ios/">
<div class="gform_body gform-body">
<ul id="gform_fields_1" class="gform_fields top_label form_sublabel_below description_below">
<li id="field_1_1" class="gfield gfield_contains_required field_sublabel_below field_description_below hidden_label gfield_visibility_visible gfield--email gfield--medium" data-field-class="gfield--email gfield--medium"
data-js-reload="field_1_1"><label class="gfield_label" for="input_1_1">Email<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label>
<div class="ginput_container ginput_container_email">
<input name="input_1" id="input_1_1" type="text" value="" class="medium" placeholder="Your Email" aria-required="true" aria-invalid="false">
</div>
</li>
<li id="field_1_2" class="gfield gfield_contains_required field_sublabel_below field_description_below hidden_label gfield_visibility_visible gfield--text gfield--medium" data-field-class="gfield--text gfield--medium"
data-js-reload="field_1_2"><label class="gfield_label" for="input_1_2">Company Name<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label>
<div class="ginput_container ginput_container_text"><input name="input_2" id="input_1_2" type="text" value="" class="medium" placeholder="Company Name" aria-required="true" aria-invalid="false"> </div>
</li>
<li id="field_1_3" class="gfield gfield_contains_required field_sublabel_below field_description_below hidden_label gfield_visibility_visible gfield--textarea gfield--medium" data-field-class="gfield--textarea gfield--medium"
data-js-reload="field_1_3"><label class="gfield_label" for="input_1_3">How did you find us ?<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label>
<div class="ginput_container ginput_container_textarea"><textarea name="input_3" id="input_1_3" class="textarea medium" placeholder="How did you find us ?" aria-required="true" aria-invalid="false" rows="10" cols="50"></textarea></div>
</li>
<li id="field_1_4" class="gfield gform_validation_container field_sublabel_below field_description_below gfield_visibility_visible gfield--honeypot gfield--" data-field-class="gfield--honeypot gfield--" data-js-reload="field_1_4"><label
class="gfield_label" for="input_1_4">Phone</label>
<div class="ginput_container"><input name="input_4" id="input_1_4" type="text" value=""></div>
<div class="gfield_description" id="gfield_description_1_4">This field is for validation purposes and should be left unchanged.</div>
</li>
</ul>
</div>
<div class="gform_footer top_label"> <input type="submit" id="gform_submit_button_1" class="gform_button button" value="Join Now" onclick="if(window["gf_submitting_1"]){return false;} window["gf_submitting_1"]=true; "
onkeypress="if( event.keyCode == 13 ){ if(window["gf_submitting_1"]){return false;} window["gf_submitting_1"]=true; jQuery("#gform_1").trigger("submit",[true]); }">
<input type="hidden" class="gform_hidden" name="is_submit_1" value="1">
<input type="hidden" class="gform_hidden" name="gform_submit" value="1">
<input type="hidden" class="gform_hidden" name="gform_unique_id" value="">
<input type="hidden" class="gform_hidden" name="state_1" value="WyJbXSIsIjhhZGNhZTJiYjMyNDViZjBmZDk5MzBiZjdiOTcxZjYxIl0=">
<input type="hidden" class="gform_hidden" name="gform_target_page_number_1" id="gform_target_page_number_1" value="0">
<input type="hidden" class="gform_hidden" name="gform_source_page_number_1" id="gform_source_page_number_1" value="1">
<input type="hidden" name="gform_field_values" value="">
</div>
<input type="hidden" id="ct_checkjs_aa942ab2bfa6ebda4840e7360ce6e7ef" name="ct_checkjs" value="ab1a134a4ffd948cffd0a8285dd082aec9dd14817c92e50e6d263b7cb0c3032c"><input type="hidden" id="apbct_visible_fields_0" name="apbct_visible_fields"
value="{"0":{"visible_fields":"input_1 input_2 input_3 input_4","visible_fields_count":4,"invisible_fields":"is_submit_1 gform_submit gform_unique_id state_1 gform_target_page_number_1 gform_source_page_number_1 gform_field_values","invisible_fields_count":7}}">
</form>
<form action="" onsubmit="LO.submit_chat(); return false;">
<div id="lo_chat_input" style="position:relative; width: 100%; ">
<div class="lo-fx-hr" style="height:0px; margin-bottom:0px; margin-top:0px; width:100%; border-top:1px solid #000000;border-bottom:1px solid #4f4f4f"></div>
<div style="padding:10px;"><label for="lo_chat_textarea" style="display:none">Chat Input Box</label><textarea id="lo_chat_textarea" disabled="disabled" rows="2"
style="color: black; background-color: rgb(255, 255, 255); border-radius: 5px; padding: 7px; height: auto; width: 100%; font-family: sans-serif; text-transform: none; resize: none;" dir="null" data-last-scroll-height="0"></textarea></div>
<div id="lo_chat_sound_holder" style="position:absolute; right:0px; top:-25px; width:100%;">
<div style="cursor: pointer; float:right; opacity:0.6; padding-right:10px; height:16px;" id="lo_chat_sound"><img alt="Click to mute chat sounds" src="https://d10lpsik1i8c69.cloudfront.net/graphics/sound-on-white.png"></div>
<div id="lo_chat_status" style="padding-left:10px; font-size:11px; color:#6d6d6d"></div>
<div style="clear:both;"></div>
</div>
</div>
</form>
Text Content
Skip to content * Home * The Platform * Case Studies * Blog * Documentation * Schedule a Demo Login Back to All Posts CHOOSING OPTIMAL EVENTS FOR SKADNETWORK CONVERSION VALUES IN IOS USER ACQUISITION * June 27, 2022 * Best Practices Last week Rovio & Singular hosted a webinar to share their experience of a year with SKAN, it’s an excellent resource that I can highly recommend for anyone looking to increase the effectiveness in iOS marketing. Rovio is an institution in the mobile space, at around 500 employees they often share their expertise and experience with the industry. The problem is, Rovio’s resources dwarf that of most app developers. In the webinar, they mentioned the importance of collaboration among their UA teams, UA product teams, BI teams, and data science teams. Teams being the keyword. They likely have more employees solving the SKAdNetwork challenge than most app developers have working for the entire company. So when Rovio says they’re still not 100% in nailing SKAN marketing, what hope do the rest of app developers have? Universally, one of the biggest suggested takeaways in increasing effectiveness in SKAN is “figure out which event in your app is the most important to your business” to use for conversion values. First, what is a conversion value? According to Apple: Advertisers can configure conversion values based on their preferences, with each representing a different type of engagement. For example, they might configure three conversion values to capture when someone finished an onboarding tutorial, made an in-app purchase, or purchased a subscription. (Apple) In short, conversion values are used to send ad platforms signals on successful users. And while companies like Rovio can throw an army of data scientists at finding the optimal conversion value strategy, it may seem like an insurmountable data science problem out of reach for most app developers. We at AdLibertas have some tips how mobile apps can choose and maintain the most meaningful events for making your SKAN campaigns effective. CHOOSING YOUR EVENTS When choosing events, you’ll want something the user does as early in the app as possible to maximize signal to the marketing campaign. The general recommended window for sending back a conversion event is 24 hours, so you’ll need to choose an event that falls within the user’s first day to maximize effectiveness. Another consideration is the event density – or, how often the event fires per user. Too few events and the SKAN optimization won’t see enough signal for optimization. Of course, the ultimate event is an in-app-purchase conversion, however since most apps don’t see higher than a single-digit conversion during the first day, the signal of a “valuable user” will be so low, it’ll likely prove ineffective. Therefore the most effective event (1) will be early in the app, (2) fired by a comparatively large number of users, and (3) will signal a high-value user. There are three distinct strategies for choosing your events: 1. CHOOSE A DISTINCT EVENT: Choosing a single event is the most straightforward method to conceptualize, but it requires a certain type of app design. As mentioned earlier, an in-app purchase is obvious and straightforward, the problem is volume. Relying on only purchases to signal high-value users might delay the results of campaign optimization — or worse, not meet thresholds and limit value signals entirely. Therefore app developers should also choose a commonly occurring, early app event that only fires for high-value users, like creating a login, or starting a trial. Depending on the app, this can be a solid signal for future user value. As a real-world example, one app developer we work with found users completing the tutorial indicated users are 2X more valuable. 2. USER THRESHOLDING: Here, a conversion value is set after a certain threshold of core-functionality happens in the app. This can be relayed after a threshold that signals a high-value user. Because this can be set after a sequence or number of events, the conversion value can be balanced between the maximum number of signals, and against the thresholds that strongly indicate high user value. To demonstrate we’ll use an example of a puzzle app: in this case, we have the event puzzle_completed, which is fired after the completion of each puzzle in the app. (Obviously this can be applied to levels finished, hands dealt, profiles swiped, etcetera.) To set an initial threshold to indicate a high-value user, you can simply compare the number of events fired by top users on day 1 and compare against the average user. In a real-world example, we found the users who make it to level 10 on day 1 are twice as valuable as those who only complete 1.. A second widely applicable —but often overlooked—example for setting thresholds is the time in the app a user spends on their first day. Sometimes engagement can be most clearly measured by actually measuring how long the user was engaged during their first day. In a recent case study, an app developer saw 4X the value of users who reached usage thresholds on their first day. 3. USER REVENUE: A more sophisticated conversion value is to send the actual revenue earned of a user on their first day, while IAP conversions might be too rare for reliable signaling, ad-supported apps can have ten to dozens of ad impressions on a single day. With real-time impression postbacks, app developers can use actual, aggregated revenue as a signal for conversion values. And depending on the type of LTV curve your app demonstrates, some apps will see the majority of revenue earned from a user on day one. In the thresholding example above, the app developer uses the number of “levels finished” on day one to predict future value. RELATED: HOW DO YOU MEASURE THE DOLLAR IMPACT OF USER EVENTS? To make the most effective use of your events you’ll need to measure the actual dollar impact of these events. In other articles, we cover how to (1) segment and measure the behavior of your top performing users then (2) how to predict long-term value (pLTV) of these users. PLANNING FOR THE FUTURE: SKADNETWORK 4.0 The latest version of Apple’s SKAN – out later this year –will allow you to assign hierarchical conversion values as well as send multiple conversions per user. For app developers, this increases the importance of having a, early, clear understanding of the ascending order of the value of user events. With the advent of fine vs. coarse-grained values and multiple conversion events, the level of sophistication – and complexity – available for marketers allow much more signal with campaign success. Looking at the example above we see how app developers can choose multiple measurements in an ascending order of value, sending the three highest conversion values based on their measurements of historic user activity. While developing a SKAdNetwork buying model may seem a daunting exercise limited to those with armies of data scientists the reality with a minimal level of investment any app developer can start to leverage the benefits of SKAN, provided they make the initial investments in understanding their users and how early app actions can influence future behaviors. Interested in better measurement for your app? See how customers drive growth with predictive lifetime value See how AdLibertas pLTV forecasting works Shortcut confidence in your pLTV projections * CATEGORIES * Best Practices * Case Study * Infographic * New Product * News * JOIN OUR NEWSLETTER * Email* * Company Name* * How did you find us ?* * Phone This field is for validation purposes and should be left unchanged. Turn app data into answers. * ADDRESS 600 California Street, San Francisco, CA, USA * CONTACT info@adlibertas.com © 2022 AdLibertas * Privacy * Terms of Service * About Notifications Live Chat is Online Chatting 0 × – undefined Chat Input Box Chat Powered by