Mobile Deep Linking – Lesson Learned

You’ve probably heard of “deep linking” when it comes to mobile apps. These are the clever links that sit in your e-mail and launch your mobile app instead of going to a web page based. It’s really slick and helpful, except there can be some hidden pitfalls.


On one hand, deep links are pretty simple. You can install your mobile app and have it register a URI handler so that while “HTTP://” launches the web browser, “EPICAPP://” will launch your new epic app. You can add your own paths beyond that, for account activation, load an item, whatever you want.

The problem (as it came to full fruition today) is that a lot of mobile mail reading apps (I’m looking at you Gmail) will strip out that URI prefix because it isn’t recognized as a “standard” one. As a result, your deep link are effectively nerfed since you’ll lose a good chunk of your users.

What’s the solution? One option is to use a service like They allow you to setup a “standard” URL for your notifications that will detect what kind of device clicked the link (desktop, iPhone, Android Phone, etc.) and redirect the user to the appropriate location (your mobile app or the web browser). They can even provide analytics to see who is clicking on your links and which devices are in the most use.

If you’re in a bind (like I was today) or don’t quite have the budget to sign up for a service, you can setup a special path on your web app that does a redirect to your deep link. This will allow your mobile e-mail client to have a “proper” link. The user taps on it, which launches their mobile browser. The endpoint redirects the user to the applications deep link, and the browser will prompt you to open the link in that app. Problem solved. Sure it’s a “double hop” but it’s better than losing a lot of your users.

Oh, and if you’re using Laravel, you can set this up quite easily in your routes.php file:

/* Deep Link Redirect - For mobile redirect to application */
Route::group(['prefix' => 'mobile'], function() {

    Route::get('activate/{userId}/{key}', function($userId, $key) {
        return Redirect::to('epicapp://activate/key?userId=' . $userId . '&key=' . $key);

Here’s my example: I have my mobile e-mail contain with a link to

Larval will hit this and redirect to my special deep link


This prompts me to open the app and we’re gravy!

Hope this helps!


2 thoughts on “Mobile Deep Linking – Lesson Learned”

  1. Hello, this article is great. I have read many articles about mobile deep linking and this one kinda suited what i need. I have not tried in yet though, but i am going to try it on my rails app. I hope it will work the same.
    Btw i have a question, Should i set something on the mobile application to handle epicapp://activate/key?userId=99&key=w00tk3y request or not because it will be automatically triggered ?
    actually i only handle API service, since the mobile application’s handled by other dev. I am a newbie too, so i’ll really appreciate your answer. thanks.

    1. You would just need to make sure you have something in your application routing that will retrieve your “activate” endpoint and parse the input accordingly. By default it would simply launch the app.

What are your 10 bits on the matter? I want to know!

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s