Docs

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.

1

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.

2

Install the SDK

Swift Package Manager

  1. In Xcode, go to File → Swift Packages → Add Package Dependency
  2. Enter the repository URL: https://github.com/grovs-io/grovs-iOS.git
  3. Select the version range that fits your project
  4. Click Next, then Finish

CocoaPods

Add the pod to your Podfile:

Ruby
pod 'Grovs'

Then run:

Bash
pod install
3

Initialize the SDK

Import the module and initialize the SDK in your AppDelegate:

AppDelegate.swift
Swift
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:

AppDelegate.swift
Swift
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.

4

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:

Swift
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.

5

Create your first link and test

Create a link in the dashboard:

  1. Make sure you've selected the correct environment (Production or Test) in the dashboard.
  2. From the Dynamic Links > Links section, click the Add Link button in the header.
  3. Enter a custom path for your link (e.g., /summer-sale) and a Link Name to identify it internally.
  4. Use the Data section to pass key-value pairs to your app or website — for example screen: product or coupon: 25OFF.
  5. 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

Edit this page on GitHubLast updated 2026-07-29