Marketing Deep Links

Map a URL button on a marketing template to an Android app deep link via app_deep_link, with fallback URLs for non-Android clients and uninstalled-app users.

A marketing deep link is an Android app_deep_link configuration on a URL button inside a marketing template. When the recipient taps the button on an Android device, WhatsApp tries to open your app at the specified deep-link URI instead of opening the website. iOS and non-Android clients always fall back to the website URL.

This is exclusive to Marketing Messages API for WhatsApp — Cloud API marketing templates do not support app_deep_link. If you create a template with this component and send it through Cloud API, the deep link is ignored and the user lands on the fallback website URL.

Where They Apply

  • Only on URL buttons inside marketing templates.
  • Only triggered on Android devices that have the target app installed.
  • Conversion attribution to MM API marketing campaigns requires the receiving app to correctly preserve fbclid from the deep link — see Conversion Tracking → Android Deep Link Attribution.

Create via WhatsApp Manager

  1. Open WhatsApp Manager and navigate to Message templates → Manage templates.
  2. Click Create template.
  3. Select Marketing tab → Custom radio → Next.
  4. In the Buttons section, choose + Add buttons → Visit website.
  5. Check Track app conversions to expose the deep-link fields.
  6. Fill in the deep-link configuration (see field reference below).
  7. Add other components, name the template, submit for approval.

You can edit an existing template later to add the deep-link fields, but doing so triggers another template review cycle.

Create via Message Templates API

curl 'https://graph.facebook.com/<GRAPH_VERSION>/<WABA_ID>/message_templates' \
  -H 'Authorization: Bearer <ACCESS_TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "summer_deals_deep_link_v1",
    "language": "en_US",
    "category": "marketing",
    "components": [
      { "type": "header", "format": "text", "text": "Summer Deals" },
      { "type": "body", "text": "Beat the heat with deals on succulents! Use the button below to see our Summer Steals!" },
      {
        "type": "buttons",
        "buttons": [
          {
            "type": "url",
            "text": "View Deals",
            "url": "https://www.example.com/deals/summer/",
            "app_deep_link": {
              "meta_app_id": 123456789012345,
              "android_deep_link": "myapp://deals/summer/",
              "android_fallback_playstore_url": "https://www.example.com/deals/summer/"
            }
          }
        ]
      }
    ]
  }'

The app_deep_link object lives inside the URL button object, not at the root of the button array.

Field Reference

FieldRequired?What it is
url (button-level)YesThe fallback website URL. Used on iOS, on Android when the app is not installed, and on every non-Android client. Loaded in the device's default browser.
app_deep_link.meta_app_idYes (for app_deep_link)The numeric Meta app ID associated with your business portfolio that owns the access token used to send.
app_deep_link.android_deep_linkYes (for app_deep_link)The Android deep-link URI. Custom scheme (myapp://path) or HTTPS App Link.
app_deep_link.android_fallback_playstore_urlYes (for app_deep_link)URL loaded if WhatsApp cannot open the deep-link URI on Android — typically your Play Store listing or a web page that bounces the user toward installing the app.

meta_app_id is the same numeric ID you'd find on the Meta App Dashboard for the app whose access token is sending the template. If you use multiple Meta apps, the deep link binds to the specific app whose token sends the message.

Fallback Behavior

The order of resolution when the user taps a URL button with app_deep_link:

  1. Android with app installed and intent filter matches → WhatsApp opens your app at android_deep_link.
  2. Android with app missing or intent filter mismatch → WhatsApp loads android_fallback_playstore_url in the default browser.
  3. iOS / desktop / web client → WhatsApp loads the button's url (website fallback) in the default browser.

If android_fallback_playstore_url is omitted, the WhatsApp client falls back to the button's main url instead — but Meta recommends always specifying a fallback to control where uninstalled-app users land.

Attribution and fbclid

Meta appends fbclid to whichever URL is actually opened — both the deep-link URI and the fallback URLs receive it. The receiving Android app must extract and persist it; otherwise conversion attribution silently fails. The full Android implementation requirements are in Conversion Tracking → Android Deep Link Attribution.

Common pitfalls for app implementers:

  • Reading the URI in onCreate() only and ignoring onNewIntent().
  • Stripping query params when rebuilding the URI for an internal route.
  • Not persisting attribution params across sessions.
  • Failing to install Pixel/Conversions API on the website fallback URL — uninstalled-app users go there and never produce attributed events.

Related

  • Marketing Messages API for WhatsAppMM API for WhatsApp: the /marketing_messages endpoint, feature comparison vs Cloud API, status webhook shape, fallback behavior, and the disable-marketing-on-Cloud-API toggle.
  • Marketing Conversion TrackingMeasure conversions from marketing messages with Meta Pixel, Conversions API, and the Meta SDK. Includes fbclid handling, the click-event webhook, and Android deep-link attribution.
  • Marketing MessagesMarketing template messaging hub: send paths (Cloud API and MM API), specialty template types, opt-out handling, billing, quality, and compliance.
Browse more docsStart Free Trial