Basics
Smart links and redirects
Your smart link, mapps.one/habitly, looks at each visitor's device and decides where to send them in a few milliseconds. This page explains the default rules, how to change them, what link preview bots see and how campaign tags travel on to the stores.
Default routing
| Visitor | Goes to | If that link is missing |
|---|---|---|
| iPhone, iPad, iPod | App Store | Landing page |
| Android | Google Play | Landing page |
| Huawei and Honor devices, HarmonyOS | AppGallery | Google Play, then the landing page |
| Windows | Microsoft Store | Landing page |
| macOS | App Store | Landing page |
| Unrecognised devices ("Other") | Landing page | — |
| Linux and ChromeOS | Landing page | — |
The device is detected from the browser's user agent. Tablets follow the same rules as phones of the same system. iPads that request desktop sites identify themselves as a Mac, and still reach the App Store because macOS goes there by default.
Redirect rules
Open the app's Links tab to choose a destination for each of these platforms: iOS, Android, Huawei, Windows, macOS and Other. The choices are:
- App Store, Google Play, AppGallery or Microsoft Store: redirect to that store listing,
- Web URL: redirect to the web address saved on the app, for example a web version or a waitlist,
- Landing page: show the landing page at the smart link address.
If the destination you choose has no link saved, the visitor falls back: Huawei visitors try Google Play and then the landing page, everyone else sees the landing page. The rules preview in the dashboard shows where each platform ends up right now and marks the rows that use a fallback.
Redirects use HTTP 302 with Cache-Control: no-store, so browsers and proxies do not cache them and rule changes apply to the next visit.
Link previews and bots
When someone pastes your link into a chat or a post, the app fetches the page to build a preview. These crawlers always receive the landing page, never a redirect, so the preview shows your app name, tagline and image from the page's Open Graph tags. This covers Facebook, Instagram, WhatsApp, X, LinkedIn, Slack, Discord, Telegram, iMessage, Pinterest, Reddit, Mastodon, Bluesky, Snapchat, Skype, Zoom and Microsoft Teams, among others.
Search engine crawlers, SEO tools, uptime monitors, AI crawlers and command-line clients such as curl, wget or python-requests are treated as bots too. Bots get the landing page and are never counted in analytics.
In-app browsers
Links opened inside Instagram, Facebook, TikTok, X, LinkedIn, Snapchat, Pinterest, LINE, Telegram, WeChat, Reddit and Threads are recognised. The visitor is routed by device like any other visit. In analytics, the app they came from is recorded as the traffic source, even though these browsers usually send no referrer.
Campaign tags
Add standard UTM tags to your smart link to compare channels:
https://mapps.one/habitly?utm_source=instagram&utm_medium=social&utm_campaign=launch
mapps.one always records utm_source, utm_medium and utm_campaign in your analytics. With Pass campaign parameters to the stores turned on (the default), the tags are also passed on to the destination in the format it understands:
| Destination | What we add |
|---|---|
| Google Play | A referrer parameter containing the URL-encoded UTM tags, which your app can read with the Play Install Referrer API.https://play.google.com/store/apps/details?id=com.habitly.app&referrer=utm_source%3Dinstagram%26utm_medium%3Dsocial%26utm_campaign%3Dlaunch |
| App Store | A ct campaign token: the value of utm_campaign, or utm_source when there is no campaign, up to 40 characters.https://apps.apple.com/app/id1612345678?ct=launch |
| Web URL | The UTM tags themselves.https://habitly.app/?utm_source=instagram&utm_medium=social&utm_campaign=launch |
| AppGallery, Microsoft Store | Nothing. The listing opens without extra parameters. |
All five tags are forwarded: utm_source, utm_medium, utm_campaign, utm_term and utm_content. Each value is cut to 100 characters.
ct token to a campaign when the link also carries your provider token (pt). Store links are saved in canonical form, so a pt pasted into your App Store link is not kept. Use the campaign breakdown in mapps.one analytics to compare channels.Store badge links
The store badges on the landing page point to a tracked redirect, mapps.one/habitly/go/{store}. The click is counted as a store click, then the visitor is sent to the listing. If the app has no link for that store, the visitor is sent back to the landing page.
You can use these URLs yourself when you want a specific store regardless of device, for example in an Android-only campaign. UTM tags added to a /go/ URL are forwarded the same way as on the smart link.
| Store key | URL |
|---|---|
app_store | mapps.one/habitly/go/app_store |
google_play | mapps.one/habitly/go/google_play |
app_gallery | mapps.one/habitly/go/app_gallery |
microsoft_store | mapps.one/habitly/go/microsoft_store |
web | mapps.one/habitly/go/web |
URL reference
| URL | Purpose |
|---|---|
/habitly | Smart link: redirect by device, or the landing page |
/habitly/page | Landing page on every device |
/habitly/go/{store} | Tracked redirect to one store |
/habitly/open/{path} | Deep link into the installed app |
/habitly/privacy, /habitly/privacy/{language} | Privacy policy |
/habitly/terms, /habitly/terms/{language} | Terms of service |
/habitly/press, /habitly/press.zip | Press kit page and download |
/habitly/qr.svg, /habitly/qr.png | QR code for the smart link |
When a link does not work
- 404 Not Found: no app uses this slug. Check the spelling, or whether the slug was changed.
- 410 Gone, "paused": the app is paused in the dashboard. Turn it back on.
- 410 Gone, "no longer available": the app was suspended by trust and safety. Contact support.
- Always the landing page: the platform's destination has no link saved, the rule is set to Landing page, or you are testing with a bot-like client.