Shopping Portal Mobile Embedded Experience: Technical Implementation Guide - Wildfire Support Center

Shopping Portal Mobile Embedded Experience: Technical Implementation Guide

31 min

Shopping Portal Shopping Portal

Mobile Embedded Integration Guide
Technical reference for partners embedding the Shopping Portal as a WebView within a native mobile application.

1. Introduction 1. Introduction

The Shopping Portal is a web-based marketplace where your users can discover cashback offers and coupon savings from affiliate merchants. When a user clicks through to a merchant from the portal, the resulting purchase is tracked via affiliate links, and the user earns cashback on qualifying transactions.

This guide covers the embedded WebView integration model, where the Shopping Portal lives entirely inside your native mobile app. This is Wildfire’s recommended approach because it provides the highest level of control over the user experience and, critically, over affiliate attribution — the mechanism that connects a user’s click to their eventual purchase and cashback earnings.

An alternative option, the Browser Click-Out model, is summarized at the end of this document for partners where speed to market or limited engineering resources make a fully embedded approach impractical.

2. The Post-Click Experience: The Most Important Decision 2. The Post-Click Experience: The Most Important Decision

Before diving into implementation details, every partner needs to make a fundamental UX and technical decision: what happens when a user taps a merchant link inside the portal?

There are two options:

Why This Matters: Affiliate Attribution Why This Matters: Affiliate Attribution

Cashback earnings depend on an unbroken affiliate attribution chain. When a user clicks a merchant link in the portal, the following happens:

  1. The click is routed through one or more affiliate network redirect URLs.
  2. The affiliate network drops a tracking cookie in the user’s browser or WebView.
  3. When the user completes a purchase on the merchant’s site, the merchant’s conversion pixel reads that cookie to attribute the sale back to the affiliate click.
  4. The attributed sale generates a commission, which funds the user’s cashback.

If any step in this chain is interrupted — a redirect is intercepted, a cookie is blocked, or a tracking parameter is stripped — the purchase cannot be attributed and the user will not receive cashback.

⚠️  Attribution Risk
Broken attribution is invisible to the user. They will complete their purchase, expect cashback, and never receive it. This is the single most common source of user complaints and support escalations in cashback programs. The post-click model you choose directly affects how often this happens.

Comparison: In-WebView vs. Browser Click-Out Comparison: In-WebView vs. Browser Click-Out

In-WebView (Recommended) Browser Click-Out
Attribution reliability High. Cookie jar is consistent; redirect chain stays intact within the same WebView context. Lower. Subject to ITP (Safari), ETP (Firefox), and evolving Chrome cookie policies. Third-party cookies may be blocked or expire.
Redirect chain integrity Full control. No handoff means no interception by OS-level link handlers, password managers, or default browser settings. Redirect chain exits your app. Universal links, smart link handlers, and browser extensions can intercept or alter the chain.
Merchant site compatibility Most merchant sites work. Some complex checkout flows (3D Secure, OAuth popups, new-window requests) may require additional WebView configuration. Full browser rendering. All merchant sites work as expected, including complex payment and authentication flows.
User experience Seamless. User stays inside your app. Back-navigation, session state, and app session are preserved throughout. Context switch. User leaves your app to complete the purchase. Returning to the app requires the user to manually switch back.
Implementation effort Higher. Requires WebView configuration, link routing logic, and thorough QA of merchant site rendering. Lower. Requires native bridge setup, but less QA burden than in-WebView since merchant sites render in the system browser.
Recommended for Partners prioritizing attribution accuracy and a cohesive user experience. Partners with limited engineering resources or where speed to market outweighs attribution risk.

Our Recommendation Our Recommendation

Use the in-WebView post-click model unless you have a specific reason not to. We have validated this approach with existing partners, and it provides the most reliable attribution and the best user experience. The remainder of this guide assumes the in-WebView model unless otherwise noted.

If you choose browser click-out, please discuss the tradeoffs with your Client Success Manager before proceeding. We can help you understand the attribution impact based on your user base and merchant mix.

3. WebView Setup 3. WebView Setup

The Shopping Portal is delivered as a responsive web application that your app hosts inside a WebView. Your app provides the native shell — the header, navigation chrome, status bar handling, and safe-area insets — while the portal supplies the content.

3.1 Required WebView Capabilities 3.1 Required WebView Capabilities

The WebView hosting the portal must have the following capabilities enabled:

3.2 Platform-Specific Notes 3.2 Platform-Specific Notes

iOS (WKWebView) iOS (WKWebView)

Android (WebView) Android (WebView)

React Native (react-native-webview) React Native (react-native-webview)

Flutter (flutter_inappwebview) Flutter (flutter_inappwebview)

4. Link Routing and Navigation 4. Link Routing and Navigation

This is the most technically sensitive part of the integration. Every link interaction inside the WebView needs to be routed correctly. A single misconfigured URL handler can silently break attribution for every merchant.

4.1 Link Categories 4.1 Link Categories

All URLs encountered in the WebView fall into three categories:

Category 1: Portal Navigation (Keep in WebView) Category 1: Portal Navigation (Keep in WebView)

These are links within the Shopping Portal itself — browsing categories, searching merchants, viewing offer details. These should always load inside the current WebView. Your link-interception logic should treat any URL on the portal’s domain as internal navigation.

Category 2: Merchant Click-Throughs (Keep in WebView — Recommended) Category 2: Merchant Click-Throughs (Keep in WebView — Recommended)

When a user taps a merchant offer, the portal generates an affiliate redirect URL. This URL passes through one or more affiliate network domains before landing on the merchant’s site. Under the recommended in-WebView model, this entire redirect chain — and the resulting merchant site — stays inside the WebView.

Your WebView’s navigation delegate or URL-loading handler should allow these redirects to proceed without interruption. Specifically:

Category 3: External Links (Open Outside WebView) Category 3: External Links (Open Outside WebView)

Some links should intentionally leave the WebView — for example, links to your app’s terms of service, privacy policy, or help center. The portal marks these with standard browser behavior (target="_blank" or window.open()), so your WebView will receive a new-window or navigation request for them.

How you handle these is up to you: you can route them to the system browser (SFSafariViewController / Chrome Custom Tabs) or open them in a child WebView. Coordinate with your Client Success Manager to define which URLs fall into this category so you can test the correct behavior. Do not silently suppress these requests — that will cause links to appear broken to the user.

4.2 Back-Navigation 4.2 Back-Navigation

When the user is browsing a merchant site inside the WebView (in-WebView model), the back button in your app’s navigation chrome should step backward through the WebView’s history stack, not immediately close the WebView. This lets users return from a merchant site to the portal without losing their session. Only when the WebView’s history is fully unwound should the back button exit the portal.

5. Authentication and Session Management 5. Authentication and Session Management

The portal needs to know which user is browsing so that cashback earnings can be attributed to the correct account. How authentication is handled depends on whether unauthenticated access to the portal is supported in an embedded context.

5.1 Authenticated-Only Access (Recommended) 5.1 Authenticated-Only Access (Recommended)

There are two supported models for passing a user's identity to the portal if only logged-in users can access the portal. Which model applies to your integration is determined during onboarding.

Via URL Parameter Via URL Parameter

This is the simpler path. Your app already has the user authenticated and passes their identity to the portal by appending a user identifier to the portal’s entry URL when launching the WebView:

{shopping_portal_url}?id={user_identifier}

The portal reads the identifier on load, establishes the session, and strips the parameter from the visible URL. The user sees the portal already logged in, and no login or logout UI is required inside the portal itself. This works from any portal URL, so you can link users directly to a specific page (a merchant, a category, the home screen) and authentication will be handled transparently. This approach requires no additional coordination beyond agreeing on the identifier format.

Via OAuth (Required for Three-Way Split Model) Via OAuth (Required for Three-Way Split Model)

For partners operating under a three-way revenue split model, authentication uses an OAuth handshake rather than URL parameter passing. Your app generates an OAuth authorization code server-side using its existing authenticated session, then opens the WebView directly at the portal's authentication URL with the code appended:

{shopping_portal_url}/login?code={authorization_code}

The portal exchanges the code for an access token, extracts the user identity from the resulting JWT, and establishes the session. The user is redirected to the portal already logged in. As with the URL parameter model, this is silent from the user's perspective. Remaining details for this model are coordinated separately during onboarding.

5.2 Unauthenticated Access with Native Login Handoff 5.2 Unauthenticated Access with Native Login Handoff

If unauthenticated users can browse the portal (but must log in to earn cashback), the login flow must be handled natively in your app. The portal cannot redirect to a standalone login page because authentication is the native app's responsibility, not the portal’s. Showing a web-based login flow inside the WebView is also undesirable — it creates a disjointed experience and may conflict with your app's existing auth infrastructure.

The intended flow is as follows:

  1. The user taps a login or earn-cashback prompt inside the portal while unauthenticated.
  2. The portal sends a message to the native app via the JavaScript bridge: requestLogin with a return URL parameter.
  3. The native app receives the requestLogin message through the bridge and presents its native login flow.
  4. On successful authentication, the native app re-opens the WebView at the return URL using the appropriate authenticated pattern from Section 5.1 (with the user's identifier or OAuth code appended to the return URL).
  5. The portal extracts and persists the identifier, strips it from the visible URL, establishes the session, and the user lands on the page they originally tried to access.

This flow requires close coordination between your team and ours to define the bridge message format, the return URL handling, and how session continuity is maintained across the WebView open/close cycle. Please reach out to your Client Success Manager to begin this process.

6. App Entry Points and Navigation 6. App Entry Points and Navigation

Your team is responsible for designing and building the surfaces that lead users into the Shopping Portal. The portal should feel native to your app — the transition in and out should match your existing design system and navigation patterns.

Common entry points include:

Regardless of the entry point, the destination is the same: your app launches the WebView and loads the portal URL (with authentication parameters if applicable). Wildfire can provide entry-point artwork, copy, and design guidance if needed.

7. QA and Testing 7. QA and Testing

A QA/UAT environment will be provided to support your testing process. Before launch, your team should plan for structured testing across the following areas.

7.1 Affiliate Attribution Validation 7.1 Affiliate Attribution Validation

This is the highest-priority testing area. For each test:

  1. Open the portal in the WebView, select a merchant, and click through to the merchant’s site.
  2. Verify that the redirect chain completes without interruption (no unexpected browser handoffs, no stripped parameters).
  3. Confirm that the affiliate tracking cookie is present in the WebView’s cookie store after the redirect.
  4. Complete a test purchase on the merchant’s site and verify that the conversion event is recorded in Wildfire’s tracking dashboard.

Repeat this flow across a representative set of merchants. Attribution issues are often merchant-specific or network-specific, so testing a single merchant is insufficient.

7.2 Link Behavior 7.2 Link Behavior

7.3 Device and OS Coverage 7.3 Device and OS Coverage

Test across a representative range of devices and OS versions. At a minimum: current and previous major versions of iOS and Android, and at least one low-end device per platform to check rendering performance.

7.4 Session Persistence 7.4 Session Persistence

7.5 Third-Party Interference 7.5 Third-Party Interference

Test with common third-party tools that may interfere with WebView behavior:

7.6 Monitoring and Failure Visibility 7.6 Monitoring and Failure Visibility

Ensure you have logging or monitoring in place to detect broken attribution flows, abandoned sessions, or unintended browser handoffs. Attribution failures are silent from the user’s perspective, so instrumentation is the only way to catch them before they become support tickets.

8. Alternative: Browser Click-Out Model 8. Alternative: Browser Click-Out Model

In the Browser Click-Out model, the Shopping Portal remains embedded in your app's WebView — the same WebView setup described throughout this guide applies. The difference is what happens when a user taps a merchant offer: instead of the affiliate redirect chain and merchant site loading inside the WebView, the portal sends a message to your native app via the JavaScript bridge, your app opens the merchant URL in the system browser (Safari, Chrome, or equivalent), and the user’s shopping session continues outside of your app. The portal session remains active in the background.

This option is appropriate when:

Tradeoffs to be aware of: Because merchant purchases happen in the system browser, this model is subject to all the attribution risks described in Section 2 — ITP, ETP, cookie restrictions, and potential interference from browser extensions and content blockers. It also means the user leaves your app context entirely to complete their purchase and must manually return to the portal afterward, making it harder to re-engage them after their shopping session.

If you would like to explore this option, contact your Client Success Manager to discuss the native bridge setup and other details related to this model.

For questions about this guide, contact your Client Success Manager or email partners@wildfire.com.

Updated 17 Jun 2026