# Links and in-app browsers

> What happens when someone taps a link in an in-app message, and how grovs links behave inside Instagram, TikTok and other social app browsers.

Source: https://docs.grovs.io/docs/engagement/in-app-messages/in-app-browser

Links behave in two places you control:

- **Links in your messages:** what an **Open a link** button does on each platform.
- **Grovs links in social apps:** what happens when someone taps a grovs link in Instagram, TikTok or another app's built-in browser.

## Links in a message

A button or tap action set to **Open a link** records the click, closes the message and opens the link.

|                                   | iOS                                                                                                                     | Web                   |
| --------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | --------------------- |
| `https://` and `http://` links    | Handed to the system. A universal link claimed by your app or another app opens that app; anything else opens in Safari | Opens in the same tab |
| App links such as `medly://plans` | Handed to the system, which opens the app that owns the scheme. Nothing happens if no app does                          | Handed to the browser |

Links are checked on save and again on the device:

- A link needs a scheme. Web links must name the site in full, such as `https://medly.app/plans`.
- `javascript:`, `data:`, `file:` and `blob:` links are refused.
- A personalization field can fill a link's path or query, never its scheme or host. Its value is URL-encoded.

[Custom HTML](https://docs.grovs.io/docs/engagement/in-app-messages/custom-html#links-and-resources) messages are stricter: `https:` only for web links, plus `mailto:`, `tel:`, `sms:` and app schemes.

### Moving people around inside your app

To send someone to a screen in your app, use either:

- **An app link** such as `medly://plans`, if your app handles its own scheme.
- ****Send data to the app****, which passes key-value pairs such as `screen: plans` to your app's click callback without leaving the app. Your code routes. See the SDK guides for [iOS](https://docs.grovs.io/docs/sdk/ios/in-app-messages) and the [web](https://docs.grovs.io/docs/sdk/web/in-app-messages).

### Coming back to the app

A link or store page takes the person out of your app. A message that was waiting shows when they come back, not as they leave.

## Grovs links in social app browsers

Instagram, Facebook, Messenger, Threads, TikTok, LinkedIn, Snapchat and X open links in their own built-in browser. These browsers often can't open another app, so a grovs link meant to open your app can get stuck on a web page.

With the open-in-app page on, a grovs link tapped in one of these browsers shows your link's preview page with an **Open** button. Tapping **Open** opens your app:

|         | What **Open** does                                                                                                                     |
| ------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| iOS     | Opens the link as a universal link, which opens your app when installed                                                                |
| Android | Opens your app through an Android App Link. If the app isn't installed, continues to the link's usual destination, such as Google Play |

Below the button, a hint reads "Not opening? Tap ⋯ and choose Open in browser." on iOS, and the same with ⋮ on Android.

### Turn it on or off

### 1. Open the redirect rules

Go to **Links** › **Link Settings** › **Redirect Rules**.

### 2. Choose for each platform

In the iOS and Android sections, under **Social app browsers**, choose:

- **Open-in-app page** to show the one-tap page in those browsers.
- **Redirect as usual** to treat them like any other browser.

Save your changes.

New projects start with the open-in-app page on. Projects created before it existed start with it off.

### When the page is used

The page only applies when the link would open your app anyway:

- The visitor is on iOS or Android, in one of the browsers above.
- The link's redirect for that platform opens the app (the project default or the link's own override). Links that always go to a web page are unchanged.
- Tablets with their own redirect rule keep that rule.

Links that already show a preview page keep it, and gain the hint in those browsers. Bots and link-preview crawlers never get the page.

> **Note:** Self-hosting: the open-in-app page uses the link preview page, so it needs `PREVIEW_BASE_URL` set.

## Related

- [Create an in-app message](https://docs.grovs.io/docs/engagement/in-app-messages/create-a-message)
- [Create a link](https://docs.grovs.io/docs/links/create-link)
- [Project setup](https://docs.grovs.io/docs/getting-started/project-setup)
