Prerequisites
Before you get started, make sure you have the following:-
Obtain your publishable key (
DUB_PUBLISHABLE_KEY
) from your workspace’s Analytics settings page and allowlist your site’s domain (DUB_DOMAIN
) to allow the client-side conversion events to be ingested by Dub. - (Optional) If you plan to track conversions, follow the Dub Conversions quickstart guide to enable conversion tracking for your links.
Quickstart
This quick start guide will show you how to get started with Dub iOS SDK in your Swift project.1
Install the Dub iOS SDK
Before installing, ensure your environment meets these minimum requirements:Build Tools:
- Xcode 16+
- Swift 6+
- iOS 16.0+
- macOS 10.13 (Ventura)+
https://github.com/dubinc/dub-ios
as the repository URL. Select the latest version of the SDK from the release page.2
Initialize the SDK
You must call
Dub.setup
with your publishable key and domain prior to being able to use the dub
instance.3
Track deep link open events
Call
trackOpen
on the dub
instance to track deep link and deferred deep link open events.
The trackOpen
function should be called once without a deepLink
parameter on first launch, and then
again with the deepLink
parameter whenever the app is opened from a deep link.4
Track lead events (optional)
To track lead events, call
trackLead
on the dub
instance with your customer’s external ID, name, and email.Lead event attributes
Lead event attributes
Here’s the full list of attributes you can pass when sending a lead event:
Property | Required | Description |
---|---|---|
clickId | Yes | The unique ID of the click that the lead conversion event is attributed to. You can read this value from dub_id cookie. If an empty string is provided (i.e. if you’re using tracking a deferred lead event), Dub will try to find an existing customer with the provided customerExternalId and use the clickId from the customer if found. |
eventName | Yes | The name of the lead event to track. Can also be used as a unique identifier to associate a given lead event for a customer for a subsequent sale event (via the leadEventName prop in /track/sale ). |
customerExternalId | Yes | The unique ID of the customer in your system. Will be used to identify and attribute all future events to this customer. |
customerName | No | The name of the customer. If not passed, a random name will be generated (e.g. “Big Red Caribou”). |
customerEmail | No | The email address of the customer. |
customerAvatar | No | The avatar URL of the customer. |
mode | No | The mode to use for tracking the lead event. async will not block the request; wait will block the request until the lead event is fully recorded in Dub; deferred will defer the lead event creation to a subsequent request. |
metadata | No | Additional metadata to be stored with the lead event. Max 10,000 characters. |
5
Track sale events (optional)
To track sale events, call
trackSale
on the dub
instance with your customer’s user ID and purchase information.iOS (SwiftUI)
Sale event attributes
Sale event attributes
Here are the properties you can include when sending a sale event:
Property | Required | Description |
---|---|---|
customerExternalId | Yes | The unique ID of the customer in your system. Will be used to identify and attribute all future events to this customer. |
amount | Yes | The amount of the sale in cents. |
paymentProcessor | No | The payment processor that processed the sale (e.g. Stripe, Shopify). Defaults to “custom”. |
eventName | No | The name of the event. Defaults to “Purchase”. |
invoiceId | No | The invoice ID of the sale. Can be used as a idempotency key – only one sale event can be recorded for a given invoice ID. |
currency | No | The currency of the sale. Defaults to “usd”. |
metadata | No | An object containing additional information about the sale. |