Skip to the page

Operate

Going live

The checklist before real users click your links.

Test and live are separate environments with separate hosts, keys and settings. Work through this list once everything works in test. Tick each item; none depends on luck.

  • Applications are filled in for live: Android package name, every signing certificate (Play App Signing key and your upload key), Play Store URL; iOS bundle ID, Team ID and App Store ID.
  • Setup check shows no failing step for the live environment.
  • The live link host answers: curl -I https://{slug}.becklinks.com/.well-known/assetlinks.json and the apple-app-site-association file return 200 application/json with no redirect.
  • Web and fallback destinations point at your production website and store pages.
  • Links you will use exist in live (links are not copied from test), including URL templates, resource types and the metadata API of item links. See Manage with the API to script it.

Keys#

  • The release build uses the live publishable key (pk_live_…); test and debug builds use pk_test_….
  • Servers use sk_live_… keys with only the scopes they need, stored in your secret manager.
  • No secret key is in the app, a repository or a log. Rotate a key that ever was.

The app#

  • Android: the release manifest declares only the live host (or you added every certificate to both environments, see Android); flutter_deeplinking_enabled is false; minSdk is 23 or higher.
  • iOS: Associated Domains lists the live host in the release entitlements and the App ID has the capability; FlutterDeepLinkingEnabled is false; deployment target is iOS 15 or higher.
  • Links are routed in one place; unknown routes fall back to a safe screen.
  • Consent: if you need it, setTrackingEnabled is called with the user's choice after configure().

Test the real thing#

  • Install the store build (Play internal testing, TestFlight), not a debug build, and tap a live link from Notes or Messages: the app opens on the right screen.
  • Not installed: the link opens the store; after the install the deferred link arrives (Android with Play; iOS only if you use the pasteboard opt-in, and the user allows the paste).
  • A desktop visitor and an in-app browser (Instagram, Facebook) each get a sensible page.
  • Item links: share one in a chat app, check its card, change the item, call invalidate and check again.

Operations#

  • Webhooks point at production endpoints that verify the signature (Webhooks), answer 2xx quickly and deduplicate on the event id.
  • Someone watches the dashboard's link and stats pages and the webhook delivery log in the first days.
  • You know where to look when it breaks: Testing and debugging and Troubleshooting, and the X-Request-Id of a failing API call.

Verify it works#

On a clean phone, from the store build, tap a live link before and after installing the app. Both behave as described in Deferred deep linking. Then release.