SDK API reference
GDPR / Identification
Section titled GDPR / IdentificationCSQ.optIn
Section titled CSQ.optIn6.0.0
Get user consent.
Calling this API generates a user ID and initiates tracking.
CSQ.optIn();CSQ.optOut
Section titled CSQ.optOut6.0.0
Revoke user consent, remove stored userID.
Stop CSQ SDK, flush, and clear all data.
CSQ.optOut();CSQ.identify
Section titled CSQ.identifyProduct Analytics | Added in: 6.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.
This should be called only after Product Analytics is configured and the SDK started. It’s safe to call multiple times with the same value. Please always provide a value that will be unique to this user. Setting values like “guest”, “anonymous”, “unauthenticated” or similar will merge all those users into a single user profile.
CSQ.identify("user_identity");Parameters
Section titled Parameters-
identity string (<= 100 chars)
Identity to be associated with the current user.
CSQ.resetIdentity
Section titled CSQ.resetIdentityProduct Analytics | Added in: 6.0.0
If the user was previously identified with identify(), this creates a new unidentified user and session. This is technically similar to calling optOut() then optIn().
This should be called only after Product Analytics is configured and the SDK started.
CSQ.resetIdentity();CSQ.sendUserIdentifier
Section titled CSQ.sendUserIdentifierExperience Analytics | Added in: 6.0.0
Associate the user identifier to the session.
CSQ.sendUserIdentifier("any_identifier")Parameters
Section titled Parameters-
userIdentifier string
The user identifier to track. Should be max 100 characters long.
CSQ.onMetadataChange
Section titled CSQ.onMetadataChange6.0.0
Get all the information related to the user and project. Refer to the CSQMetadata object.
CSQ.onMetadataChange(callback: (metadata: CSQMetadata) => void) => { // Handle metadata change});Parameters
Section titled Parameters-
callback (metadata: CSQMetadata) => void
Callback function triggered when metadata changes.
CSQMetadata
Section titled CSQMetadataCSQMetadata object contains information related to the user and project.
interface CSQMetadata { userID: string | null; sessionID: string | null; identity: string | null; environmentID: string | null; projectID: string | null; sessionReplayURL: string | null;}userID
Section titled userIDIdentifier of the current user. This is an identifier from Product Analytics by default or Experience Analytics if PA is not active.
sessionID
Section titled sessionIDSession identifier. This is an identifier from Experience Analytics by default or Product Analytics if Experience Analytics is not active.
projectID
Section titled projectIDProject identifier for Experience Analytics.
environmentID
Section titled environmentIDEnvironment identifier for Experience Analytics.
sessionReplayURL
Section titled sessionReplayURLURL of current session replay.
identity
Section titled identityIdentity associated with the user by calling identify().
Property Tracking
Section titled Property TrackingCSQ.addDynamicVar
Section titled CSQ.addDynamicVarExperience Analytics | Added in: 6.0.0
Adds dynamic variables to the session properties.
This method allows you to pass a key and a value parameters, representing a key-value pair
that is scoped to the session. You can also add, as a last parameter, a function that we will
call so you can handle it gracefully
CSQ.addDynamicVar(key: "key1", value: "value1")CSQ.addDynamicVar(key: "key2", value: 2, (errorObject) => { console.log(errorObject.toString());});Parameters
Section titled Parameters-
key string
Dynamic variable key
-
value string
Dynamic variable value
-
callback (error: Error) => void (optional)
Optional callback function to handle errors.
CSQ.addUserProperties
Section titled CSQ.addUserPropertiesProduct Analytics | Added in: 6.0.0
Add a collection of properties to be associated with the current user.
CSQ.addUserProperties({ propertyKey: "propertyValue",});Parameters
Section titled Parameters-
properties Record<string, PropertyValue
A dictionary of user properties.
PropertyValuecan benumber,string,boolean,bigint
CSQ.addEventProperties
Section titled CSQ.addEventPropertiesProduct Analytics | Added in: 6.0.0
Add a collection of properties to be associated with all future events.
CSQ.addEventProperties({ propertyKey: "propertyValue",});Parameters
Section titled Parameters-
properties Record<string, PropertyValue>
A dictionary of event properties.
PropertyValuecan benumber,string,boolean,bigint
CSQ.removeEventProperty
Section titled CSQ.removeEventPropertyProduct Analytics | Added in: 6.0.0
Removes a single property from the collection of event-wide properties.
CSQ.removeEventProperty("propertyKey")Parameters
Section titled Parameters-
name string
The key of the property to remove.
CSQ.clearEventProperties
Section titled CSQ.clearEventPropertiesProduct Analytics | Added in: 6.0.0
Removes all event-wide properties.
CSQ.clearEventProperties()CSInApp
Section titled CSInAppCSQ.handleUrl
Section titled CSQ.handleUrlExperience Analytics | Added in: 6.0.0
Allows the Contentsquare SDK to monitor CS in-app features activation through a custom URL scheme.
For more details check our CSInApp documentation.
CSQ.handleUrl("sample_url")Parameters
Section titled Parameters-
urlString string | null | undefined
The url handled by React Native Linking API ↗.
Interoperability
Section titled Interoperability<CSQWebView>
Section titled <CSQWebView>Experience Analytics | Added in: 6.0.0
Allows Contentsquare SDK to track webviews.
<CSQWebView> <WebView source={{ uri: "https://test-url.com", }} /></CSQWebView>Parameters
Section titled Parameters-
children ReactElement
The webview to register for tracking. CSQWebView supports react-native-webview ↗.
Event Tracking
Section titled Event TrackingCSQ.trackTransaction
Section titled CSQ.trackTransactionExperience Analytics | Added in: 6.0.0
Send a transaction.
CSQ.trackTransaction(10, Currency.EUR, "transactionId");Parameters
Section titled Parameters-
value number
The monetary value of the transaction.
-
currency Currency | string
The ISO 4217 currency code of the transaction.
-
transactionId string | null (optional)
An optional identifier for the transaction.
CSQ.trackScreenview
Section titled CSQ.trackScreenview6.0.0
Send a screen view with or without custom variables. Requires Experience Analytics to be started.
CSQ.trackScreenview(name: "ScreenName", cvars: [{index: 0, key: "key", value: "value"}])Parameters
Section titled Parameters-
name String
The name of the screen.
-
cvars CustomVar[] (optional)
An array of custom variables to attach to the screen view.
index number
Custom variable index
key string (<= 512 chars)
Custom variable key
value string (<= 256 chars)
Custom variable value
CSQ.trackEvent
Section titled CSQ.trackEventProduct Analytics | Added in: 6.0.0
Creates an event message to be tracked and sent to the API.
CSQ.trackEvent('event', { some_property: 100 });Parameters
Section titled Parameters-
eventName string
The name of the event to be tracked.
-
properties Record<string, PropertyValue> (optional)
Optional properties to associate with the event.
PropertyValuein Swift can beString,Substring,Bool,Double,Float,Int,Int64,Int32,Int16orInt8or in Objective-CNSStringandNSNumber(includingBOOL).
Error tracking
Section titled Error trackingCSQ.setUrlMaskingPatterns
Section titled CSQ.setUrlMaskingPatternsExperience Analytics | Added in: 6.0.0
Sets URL masking patterns.
CSQ.setUrlMaskingPatterns(["pattern1", "pattern2"])Parameters
Section titled Parameters-
patterns string[]
A list of URL patterns to mask.
CSQ.triggerNativeCrash
Section titled CSQ.triggerNativeCrashExperience Analytics | Added in: 6.0.0
Trigger a native crash for testing purposes.
CSQ.triggerNativeCrash()Personal Data/Masking
Section titled Personal Data/MaskingCSQ.setDefaultMasking
Section titled CSQ.setDefaultMaskingExperience Analytics | Added in: 6.0.0
Set the default masking state.
All Views are fully masked by default.
CSQ.setDefaultMasking(true)Parameters
Section titled Parameters-
masked Bool
The default masking state to be set.
<CSQMask>
Section titled <CSQMask>6.0.0
Allows to mask content for session replay and suppress events for view inside <CSQMask> and all its children.__ By default, session replay masking is enabled, and event tracking is disabled.
<CSQMask> <View> ... </View></CSQMask>Props
Section titled Props-
isSessionReplayMasked boolean
The view which content will be masked.
-
ignoreTextOnly boolean
Product Analytics This will ignore text and accessibility labels inside the masked view for event tracking.
-
allowInnerHierarchy boolean
Product Analytics Allows the full hierarchy to be exposed, but without properties or text capture.
-
allowProps boolean
Product Analytics Allows property capture, but will exclude text-containing properties if the below options are omitted.
-
allowText boolean
Product Analytics Allows text capture. It can be used alongside allowProps to expose text-containing properties.
-
allowAccessibilityLabel boolean
Product Analytics Allows accessibilityLabel capture.
-
children ReactElement
The view which masking rules will be applied to.
WithCSQMask
Section titled WithCSQMaskHigher Order Component (HOC) to mask content for session replay and suppress events for view inside WithCSQMask and all its children.
Props
Section titled Props-
WrappedComponent ReactElement
The component which masking rules will be applied to.
-
maskOptions CSQMaskProps
Masking options to be applied to the wrapped component.
-
isSessionReplayMasked boolean
The view which content will be masked.
-
ignoreTextOnly boolean
Product Analytics This will ignore text and accessibility labels inside the masked view for event tracking.
-
allowInnerHierarchy boolean
Product Analytics Allows the full hierarchy to be exposed, but without properties or text capture.
-
allowProps boolean
Product Analytics Allows property capture, but will exclude text-containing properties if the below options are omitted.
-
allowText boolean
Product Analytics Allows text capture. It can be used alongside allowProps to expose text-containing properties.
-
allowAccessibilityLabel boolean
Product Analytics Allows accessibilityLabel capture.
SDK Initialisation and Management
Section titled SDK Initialisation and ManagementCSQ.configureProductAnalytics
Section titled CSQ.configureProductAnalyticsProduct Analytics | Added in: 6.0.0
SDK configuration method for Product Analytics. Must be called before start().
CSQ.configureProductAnalytics("YOUR_ENVIRONMENT_ID", { enableAutocapture: true});Parameters
Section titled Parameters-
envId string
Your Product Analytics environment ID.
-
productAnalyticsOptions ProductAnalyticsOptions (optional)
Product Analytics initialization options.
CSQ.start
Section titled CSQ.start6.0.0
Start the SDK.
CSQ.start();CSQ.stop
Section titled CSQ.stop6.0.0
Stop all activity from the SDK.
Once run no requests, telemetry collection, or logs will be generated.
CSQ.stop();CSQ.pauseTracking
Section titled CSQ.pauseTracking6.0.0
Pause all tracking features.
CSQ.pauseTracking();CSQ.resumeTracking
Section titled CSQ.resumeTracking6.0.0
Resume all tracking features.
CSQ.resumeTracking();Product Analytics initialization options
Section titled Product Analytics initialization optionsCSQ SDK options for Product Analytics passed to CSQ.configureProductAnalytics().
type ProductAnalyticsOptions = { enableRNAutocapture?: boolean; disableInteractionAutocapture?: boolean; disablePageviewAutocapture?: boolean; disableScreenviewForwardToDXA?: boolean; disableScreenviewForwardToPA?: boolean; clearEventPropertiesOnNewUser?: boolean; resumePreviousSession?: boolean; baseUrl?: string; uploadInterval?: number; captureVendorId?: boolean; captureAdvertiserId?: boolean; // Native specific options enablePushNotificationAutocapture?: boolean; enablePushNotificationTitleAutocapture?: boolean; enablePushNotificationBodyAutocapture?: boolean; messageBatchMessageLimit?: number; pruningLookBackWindow?: number; enableViewAutocapture?: boolean; // Android specific options maximumDatabaseSize?: number; maximumBatchCountPerUpload?: number; // iOS specific options disablePageviewTitleAutocapture?: boolean; messageBatchByteLimit?: number;};React Native Product Analytics initialization options
Section titled React Native Product Analytics initialization optionsenableRNAutocapture
Section titled enableRNAutocaptureEnable React Native view autocapture.
Defaults to false.
disableInteractionAutocapture
Section titled disableInteractionAutocaptureDisables autocapture of touch events on React Native Views, when enableRNAutocapture is true.
disablePageviewAutocapture
Section titled disablePageviewAutocaptureDisables pageview autocapture, when enableRNAutocapture is true.
disableScreenviewForwardToDXA
Section titled disableScreenviewForwardToDXADisable forwarding of Product Analytics Pageviews to Experience Analytics.
Defaults to false.
disableScreenviewForwardToPA
Section titled disableScreenviewForwardToPADisable forwarding of Experience Analytics Screenviews to Product Analytics.
clearEventPropertiesOnNewUser
Section titled clearEventPropertiesOnNewUserWhether or not to clear event properties when a new user is created.
Defaults to false.
resumePreviousSession
Section titled resumePreviousSessionEnables Contentsquare behavior of persisting non-expired sessions across app launch.
baseURL
Section titled baseURLURI 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.
uploadInterval
Section titled uploadIntervalInterval at which event batches should be uploaded to the API. Defaults to 15 seconds.
captureVendorID
Section titled captureVendorIDWhether or not the vendor ID should be included in tracked events if made
available by the device.
Defaults to false.
captureAdvertiserID
Section titled captureAdvertiserIDWhether or not the advertiser ID should be included in tracked events if made
available by the device.
Defaults to false.
Native specific Product Analytics initialization options
Section titled Native specific Product Analytics initialization optionsenablePushNotificationAutocapture
Section titled enablePushNotificationAutocaptureWhether or not the SDK will auto capture interaction events on notifications.
Defaults to false.
enablePushNotificationTitleAutocapture
Section titled enablePushNotificationTitleAutocaptureWhether or not capture the title of the notification where an interaction was performed. enablePushNotificationAutocapture must be to true.
Defaults to false.
enablePushNotificationBodyAutocapture
Section titled enablePushNotificationBodyAutocaptureWhether or not capture the body text of the notification where an interaction was performed. enablePushNotificationAutocapture must be to true.
Defaults to false.
messageBatchMessageLimit
Section titled messageBatchMessageLimitThe 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.
pruningLookBackWindow
Section titled pruningLookBackWindowThe number of days to look back when pruning old data in days.
Defaults to 6 days.
Requires an entitlement to use.
messageBatchByteLimit
Section titled messageBatchByteLimitThe 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.
enableViewAutocapture
Section titled enableViewAutocaptureWhether or not the SDK will auto captureUI interactions and source pageviews. Defaults to false.
Android specific Product Analytics initialization options
Section titled Android specific Product Analytics initialization optionsmaximumDatabaseSize
Section titled maximumDatabaseSizeThe 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.
maximumBatchCountPerUpload
Section titled maximumBatchCountPerUploadThe maximum number of batches to send per upload cycle. This can be used in conjunction with messageBatchMessageLimit to control the amount of data that is uploaded in a given cycle.
iOS specific Product Analytics initialization options
Section titled iOS specific Product Analytics initialization optionsdisablePageviewTitleAutocapture
Section titled disablePageviewTitleAutocaptureDisable pageview title capture.