Skip to main content

iOS tracker

The Snowplow iOS Tracker SDK supports iOS 11.0+, macOS 10.13+, tvOS 12.0+, watchOS 6.0+, and visionOS 1.0+. It can be used both in Swift as well as in Objective-C code.


The iOS Tracker SDK can be installed using various dependency managers.

Swift Package Manager (Recommended)

To install Snowplow Tracker with SPM:

  1. In Xcode, select File > Swift Packages > Add Package Dependency.
  2. Add the url where to download the library:


To install Snowplow Tracker with Cocoapods:

  1. Make sure that Cocoapods is installed on your system and correctly configured for your app.

  2. Add the iOS Tracker SDK among the dependencies of your Podfile:

    pod 'SnowplowTracker', '~> 6.0'
  3. Run the command pod install to add the tracker to your app project.


Support for installing the tracker using Carthage was dropped in version 5 of the tracker.

Setting upโ€‹

Once the tracker SDK is correctly set as a dependency in your app project you have to instrument the tracker:

  1. In your application delegate AppDelegate.swift add import SnowplowTracker.

  2. In the application(_:didFinishLaunchingWithOptions:) method, set up the SDK as follows:

    let tracker = Snowplow.createTracker(namespace: "appTracker", endpoint: "")

    The URL path for your collector endpoint should include the protocol, "http" or "https". If not included in the URL, "https" connection will be used by default.

  3. It creates a tracker instance which can be used to track events like this:

    let event = ScreenView(name: "screen_name")

    If you prefer to access the tracker when the reference is not directly accessible, you can use the defaultTracker :


You can override the default configuration with a fine grained configuration when you create the tracker. See the API docs for the Configuration classes to see all the options and defaults.

Snowplow.createTracker(namespace: "appTracker", endpoint: "") {
foregroundTimeout: Measurement(value: 30, unit: .minutes),
backgroundTimeout: Measurement(value: 30, unit: .minutes)

The createTracker method allows the creation of multiple trackers in the same app. The namespace field lets you distinguish events sent by a specific tracker instance. It is mandatory even when the app uses just a single tracker instance like in the example above.


The trackers created with the above method are configured "locally" only. To create a tracker where the configuration can be updated through downloaded files, read this page about remote configuration.

The Examples Github repository includes demo apps for Swift and Objective-C covering the most popular dependencies managers. They are provided as simple reference apps to help you set up the tracker.

Was this page helpful?