One SDK for iOS, Android, Flutter, React Native and web. Run it on your own servers or use the cloud.
Cloud · Docs · Self-host · Pricing
Grovs does what an MMP does, deep links, install attribution and campaign analytics, without sharing your users' data with ad networks. There are no ad-network partnerships, no cross-app tracking and no probabilistic fingerprinting. The cloud service is paid by subscription and hosted in the EU; the self-hosted edition keeps everything on your infrastructure. Why that matters.
- Smart links. One link that opens the right destination on iOS, Android or web, with per-platform redirect rules and social previews.
- Deferred deep linking. Users land on the right in-app screen after installing from the store.
- Attribution. Installs, reinstalls and reactivations tied back to links, campaigns, referrals or organic.
- Campaigns. Group links, compare performance, UTM tracking.
- Analytics. Dashboard overview, event explorer with filters, sessions and retention, served from ClickHouse.
- In-app messages. Announcements, promos and onboarding flows without an app update.
- Custom domains. Serve links from a domain you or your customers own.
- Migration from Branch and AppsFlyer. Old short links resolve upstream on first click, then become native Grovs links.
- REST API and MCP server. Create and manage links programmatically or from an AI assistant.
- Multi-tenant. One instance serves several apps and teams.
Enterprise Edition adds single sign-on (OIDC) with SCIM provisioning, a tamper-evident audit log with a SIEM export API, and in-app purchase revenue tracking through Apple and Google webhooks. See Editions.
Sign up at app.grovs.io, create a project and add the SDK:
// iOS — SPM: https://github.com/grovs-io/grovs-iOS.git
Grovs.configure(APIKey: "your-api-key", useTestEnvironment: false, delegate: self)// Android — io.grovs:Grovs:1.1.0
Grovs.configure(this, "your-api-key")// Flutter — grovs_flutter_plugin: ^1.0.1
final grovs = Grovs();// Web — npm install grovs
const grovs = new Grovs('your-api-key', (data) => console.log(data));
grovs.start();# React Native — npm install react-native-grovs-wrapperSetup guides: iOS · Android · Flutter · React Native · Web
The self-hosted Community Edition runs from two published images, ghcr.io/grovs-io/backend and ghcr.io/grovs-io/dashboard, released together under one version. One command downloads the stack, asks for your domain and admin email, generates every secret and starts everything: the backend, the dashboard, PostgreSQL, Redis, ClickHouse, the background workers and a Caddy proxy with automatic TLS.
curl -fsSL https://raw.githubusercontent.com/grovs-io/self-host/main/install.sh | bashPress Enter at the domain prompt to run a local trial on your machine at http://dashboard.lvh.me:3002, no DNS or TLS needed. For a real install, point your domain at the host first: the fixed hosts (dashboard, api, sdk, go, mcp, preview) plus a wildcard for project links and one for test links. A separate branded domain for links is supported.
Upgrading is changing GROVS_VERSION in .env and running docker compose pull && docker compose up -d. About 4 vCPU and 8 GB of RAM handle roughly 150,000 to 200,000 monthly users on one host; beyond that the same images run against managed PostgreSQL, ClickHouse and Redis.
Everything is in the self-host repo: DNS, environment reference, optional features, SDK configuration, backups and scaling.
| Community Edition | Enterprise Edition | |
|---|---|---|
| Deep links, attribution, campaigns, analytics, messages, custom domains, migration | Yes | Yes |
| Single sign-on (OIDC) and SCIM provisioning | No | Yes |
| Audit log with SIEM export | No | Yes |
| In-app purchase revenue tracking | No | Yes |
| Source | backend and dashboard repos, MIT |
ee/ directory, Enterprise License |
| Image | ghcr.io/grovs-io/backend, public |
built with GROVS_EE=true, provided under contract |
The Community Edition image is built without the ee/ directory, so enterprise features are not present in it and cannot be switched on by configuration. The cloud service includes the enterprise features on the corresponding plans.
| Branch | AppsFlyer | Grovs | |
|---|---|---|---|
| Deep linking | Yes | No | Yes |
| Attribution | Yes | Yes | Yes |
| Campaign analytics | Limited | Yes | Yes |
| Revenue tracking | No | Yes | Yes, Enterprise |
| Open source | No | No | Yes, MIT core |
| Self-hostable | No | No | Yes |
| Data shared with ad networks | Yes | Yes | No |
| Pricing | Contact sales | Contact sales | Published |
┌──────────────┐ ┌──────────────────────────────────────────────┐
│ Dashboard │────▶ │ Backend (Rails) │
│ (Next.js) │ │ api.* · sdk.* · go.* · preview.* · links │
└──────────────┘ │ │
│ ┌────────────┐ ┌────────────┐ ┌──────────┐ │
┌──────────────┐ │ │ PostgreSQL │ │ ClickHouse │ │ Redis + │ │
│ SDKs & web │────▶ │ │ links, │ │ events, │ │ Sidekiq │ │
└──────────────┘ │ │ users │ │ analytics │ │ workers │ │
│ └────────────┘ └────────────┘ └──────────┘ │
└──────────────────────────────────────────────┘
The backend routes by subdomain: api.* serves the dashboard API (OAuth2), sdk.* the mobile and web SDKs, go.* and the project subdomains resolve links, preview.* renders link previews. PostgreSQL holds projects, links, users and devices; ClickHouse is the event store and serves every analytics read; Redis queues events and backs the Sidekiq workers that ingest events, build sessions, rebuild analytics rollups and run maintenance. The dashboard is a Next.js app configured at start, so one image serves every deployment.
| Platform | Install | Source |
|---|---|---|
| iOS | SPM / CocoaPods | grovs-io/grovs-iOS |
| Android | implementation("io.grovs:Grovs:1.1.0") |
grovs-io/grovs-android |
| Flutter | grovs_flutter_plugin: ^1.0.1 |
grovs-io/grovs-flutter |
| React Native | npm install react-native-grovs-wrapper |
grovs-io/grovs-react-native |
| Web | npm install grovs |
grovs-io/grovs-web |
| Repo | What it is |
|---|---|
| self-host | Installer, Compose stack and self-hosting guide |
| backend | Rails API, link engine, attribution, analytics, workers |
| dashboard | Next.js web dashboard |
| mcp | MCP server for AI-assisted link management |
Releases are versioned together: a backend, dashboard and self-host tag with the same number belong to one release.
- Event analytics, sessions and retention
- Self-hosted Community Edition with published images and a one-command installer
- Push campaigns: segmentation, scheduling, A/B testing (2027)
- Marketing automation: triggered campaigns based on user behaviour (2027)
To influence what comes next, open an issue.
docs.grovs.io — Getting started · REST API · Self-hosting
The backend core and the dashboard are MIT. The backend's ee/ directory is covered by the Grovs Enterprise License and requires a commercial agreement for production use.