How Food Delivery Apps Use Deep Linking to Drive More Orders
A user sees a friend share a link to a restaurant on Instagram. They tap it. If the app is installed, they land directly on that restaurant's page ready to order. If not, they get sent to the App Store, install the app, and still land on that exact restaurant — not the home screen.
That experience is deferred deep linking. For food delivery apps, it is one of the highest-leverage features you can build. Here is how it works in practice and how to implement it with Flinku.
The Problems Deep Linking Solves
Sharing a specific restaurant or dish
Without deep linking, sharing your app means sharing the App Store page or the home screen. The person has to search for the restaurant themselves after installing. Most do not bother.
With deep linking, the shared link opens directly to the restaurant, dish, or promotion — even after a fresh install.
Referral programs
A referral link does two things: it identifies who referred the new user, and it gives that user a reward on their first order. Without deferred deep linking, the referral context is lost the moment the user goes through the App Store. The new user installs the app, opens it, and the referral is gone.
With Flinku's deferred deep linking, the referral ID survives the install. The new user opens the app for the first time and the reward is already applied.
Promo campaigns
A time-limited promo — 20% off your next order, free delivery this weekend — needs to land the user in exactly the right place with the code already applied. A generic app store link wastes the campaign.
Re-engagement
Push notifications and SMS campaigns that deep link back to specific content drive significantly higher conversion than ones that open the home screen.
The Core Flows
Flow 1 — Share a Restaurant Page
A user is browsing your app and wants to share a restaurant with a friend.
final link = Flinku.createLinkInstant(
name: 'Pizza Palace',
deepLink: 'foodapp://restaurant?id=pizza-palace&name=Pizza+Palace',
title: 'Check out Pizza Palace on FoodApp',
description: 'Amazing margherita pizza — you have to try it',
);
Share.share(link.shortUrl);
createLinkInstant generates the short URL on-device with no network wait. The user taps share and the link is ready immediately.
When the recipient taps the link:
If the app is installed — opens directly to the Pizza Palace page. If not installed — goes to the App Store, installs, opens to Pizza Palace automatically.
Flow 2 — Referral Program
When a user wants to invite a friend, generate a referral link tied to their user ID:
final referralLink = Flinku.createLinkInstant(
name: 'Referral from ${user.name}',
deepLink: 'foodapp://referral?referrerId=${user.id}&reward=5+OMR',
);
On the receiving end, after install, Flinku.match() returns the deep link with the referrerId and reward parameters intact:
final match = await Flinku.match();
if (match != null && match.deepLink.contains('referral')) {
final referrerId = match.params['referrerId'];
final reward = match.params['reward'];
applyReferralReward(referrerId, reward);
}
The reward is applied before the user places their first order. No friction, no manual code entry.
Flow 3 — Promo Campaign
For a marketing campaign, create the link in the Flinku dashboard or via API with a UTM source so you know which channel it came from:
foodapp://promo?code=SAVE20&discount=20&ref=instagram
When users tap the link from Instagram, the promo code is already embedded. Your app reads it on launch and applies the discount automatically.
You can set the link to expire at the end of the campaign, add a maximum click limit, or restrict it by country using Flinku's geo routing — so a promotion for one region does not accidentally reach users elsewhere.
Flow 4 — Order Tracking
A delivery confirmation SMS or push notification can link directly to the order tracking screen:
foodapp://order?orderId=12345
The user taps the notification and lands directly on their live order status — not the home screen where they have to find their order themselves.
Setting Up the App
Configure Flinku in your Flutter app's main():
await Flinku.configure(
subdomain: 'yourapp',
apiKey: 'flk_pk_your_publishable_key',
);
Handle incoming deep links on launch:
final match = await Flinku.match();
if (match != null) {
final uri = Uri.parse(match.deepLink);
switch (uri.host) {
case 'restaurant':
navigateTo(RestaurantScreen(id: uri.queryParameters['id']));
break;
case 'referral':
applyReferral(uri.queryParameters['referrerId']);
navigateTo(HomeScreen());
break;
case 'promo':
applyPromo(uri.queryParameters['code']);
navigateTo(HomeScreen());
break;
case 'order':
navigateTo(OrderTrackingScreen(orderId: uri.queryParameters['orderId']));
break;
}
}
Analytics
Every Flinku link tracks clicks by platform, country, browser, and referrer. For a food delivery app running paid campaigns, you can see exactly which links are driving installs versus re-opens, and which countries are converting.
Combine this with UTM parameters on your campaign links and you have full attribution from ad click to app install to first order — without a separate analytics tool.
What This Looks Like in Practice
A food delivery app using Flinku typically sets up four link types:
Shareable restaurant and dish links — generated in-app by users, drive organic word-of-mouth installs.
Referral links — tied to user IDs, survive the App Store install, apply rewards automatically.
Campaign links — created in the dashboard, expire on schedule, tracked by UTM source.
Re-engagement links — embedded in push notifications and SMS, route users to specific screens.
Each of these works across iOS, Android, and web from a single short URL. No separate link per platform, no separate SDK per use case.
Getting Started
Create a free Flinku account at app.flinku.dev. The free plan covers 300 links and 10k clicks per month — enough to validate the flows before going to production.
The Flutter SDK is on pub.dev:
dependencies:
flinku_sdk: ^latest
# Check current version at pub.dev/packages/flinku_sdk
Full setup guide is at docs.flinku.dev.