In the context of mobile apps, deep linking consists in using a Uniform Resource Identifier (URI) that links to a specific location within a mobile app rather than simply launching the app.
For Docebo’s Go.Learn app and for the branded app, the use of deep links opens the app to a wide series of integration scenarios, where most of the startup and navigation parameters within the app are passed to the app while launching it. The LMS Platform URL, user authorization and target courses are just a few examples of the information that can be automatized via deep linking. Thus, it’s not necessary for end users to understand the technical functions happening within the app in order for them to easily access their app and courses.
Please note that Deep Linking is a very technical functionality. In order to configure it, you should contact your content developer or a member of your company’s IT department. Also note that this functionality is different from Docebo platform Course Enrollment Link feature, explained in the article Managing Course Enrollment Links.
The use of deep links opens various opportunities, such as:
- Creating a link that takes the user to a specific course in which they are enrolled, allowing the user to skip the login process
- Launching a specific training material in Go.Learn or in the branded app from another app
- Sharing a link to informal assets into social posts (using a proper JS redirect)
Deep Linking URI and Scheme
golearn:// is Docebo Go.Learn app’s default scheme.
In order to start the app, simply invoke this URI (golearn://) from any other app or webpage.
Below, you’ll find an example of the structure of a Go.Learn deep link:
- golearn:// : scheme
- allchannelspage : target path
- domain=ZGVtby5jb20= : domain param
- token=eyJhbGc.jM5MDIyf.EowmOx6Iy : JWT token param
There is only one mandatory element, the Scheme, which triggers the app invocation. Use the Target Path to navigate toward a specific page or training material and the Domain parameter (it is an optional parameter) to pass the LMS URL in Base64 format. The last part, JWT Token parameter (an optional parameter), is the authorization bearer.
Navigating to Pages
Navigating to Content
Domain and Token optional parameters are available to make the access and login processes more straightforward. In fact, by using these parameters, you can directly specify the platform’s URL where you want to log in and a bearer of the credentials you use to log in in the deep link.
The Domain parameter contains the Base64 encoded platform URL. golearn://allchannelspage?domain=bXlwbGF0Zm9ybS5kb2NlYm9zYWFzLmNvbQ== navigates to the app’s All Channels page on the platform myplatform.docebosaas.com.
Please note: If the Go.Learn user is already logged into the given platform, Go.Learn navigates directly to the page specified in the Target path section of the deep link. If no user is currently logged in, Go.Learn navigates to the Login page on the specified platform URL. Then, after a successful login, it navigates to the page specified in the Target path section of the deep link.
If a user is currently logged in, but into a different platform, then this user is logged out and Go.Learn navigates to the Login page on the specified platform URL. Finally, after a successful login, it navigates to the page specified in the Target path section of the deep link.
Also note: In a branded mobile app having a fixed domain, the Domain parameter is ignored. You can avoid inserting this parameter, since it is not used.
The Token parameter must be a JWT token containing the authorization to access the platform. Learn how to build a proper JWT token. Remember that, if you are using a custom domain, you should include the original domain of the Docebo saas as hostname in the "aud" (Audience) field of the JWT token.
golearn://allchannelspage?token=eyJhbGc.jM5MDIyf.EowmOx6Iy&domain=bXlwbGF0Zm9ybS5kb2NlYm9zYWFzLmNvbQ== navigates to the app’s All Channels page on the platform myplatform.docebosaas.com using the credentials specified in the JWT token in the Token parameter.
Please note that the Token parameter must contain the JWT string, and the access key is not a valid value for this parameter.
For security reasons, it is strongly suggested to avoid embedding deep links into a static HTML document. On the contrary, it is suggested to navigate to deep links as a result of a function asking that the deep link is composed on the backend side.
Not all of the IDs used to compose a deep link are eternal. If you think that the ID of an object could change over the course of time, it’s better to generate the deep link on the fly using functions.