Quickstart
Integrate Grovs end to end in about 30 minutes
This guide takes you through the full happy path: create a project, install and initialize the SDK on your platform, handle an incoming deep link, and test it with a real link from the dashboard.
New to Grovs? Read the Introduction first for an overview of smart links, deep linking, and attribution.
Create a project in the Grovs dashboard
Sign up at app.grovs.io, create a project, and grab your API key. There is a separate key per environment (test vs production), so make sure you copy the key that matches the environment you're building against.
Then configure your project's redirect rules — where users land when they click your links on each platform. A fallback URL is required before you can save your redirect settings. Follow the Project Setup guide to configure redirects, your domain, and social media previews.
Install the SDK
Swift Package Manager
- In Xcode, go to File → Swift Packages → Add Package Dependency
- Enter the repository URL:
https://github.com/grovs-io/grovs-iOS.git - Select the version range that fits your project
- Click Next, then Finish
CocoaPods
Add the pod to your Podfile:
pod 'Grovs'Then run:
pod installInitialize the SDK
Import the module and initialize the SDK in your AppDelegate:
import Grovs
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
Grovs.configure(APIKey: "your-api-key", useTestEnvironment: false, delegate: self) { success in
if success {
print("Grovs SDK is ready")
}
}
return true
}If your app does not use a SceneDelegate, forward these calls to the SDK:
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
return Grovs.handleAppDelegate(continue: userActivity, restorationHandler: restorationHandler)
}
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool {
return Grovs.handleAppDelegate(open: url, options: options)
}Apps using a SceneDelegate forward different calls — see the iOS Quick Start for the SceneDelegate variant, debug logging, and user identity options.
Match useTestEnvironment to your API key's environment: test key → true, production key → false. A production link opened by a test-mode app (or vice-versa) won't resolve its payload.
Handle a deep link
When a user opens your app through a Grovs link, the SDK delivers the link and its custom payload to your code. Register a handler:
Conform to the GrovsDelegate protocol to receive deep link callbacks:
class YourViewController: UIViewController, GrovsDelegate {
override func viewDidLoad() {
super.viewDidLoad()
Grovs.delegate = self
}
func grovsReceivedPayloadFromDeeplink(link: String?, payload: [String: Any]?, tracking: [String: Any]?) {
// Route the user based on payload data
if let screen = payload?["screen"] as? String {
navigateTo(screen)
}
}
}More options (past payloads, link details) in iOS Deep Linking.
Create your first link and test
Create a link in the dashboard:
- Make sure you've selected the correct environment (Production or Test) in the dashboard.
- From the Dynamic Links > Links section, click the Add Link button in the header.
- Enter a custom path for your link (e.g.,
/summer-sale) and a Link Name to identify it internally. - Use the Data section to pass key-value pairs to your app or website — for example
screen: productorcoupon: 25OFF. - Click Create to generate your link.
The full walkthrough — link types, social previews, redirect overrides, and tracking parameters — is in How to Create a Link.
Now open the link on a device:
- App installed — the app opens automatically and the SDK delivers the link and its data payload to the handler you registered in the previous step.
- App not installed — the user is redirected to the App Store / Google Play Store or your fallback URL, depending on your project's redirect rules. Grovs handles deferred deep linking automatically, so after install the payload is still delivered to your handler.
- Desktop — by default, users see a Grovs-generated page with a QR code and download links for your app.
Where to next
- Full platform guides — iOS, Android, Flutter, React Native, Web
- How-to guides — Step-by-step setup and configuration guides
- Marketing — Create a Link, Project Setup
- REST API — Generate and manage links server-side