SDK API reference

Added in: 1.0.0

Get user consent.
Calling this API generates a user ID and initiates tracking.

Call optIn after start.

CSQ.optIn()

    No parameters.

Added in: 1.0.0

Revoke user consent, remove stored userID.
Stop CSQ SDK, flush, and clear all data.

CSQ.optOut()

    No parameters.

Added in: 1.0.0

Assigns an identity to be associated with the current user.

This assigns the identity to all events for the user ID and lets the analysis module merge multiple user IDs with the same identity.

CSQ.identify(identity)
  • identity   String (<= 100 chars)  

    Identity to be associated with the current user.

Added in: 1.0.0

If the user was previously identified with identify(), this creates a new unidentified user and session. This is technically equivalent to calling optOut() then optIn().

CSQ.resetIdentity()

    No parameters.

Added in: 1.0.0

Get all information relative to the user.

let userID = CSQ.metadata.userID
let sessionID = CSQ.metadata.sessionID
let projectID = CSQ.metadata.projectID
let environmentID = CSQ.metadata.environmentID
let sessionReplayURL = CSQ.metadata.sessionReplayURL
let identity = CSQ.metadata.identity

    No parameters.

Added in: 1.0.0

Trigger a callback whenever user information is updated.

CSQ.metadata.onChange { information in
// Handle information change
}
  • information   Function  

    Identity to be associated with the current user.

Added in: 1.0.0

Gets or sets the current log level.

CSQ.debug.logLevel = .debug
  • level   Enum (CSQ.Log.Level)  

    Possible values: none, trace, debug, info, warn, error, or important.

Added in: 1.0.0

Gets or sets the LogChannel to which send log messages.

CSQ.debug.setLogChannel(LogChannel)
  • LogChannel   interface  

    The interface where log messages will be routed.

Added in: 1.0.0

Routes SDK logs to another location such as Timber, Arbor, or similar logging libraries.
The default implementation routes all logs through Logcat.

LogChannel.printLog()

    No parameters.

Experience Analytics | Added in: 1.0.0

Adds one or multiple dynamic variables to the session properties.
This method allows you to pass an array of DynamicVar objects, each representing a key-value pair that is scoped to the session.

let var1 = DynamicVar(key: "key1", value: "value1")
let var2 = DynamicVar(key: "key2", value: "value2")
CSQ.addDynamicVar([var1, var2])
  • DynamicVar   NSObject  

    The dynamic variable

  • key   String (<= 512 chars)  

    Dynamic variable key

  • value   Uint32  

    Dynamic variable value

Product Analytics | Added in: 1.0.0

Add a collection of properties to be associated with the current user.

CSQ.addUserProperties([Property])
  • properties   [Property]  

    A map of user properties.

Product Analytics | Added in: 1.0.0

Add a collection of properties to be associated with all future events.

CSQ.addEventProperties([Property])
  • properties   [Property]  

    A map of event properties.

Product Analytics | Added in: 1.0.0

Removes a single property from the collection of event-wide properties.

CSQ.removeEventProperty(property)
  • property   String  

    The key of the property to remove.

Product Analytics | Added in: 1.0.0

Removes all event-wide properties.

CSQ.clearEventProperties()

UIScrollView.excludeFromExposureMetrics()

Section titled UIScrollView.excludeFromExposureMetrics()

Experience Analytics | Added in: 1.0.0

Exclude a scrollable view or subclass from Exposure Metric computations.

UIScrollView.excludeFromExposureMetrics(UIScrollView)

Experience Analytics | Added in: 1.0.0

Allows the Contentsquare SDK to monitor CS in-app features activation through a custom URL scheme.

CSQ.handle(url: URL)

Experience Analytics | Added in: 1.0.0

Boolean to manually activate or deactivate in-app features.

When CSQ.csInApp = true, the in-app function is activated automatically at app start.

CSQ.csInApp = true

    No parameters.

Added in: 1.0.0

Register a webview for tracking.

CSQ.registerWebView(webView: WKWebView())
  • webView   WKWebView  

    The webview to register for tracking.

Added in: 1.0.0

Unregister a webview for tracking.

CSQ.unregisterWebView(webView: WKWebView())
  • webView   WKWebView  

    The webview to unregister from tracking.

Experience Analytics | Added in: 1.0.0

Send a transaction.

let transaction = Transaction(id: "transactionId", total: 100.0)
CSQ.trackTransaction(transaction)
  • Transaction   Transaction  

    The transaction object to be sent.

Added in: 1.0.0

Send a screen view with or without custom variables.

CSQ.trackScreenview(name: "ScreenName", cvars: [CustomVar(key: "key", value: "value")])
  • name   String  

    The name of the screen.

  • cvars   CustomVar[] (optional)  

    An array of custom variables to attach to the screen view.

  • key   String (<= 512 chars)  

    Custom variable key

  • value   Uint32  

    Custom variable value

Product Analytics | Added in: 1.0.0

Creates an event message to be tracked and sent to the API.

CSQ.trackEvent(name: String, properties: [String, PropertyValue]?)
  • name   String  

    The name of the event to be tracked.

  • properties   Map<String, PropertyValue> (optional)  

    Optional properties to associate with the event.

  • key   String (<= 512 chars)  

    Property name

  • value   Uint32  

    Property value

Experience Analytics Voice of Customer | Added in: 1.0.0

Triggers a survey by referencing a predefined trigger name.

This method allows your mobile app to trigger surveys at specific moments in the user journey. Triggers act as flexible placeholders that are not bound to individual surveys, enabling your business team to assign or update surveys later without requiring code changes.

CSQ.triggerSurvey(triggerName)
  • triggerName   String  

    The name of the trigger associated with the survey. This should match the trigger name configured in the Contentsquare platform.

// Trigger a survey after a purchase is completed
CSQ.triggerSurvey("purchase-complete")

Experience Analytics | Added in: 1.0.0

Sets URL masking patterns.

CSQ.setUrlMaskingPatterns(patterns)
  • patterns   Array<String>  

    A list of URL patterns to mask.

Experience Analytics | Added in: 1.0.0

Trigger a callback when the Contentsquare Crash Reporter is initialized.

CSQ.onCrashReporterStart()

    No parameters.

Experience Analytics | Added in: 1.0.0

Track network metrics.

CSQ.trackNetworkMetric(NetworkMetric)
  • networkMetric   object  

    The network metric to be tracked.

Added in: 1.0.0

Ignore interactions for a specific view.

CSQ.ignoreInteractions(UIView)

UIKit | Added in: 1.0.0

Ignore interactions for a specific view.

UIView.csqIgnoreInteractions

    No parameters.

Experience Analytics SwiftUI | Added in: 1.0.0

Ignore interactions for a specific view.

View.csqIgnoreInteractions(shouldIgnore: Bool)
  • shouldIgnore   Bool  

    Whether to ignore interactions.

Experience Analytics | Added in: 1.0.0

Set the default masking state.
All Android View elements, their subclasses and Jetpack Compose components are fully masked by default.

CSQ.setDefaultMasking(Bool masked)
  • masked   Bool  

    The masking state to be set.

Added in: 1.0.0

Mask a view’s content.

CSQ.mask(UIView)
  • UIView   UIView  

    The view which content will be masked.

UIKit | Added in: 1.0.0

Mask the content of a view.

UIView.csqMaskContents

    No parameters.

SwiftUI | Added in: 1.0.0

Mask the content of a view.

View.csqMaskContents(enable: Bool)
  • enable   Bool  

    Whether to mask the content of the view.

CSQ.mask(viewsOfType: UIView.Type)

Section titled CSQ.mask(viewsOfType: UIView.Type)

Experience Analytics | Added in: 1.0.0

Mask content for views of a specific type.

CSQ.mask(viewsOfType: UIView.Type)
  • viewsOfType   UIView.Type  

    The class type of the view whose content will be masked.

Added in: 1.0.0

Unmask content for views of a specific type.

CSQ.unmask(viewsOfType: UIView.Type)
  • viewsOfType   UIView.Type  

    The class type of the view whose content will be unmasked.

Added in: 1.0.0

Mask text.

CSQ.maskTexts(mask: Bool)
  • mask   Bool  

    Whether to mask text.

Experience Analytics | Added in: 1.0.0

Mask images.

CSQ.maskImages(mask: Bool)
  • mask   Bool  

    Whether to mask images.

Experience Analytics | Added in: 1.0.0

Mask text input fields.

CSQ.maskTextInputs(mask: Bool)
  • mask   Bool  

    Whether to mask text inputs.

UIView.csqIgnoreInteractionsDefault

Section titled UIView.csqIgnoreInteractionsDefault
Product Analytics UIView
UIView.csqIgnoreInteractionsDefault = true

UIView.csqIgnoreInnerHierarchy

Section titled UIView.csqIgnoreInnerHierarchy

Product Analytics UIView | Added in: 1.0.0

If set on a view or view controller, all touches inside that control will be attributed to it rather than child views. This can be helpful in blocking sensitive parts of an interaction and keeping implementation details out of a view hierarchy. For example, Contentsquare uses this property internally to suppress inner touches on UIDatePicker.

let view = UIView()
view.csqIgnoreInnerHierarchy = true

UIView.csqIgnoreInnerHierarchyDefault

Section titled UIView.csqIgnoreInnerHierarchyDefault

Product Analytics UIView | Added in: 1.0.0

This has the same effect as csqIgnoreInnerHierarchy but is applied at the class level through an overridable class property. If defined, csqIgnoreInnerHierarchy can still be used to override an individual instance.

let view = UIView()
view.csqIgnoreInnerHierarchyDefault = true

SDK Initialisation and Management

Section titled SDK Initialisation and Management

CSQ.configureProductAnalytics()

Section titled CSQ.configureProductAnalytics()

Product Analytics | Added in: 1.0.0

SDK configuration method for Product Analytics. Must be called before start().

CSQ.configureProductAnalytics(
environmentID: String,
additionalOptions:
[ PRODUCT_ANALYTICS_INITIALIZATION_OPTIONS ]
)
  • environmentID   String  

    Your Product Analytics environment ID.

  • PRODUCT_ANALYTICS_INITIALIZATION_OPTIONS   [Option : Any]  

    Product Analytics initialization options.

Added in: 1.0.0

Manually start the SDK.

CSQ.start();

    No parameters.

Added in: 1.0.0

Stop all activity from the SDK.
Once run no requests, telemetry collection, or logs will be generated.

CSQ.stop();
Added in: 1.0.0

Pause all tracking features.

CSQ.pauseTracking();
Added in: 1.0.0

Resume all tracking features.

CSQ.resumeTracking();

    No parameters.

Added in: 1.0.0

Return the state of the SDK:

  • running
  • stopped
  • paused

Product Analytics initialization options

Section titled Product Analytics initialization options

CSQ SDK options for Product Analytics passed to CSQ.configureProductAnalytics().

Product Analytics Environment ID.

Interval at which event batches should be uploaded to the API.
Defaults to 15 seconds.

URI object specifying the base URI for the desired API endpoint. The Heap SDK resolves paths using this base URI and ignores any pre-existing path elements.

Whether or not the vendor ID should be included in tracked events if made available by the device.
Defaults to false.

Whether or not the advertiser ID should be included in tracked events if made available by the device.
Defaults to false.

Whether or not to clear event properties when a new user is created.
Defaults to false.

Whether or not source pageview events will be auto-captured.
Defaults to false.

Disable pageview title capture.

Disables autocapture of touch events on UIKit, Android Views, and React Native.

Enable Product Analytics iOS View events.

enablePushNotificationAutocapture

Section titled enablePushNotificationAutocapture

Whether or not the SDK will auto capture interaction events on notifications.
Defaults to false.

enablePushNotificationTitleAutocapture

Section titled enablePushNotificationTitleAutocapture

Whether or not capture the title of the notification where an interaction was performed. enablePushNotificationAutocapture must be to true.
Defaults to false.

enablePushNotificationBodyAutocapture

Section titled enablePushNotificationBodyAutocapture

Whether or not capture the body text of the notification where an interaction was performed. enablePushNotificationAutocapture must be to true.
Defaults to false.

The maximum size, in bytes, to allocate for the local event storage database.
Defaults to -1, meaning there is no limit on database size. Must be greater than or equal to 200KB.

The maximum number of messages to be included in each batch sent to Heap. Setting a lower limit can help reduce network traffic in situations where bandwidth is limited.
Defaults to 100.

Enables Contentsquare behavior of persisting non-expired sessions across app launch.

The number of days to look back when pruning old data in days.
Defaults to 6 days.
Requires an entitlement to use.

Disable forwarding of Product Analytics Pageviews to Experience Analytics.

Disable forwarding of Experience Analytics Screenviews to Product Analytics.