`US 20160142858Al
`
`(19) United States
`02) Patent Application Publication
`Molinet et al.
`
`(JO) Pub. No.: US 2016/0142858 Al
`May 19, 2016
`(43) Pub. Date:
`
`(54) CONTEXTUAL DEEP LINKING OF
`APPLICATIONS
`
`(71) Applicant: Branch Metrics, Inc., Palo Alto, CA
`(US)
`
`(72)
`
`Inventors: Michael Charles Molinet, Palo Alto,
`CA (US); Maria Madalina Seghete.
`Palo Alto, CA (US); Alexander John
`Austin, Palo Alto, CA (US); Dmitri
`Gaskin, Albany, CA (US)
`
`(21) Appl. No.: 14/935,301
`
`(22) Filed:
`
`Nov. 6, 2015
`
`Related U.S. Application Data
`
`(60) Provisional application No. 62/096,833, filed on Dec.
`24, 2014, provisional application No. 62/079,512,
`filed on Nov. 13, 2014.
`
`Publication Classific.ation
`
`(5 1) Int. Cl.
`H04W4/00
`H04L 29106
`
`(2006.01)
`(2006.01)
`
`(52) U.S. CL.
`CPC ............... H04W 41003 (2013.01 ); H04L 67142
`(2013.01)
`
`(57)
`
`ABSTRACT
`
`A contextual deep linkingse1ver receives a request associated
`with a valid cQoiextual deep link from a client device, the
`contextual deep link associated with link data indicating a
`particular configuration of an application. TI1e server also
`receives, after determining that the client device has stored a
`previously generated fingerprint, ~tored contexnial informa(cid:173)
`tion for the client device identified by a locally stored finger(cid:173)
`print that matches the previously generated fingerprint. The
`server then generates, after determining that the client device
`does not have the previously generated tingerp1int. a unique
`fingerprint of the client device based on a plurality of char(cid:173)
`acteristics of the client device and detem1iniog w ntextual
`information of the request based on a characteristic of the
`client device. The server also traJlsmits a response to the client
`device that is selected based on the contextual infonnation of
`the client device such that the response is operable on the
`client device.
`
`Application Server
`nQ
`
`I
`I Client Link I
`I Module 1
`I
`122
`I
`L ____ J
`
`Contextual Deep Linking Server
`110
`
`SeN er Link
`Module
`ill
`
`Analysis
`Module
`11§_
`
`Analytics
`Store
`ill
`
`App Store
`HQ
`
`Network
`w
`
`Client Device
`120B
`Web Browser
`ill
`
`Client Device
`.1.WJ.
`
`Client Device
`.12.QA
`
`Application
`121N
`
`Application
`12.1A
`
`Client Link
`Module
`122
`
`001
`
`POSTSCRIPT 1009
`
`
`
`.1QQ.
`
`App Store
`140
`
`Application Server
`nQ
`
`,-----,
`
`I Client Link I
`I Module
`I
`I
`122
`I
`L ____ J
`
`Contextual Deep Linking Server
`11.Q
`
`Server Link
`Module
`1.15.
`
`Analysis
`Module
`.112
`
`Analytics
`Store
`117
`
`Network
`~
`
`Client Device
`120B
`Web Browser
`m
`
`Client Device
`.1.2QN
`
`Client Device
`120A
`
`Application
`121 N
`
`Application
`121A
`
`Client Link
`Modu le
`122
`
`FIG. 1
`
`002
`
`
`
`Patent Application Publication May 19, 2016 Sheet 2 of 7
`
`US 2016/0142858 Al
`
`Link Request
`Module
`£1.Q
`
`Fingerprint
`Generation
`Module
`220
`
`Device
`Information
`Module
`~
`
`Link Data
`Retrieval
`Module
`240
`
`Application
`Configuration
`Module
`2fill
`
`Deep Link
`Database
`2.fill
`
`Client Link Module 122
`
`FIG. 2
`
`003
`
`
`
`Patent AJ>plication Publication May 19, 2016 Sheet 3 of 7
`
`US 2016/0142858 Al
`
`Link
`Generation
`Module
`310
`
`Context
`Detection
`Module
`340
`
`Client
`Information
`Module
`380
`
`Fingerprint
`Generation
`Module
`320
`
`Fingerprint
`Matching
`Module
`330
`
`Contextual
`Data Store
`350
`
`Link Data
`Store
`360
`
`Link Data
`Module
`370
`
`Server Link Module ill
`FIG. 3
`
`004
`
`
`
`Patent AJ>plication Publication May 19, 2016 Sheet 4 of 7
`
`US 2016/0142858 Al
`
`400
`
`Receive link creation request frorn the client device with link data
`indicating a particular configuration of an application.
`ill
`
`Generate a contextual deep link including a randomly generated
`identifier.
`420
`
`•
`Store link data in association with generated contextual deep link.
`430
`
`Transmit contextual deep link to the client device.
`~
`
`FIG. 4
`
`005
`
`
`
`Patent AJ>plication Publication May 19, 2016 Sheet 5 of 7
`
`US 2016/0142858 Al
`
`Receive 8 request ,::issoci,::ited with a v,::ilid contextu8I deep link from a client
`device.
`510
`
`500
`
`Does client device have stored an indicator of a previously generated
`fingerprint?
`520
`
`No
`!
`Generate a unique fingerprint of client device based on a
`plurality of characteristics of the client device.
`530
`
`Yes
`
`\
`
`Retrieve stored contextual information for the client device identified by a
`locally stored fingerprint identified by the indicator.
`540
`
`•
`Determine contextual information of the request b;:ised on 8 characteristic
`of the client device and associate the contextual information with the
`generated fingerprint.
`550
`
`l
`
`Transmit a response to the client device that is selected based on the context of
`the client device such that the response is operable on the client device.
`~
`
`FIG. 5
`
`006
`
`
`
`Patent AJ>plication Publication May 19, 2016 Sheet 6 of 7
`
`US 2016/0142858 Al
`
`Server
`11Q
`
`600
`
`Applicalion
`121
`
`App initiated.
`filQ
`
`Generate unique fingerprint based on a
`plurality of characteristics of the client
`device.
`620
`
`Link data request+ fingerprint 630
`
`,
`
`Select link data identified by locally stored
`fingerprint matching at least a threshold
`number of elements of the received
`fingerprint.
`.Q.iQ
`
`Link data 650
`
`Configure application based on received
`link data, the link data having one or more
`configuration parameters corresponding to
`a parlicular configuration of the
`application.
`660
`
`FIG. 6
`
`007
`
`
`
`Patent Application Publication May 19, 2016 Sheet 7 of 7
`
`US 2016/0142858 Al
`
`702
`
`724
`
`PROCESSOR
`
`INSTRUCTIONS
`
`("'700
`
`708
`
`GRAPHICS
`DISPLAY
`
`710
`
`704
`724
`
`MAIN MEMORY
`
`INSTRUCTIONS
`
`ALPHA-NUMERIC
`1 4 - - - ~ INPUT DEVICE
`
`712
`
`706
`
`STATIC
`MEMORY
`
`BUS
`
`CURSOR
`CONTROL
`DEVICE
`
`714
`
`720
`
`NETWORK
`INTERFACE
`DEVICE
`
`726
`
`STORAGE UNIT
`MACHINE-
`READABLE
`MEDIUM
`
`INSTRUCTIONS
`
`716
`
`722
`
`724
`
`SIGNAL
`GENERATION
`DEVICE
`
`718
`
`FIG. 7
`
`008
`
`
`
`US 2016/0142858 Al
`
`May 19, 2016
`
`CONTEXTUAL DEEP LINKING OF
`APPLICATIONS
`
`CROSS REFERENCE TO RELATED
`APPLICATION
`[0001] This application claims the benefit of U.S. Provi(cid:173)
`sional Application No. 62/096,833, filed Dec. 24, 2014, and
`claims the benefit of U.S. Provisional Application No.
`62/079,512, filed Nov. 13, 2014, both of which are incorpo(cid:173)
`rated by reference in their entirety.
`
`BACKGROUND
`
`[0002]
`1. Field of Art
`[0003] The disclosure generally relates to the field of
`mobile applications, and specifically to contextual deep link(cid:173)
`ing of mobile applications.
`[0004] 2. Description of Art
`[0005] The development of application ecosystems on cli(cid:173)
`ent devices (such as the ecosystem associated with "applica(cid:173)
`tion stores" on smartphones) has created a system where
`users can easily install new applications and immediately add
`new functionality to their client devices. This is because the
`applications that are provided by the ecosystem are semi(cid:173)
`standardized to provide a unified installation process, and
`may use standardized library functions provided by the eco(cid:173)
`system. However, as the number of applications provided by
`these ecosystems increase, the environment on a user's client
`device becomes less cohesive as unlike with hyperlinks on the
`Internet, each application on the client device is unable to
`easily link to a section of another application on the client
`device through the application installation process. Addition(cid:173)
`ally, users are unable to direct other users to particular sec(cid:173)
`tions of these applications either, especially in the case where
`the other user does not have the application installed on his or
`her client device. This creates a situation where users are
`forced to operate each application in semi-isolation. Hence,
`what was lacking was a method of easily directing users to
`sections within applications and passing data to applications,
`regardless of the type of client device the user and whether the
`application is installed on the client device.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`[0006] The disclosed embodiments have advantages and
`features which will be more readily apparent from the
`detailed description, the appended claims, and the accompa(cid:173)
`nying figures ( or drawings). A briefintroduction of the figures
`is below.
`[0007] FIG. 1 illustrates an example system capable of
`contextual deep linking
`[0008] FIG. 2 illustrates the client link module according to
`an embodiment.
`[0009] FIG. 3 illustrates the server link module according
`to an embodiment.
`[0010] FIG. 4 is a flow chart illustrating an exemplary
`method for generating a contextual deep link according to one
`embodiment.
`[0011] FIG. 5 is a flow chart illustrating an exemplary
`method for responding to a request associated with a contex(cid:173)
`tual deep link with a context based response according to one
`embodiment.
`[0012] FIG. 6 is an interaction diagram illustrating an
`exemplary interaction for requesting and transmitting link
`data according to one embodiment.
`
`[0013] FIG. 7 is a block diagram illustrating components of
`an example machine able to read instructions from a machine(cid:173)
`readable medium and execute them in a processor (or con(cid:173)
`troller).
`
`DETAILED DESCRIPTION
`
`[0014] The Figures (FIGS.) and the following description
`relate to preferred embodiments by way of illustration only. It
`should be noted that from the following discussion, alterna(cid:173)
`tive embodiments of the structures and methods disclosed
`herein will be readily recognized as viable alternatives that
`may be employed without departing from the principles of
`what is claimed.
`[0015] Reference will now be made in detail to several
`embodiments, examples of which are illustrated in the
`accompanying figures. It is noted that wherever practicable
`similar or like reference numbers may be used in the figures
`and may indicate similar or like functionality. The figures
`depict embodiments of the disclosed system ( or method) for
`purposes ofillustration only. One skilled in the art will readily
`recognize from the following description that alternative
`embodiments of the structures and methods illustrated herein
`may be employed without departing from the principles
`described herein.
`
`Configuration Overview
`
`[0016] Disclosed by way of example embodiments is a
`system for creating and using contextual deep linking In an
`embodiment, a contextual deep linking server receives a
`request associated with a valid contextual deep link from a
`client device. The contextual deep link is associated with link
`data indicating a particular configuration of an application.
`[0017] The server retrieves, in response to determining that
`the client device has stored an indicator of a previously gen(cid:173)
`erated fingerprint, stored contextual information for the client
`device identified by a locally stored fingerprint that matches
`the previously generated fingerprint as detern1ined by the
`indicator stored on the client device. This contextual infor(cid:173)
`mation is stored on the contextual deep linking server. Oth(cid:173)
`erwise, the contextual deep linking server generates, in
`response to determining that the client device does not have
`an indicator of a previously generated fingerprint, a unique
`fingerprint of the client device based on characteristics of the
`client device and determining contextual infonnation of the
`request based on a characteristic of the client device. These
`characteristics may include the IP address, operating system
`version, hardware identifier, operating system provided iden(cid:173)
`tifier, and other characteristics that when combined may cre(cid:173)
`ate a unique fingerprint for the client device.
`[0018] The contextual deep linking server then transmits a
`response to the client device that is selected based on the
`contextual information of the client device such that the
`response is operable on the client device. For example, if the
`contextual information indicates that the client device sup(cid:173)
`ports an application ecosystem, the response can cause the
`client device to open the application specified in the link data
`of the contextual deep link. Otherwise, if the client device
`does not support an application ecosystem, the response can
`cause the client device to open a landing page on a web
`browser with more information about the application. As
`another example, if the application is not installed, the
`response can cause the client device to open an application
`
`009
`
`
`
`US 2016/0142858 Al
`
`May 19, 2016
`
`2
`
`that interfaces with an application store where the user may
`download and install the application.
`
`Example Contextual Deep Linking System
`
`[0019] FIG.1 illustrates an example system 100 capable of
`contextual deep linking The system 100 includes one or more
`client devices 120, an application store 140, an application
`server 130, and a contextual deep linking server 110.
`Although the illustrated system 100 includes the elements
`shown in FIG. 1, in other embodiments the system 100 may
`include different elements. Furthermore, the ftmctionalities
`of each element may be distributed differently among the
`elements in other embodiments.
`[0020] The network 150, which can be wired, wireless, or a
`combination thereof, enables communications among the cli(cid:173)
`ent devices 120, the application store 140, the application
`server 130, and the contextual deep linking server 110 and
`may include the Internet, a LAN, VLAN ( e.g., with VPN),
`WAN, or other network. In one embodiment, the network 150
`uses standard co111111unications technologies and/or proto(cid:173)
`cols, such as Hypertext transfer Protocol (HTTP), Transmis(cid:173)
`sion Control Protocol/Internet Protocol (TCP/IP), Uniform
`Resource Locators (URLs), and the Doman Name System
`(DNS). In another embodiment, the entities can use custom
`and/or dedicated data co111111tmications technologies instead
`of, or in addition to, the ones described above.
`[0021] The application store 140 is a component in an
`application ecosystem ( e.g., a mobile application ecosystem)
`that provides a centralized location for client devices to sub(cid:173)
`mit requests for applications to be installed on the client
`device 120. The application store 140 provides an interfacing
`application that may be preinstalled on the client devices 120.
`The application store 140 also includes a database of avail(cid:173)
`able applications along with application metadata such as
`installation requirements, application permissions, and so on.
`The application store 140 receives requests to install applica(cid:173)
`tions from the interfacing application. In response to the
`request, the application store 140 transmits the data used to
`install the application to the client device 120.
`[0022] The client devices 120 are electronic devices used
`by users to perform functions such as consuming digital con(cid:173)
`tent, executing software applications, browsing websites
`hosted by web servers on the network 150, downloading files,
`and interacting with the application store 140, the application
`server 130, and the contextual deep linking server 110. For
`example, the client devices 120 may be dedicated e-readers,
`smartphones, wearables ( e.g., smartwatches or pendants), or
`tablets, laptops, or desktop computers configured similar to
`an exemplary machine ( or computing system) described with
`FIG. 7.
`[0023] Each client device 120 includes one or more appli(cid:173)
`cations 121 that when executed by the client device 120
`perform various functions as defined by the application devel(cid:173)
`oper. The application 121 may utilize the operating system
`and hardware features of the client device 120, and may
`interface with the user using one or more input/output com(cid:173)
`ponents of the client device 120. Examples of applications
`121 include a navigation application, an online radio appli(cid:173)
`cation, an electronic ( e-) conllllerce application, a local busi(cid:173)
`ness reviews application, and so on.
`[0024]
`In one embodiment, one or more applications 121
`support contextual deep links. A contextual deep link indi(cid:173)
`cates a particular configuration for an application 121. In
`some cases, this configuration is simply a reference to a
`
`location in an application 121, such as a section within the
`application 121. For example, a particular location in a
`crowd-sourced review application may be a review page for a
`local restaurant. This link to a location in the application 121
`by itself may also be known as a deep link. In other cases, this
`configuration includes particular settings, parameters, vari(cid:173)
`ables, and other options for the application 121. For example,
`a particular set of settings for an e-commerce application may
`set a certain referral bonus for a particular user account.
`[0025]
`In one embodiment, the contextual deep link may be
`a Uniform Resource Locator (URL). Furthennore, when a
`client device 120 makes a request associated with a contex(cid:173)
`tual deep link for the application 121, the client device 120
`receives from the contextual deep linking server 110 a
`response that is based on the contextual information of the
`client device 120. The contextual inforniation may include
`the platform of the client device 120 ( e.g., mobile or desktop),
`the type and version of the operating system executing on the
`client device 120, whether the application 121 is installed on
`client device 120 already, and so on. As the response is con(cid:173)
`textual and not fixed, any client device 120 is able to operate
`on the response. This allows for the use of the contextual deep
`link across all client device platfonns.
`[0026] As an example, a contextual deep link may be au
`URL in the format of"http://link-provider.com/[application
`identifier]/[unique identifier]". In this example, "link-pro(cid:173)
`vider.com" is the domain name associated with the entity
`perfonning the operations coordinating the contextual deep
`linking This may be associated with a specialized server such
`as a contextual deep linking server as described below. The
`"[application identifier]" is a unique character string identi(cid:173)
`fier that identifies the application in question. The "[unique
`identifier]" is another unique character string identifier that
`identifies the particular link. Note that other embodiments of
`a contextual deep link may have a different combination of
`identifiers in a URL (e.g., the URL may include a query
`string). When a user clicks ( or interacts) with the contextual
`deep link, a request is made to the "link-provider.com" server
`which receives the unique identifiers and is able to send a
`contextually valid response to the client device 120 of the
`user. For example, if the user is using a mobile device that
`supports a mobile application ecosystem, the server may
`detect this contextual information and respond with a redi(cid:173)
`rection to the application store on the user's client device 120
`if the user does not have installed the application referenced
`in the link.
`[0027] To support contextual deep linking, in one embodi(cid:173)
`ment, an application 121 includes a client link module 122
`that requests contextual deep links from the contextual deep
`linking server 110 and retrieves link data related to contextual
`deep links from the contextual deep linking server 110. To
`create a contextual deep link to send to a second client device
`120, the first client link module 122 on a first client device 120
`requests the contextual deep link from the contextual deep
`linking server 110. The first client link module 122 also sends
`link data to the contextual deep linking server 110, indicating
`a particular configuration of the application 121. The first
`client link module 122 then receives newly generated contex(cid:173)
`tual deep link from the contextual deep linking server 11 0.
`[0028] When the second client device 120 sends a request
`associated with the contextual deep link ( e.g., as a result of
`receiving a tap interaction to the contextual deep link from a
`user), the second client device 120 receives a response from
`the contextual deep linking server 110. Ifthe application 121
`
`010
`
`
`
`US 2016/0142858 Al
`
`May 19, 2016
`
`3
`
`indicated by the link data of the contextual deep link is
`already installed on the second client device 120, then the
`response includes a link that causes the second client device
`121 to open or initiate the application 121 on the second client
`device 120. When the application 121 initiates, the second
`client link module 122 on the application 121 of the second
`client device 120 transmits a request to the contextual deep
`linking server 110 for any link data. The second client link
`module 122 then uses the received link data to configure the
`application 121. If the application 121 indicated by the link
`data of the contextual deep link is not installed on the second
`client device 120, the response includes a link that causes the
`second client device 121 to open or initiate an application that
`interfaces with the application store 140 and which causes the
`application store application to open a landing page of the
`application 121.
`[0029]
`In another embodiment, to create a contextual deep
`link, the client link module 122 does not initially request a
`contextual deep link from the server. Instead, the client link
`module 122 may independently generate a contextual deep
`link according to a particular format that also includes the link
`data for which the application is configured to associate with
`the contextual deep link. In one embodiment, this format is
`"link-provider.com/key=[ application identifier] ?[link data],"
`where the "application identifier" represents an identifier of
`the application as described above, and the "link data" repre(cid:173)
`sents a query string with the link data that the application is
`configured to associate with the independently generated
`contextual deep link.
`[0030] When the second client device 120 sends a request
`associated with the contextual deep link, the request is made
`to the contextual deep linking server 110. The contextual deep
`linking server 110 identifies the link data indicated in the
`independently generated contextual deep link and stores the
`link data. The contextual deep linking server 110 generates a
`new contextual deep link, and associates the newly stored link
`data with the newly generated contextual deep link. The con(cid:173)
`textual deep linking server 110 responds to the request from
`the second client device 120 with this newly generated con(cid:173)
`textual deep link. The second client device 120 is directed to
`the location indicated by the newly generated contextual deep
`link, and receives response data that causes the second client
`device 120 to perform one or more actions as described above
`for the non-independently generated contextual deep link.
`[0031]
`In one embodiment, the responses described above
`are performed in real time by the contextual deep linking
`server 110 such that there is no delay or no delay beyond a
`threshold or user perceptible time period between a request
`made to the contextual deep linking server 110 and a response
`by the contextual deep linking server 110. By having the
`responses be made in real-time or near real-time, the user
`does not easily perceive any delay in determining the context
`or configuring the application based on the link data, thus
`providing a seamless experience.
`[0032]
`In some embodiments, this client link module 122 is
`provided by the developer of the contextual deep linking
`system to the developer of the application 121 as a plug-in or
`library that is inserted into the application 121.
`[0033]
`In some embodiments, the client device 120
`includes a web browser 123 that can transmit requests asso(cid:173)
`ciated with contextual deep links. In such a case, the contex(cid:173)
`tual deep link takes the fonn of a Hypertext Markup Lan(cid:173)
`guage (HTML) hyper link. The web browser 123 displays the
`hyperlink contextual deep link and if a user clicks, taps, or
`
`interacts with the hyperlink, the web browser 123 submits a
`request to the contextual deep linking server 110 indicated by
`the hyperlink. The web browser 123 then receives a response
`based on the context of the client device 120 that is executing
`the web browser 123.
`[0034] The contextual deep linking server 110 generates
`contextual deep links in response to requests from applica(cid:173)
`tions, sends responses to client devices making requests for
`valid contextual deep links, and provides analytics regarding
`the contextual deep links to application owners. As illus(cid:173)
`trated, the contextual deep linking server 110 includes a
`server link module 115, an analysis module 116, and an
`analytics store 117.
`[0035] The server link module 115 generates contextual
`deep links in response to requests and transmits responses to
`requests associated with valid contextual deep links that are
`selected based on the context of the client device making the
`request.
`In one embodiment. the server link module 115
`[0036]
`receives requests from applications 121 to generate contex(cid:173)
`tual deep links. When the server link module 115 receives
`such a request, it generates a new contextual deep link and
`associates that link with the infonnation associated with the
`request. The server link module 115 may also receive link
`data along with the request. As described above, this link data
`describes information that the application 121 has requested
`to be associated with the generated contextual deep link and
`can indicate a particular configuration of an application 121.
`The server link module 115 stores this link data and associates
`it with the generated contextual deep link.
`[0037] The server link module 115 also responds to
`requests associated with contextual deep links. When the
`server link module 115 receives a request from a client device
`120 associated with a contextual deep link, the server link
`module 115 determines if the client device 120 has stored an
`indicator of a unique fingerprint ( e.g., in a cookie). If such an
`indicator of a fingerprint exists, the server link module 115
`retrieves previously stored contextual information about the
`client device 120 based on the fingerprint. If no fingerprint
`exists, the server link module 115 generates one based on
`characteristics of the client device 120 ( e.g., network address,
`operating system version, and so on). The server link module
`115 also determines contextual infonnation for the client
`device 120 based on the characteristics of the client device
`120. Based on the contextual information, the server link
`module 115 transmits a response back to the client device 120
`such that the response is operable on the client device 120.
`[0038] Additionally, the server link module 115 may
`receive a request for link data from an application 121 on a
`client device 120. The server link module 115 once again
`determines the fingerprint of the client device 120 and
`retrieves any link data that is associated with a contextual
`deep link that has a recently associated request from a client
`device 120 with the same fingerprint. The server link module
`115 sends this link data to the client device 120.
`[0039] The analysis module 116 analyzes requests associ(cid:173)
`ated with contextual deep links to provide analytics informa(cid:173)
`tion for an owner of an application. An owner of an applica(cid:173)
`tion may be the developer of the application 121 or an entity
`that owns the legal rights to the application 121. The types of
`analytical infomiation that the analysis module 116 provides
`to the owner may include the client devices 120 that have
`clicked on contextual deep links, known information about
`client devices 120 including characteristics of the client
`
`011
`
`
`
`US 2016/0142858 Al
`
`May 19, 2016
`
`4
`
`devices 120, as well as inferred profile information of the
`users of the client devices based on their contextual deep link
`interaction history.
`[0040] The analysis module 116 may also provide informa(cid:173)
`tion to the owner of an application 121 regarding some the
`actions that a user performs in the application 121 that was
`referenced by a contextual deep link. Examples of such
`actions may include the sections in the application that a user
`subsequently accessed, any sponsored content that the user
`subsequently consumed in the application 121, and so on. In
`one embodiment, the analysis module 116 provides the infor(cid:173)
`mation described above to the owner via a web interface.
`[0041]
`In one embodiment, the contextual deep linking
`server 110 receives from the owner of the application tagging
`information associated with each contextual deep link. The
`tagging information may be included in the link data or a
`separate tag data for the contextual deep link. The analysis
`module 116 provides the tagging information to the owner for
`each contextual deep link that has been interacted with and
`which has tagging infomrntion associated with it. Examples
`of tags include tags indicating campaigns, tags indicating
`referral programs, tags indicating invites, and so on.
`[0042] The analytics store 117 stores the data that the
`analysis module 116 uses to provide analytics information to
`the owner. This data may include the data described above
`that is used by the analytics module 116. In one embodiment,
`the data in the analytics store 117 is received from the server
`link module 115.
`[0043] The application server 130 provides any server side
`functionality that is needed for one or more of the applications
`121. W11ile a single application server 130 is illustrated, in
`other embodiments more than one application server 130 may
`be used to support different applications 121. Although the
`application server 130 is illustrated with a client link module
`122, in other embodiments the application server 130 also
`includes additional components, such as server-side applica(cid:173)
`tion module to process server-side functions of the applica(cid:173)
`tion 121, a web server, and/or a database to store server-side
`data related to the application 121. As with the functionality
`of the application 121, the functionality of the application
`server 130 is primarily determined by the owner of the appli(cid:173)
`cation 121 itself.
`[0044]
`In one embodiment, the application server 130
`includes a client link module 122 that may perform the same
`functions as the client link module 122 on the application 121.
`The client link module 122 may be used to request a contex(cid:173)
`tual deep link from the contextual deep linking server 110.
`The client link module 122 on the application server 130
`provides this generated contextual deep link to client devices
`120 that connect to the application server 130. For example,
`the application server 130 may include a web server, and the
`application server 130 may receive a web page request from
`a client device 120. In response, the client link module 122 on
`the application server 130 may request a contextual deep link
`and present this to the userof the client device 120 via the web
`server.
`[0045] The system 100 described above presents an
`improved method in computer networks of sending a link that
`indicates a particular configuration within an application of
`an application ecosystem based on the contextual information
`of the client device making the request associated with the
`link. Such a system may be used to at least address an issue in
`computer networks of how to identify a client device through
`separate requests to a server in order to send link data asso-
`
`ciated with a contextual deep link to the client device. Addi(cid:173)
`tionally, such a system may be used to at least address an issue
`in computer networks of how to provide access to a deeper
`level of an application, such as to provide access to a location
`in an application, orto provide access to a configuration of the
`application. An application can request a contextual deep link
`that indicates a particular configuration within the applica(cid:173)
`tion, and a contextual deep linking server responds with the
`newly generated contextual deep link. Wllen a user of a client
`device interacts with the contextual deep link, the contextual
`deep linking server detem1ines the context of the client device
`by determining the characteristics of the cli