Send your event data from RudderStack to CleverTap.
12 minute read
CleverTap is a popular customer engagement and retention platform. Its in-app analytics and marketing capabilities allow you to get real-time insights into your customers and build valuable, long-term relationships with them.
Find the open source transformer code for this destination in the GitHub repository.
In the web device mode integration, that is, using the JavaScript SDK as a source, RudderStack loads the CleverTap native SDK from thehttps://d2r1yp2w7bby2u.cloudfront.net domain.
Based on your website’s content security policy, you may need to allowlist this domain to load the CleverTap SDK.
Get started
Once you have confirmed that the source platform supports sending events to CleverTap, follow these steps:
From your RudderStack dashboard, add a source. Then, from the list of destinations, select CleverTap.
Assign a name to the destination and click Continue.
Connection settings
To successfully set up CleverTap as a destination, you will need to configure the following settings:
Account ID: Your account ID is a unique ID generated for your account. It can be found in your account Settings as your Project ID.
Passcode: Your account passcode is a unique code generated for your account. It can be found in your CleverTap dashboard by going to Settings > Passcode.
Enable track for anonymous user: Enable this option to track anonymous users in CleverTap.
Use CleverTap ObjectId for Mapping: Enable this option to use both CleverTap objectId along with identity for mapping events from RudderStack to CleverTap.
Region: Select your CleverTap region.
Client-side Events Filtering: Specify which events should be blocked or allowed to flow through to CleverTap. For more information on this setting, see the Client-side Events Filtering guide.
Ensure that android.useAndroidX is set to true in your gradle.properties file.
Add the following under the dependencies section:
// ruddder core sdk
implementation'com.rudderstack.android.sdk:core:1.+'// rudder-clevertap integration
implementation'com.rudderstack.android.integration:clevertap:1.+'// clevertap native sdk
implementation'com.clevertap.android:clevertap-android-sdk:4.+'// if you don't have Gson included already
implementation'com.google.code.gson:gson:2.8.6'
Initialize the RudderStack SDK in the Application class’s onCreate() method as shown:
The identify call lets you associate a user with their actions and capture relevant traits about them. This information includes userId and other user information like name, email, etc.
RudderStack requires either userId or email to send identify events to CleverTap.
RudderStack maps the following user traits to the CleverTap attributes:
RudderStack
CleverTap
name
Name
birthday
DOB
avatar
Photo
gender
Gender
phone
Phone
email
Email
employed
Employed
education
Education
married
Married
customerType
Customer Type
RudderStack sends all other traits to CleverTap as custom attributes.
A sample identify call looks like the following:
rudderanalytics.identify("userid",{name:"Name Surname",email:"name@website.com",phone:"phone",birthday:"birthday",gender:"M",avatar:"link to image",title:"Owner",organization:"Company",city:"Tokyo",region:"ABC",country:"JP",zip:"100-0001",Flagged:false,Residence:"Shibuya",MSG-email:false});
In the above snippet, RudderStack captures relevant information about the user such as the email and phone, along with the associated user traits.
Note that:
If a user already exists, the new values will be updated for that user. RudderStack automatically maps the userId (or anoymousId) to CleverTap’s identity attribute.
The profile properties MSG-email, MSG-push, MSG-sms and MSG-whatsapp are used to set the Do Not Disturb (DND) status for the user. They are always true by default, unless you explicitly set them to false. For example, to disable push notifications for a user, set MSG-push to false.
Privacy options
When loading the RudderStack SDK, you can set the following options in the CLEVERTAP integrations object:
Option
Data type
Notes
optOut
Boolean
Defaults to false. Set to true if the user opts out of sharing their data.
useIP
Boolean
Defaults to false. Set to true if the user agrees to share their IP data.
CleverTap does a reverse lookup on the IP of the incoming request in the back end to map the user’s location. Under GDPR laws, user consent is required to initiate this lookup. Use the useIP flag in the web SDK to provide that consent.
If useIP is set to true, the city/country information will populate on the Profile page of the CleverTap dashboard. If set to false, then this data won’t be populated, and the city/country information will be shown as Unknown, Unknown.
The track call lets you capture user events along with the properties associated with them. The user is associated with userId or anonymousId by default.
In the above snippet, RudderStack captures the information related to the Checked Out event, along with any additional info about that event.
CleverTap does not support nested objects or arrays for custom attributes in the track events. Hence, RudderStack converts the nested objects or arrays into strings before sending them to CleverTap.
Order Completed
When you track an event with the name Order Completed using the using the RudderStack Ecommerce Events tracking, RudderStack maps it to CleverTap’s Charged event.
A number of RudderStack’s specific fields map to CleverTap’s standard Charged event fields
RudderStack
CleverTap
checkout_id
Charged ID
revenue
Amount
products
Items
A sample Order Completed event looks like the following:
Order Completed is a free-flowing event. If you set extra fields like discount, coupon, currency, etc., RudderStack automatically maps them to the Charged event properties.
Page
The page call lets you record your website’s page views with any additional relevant information about the viewed page.
RudderStack sends a page event to CleverTap as a Web Page Viewed <Page_Name> event.
CleverTap does not support nested objects or arrays for custom attributes in the page events. Hence, RudderStack converts the nested objects or arrays into strings before sending them to CleverTap.
Screen
The screen method lets you record whenever your user views their mobile screen, with any additional relevant information about the screen.
In the above snippet, RudderStack captures all information related to the screen being viewed, along with any additional info associated with that screen view event. In CleverTap, the above screen call will be shown as - Screen Viewed: <screen_name> along with the properties.
CleverTap does not support nested objects or arrays for custom attributes in the screen events. Hence, RudderStack converts the nested objects or arrays into strings before sending them to CleverTap.
Alias
The alias call lets you merge different identities of a known user.
A sample alias call is shown below:
rudderanalytics.alias("newUserId","userId");
Configuring push notifications and in-app messages
Follow these steps to configure CleverTap push notifications for your desired platform.
Register push notifications for Android devices on your CleverTap dashboard either by uploading your FCM credentials or any other supported credentials by navigating to Settings > Channels > Mobile Push > Android.
Add the following dependency in your project level build.gradle file inside the buildscript:
Add the following dependencies and plugin to your app level build.gradle file:
dependencies{// for push notifications
implementation'com.clevertap.android:clevertap-android-sdk:4.0.0'implementation'com.google.firebase:firebase-messaging:20.2.4'}applyplugin:'com.google.gms.google-services'
Place the google-services.json downloaded from the Firebase console into the root folder of your app.
Add your CLEVERTAP_ACCOUNT_ID , CLEVERTAP_TOKEN & FcmMessageListenerService to the application tag of your app’s AndroidManifest.xml:
Create a notification channel anywhere in your application using the following block of code. You can then use this channel Id while creating any campaign in your CleverTap dashboard.
For push notifications and In-app messages to function correctly, CleverTap needs to know the Application status as early as possible. You can either set android:name in your AndroidManifest.xml tag to com.clevertap.android.sdk.Application. If you have a custom Application class, call ActivityLifecycleCallback.register(this); before super.onCreate().
Open the android folder of your React Native app and follow the steps listed in the Android tab of this section.
Open the ios folder of your React Native app and follow the steps listed in the iOS tab of this section.
Using CleverTap objectId and identity for mapping
This section is applicable when sending events in cloud mode.
CleverTap uniquely identifies each user with two main identifiers, namely objectId and identity. When you enable the Use CleverTap ObjectId for Mapping option in the dashboard, RudderStack uses both objectId and identity and expects the following mapping:
For identify events:
RudderStack
RudderStack
CleverTap
CleverTap
anonymousId present?
userId present?
objectId
identity
Yes
Yes
anonymousId
userId
Yes
No
anonymousId
-
No
Yes
CleverTap-generated UUID
userId
For track events:
RudderStack
RudderStack
CleverTap
CleverTap
anonymousId present?
userId present?
Tracking with
Value
Yes
Yes
objectId
anonymousId
Yes
No
objectId
anonymousId
No
Yes
identity
userId
If Use CleverTap ObjectId for Mapping setting is disabled in the dashboard, RudderStack expects the following mapping for identifying users and tracking events (track/page/screen):
RudderStack
CleverTap
userId or anonymousId
identity
Why use CleverTap objectId for mapping?
When you track an unidentified user in CleverTap, a user profile is created with minimal details along with the user activity details. When the same user is then identified with a userId without the Use CleverTap ObjectId for Mapping option enabled, RudderStack creates another profile for the user with the userId identifier (in case of RudderStack) which maps to CleverTap’s identity attribute.
One way to solve this problem is to track users only in cases where a userId is present. To do so, disable the Enable tracking for anonymous users option in the RudderStack dashboard. Alternatively, you can turn on the Use CleverTap ObjectId for Mapping option in the dashboard which allows you to track the anonymous users and when they are later identified, merge their anonymousId with their userId.
Upload device token in cloud mode
This section is applicable for the Android and iOS sources when sending events via cloud mode.
When the device token is present in context.device.token in identify calls, RudderStack uses CleverTap’s Upload Device Tokens API to upload the device token for the identified user. For Android, RudderStack sets the token type as fcm. For iOS, it is set as apns.
To use this feature, enable the Use CleverTap ObjectId for Mapping option in the dashboard as RudderStack needs the objectId to upload the device token.
You can also define the token type irrespective of your operating system by sending your choice of device token via the event’s integrations object. The supported token types are listed below:
This site uses cookies to improve your experience while you navigate through the website. Out of
these
cookies, the cookies that are categorized as necessary are stored on your browser as they are as
essential
for the working of basic functionalities of the website. We also use third-party cookies that
help
us
analyze and understand how you use this website. These cookies will be stored in your browser
only
with
your
consent. You also have the option to opt-out of these cookies. But opting out of some of these
cookies
may
have an effect on your browsing experience.
Necessary
Always Enabled
Necessary cookies are absolutely essential for the website to function properly. This
category only includes cookies that ensures basic functionalities and security
features of the website. These cookies do not store any personal information.
This site uses cookies to improve your experience. If you want to
learn more about cookies and why we use them, visit our cookie
policy. We'll assume you're ok with this, but you can opt-out if you wish Cookie Settings.