65
@goutaste Using Apps to Drive Mobile- First SEO Traffic

Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

Embed Size (px)

Citation preview

Page 1: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

Using Apps to Drive Mobile-

First SEO Traffic

Page 2: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

Android&

iOS Intent

Page 3: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

Understanding App Packs

Page 4: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

New Android App Packs

Page 5: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

Types of App ResultsApp Pack App Single App Carousel Deep LinksIcon Deep Links

Page 6: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

Meta-data can provide a “preview” of the type of content in the app

You don’t know what’s IN the app until you download it

App Store search is heavy on brand and head terms vs. long tail

App Store Model

Page 7: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

“Google’s mission is to organize the world’s information and make it

universally accessible and useful.”- Google’s initial mission statement -

Page 8: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

App Store Model vs. Search Engine Model

Page 9: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

Android Deep Linking User Experience

Page 10: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

“Google will be considering "high quality" apps to be a positive ranking factor in mobile search.”-Mariya Moeva (Google Webmaster Trends Analyst, SMX West 2015)

Website Parity = Positive Signal for Websites

WebApp

Page 11: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

Google App Indexing: Android

Page 12: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

Custom URL Scheme

HTTP URL Scheme

Android: Create Intent Filters

Page 13: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

Android: Create Intent Filters

Intent Filters need:<action>

<data> android:schemeandroid:path

<category>

Page 14: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

Deep Link to previously-viewed ‘Calafia Café’ screen in the Zagat app

Android App Indexing API

Page 15: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

...public class MainActivity extends Activity {

  static final Uri APP_URI = Uri.parse("android-app://com.example.android.recipes/http/recipe-app.com/recipes");  static final Uri WEB_URL = Uri.parse("http://recipe-app.com/recipes/");  private GoogleApiClient mClient;    ...   }

  @Override  public void onStart() {    super.onStart();    ...

    @Override  public void onStop() {    ...    // Call end() and disconnect the client    String title = "App Indexing API Title";    Action viewAction = Action.newAction(Action.TYPE_VIEW, title, WEB_URL, APP_URI);    AppIndex.AppIndexApi.end(mClient, viewAction);    mClient.disconnect();    ...

Full code sample here: bit.ly/appindexingAPIcode

Android App Indexing API

Page 16: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

...public class MainActivity extends Activity {

  static final Uri APP_URI = Uri.parse("android-app://com.example.android.recipes/http/recipe-app.com/recipes");  static final Uri WEB_URL = Uri.parse("http://recipe-app.com/recipes/");  private GoogleApiClient mClient;    ...   }

  @Override  public void onStart() {    super.onStart();    ...

    @Override  public void onStop() {    ...    // Call end() and disconnect the client    String title = "App Indexing API Title";    Action viewAction = Action.newAction(Action.TYPE_VIEW, title, WEB_URL, APP_URI);    AppIndex.AppIndexApi.end(mClient, viewAction);    mClient.disconnect();    ...

Full code sample here: bit.ly/appindexingAPIcode

Android App Indexing API

Page 17: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

Update App’s Robots.txt:

User-Agent: GooglebotAllow: /

Android App Robots.txt

Page 18: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

Android Custom Schemes

Requirement: Web Markup

Page 19: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

android-app://com.travel_app/travel_app/travel-app.com/hotels/curtis-hotel-denver

Protocol PackageID Scheme (custom)

Host Path

Google’s Android Deep Link Format

Deep Link URL Format:

Page 20: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

Rel=alternate XML Sitemaps Schema

<head> ... <link rel="alternate" href="android-app://com.travelapp.android/http/travelapp.com/examplescreen" /> ...</head>

<head> ... <link rel="alternate" href="android-app://com.travelapp.android/travelapp/examplescreen" /> <link rel="alternate" href="ios-app://123456/travelapp/examplescreen" /> ...</head>

Page 21: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

Rel=alternate XML Sitemaps Schema

<?xml version="1.0" encoding="UTF-8" ?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"><url> <loc>http://travelwebsite.com/examplepage</loc> <xhtml:link rel="alternate" href="android-app://com.travelapp.android/travelapp/examplescreen" /> <xhtml:link rel="alternate" href="ios-app://123456/travelapp/examplescreen" /></url> <xhtml:link rel="alternate" href="android-app://com.travelapp.android/http/travelapp.com/examplescreen" />...</urlset>

Page 22: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

Rel=alternate SchemaXML Sitemaps

<script type="application/ld+json">{ "@context": "http://schema.org", "@type": "WebPage", "@id": "http://travelwebsite.com/examplepage", "potentialAction": { "@type": "ViewAction", "target": "android-app://com.travelapp.android/http/travelapp.com/examplescreen" }}</script>

Page 23: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

Verify Website in GP/ Log Into GSC with GP Account

Page 24: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

Google App Indexing:

iOS

Page 25: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

The Good News Is…

Page 26: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

The Bad News Is…

Page 27: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

iOS: Support Universal Links

https://subdomain.domain.com/path/subpath/

Scheme“http” or “https”

Domain or Host Name Path or Prefix

Anatomy of a Universal Link:

Page 28: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

iOS: Support Universal Links

Requirements:• A registered domain• SSL access to your domain• Ability to upload a JSON file to your domain

Page 29: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

iOS: Support Universal Links

1 Get Your App Ready• Modify your application

delegate• Adopt an entitlement in

Xcode that lists each domain associated with your app

READ:http://bit.ly/ios9universallinks http://bit.ly/UIApplicationDelegate-ReferenceWATCH: http://bit.ly/appleuniversallinks

Page 30: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

iOS: Support Universal Links

2 Get Your Server Ready• Create an apple-app-site-

association file for each associated domain with the content your app supports and host it at the root level.

NOTE: The association file must be hosted on a domain that supports HTTPS/TLS, even if the HTTP deep links are not themselves served via HTTPS.

{ "applinks": { "apps": [], "details": {  »ABC0123.com.domain.App": { "paths":[ "*" ] } } }}

Page 31: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

iOS: Support Universal Links

2 Get Your Server Ready• Create an apple-app-site-

association file for each associated domain with the content your app supports and host it at the root level.

NOTE: The association file must be hosted on a domain that supports HTTPS/TLS, even if the HTTP deep links are not themselves served via HTTPS.

{ "applinks": { "apps": [], "details": {  »ABC0123.com.domain.App": { "paths":[

”/folder/subfolder/”,

”/folder2/subfolder2/*”, ] } } }}

Page 32: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

iOS: Support Cocoapods

Page 33: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

iOS: Support Cocoapods

1. Use most up-to-date version of CocoaPods

2. Add ‘GoogleAppIndexing’ pod to Podfile

3. Save and Install Pod

4. Import GoogleAppIndexing

5. Register app

pod 'GoogleAppIndexing'

pod install

#import <GoogleAppIndexing/GoogleAppIndexing.h>

[[GSDAppIndexing sharedInstance] registerApp:your iTunes ID];

Page 34: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

Google App Indexing:

Web Markup

Page 35: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

Google App Indexing:

Web Markup

Page 36: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

Google Search App Ranking Factors

Positive Ranking Factors:

• App Installation Status• Proper Technical

Implementation• Website Signals• APP INDEXING API

(extra boost!)

Negative Ranking Factors:

Content Mismatch/ Back Button Errors

Interstitials

Page 37: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

Google Search App Ranking Factors

Positive Ranking Factors:

• App Installation Status• Proper Technical

Implementation• Website Signals• APP INDEXING API

(extra boost!)• Coming soon:

Engagement?

Negative Ranking Factors:

Content Mismatch/ Back Button Errors

Interstitials

Page 38: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

Deep Links Without Website ParitySocial Media

Apple Search Email & Paid Ads

Page 39: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

Apple Search App Indexing

in iOS 9

Page 40: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

“Apple’s App Store commission is now at a

run-rate of $9 billion, more than its total revenue in the year the iPod launched.”

- Benedict Evans, @BenedictEvans -

Page 41: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

Apple Search

SPOTLIGHT SAFARISIRI

Page 42: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

High-EngagementApp ScreensSuggested in

‘Siri Suggest’ on iOS 9 Spotlight

Siri’s Predcitive Search Uses App Indexing

Page 43: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

DEVICE INDEX(PRIVATE)

CLOUD INDEX(PUBLIC)

Apple Search Sources from Two Indexes

Page 44: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

Apple Search App Indexing Methods

CoreSpotlight NSUserActivity Web Markup

Page 45: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

Apple Search App Indexing

Option 1: NSUserActivity

Page 46: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

Core Spotlight NSUserActivity Web Markup

Used for… Indexing public app screens that mirror content on the webDOES require corresponding web content

Add code to WEB

Public Cloud Index

Used for… Indexing app screens that contain private/ personal dataDoes NOT require corresponding web content

Add code to APPPrivate Device Index

Used for… Indexing private and public navigation points in the appDoes NOT require corresponding web content

Add code to APPPrivate Device Index and/ or Public Cloud Index

Private Public

Page 47: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

Private or PublicPublic Only

Search results meta data for

display and rankings

‘Canonical’More info here: bit.ly/NSUserActivity

NSUserActivty

Page 48: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

CoreSpotlight NSUserActivity Web MarkupNSUserActivit

y

with var eligibleForSearch with var eligibleForPublicIndexing

Private/Device Index

Public/ Cloud Index

PRIVATE APP SCREEN PUBLIC APP SCREEN

Page 49: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

Apple Search App Indexing

Option 2: Core Spotlight

Page 50: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

Core Spotlight NSUserActivity Web Markup

Used for… Indexing public app screens that mirror content on the webDOES require corresponding web content

Add code to WEB

Public Cloud Index

Used for… Indexing app screens that contain private/ personal dataDoes NOT require corresponding web content

Add code to APPPrivate Device Index

Used for… Indexing private and public navigation points in the appDoes NOT require corresponding web content

Add code to APPPrivate Device Index and/ or Public Cloud Index

Private Public

Page 51: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

Search results meta data for

display and rankings

More info here: bit.ly/corespotlight

Core Spotlight

Page 52: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

Apple Search App Indexing

Option 3: Web Markup

Page 53: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

CoreSpotlight NSUserActivity Web MarkupNSUserActivit

y

with var eligibleForSearch with var eligibleForPublicIndexing

Private/Device Index

Public/ Cloud Index

PRIVATE APP SCREEN PUBLIC APP SCREEN

Page 54: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

Core Spotlight NSUserActivity Web Markup

Used for… Indexing public app screens that mirror content on the webDOES require corresponding web content

Add code to WEB

Public Cloud Index

Used for… Indexing app screens that contain private/ personal dataDoes NOT require corresponding web content

Add code to APPPrivate Device Index

Used for… Indexing private and public navigation points in the appDoes NOT require corresponding web content

Add code to APPPrivate Device Index and/ or Public Cloud Index

Private Public

Page 55: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

Web Markup – Provide URLs to Apple

Page 56: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

Twitter Cards AppLinks Smart App Banners

Web Markup

Page 57: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

Twitter Cards AppLinks Smart App Banners

Web Markup

Page 58: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

Twitter Cards AppLinks Smart App Banners

Web Markup

Page 59: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

Web Markup – Meta Data (Schema & Open Graph)

Page 60: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

bit.ly/applesearchvalidator

Test URLs for Web Markup

Page 61: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

Apple Search App Ranking Factors

Positive Ranking Factors:• App Installation Status• Personalized App

Engagement • App Result Click-Through

Rate • Keywords/ Title• Aggregated Engagement• Structured Data on Web • Canonical App IDs• Strength/Popularity of Web

URL

Negative Ranking Factors:

Low Engagement Over-Indexing Returns Keywords Spamming  Interstitials JavaScript blocking Applebot

(web only)

Page 62: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

Deep Linking in Email &

Social Media

Page 63: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

Deep Link Redirectors in Email and Social Media

Page 64: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

Deep Link Redirectors in Email and Social Media

Page 65: Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015

@goutaste

The End