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 identifies who invited the new user. Without deferred attribution, that context is lost the moment the user goes through the App Store.

With Flinku SDK 0.7.0, create invite links with referrerId params, configure with a publishable flk_pk_ key, call Flinku.setUserId after signup, and call Flinku.qualifyReferral when they place their first order. Flinku attributes the referral automatically. Do not DIY by reading params after match() and posting to your own track endpoint.

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, create an invite link with Flinku referral params (referrerId required, referrerLabel optional):

final referralLink = Flinku.createLinkInstant(
  name: 'Referral from ${user.name}',
  deepLink: 'foodapp://home',
  params: {
    'referrerId': user.id,
    'referrerLabel': user.name,
  },
);

Configure once with your publishable key (never flk_live_ in the app):

Flinku.configure(
  baseUrl: 'https://yourapp.flku.dev',
  apiKey: 'flk_pk_...',
);

After the new user signs up, attribute the referral with the SDK. When they place their first order, qualify it:

// After signup or login
Flinku.setUserId(user.id);

// When they place their first order (the action you actually reward)
Flinku.qualifyReferral('first_order');

Do not manually parse referrerId from match() and credit via your own backend for Flinku's referral system. Use setUserId / qualifyReferral, then pay out from the referral webhook if you need server-side rewards. See docs.flinku.dev/docs/referral-system.

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():

Flinku.configure(
  baseUrl: 'https://yourapp.flku.dev',
  apiKey: 'flk_pk_...', // publishable key; required for referrals
);

Handle incoming deep links on launch (navigation). Referrals are attributed separately via setUserId after auth:

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 'promo':
      applyPromo(uri.queryParameters['code']);
      navigateTo(HomeScreen());
      break;
    case 'order':
      navigateTo(OrderTrackingScreen(orderId: uri.queryParameters['orderId']));
      break;
    default:
      navigateTo(HomeScreen());
  }
}

// After signup or login (referral attribution)
Flinku.setUserId(currentUser.id);

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 use referrerId params plus setUserId / qualifyReferral so attribution survives the App Store install.

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: ^0.7.0

Full setup guide is at docs.flinku.dev.