= MD5 encoded data of Device Identity if exists, else, Customer Identity for Push, Mobile Number in CountryCode format for Sms & Whatsapp, EmailId for Email channel
message_id.json.lz4 is a lz4 compressed file representing one message. // support lz4 compression
An example file path may look like this:
sent_messages/WhatsApp/202409/1725435360/6e6d748a7cc752fbe4f72c777cc50a74/49482d489b871510eeff7db9a8ab443248ad1ea596e5108e02d16ab5b2ea47db.json.lz4
Sample JSON Payloads
[](https://docs.clevertap.com/docs/message-archiving#sample-json-payloads)
---------------------------------------------------------------------------------------------------
The archived files on the AWS contain a JSON payload representing the final message sent to the user. Below are examples of the JSON structures by channel.
PushEmailSMSWhatsApp
// Android Firebase Cloud Messaging (FCM) push notification payload
{
"to": "fcm:kahjszshdvbgfoqhkjahgsdfyp2nhri3oqsny26lpp26ylawiuhse84htexz", // platformId or pushToken.
"payload": {
"message": {
"data": {
"wzrk_pn": "true", // indicates a push notification.
"wzrk_id": "1737624196_20250123", // unique identifier for the notification.
"wzrk_pivot": "wzrk_default", // pivot point for message routing.
"nt": "Exclusive Flash Sale - 50% Off!", // notification title.
"nm": "Hurry! Limited-time offer just for you. Tap to claim your 50% discount before it expires!", // notification message body.
"wzrk_ttl": "1737624843", // time-to-live (TTL) for the notification in epoch format.
"wzrk_rnv": "true", // determines if the notification should be re-notified.
"wzrk_push_amp": "false", // push amplification flag.
"wzrk_dt": "FIREBASE", // delivery platform (for example, Firebase, APNS).
"wzrk_pid": "1737624196", // push notification ID.
"wzrk_cid": "", // campaign ID (if applicable).
"wzrk_bc": "", // background color (if applicable).
"wzrk_bi": "2", // badge icon reference (if applicable).
"pr": "", // notification priority (if specified).
"wzrk_acct_id": "YOUR_WZRK_ACCOUNT_ID", // account identifier.
"wzrk_ck": "1400000001" // click tracking identifier.
},
"token": "kahjszshdvbgfoqhkjahgsdfyp2nhri3oqsny26lpp26ylawiuhse84htexz", // device token for push delivery.
"messageConfig": {
"ttlInSeconds": "600s", // notification time-to-live in seconds.
"priority": "HIGH" // priority level for push delivery.
}
},
"dryRun": false // indicates whether this message is a test notification.
},
"platform": "Android",
"message_id": "6f44a05d42a1e1d282ef3bf8bb6591ccf04e49f9c5c33f2438db6275cdc410fd", // Unique hash per message.
"version": 1, // Numerical version of the json structure.
"sent_at": 1737624243036, // Message Archiving epoch in millis.
"campaign_id": 1737624196, // Unique hash per message.
"user_id": 45142258, // CleverTap internal Device Identity if exists, else, Customer Identity.
"campaign_name": "Flat Offer Sale Campaign", // the campaign Name for current campaign, will always exist.
"identity": // custom identifier
[\
"[email protected]"\
]
}
// iOS Apple Push Notification Service (APNS) push notification payload
{
"to": "74bfe488e5b5e0139fc378ff9410ea4ce6a666d17603b49922a009a6383b56ee", // Device token for APNS push delivery.
"payload": {
"W$id": "1734938686_20241223", // Unique identifier for the notification.
"wzrk_acct_id": "YOUR_WZRK_ACCOUNT_ID", // Account identifier.
"W$rnv": true, // Determines if the notification should be re-notified.
"W$dt": "APPLE", // Delivery platform (APNS for iOS).
"aps": {
"interruption-level": "active", // Defines the interruption level of the push.
"relevance-score": 0.5, // Determines notification priority based on relevance.
"alert": {
"title": "Your Exclusive Discount Inside!", // Notification title.
"body": "We've reserved a 50% OFF deal for you. Tap to unlock savings now!" // Notification body message.
},
"mutable-content": 1 // Allows content modification before displaying.
},
"W$pivot": "wzrk_default" // Pivot point for message routing.
},
"token": "74bfe488e5b5e0139fc378ff9410ea4ce6a666d17603b49922a009a6383b56ee", // Device token for push delivery.
"collapseId": "1734938686", // Used for collapsing multiple similar notifications.
"expiration": 1734939302, // Expiration time in epoch format.
"platform": "iOS",
"message_id": "245eb2b120c2768d30c42cb343832d579e8413ef1bce25cb4837e91d60630e5b", // Unique hash per message.
"version": 1, // Numerical version of the JSON structure.
"sent_at": 1734938702745, // Message archiving epoch in milliseconds.
"campaign_id": 1734938686, // Unique hash per message.
"user_id": 45142253, // CleverTap internal Device Identity if exists, else, Customer Identity.
"campaign_name": "Flat Offer Sale Campaign", // The campaign Name for the current campaign, will always exist.
"identity": // Custom identifier used to uniquely associate a message archive record with an account.
[\
"[email protected]" \
]
}
{
"to": "[email protected]", // Recipient email
"subject": "🚀 Exclusive Offer: 50% Off Just for You!", // Engaging subject line
"from_name": "RepeatFrequently", // Proper sender name
"from_address": "[email protected]", // Sender email
"html_body": "Exclusive Deal Just for You!
Get 50% OFF on your next order. Hurry, limited-time offer!
Claim Your Offer
", // Optimized HTML email
"plainText_body": "Exclusive Deal Just for You! Get 50% OFF on your next order. Hurry, limited-time offer! Claim your offer: https://www.yourlink.com", // Matching plain text
"amp_body": "Exclusive Deal Just for You!
Get 50% OFF on your next order. Hurry, limited-time offer!
Claim Your Offer", // AMP email version
"headers": "From: RepeatFrequently <[email protected]>,To: [email protected],Subject: 🚀 Exclusive Offer: 50% Off Just for You!,MIME-Version: 1.0,Content-Type: multipart/alternative;",
"message_id": "6c79694bee2f362fdbe14f7318e5706b26786b2008beca4490521e76c850f913", // Unique message identifier
"version": 1, // JSON structure version
"sent_at": 1713111244729, // Timestamp when the message was sent (epoch format)
"campaign_id": 1653063304, // Unique campaign identifier
"user_id": 17004116, // User identifier
"campaign_name": "Flash Sale Email Campaign", // Updated campaign name
"identity": // custom identifier
[\
"+918112333333",\
"[email protected]",\
"Mani121"\
]
}
{
"to": "PhoneNumber", // ("15555555555")
"body": "🚀 Exclusive Deal! Get 50% OFF on your next purchase. Use code: FLASH50. Hurry, offer ends soon! Tap here: www.yourlink.com", // SMS content
"provider": "twilio", // SMS provider
"message_id": "9f8c76ccdaf0895515f813af702670324d996296788652b50b3475d6fe6e719a", // Unique message identifier
"version": 1, // JSON structure version
"sent_at": 1712915161639, // Timestamp when the SMS was sent (epoch format)
"campaign_id": 1712915111, // Unique campaign identifier
"user_id": 17740451, // User identifier
"campaign_name": "Flash Sale SMS Campaign", // Name of the SMS campaign
"identity": // custom identifier
[\
"+918468817470",\
"[email protected]",\
"chhayaArc121"\
]
}
{
"to": "PhoneNumber", // ("15555555555")
"body": {
"header": {
"type": "location",
"media": {
"latitude": 25.25231501881499,
"longitude": 86.98385572969912,
"name": "DLH Park",
"address": "7X2M+WFX, P&T Colony, Adampur, Bhagalpur, Bihar 812001, India"
}
},
"body": {
"type": "text",
"text": "Hi John! Thank you for registering for GMAT. Please refer to the link for your Exam Center location in Bhagalpur.",
"replacements": ["John", "Bhagalpur"]
},
"footer": null,
"limited_time_offer": null,
"buttons": []
},
"provider": "nexmo", // WhatsApp service provider (Vonage)
"message_id": "b6e644a27196e6db63c552c8a3babb55f930dbc743bf5c35507621dee1c163cf", // Unique message identifier
"version": 1, // JSON structure version
"sent_at": 1712910207584, // Timestamp when the message was sent (epoch format)
"campaign_id": 6153, // Unique campaign identifier
"journey_id": 1255, // Journey ID if part of a sequence
"user_id": 17633706, // User identifier
"campaign_name": "My WhatsApp Message", // Name of the WhatsApp campaign
"journey_name": "Check Journey", // Name of the journey
"journey_node_id": 6, // Node identifier in the journey
"identity": // custom identifier
[\
"+918468817470",\
"[email protected]",\
"chhayaArc121"\
]
}
Browse Archived Message From AWS S3 Bucket
[](https://docs.clevertap.com/docs/message-archiving#browse-archived-message-from-aws-s3-bucket)
-----------------------------------------------------------------------------------------------------------------------------------------------
The following image shows the steps to browse the archived messages on the AWS S3 bucket:

Sample Message Archive
Set Up Message Archiving
[](https://docs.clevertap.com/docs/message-archiving#set-up-message-archiving)
===========================================================================================================
Prerequisites
[](https://docs.clevertap.com/docs/message-archiving#prerequisites)
-------------------------------------------------------------------------------------
Before setting up Message Archiving, check that you have the following:
* An active CleverTap account.
* An AWS S3 bucket, Azure Blob Storage, or GCP bucket in the same region as your CleverTap account region.
Steps to Set Up Message Archiving
[](https://docs.clevertap.com/docs/message-archiving#steps-to-set-up-message-archiving)
-----------------------------------------------------------------------------------------------------------------------------
To set up message archiving, perform the following steps:
1. **Configure AWS S3 bucket, Azure Blob Storage, or GCP bucket on CleverTap dashboard**: Provide the necessary details for your AWS S3 bucket, including the bucket name and region. For more information, refer to [Configure AWS S3 Bucket on CleverTap Dashboard](doc:data-export-to-aws-s3#configure-s3-bucket-details-on-clevertap-dashboard)
, [Configure Azure Blob Storage](doc:microsoft-azure)
or [Configure GCP Bucket on CleverTap Dashboard.](doc:data-export-to-gcp#configure-clevertap-dashboard)
Note that for setting up message archiving with AWS S3, configure the bucket with an appropriate IAM policy. For more information, refer to [Add IAM Policy to S3 Bucket](doc:data-export-to-aws-s3#add-iam-policy-to-s3-bucket-on-aws-console)
.
2. **Configure Data Retention Policy**: You must set up the data retention policy for your AWS S3 bucket according to your organizational needs directly in the AWS S3 console.
For more information and detailed configuration steps, refer to [Data Export to AWS S3](doc:data-export-to-aws-s3#create-an-aws-s3-bucket)
, [Data Export to Azure](doc:microsoft-azure#create-a-new-data-export)
, or [Data Export to GCP](doc:data-export-to-gcp#create-a-new-data-export)
.
Security and Data Protection
[](https://docs.clevertap.com/docs/message-archiving#security-and-data-protection)
===================================================================================================================
Clevertap is committed to safeguarding your data. We ensure the protection of your data by implementing the following measures:
* **Data in Transit:** All data is transmitted using the HTTPS protocol, ensuring secure data transfer between CleverTap and your AWS S3 bucket, Azure Storage Blob, or GCP bucket.
* **Data at Rest:** The security of data at rest within the AWS S3 bucket, Azure Storage Blob, or GCP bucket is the customer's responsibility. This includes ensuring that proper encryption and access controls are in place.
FAQs
[](https://docs.clevertap.com/docs/message-archiving#faqs)
===================================================================
Explore concise troubleshooting tips and FAQs for Messaging Archival in this section.
The following information provides helpful troubleshooting tips and common questions about Message Archiving.
####
**Q: Is there a user interface for Message Archiving?**
[](https://docs.clevertap.com/docs/message-archiving#q-is-there-a-user-interface-for-message-archiving)
A: No, the Message Archiving feature operates without a user interface. Once enabled, it seamlessly archives messages to your AWS S3 bucket, Azure Storage Blob, or GCP bucket. We will provide a user interface in the future.
####
**Q: How long is the data stored?**
[](https://docs.clevertap.com/docs/message-archiving#q-how-long-is-the-data-stored)
A: You define the data retention policy within your AWS S3 bucket, Azure Storage Blob, or GCP bucket settings.
####
**Q: Who bears the cost of storage?**
[](https://docs.clevertap.com/docs/message-archiving#q-who-bears-the-cost-of-storage)
A: The customer bears all storage and data transfer costs associated with their AWS S3 bucket, Azure Storage Blob, or GCP bucket.
####
**Q: Does archiving happen in real-time?**
[](https://docs.clevertap.com/docs/message-archiving#q-does-archiving-happen-in-real-time)
A: Yes, message archiving occurs in real-time, ensuring that all communications are promptly saved.
####
**Q: What happens if my AWS credentials are invalid?**
[](https://docs.clevertap.com/docs/message-archiving#q-what-happens-if-my-aws-credentials-are-invalid)
A: If your AWS credentials become invalid, CleverTap cannot archive messages to your AWS S3 bucket or Azure Storage Blob, and no further campaign messages will be sent to your users. This is to ensure that every message that is sent out is archived first.
####
**Q: How are retries handled?**
[](https://docs.clevertap.com/docs/message-archiving#q-how-are-retries-handled)
A: If the bucket is unreachable, we will retry up to three times for AWS errors (such as AccessDenied). CleverTap handles the AWS S3 rate limit errors.
####
**Q: What happens if archiving fails ?**
[](https://docs.clevertap.com/docs/message-archiving#q-what-happens-if-archiving-fails-)
If the archiving fails after multiple retries, messages are marked as _Failed to Archive Message_.

Failed to archive message
####
**Q: Why does my archive`sent at` timestamp differs slightly from the actual send time?**
[](https://docs.clevertap.com/docs/message-archiving#q-why-does-my-archivesent-at-timestamp-differs-slightly-from-the-actual-send-time)
A: The message is archived just before it is sent to the end user, due to which slight delays can occur. This may lead to minor differences in timestamps.
####
**Q: How does CleverTap send archived data to customers?**
[](https://docs.clevertap.com/docs/message-archiving#q-how-does-clevertap-send-archived-data-to-customers)
A: CleverTap sends data in a compressed form to the customer's chosen location, such as the AWS S3 bucket, Azure Storage Blob, or GCP bucket. You can view the JSON format for each channel from [Sample Message Archiving JSON payloads](doc:messaging-archiving#sample-json-payloads)
.
####
**Q: What file format does CleverTap use for the message archive?**
[](https://docs.clevertap.com/docs/message-archiving#q-what-file-format-does-clevertap-use-for-the-message-archive)
A: The archived messages are stored as LZ4 compressed JSON files.
####
**Q: How does CleverTap charge for data transfer to another AWS region or outside AWS (Azure/GCP)?**
[](https://docs.clevertap.com/docs/message-archiving#q-how-does-clevertap-charge-for-data-transfer-to-another-aws-region-or-outside-aws-azuregcp)
A: The cost is determined per the cloud provider's data transfer charges if a customer transfers data to another AWS region. Transfers outside AWS (Azure/GCP) are classified as data-out-to-internet and are charged based on the cloud provider's pricing model, which may include a base cost and tiered pricing.
####
**Q: How does CleverTap handle message archiving for AMP emails?**
[](https://docs.clevertap.com/docs/message-archiving#q-how-does-clevertap-handle-message-archiving-for-amp-emails)
A: CleverTap archives every sent message, ensuring a comprehensive record of communication.
####
**Q: Does CleverTap store attachments in archived messages?**
[](https://docs.clevertap.com/docs/message-archiving#q-does-clevertap-store-attachments-in-archived-messages)
A: CleverTap optimizes storage by archiving key details of Email and WhatsApp campaigns.
####
**Q: How does CleverTap handle sensitive data in archived messages?**
[](https://docs.clevertap.com/docs/message-archiving#q-how-does-clevertap-handle-sensitive-data-in-archived-messages)
A: Archived messages may include CleverTap IDs (CTID) and the customer’s unique user ID. Customers can configure their campaigns based on their data privacy policies.
####
**Q: How can customers access archived messages?**
[](https://docs.clevertap.com/docs/message-archiving#q-how-can-customers-access-archived-messages)
A: CleverTap ensures customers fully control their archived messages by delivering the messages to their preferred storage location. Customers can retrieve and manage their data according to their specific compliance and security policies.
Updated about 2 months ago
* * *
Ask AI
---
# CleverTap for Startups: Technology Partners
Technology Partner Integration
[](https://docs.clevertap.com/docs/clevertap-for-startups-technology-partners#technology-partner-integration)
================================================================================================================================================
Analytics
[](https://docs.clevertap.com/docs/clevertap-for-startups-technology-partners#analytics)
------------------------------------------------------------------------------------------------------
| Partner Name | Integrates with CleverTap | Included in the Essentials Plan | Add-on | Add-on Name | Add-on Cost | Integration process |
| --- | --- | --- | --- | --- | --- | --- |
| Amplitude Export | Yes | Yes | Paid | Cloud Export | 10% of the Base Plan | [Amplitude Export](doc:amplitude-export) |
| AmplitudeMixpanel Import | Yes | Yes | Free | N/A | N/A | [Mixpanel Import](doc:mixpanel-integration) |
| Mixpanel Export | Yes | Paid | Cloud Export | 10% of the Base Plan | [Mixpanel Export](doc:mixpanel-export) | |
Attribution Provider
[](https://docs.clevertap.com/docs/clevertap-for-startups-technology-partners#attribution-provider)
----------------------------------------------------------------------------------------------------------------------------
| Partner Name | Integrates with CleverTap | Included in the Essentials Plan | Add-on | Add-on Cost | Integration process |
| --- | --- | --- | --- | --- | --- |
| AppsFlyer | Yes | Yes | Free | N/A | [AppsFlyer](https://developer.clevertap.com/docs/appsflyer) |
| Adjust | Yes | Yes | Free | N/A | [Adjust](https://developer.clevertap.com/docs/adjust) |
| Airbridge | Yes | Yes | Free | N/A | [Airbridge](https://developer.clevertap.com/docs/airbridge) |
| Branch | Yes | Yes | Free | N/A | [Branch](https://developer.clevertap.com/docs/branch) |
| Singular (formerly known as Apsalar) | Yes | Yes | Free | N/A | [Singular](https://developer.clevertap.com/docs/singular-apsalar) |
| Generic Attribution provider | Yes | Yes | Free | N/A | [Generic Attribution Provider](https://docs.clevertap.com/docs/generic-attribution-partner) |
> 📘
>
> ###
>
> Deep Linking
>
> [](https://docs.clevertap.com/docs/clevertap-for-startups-technology-partners#deep-linking)
>
> CleverTap supports deep linking that helps land the user on a particular part of your app. We have improved our [deep linking with Branch](doc:deeplinking-with-branch)
> for Email.
Contextual Location
[](https://docs.clevertap.com/docs/clevertap-for-startups-technology-partners#contextual-location)
--------------------------------------------------------------------------------------------------------------------------
| Partner Name | Integrates with CleverTap | Included in the Essentials Plan | Add-on | Add-on Cost | Integration process |
| --- | --- | --- | --- | --- | --- |
| Plot Projects | Yes | Yes | Free | N/A | [Plot Projects](doc:plot-projects) |
Crash Analytics
[](https://docs.clevertap.com/docs/clevertap-for-startups-technology-partners#crash-analytics)
------------------------------------------------------------------------------------------------------------------
| Partner Name | Integrates with CleverTap | Included in the Essentials Plan | Add-on | Add-on Cost | Integration process |
| --- | --- | --- | --- | --- | --- |
| Apteligent | Yes | Yes | Free | N/A | [Apteligent](doc:apteligent) |
Customer Data Platform
[](https://docs.clevertap.com/docs/clevertap-for-startups-technology-partners#customer-data-platform)
--------------------------------------------------------------------------------------------------------------------------------
| Partner Name | Integrates with CleverTap | Included in the Essentials Plan | Add-on | Add-on Cost | Integration process |
| --- | --- | --- | --- | --- | --- |
| mParticle Export | Yes | Yes | Cloud Export | 10% of Base Plan | [mParticle Export](doc:mparticle-export) |
| RudderStack | Yes | Yes | Free | N/A | [RudderStack](https://developer.clevertap.com/docs/rudderstack) |
| Segment | Yes | Yes | Cloud Export | 10% of Base Plan | [Segment](https://developer.clevertap.com/docs/segment) |
Data Warehouse
[](https://docs.clevertap.com/docs/clevertap-for-startups-technology-partners#data-warehouse)
----------------------------------------------------------------------------------------------------------------
| Partner Name | Integrates with CleverTap | Included in the Essentials Plan | Add-on | Add-on Name | Add-on Cost | Integration process |
| --- | --- | --- | --- | --- | --- | --- |
| Google Cloud | Yes | Yes | Paid | Cloud Export | 10% of Base Plan | [Google Cloud](doc:data-export-to-gcp) |
| AWS Amazon S3 | Yes | Yes | Paid | Cloud Export | 10% of Base Plan | [AWS Amazon S3](doc:aws-s3-export) |
| AWS Amazon EventBridge | Yes | Yes | Paid | Cloud Export | 10% of Base Plan | [AWS Amazon EventBridge](doc:amazon-eventbridge-overview) |
| Microsoft Azure | Yes | Yes | Paid | Cloud Export | 10% of Base Plan | [Microsoft Azure](doc:microsoft-azure) |
Dynamic Content
[](https://docs.clevertap.com/docs/clevertap-for-startups-technology-partners#dynamic-content)
------------------------------------------------------------------------------------------------------------------
| Partner Name | Integrates with CleverTap | Included in the Essentials Plan | Add-on | Add-on Cost | Integration process |
| --- | --- | --- | --- | --- | --- |
| Storyly | Yes | Yes | Free | N/A | [Storyly](doc:storyly) |
E-commerce
[](https://docs.clevertap.com/docs/clevertap-for-startups-technology-partners#e-commerce)
--------------------------------------------------------------------------------------------------------
| Partner Name | Integrates with CleverTap | Included in the Essentials Plan | Add-on | Add-on Cost | Integration process |
| --- | --- | --- | --- | --- | --- |
| Shopify | Yes | Yes | Free | N/A | [Shopify](doc:shopify) |
Email
[](https://docs.clevertap.com/docs/clevertap-for-startups-technology-partners#email)
----------------------------------------------------------------------------------------------
| Partner Name | Integrates with CleverTap | Included in the Essentials Plan | Add-on | Add-on Cost | Integration process |
| --- | --- | --- | --- | --- | --- |
| Mandrill | Yes | Yes | Free | N/A | [Mandrill](doc:mandrill) |
| Amazon SES | Yes | Yes | Free | N/A | [Amazon SES](doc:amazon-simple-email-service) |
| SendGrid | Yes | Yes | Free | N/A | [SendGrid](doc:sendgrid) |
| Postmark | Yes | Yes | Free | N/A | [Postmark](doc:postmark) |
| Gmail/Google Apps | Yes | Yes | Free | N/A | [Gmail/Google Apps](http://gmail/Google%20Apps) |
| Generic SMTP | Yes | Yes | Free | N/A | [Generic SMTP](doc:generic-smtp) |
Email Validator
[](https://docs.clevertap.com/docs/clevertap-for-startups-technology-partners#email-validator)
------------------------------------------------------------------------------------------------------------------
| Partner Name | Integrates with CleverTap | Included in the Essentials Plan | Add-on | Add-on Cost | Integration process |
| --- | --- | --- | --- | --- | --- |
| Clearout | Yes | Yes | Free | N/A | [Clearout](doc:clearout) |
Email Templates
[](https://docs.clevertap.com/docs/clevertap-for-startups-technology-partners#email-templates)
------------------------------------------------------------------------------------------------------------------
| Partner Name | Integrates with CleverTap | Included in the Essentials Plan | Add-on | Add-on Cost | Add-on Cost |
| --- | --- | --- | --- | --- | --- |
| Stripo | Yes | Yes | Free | N/A | [Stripo](https://docs.clevertap.com/docs/stripo) |
| Taxi for Email | Yes | Yes | Free | N/A | [Taxi for Email](https://docs.clevertap.com/docs/taxi-for-email) |
Import
[](https://docs.clevertap.com/docs/clevertap-for-startups-technology-partners#import)
------------------------------------------------------------------------------------------------
| Partner Name | Integrates with CleverTap | Included in the Essentials Plan | Add-on | Add-on Cost | Integration process |
| --- | --- | --- | --- | --- | --- |
| Imports via SFTP | Yes | Yes | Free | N/A | [Imports via SFTP](https://developer.clevertap.com/docs/imports-via-sftp) |
| CSV Upload | Yes | Yes | Free | N/A | [CSV Upload](doc:csv-upload) |
> 📘
>
> ###
>
> Data Import
>
> [](https://docs.clevertap.com/docs/clevertap-for-startups-technology-partners#data-import)
>
> You can use CleverTap APIs to push and retrieve data. For more information, refer to [CleverTap APIs](https://developer.clevertap.com/docs/api-overview)
> .
Loyalty
[](https://docs.clevertap.com/docs/clevertap-for-startups-technology-partners#loyalty)
--------------------------------------------------------------------------------------------------
| Partner Name | Integrates with CleverTap | Included in the Essentials Plan | Add-on | Add-on Cost | Integration process |
| --- | --- | --- | --- | --- | --- |
| Talon.One | Yes | Yes | Free | N/A | [Talon.one](doc:talonone) |
Messenger
[](https://docs.clevertap.com/docs/clevertap-for-startups-technology-partners#messenger)
------------------------------------------------------------------------------------------------------
| Partner Name | Integrates with CleverTap | Included in the Essentials Plan | Add-on | Add-on Cost | Integration process |
| --- | --- | --- | --- | --- | --- |
| LINE | Yes | Yes | Free | N/A | [LINE](doc:line-messenger) |
Payments
[](https://docs.clevertap.com/docs/clevertap-for-startups-technology-partners#payments)
----------------------------------------------------------------------------------------------------
| Partner Name | Integrates with CleverTap | Included in the Essentials Plan | Add-on | Add-on Cost | Integration process |
| --- | --- | --- | --- | --- | --- |
| RevenueCat | Yes | Yes | Free | N/A | [RevenueCat](doc:revenuecat) |
Remarketing
[](https://docs.clevertap.com/docs/clevertap-for-startups-technology-partners#remarketing)
----------------------------------------------------------------------------------------------------------
| Partner Name | Integrates with CleverTap | Included in the Essentials Plan | Add-on | Add-on Name | Add-on Cost | Integration process |
| --- | --- | --- | --- | --- | --- | --- |
| Facebook Audience Network | Yes | Yes | Paid | Premium Channels | 10% of Base Plan | [Facebook Audience Network](doc:facebook-audience-network-1) |
| Google Ads Remarketing | Yes | Yes | Paid | Premium Channels | 10% of Base Plan | [Google Ads Remarketing](doc:google-adwords-remarketing) |
SMS
[](https://docs.clevertap.com/docs/clevertap-for-startups-technology-partners#sms)
------------------------------------------------------------------------------------------
| Partner Name | Integrates with CleverTap | Included in the Essentials Plan | Add-on | Add-on Cost | Integration process |
| --- | --- | --- | --- | --- | --- |
| Twilio | Yes | Yes | Free | N/A | [Twilio](doc:twilio) |
| Exotel | Yes | Yes | Free | N/A | [Exotel](doc:exotel) |
| Nexmo | Yes | Yes | Free | N/A | [Nexmo](doc:nexmo) |
| MSG91 | Yes | Yes | Free | N/A | [MSG91](doc:msg91) |
| TextLocal | Yes | Yes | Free | N/A | [TextLocal](doc:generic-sms) |
| Nimbus SMS | Yes | Yes | Free | N/A | [Nimbus SMS](doc:generic-sms) |
| Plivo | Yes | Yes | Free | N/A | [Plivo](doc:generic-sms) |
| SMS INDIAHUB | Yes | Yes | Free | N/A | [SMS INDIAHUB](doc:generic-sms) |
| Netcore | Yes | Yes | Free | N/A | [Netcore](doc:netcore) |
| Mitto | Yes | Yes | Free | N/A | [Mitto](doc:generic-sms) |
| AWS Pinpoint | Yes | Yes | Free | N/A | [AWS Pinpoint](doc:generic-sms) |
Support
[](https://docs.clevertap.com/docs/clevertap-for-startups-technology-partners#support)
--------------------------------------------------------------------------------------------------
| Partner Name | Integrates with CleverTap | Included in the Essentials Plan | Add-on | Add-on Cost | Integration process |
| --- | --- | --- | --- | --- | --- |
| Zendesk | Yes | Yes | Free | N/A | [Zendesk](doc:zendesk) |
WhatsApp
[](https://docs.clevertap.com/docs/clevertap-for-startups-technology-partners#whatsapp)
----------------------------------------------------------------------------------------------------
| Partner Name | Integrates with CleverTap | Included in the Essentials Plan | Add-on | Add-on Name | Add-on Cost | Integration process |
| --- | --- | --- | --- | --- | --- | --- |
| CleverTap WhatsApp Business API | Yes | No | N/A | N/A | 10% of Base Plan | [CleverTap WhatsApp Business API](doc:clevertap-bsp) |
| Gupshup | Yes | Yes | Paid | WhatsApp Connect | 10% of Base Plan | [Gupshup](doc:gupshup) |
| Generic WhatsApp | Yes | Yes | Paid | WhatsApp Connect | 10% of Base Plan | [Generic WhatsApp](doc:generic-whatsapp) |
| Nexmo | Yes | Yes | Paid | WhatsApp Connect | 10% of Base Plan | [Nexmo](doc:nexmo-whatsapp) |
| Exotel | Yes | Yes | Paid | WhatsApp Connect | 10% of Base Plan | [Exotel](doc:exotel-whatsapp) |
Workflow Automation
[](https://docs.clevertap.com/docs/clevertap-for-startups-technology-partners#workflow-automation)
--------------------------------------------------------------------------------------------------------------------------
| Partner Name | Integrates with CleverTap | Included in the Essentials Plan | Add-on | Add-on Cost | Integration process |
| --- | --- | --- | --- | --- | --- |
| Zapier | Yes | Yes | Free | N/A | [Zapier](doc:zapier) |
Mobile Platforms
[](https://docs.clevertap.com/docs/clevertap-for-startups-technology-partners#mobile-platforms)
====================================================================================================================
You can check out the integration capabilities and features of CleverTap through the following list of supported platforms and technologies.
| Partner
Name | Integrates with CleverTap | Included in the Essentials Plan | Add-On | Add-On Cost | Integration Process |
| --- | --- | --- | --- | --- | --- |
| iOS | Yes | Yes | Free | N/A | [iOS SDK](https://developer.clevertap.com/docs/ios) |
| Android | Yes | Yes | Free | N/A | [Android SDK](https://developer.clevertap.com/docs/android) |
| Cordova | Yes | Yes | Free | N/A | [Cordova SDK](https://developer.clevertap.com/docs/cordova) |
| Flutter | Yes | Yes | Free | N/A | [Flutter SDK](https://developer.clevertap.com/docs/flutter-sdk) |
| Geofencing | Yes | Yes | Free | N/A | [Geofencing](https://developer.clevertap.com/docs/geofencing) |
| React Native | Yes | Yes | Free | N/A | [React Native](https://developer.clevertap.com/docs/react-native) |
| Unity | Yes | Yes | Free | N/A | [Unity](https://developer.clevertap.com/docs/unity) |
| Xamarin | Yes | Yes | Free | N/A | [Xamarin](https://developer.clevertap.com/docs/xamarin) |
| KaiOS | Yes | Yes | Free | N/A | [KaiOS](https://developer.clevertap.com/docs/kaios) |
| Web | Yes | Yes | Free | N/A | [Web SDK](https://developer.clevertap.com/docs/web-overview) |
| Google Tag Manager | Yes | Yes | Free | N/A | [Google Tag Manager](https://developer.clevertap.com/docs/google-tag-manager) |
Updated about 2 months ago
* * *
Ask AI
---
# Route Mobile
Overview
[](https://docs.clevertap.com/docs/route-mobile#overview)
======================================================================
[Route Mobile](https://routemobile.com/)
is a global cloud communications platform that enables businesses to send messages via SMS, WhatsApp, RCS, and more. By integrating Route Mobile with CleverTap’s WhatsApp Business solution, you can send personalized, automated WhatsApp messages at scale using your Route Mobile-approved WhatsApp sender.
With this integration, you can:
* Trigger WhatsApp messages based on user actions or segments.
* Personalize content using CleverTap's enriched user profiles.
* Track delivery, read status, and user engagement directly in CleverTap.
This setup combines Route Mobile’s reliable messaging infrastructure with CleverTap’s powerful engagement engine, enabling you to drive conversion-oriented conversations.
> 🚧
>
> ###
>
> Support for Integration
>
> [](https://docs.clevertap.com/docs/route-mobile#support-for-integration)
>
> This integration is managed and continuously improved by Route Mobile. The CleverTap and Route Mobile integration has undergone stringent testing to ensure seamless functionality. For any questions or issues, contact [Route Mobile](https://docs.clevertap.com/cdn-cgi/l/email-protection#90e3e5e0e0ffe2e4d0e2ffe5e4f5fdfff2f9fcf5bef3fffd)
> for support and resolution.
Prerequisites for Integration
[](https://docs.clevertap.com/docs/route-mobile#prerequisites-for-integration)
================================================================================================================
The following are the prerequisites for Route Mobile.
* You must have the WhatsApp add-on enabled on the CleverTap account in addition to the Essentials Plan.
* Ensure that WhatsApp onboarding for the phone number to be used with CleverTap is completed.
* Ensure that you have the API URL and account credentials from Route Mobile.
> 📘
>
> ###
>
> Activating a New Phone Number via Route Mobile
>
> [](https://docs.clevertap.com/docs/route-mobile#activating-a-new-phone-number-via-route-mobile)
>
> If you want to activate a new phone number with WhatsApp Business API via Route Mobile, contact your Account Manager from Route Mobile.
Integrate Route Mobile with CleverTap
[](https://docs.clevertap.com/docs/route-mobile#integrate-route-mobile-with-clevertap)
================================================================================================================================
This process involves the following three steps:
1. [Find Route Mobile WhatsApp account credentials](doc:route-mobile#find-route-mobile-whatsapp-account-credentials)
2. [Configure CleverTap dashboard](doc:route-mobile#configure-clevertap-dashboard)
3. [Set Up CleverTap Callbacks with Route Mobile](doc:route-mobile#set-up-clevertap-callbacks-with-route-mobile)
Find Route Mobile WhatsApp Account Credentials
[](https://docs.clevertap.com/docs/route-mobile#find-route-mobile-whatsapp-account-credentials)
--------------------------------------------------------------------------------------------------------------------------------------------------
CleverTap recommends that you keep the following information handy before starting with the configuration on the CleverTap dashboard:
* HTTP Endpoint
* Username and password
Contact the Route Mobile WhatsApp Support Team or raise a request at [Route Mobile](https://docs.clevertap.com/cdn-cgi/l/email-protection#b9caccc9c9d6cbcdf9cbd6cccddcd4d6dbd0d5dc97dad6d4)
. The response will include the username, password, and WhatsApp number for your WhatsApp account.
Configure CleverTap dashboard
[](https://docs.clevertap.com/docs/route-mobile#configure-clevertap-dashboard)
----------------------------------------------------------------------------------------------------------------
To configure the CleverTap dashboard, perform the following steps:
1. Go to _Settings_ > _Channels_ > _WhatsApp_ > _WhatsApp Connect_ from the CleverTap dashboard.
2. Click **\+ Add Provider** and select _Generic (Other)_ from the dropdown.
 Provider Setup
3. Enter the following details:
| Field | Details |
| --- | --- |
| Nickname | Enter the nickname as Route Mobile <10-digit phone number> for easy
reference. |
| Mobile Number | Add your WhatsApp Integrated number with country code (for example, 918889500122) |
| Request Type | Ensure the Request Type is _POST_. |
| HTTP Endpoint | Paste the URL received from the Route Mobile team.
Ensure that the URL is in HTTPS format, i.e., your URL must begin with **https://**. |
| Headers | Click **Header** and enter the following key-value-pairs:
* Key: API-KEY
* Value:
Contact to [\[email protected\]](https://docs.clevertap.com/cdn-cgi/l/email-protection#0f7c7a7f7f607d7b4f7d607a7b6a62606d66636a216c6062)
for API key. |
| Delivery Report Callback URL | This URL is generated automatically in the CleverTap dashboard. Share the URL with Route Mobile’s account manager to configure it with the WhatsApp account. |
| Inbound Message
Callback URL | This URL is generated automatically in the CleverTap dashboard. Share the URL with Route Mobile’s account manager to configure it with the WhatsApp account. |
4. (Optional) Select _Mark this as default to make this service provider the default provider_ to send a WhatsApp message via Route Mobile.
5. (Optional) Select _Set auto-reply for users not tracked on CleverTap_ to automatically reply to users who message on WhatsApp but are not tracked on the CleverTap dashboard.
6. (Optional) Set the _Maximum Concurrent API requests_ between 30 and 1000. Consider your requirements and the provider's limitations when defining this value.
7. Send a Test WhatsApp notification (refer to the following image).
 Send Test Message on WhatsApp
Set Up CleverTap Callbacks with Route Mobile
[](https://docs.clevertap.com/docs/route-mobile#set-up-clevertap-callbacks-with-route-mobile)
----------------------------------------------------------------------------------------------------------------------------------------------
To set up CleverTap callbacks with Route Mobile, perform the following steps:
1. **Locate Callback URLs in CleverTap**: Go to _Settings_ > _Channels_ > _WhatsApp_ from the CleverTap dashboard. You will find the _Delivery Report Callback URL_ and _Inbound Message Callback URL_ under the _Provider Configuration_ page.
2. **Share Callback URLs with Route Mobile**: Copy both URLs and the WhatsApp phone number used in CleverTap, send them to the Route Mobile WhatsApp support team for configuration.
 Callback URLs
Once configured, these webhooks ensure that message delivery reports and inbound messages sync correctly between CleverTap and Route Mobile.
> 📘
>
> ###
>
> Message Templates
>
> [](https://docs.clevertap.com/docs/route-mobile#message-templates)
>
> You have to get your templates approved on the Route Mobile dashboard. Once approved, add the same templates in the CleverTap dashboard for sending out messages. For more information and queries about the Route Mobile integration, write to [\[email protected\]](https://docs.clevertap.com/cdn-cgi/l/email-protection#295a5c5959465b5d695b465c5d4c44464b40454c074a4644)
> .
Add Message Templates
[](https://docs.clevertap.com/docs/route-mobile#add-message-templates)
------------------------------------------------------------------------------------------------
To create WhatsApp campaigns, you must have pre-approved WhatsApp message templates saved in the CleverTap dashboard. To add the templates, perform the following steps:
1. Go to _Settings_ > _Channels_ > _WhatsApp_ > _WhatsApp Connect_ > _Provider Nickname_ on the CleverTap dashboard.
2. Select _Templates_ and click **\+ Template**.
 Create a New Template 3. Enter the template name.
> 📘
>
> ###
>
> Naming WhatsApp Templates
>
> [](https://docs.clevertap.com/docs/route-mobile#naming-whatsapp-templates)
>
> Template names and language variants must be unique for each provider configuration. This means that you can use the same template name once for each provider configuration.
>
> For example, if you have multiple provider configurations, such as Phone\_1 and Phone\_2, you can use the a particular template name once within Phone\_1 and Phone\_2.
4. Select the language in which you want to display the message.
5. Select the type of template header (Text or Media). For Media headers, you can use _Image_, _Video_, _Document_, or _Location_.
6. Create a [Limited Time Offer Template](doc:whatsapp-message-templates#limited-time-offer-templates)
, if required.
7. Enter the message content.
8. Select _Footer_ to add a footer text and a button (Quick Reply or a Call To Action).
 Define Template Content
9. Click **Save Template**.
Test a Message Template
[](https://docs.clevertap.com/docs/route-mobile#test-a-message-template)
----------------------------------------------------------------------------------------------------
For detailed instructions on testing a WhatsApp message template, refer to [Testing a Message Template](doc:whatsapp-message-templates#testing-a-message-template)
.
Create Campaign
[](https://docs.clevertap.com/docs/route-mobile#create-campaign)
====================================================================================
For detailed instructions on creating a WhatsApp campaign using Route Mobile as the provider, refer to [Create a WhatsApp Campaign](doc:whatsapp#section-creating-a-whatsapp-campaign)
.
Create a Journey
[](https://docs.clevertap.com/docs/route-mobile#create-a-journey)
======================================================================================
For detailed instructions on creating a WhatsApp journey using Route Mobile as the provider, refer to [Create a WhatsApp Journey](doc:engagement-nodes-whatsapp)
.
Updated about 2 months ago
* * *
Ask AI
---
# QuickReply
Overview
[](https://docs.clevertap.com/docs/quickreply#overview)
====================================================================
[QuickReply](https://quickreply.ai/)
is a conversational commerce platform that helps brands automate WhatsApp communication at scale. By integrating QuickReply with CleverTap, you can send personalized, automated WhatsApp messages triggered by user behavior, leveraging QuickReply’s API and infrastructure.
With this integration, you can do the following:
* Send automated WhatsApp messages based on user actions or campaigns.
* Personalize messages using CleverTap’s user profiles.
* Track message delivery and user engagement within CleverTap.
This setup combines QuickReply’s automation capabilities with CleverTap’s real-time engagement engine to drive relevant conversations and increase conversions.
> 🚧
>
> ###
>
> Support for Integration
>
> [](https://docs.clevertap.com/docs/quickreply#support-for-integration)
>
> This integration is managed and continuously improved by QuickReply. The CleverTap and QuickReply integration has undergone stringent testing to ensure seamless functionality. For any questions or issues, contact [QuickReply](https://docs.clevertap.com/cdn-cgi/l/email-protection#c2aaa7aeb282b3b7aba1a9b0a7b2aebbeca3ab)
> for support and resolution.
Prerequisites for Integration
[](https://docs.clevertap.com/docs/quickreply#prerequisites-for-integration)
==============================================================================================================
To integrate QuickReply with CleverTap:
* You must have the WhatsApp add-on enabled on your CleverTap account in addition to the Essentials Plan.
* WhatsApp onboarding for the phone number must be completed via QuickReply.
* Check that you have the Project ID and Passcode from CleverTap and the Authorization Header from the QuickReply dashboard.
Integrate QuickReply with CleverTap
[](https://docs.clevertap.com/docs/quickreply#integrate-quickreply-with-clevertap)
==========================================================================================================================
This process involves the following steps:
1. [Create a Passcode on the CleverTap Dashboard](doc:quickreply#create-a-passcode-on-the-clevertap-dashboard)
2. [Configure CleverTap dashboard](doc:quickreply#configure-clevertap-dashboard)
3. [Set Up CleverTap Callbacks with QuickReply](doc:quickreply#set-up-clevertap-callbacks-in-quickreply)
Create a Passcode on the CleverTap Dashboard
[](https://docs.clevertap.com/docs/quickreply#create-a-passcode-on-the-clevertap-dashboard)
--------------------------------------------------------------------------------------------------------------------------------------------
CleverTap uses a header-based authentication model to authenticate requests to its REST API. Every CleverTap API call must include Account ID and Passcode as the request headers. To create a passcode, refer to [Create Account Passcode](https://developer.clevertap.com/docs/authentication#create-account-passcode)
.
Configure CleverTap dashboard
[](https://docs.clevertap.com/docs/quickreply#configure-clevertap-dashboard)
--------------------------------------------------------------------------------------------------------------
To configure the CleverTap dashboard, perform the following steps:
1. Go to _Settings_ > _Channels_ > _WhatsApp_ > _WhatsApp Connect_ from the CleverTap dashboard.
2. Click **\+ Add Provider** and select _Generic (Other)_ from the dropdown.

Provider Setup
3. Enter the following details:
| **Field** | **Details** |
| --- | --- |
| Nickname | Enter a name such as `QuickReply` for reference. |
| Mobile Number | Add your WhatsApp Integrated number with country code (for example, 918889500122) |
| Request Type | Ensure the Request Type is `POST`. |
| HTTP Endpoint | Enter HTTP Endpoint as the following: `https://app.quickreply.ai/integrations/api/clevertap/WHATSAPP/send-message`. |
| Delivery Report Callback URL | This URL is generated automatically in the CleverTap dashboard. Share the URL with the QuickReply account manager to configure it with the WhatsApp account. Refer to [Set Up CleverTap Callbacks in QuickReply](doc:quickreply#set-up-clevertap-callbacks-in-quickreply)
. |
| Inbound Message
Callback URL | This URL is generated automatically in the CleverTap dashboard. Share the URL with the QuickReply account manager to configure it with the WhatsApp account. Refer to [Set Up CleverTap Callbacks in QuickReply](doc:quickreply#set-up-clevertap-callbacks-in-quickreply)
. |
4. Add Headers from QuickReply. To do so, follow the steps to configure headers:
1. Go to _Settings_ > _CleverTap Integration_ in QuickReply Dashboard.
2. Copy the _Authorization Headers_.
3. Paste the headers into the _Header_ section in CleverTap.

Configure Headers
5. (Optional) Select _Markthis as default_ to make this service provider the default provider for sending a WhatsApp message via QuickReply.
6. (Optional) Select _Set auto-reply for users not tracked on CleverTap_ to automatically reply to users who message on WhatsApp but are not tracked on the CleverTap dashboard.
7. (Optional) Set the _Maximum Concurrent API requests_ between 30 and 1000. Consider your requirements and the provider's limitations when defining this value.
8. Test the integration and click **Save** to trigger a test message and automatically save your credentials.
Set Up CleverTap Callbacks in QuickReply
[](https://docs.clevertap.com/docs/quickreply#set-up-clevertap-callbacks-in-quickreply)
------------------------------------------------------------------------------------------------------------------------------------
To set up CleverTap callbacks with QuickReply, follow the steps below:
1. **Locate Callback URLs in CleverTap**: Go to _Settings_ > _Channels_ > _WhatsApp_ from the CleverTap dashboard. You will find the _Delivery Report Callback URL_ and _Inbound Message Callback URL_ under the _Provider Configuration_ page.
2. **Share Callback URLs with QuickReply**: Copy both URLs and the WhatsApp phone number used in CleverTap, and send them to the QuickReply Account Manager or email [\[email protected\]](https://docs.clevertap.com/cdn-cgi/l/email-protection#1179747d6151606478727a6374617d683f7078)
.

Callback URLs
Once configured, ensure that message delivery reports and inbound messages sync correctly between CleverTap and QuickReply.
> 📘
>
> ###
>
> Message Templates
>
> [](https://docs.clevertap.com/docs/quickreply#message-templates)
>
> You have to get your templates approved on the QuickReply dashboard. Once approved, add the same templates in the CleverTap dashboard for sending out messages. For more information and queries about the QuickReply integration, write to [\[email protected\]](https://docs.clevertap.com/cdn-cgi/l/email-protection#147c7178645465617d777f667164786d3a757d)
> .
Add Message Templates
[](https://docs.clevertap.com/docs/quickreply#add-message-templates)
----------------------------------------------------------------------------------------------
To create WhatsApp campaigns, you must have pre-approved WhatsApp message templates saved in the CleverTap dashboard. To add the templates, perform the following steps:
1. Go to _Settings_ > _Channels_ > _WhatsApp_ > _WhatsApp Connect_ > _QuickReply_ on the CleverTap dashboard.
2. Select _Templates_ and click **\+ Template**.

Create a New Template
3. Enter the template name.
> 📘
>
> ###
>
> Naming WhatsApp Templates
>
> [](https://docs.clevertap.com/docs/quickreply#naming-whatsapp-templates)
>
> Template names and language variants must be unique for each provider configuration. This means that you can use the same template name once for each provider configuration.
>
> For example, if you have multiple provider configurations, such as Phone\_1 and Phone\_2, you can use a particular template name once within Phone\_1 and then again on Phone\_2.
4. Select the language in which you want to display the message.
5. Select the type of template header (Text or Media). For Media headers, you can use _Image_, _Video_, _Document_, or _Location_.
6. Create a [Limited Time Offer Template](doc:whatsapp-message-templates#limited-time-offer-templates)
, if required.
7. Enter the message content.
8. Select _Footer_ to add a footer text and a button (Quick Reply or a Call To Action).

Define Template Content
9. Click **Save Template**.
Test a Message Template
[](https://docs.clevertap.com/docs/quickreply#test-a-message-template)
--------------------------------------------------------------------------------------------------
For detailed instructions on testing a WhatsApp message template, refer to [Testing a Message Template](doc:whatsapp-message-templates#testing-a-message-template)
.
Create Campaign
[](https://docs.clevertap.com/docs/quickreply#create-campaign)
==================================================================================
For detailed instructions on creating a WhatsApp campaign using QuickReply as the provider, refer to [Create a WhatsApp Campaign](doc:whatsapp#section-creating-a-whatsapp-campaign)
.
Create a Journey
[](https://docs.clevertap.com/docs/quickreply#create-a-journey)
====================================================================================
For detailed instructions on creating a WhatsApp journey using QuickReply as the provider, refer to [Create a WhatsApp Journey](doc:engagement-nodes-whatsapp)
.
Updated about 2 months ago
* * *
Ask AI
---
# Kaleyra
> 🚧
>
> ###
>
> Support For Integration
>
> [](https://docs.clevertap.com/docs/kaleyra#support-for-integration)
>
> This integration is completed by Kaleyra, and they are dedicated to maintaining and enhancing it. The CleverTap and Kaleyra integration has undergone stringent testing to ensure seamless functionality. For any support or query resolution, contact Kaleyra.
Introduction
[](https://docs.clevertap.com/docs/kaleyra#introduction)
=========================================================================
CleverTap users can leverage the following WhatsApp capabilities of Kaleyra to communicate with their customers to:
* Send just-in-time offers to customers to drive purchases
* Gather feedback on the services
* Keep customers informed and more
Prerequisites For Integration
[](https://docs.clevertap.com/docs/kaleyra#prerequisites-for-integration)
===========================================================================================================
Following are the prerequisites:
* WhatsApp add-on enabled on the CleverTap account in addition to the essentials price plan.
* WhatsApp onboarding for the phone number to be used with CleverTap is completed.
* Kaleyra WhatsApp Business API.
Integrate Kaleyra with CleverTap
[](https://docs.clevertap.com/docs/kaleyra#integrate-kaleyra-with-clevertap)
=================================================================================================================
This process involves the following three steps:
1. [Find Kaleyra Details](doc:kaleyra#find-kaleyra-details)
.
2. [Configure CleverTap Dashboard](doc:kaleyra#configure-clevertap-dashboard)
.
3. [Set Up CleverTap Callbacks in Kaleyra](doc:kaleyra#set-up-clevertap-callbacks-in-kaleyra)
.
Find Kaleyra Details
[](https://docs.clevertap.com/docs/kaleyra#find-kaleyra-details)
-----------------------------------------------------------------------------------------
We recommend keeping the _API key_ and _HTTP Endpoint_ handy before starting with the configuration on the CleverTap dashboard. To do so:
1. Get the CleverTap endpoint URL from the Kaleyra support team.
2. To get the _API keys_:
i. Log into your Kaleyra account.
ii. From the left menu bar, click **Developers**. The _API Keys_ page appears.
iii. Hover over the API key to view the _API Key_ and the _SID_.
iv. Click the ellipses icon **(...)** at the right end of the API Key list and click **Edit**.

Kaleyra API View
You can view the following details:
* **API Name**
* **Whitelisted IP Addresses**: The whitelisted IP addresses for the API Key.
* **API Domain**: The base URL to send the API requests.
* **SID (Security Identifier)**: Unique SID of your kaleyra account. This value is the same for all your API Keys.
* **API Key**: API key details.
3. Click the copy icon next to the _API Key_ to copy the API to the clipboard.

Kaleyra API Keys
Configure CleverTap Dashboard
[](https://docs.clevertap.com/docs/kaleyra#configure-clevertap-dashboard)
-----------------------------------------------------------------------------------------------------------
To configure the CleverTap dashboard:
1. Go to _Settings_ > _Channels_ > _WhatsApp_ > _WhatsApp Connect_ from the CleverTap dashboard.
2. Click **\+ Provider** and _Log in to Facebook_.

Kaleyra Provider Setup
3. Enter the following details:
| Field | Description |
| --- | --- |
| Provider | Select _Generic (Other)_ from the dropdown list. |
| Nickname | Enter the nickname as _Kaleyra_ to identify the provider easily. |
| WhatsApp Business Number | Enter your approved WhatsApp number with your country code.
To view the approved WhatsApp number, navigate to _Channels_ > _WhatsApp Manage_ > _Configurations_ > filter by Approved Status from Kaleyra's Dashboard.
From the Number column, copy the mobile number with the country code. |
| Request Type | Ensure that the _Request Type_ is _POST_. |
| HTTP End Point | Enter the CleverTap endpoint URL provided by the Kaleyra support team. |
| Headers | Select _Headers_ under the _Body_ section and add the following key-value pairs:
* In the _Key_ field, enter API key, and in the _Value_ field, enter the API Key value from your Kaleyra application. To get the API Key details, refer to [View API Key and SID.](https://developers.kaleyra.io/docs/view-api-key-and-sid)
* In the _Key_ field, enter sid; in the _Value_ field, enter the SID value retrieved from your Kaleyra application. To get the sid details, refer to [View API Key and SID](https://developers.kaleyra.io/docs/view-api-key-and-sid)
.
* In the _Key_ field, enter kaleyra-host, and in the _Value_ field, enter [](https://api.kaleyra.io/)
[https://api.kaleyra.io/](https://api.kaleyra.io/)
as API domain URL from your Kaleyra application.
* In the _Key_ field, enter inbound-message-callback-url, and in the _Value_ field, copy and paste the inbound message callback URL.
* In the _Key_ field, enter delivery-report-callback-url, and in the _Value_ field, copy and paste the delivery report callback URL. |
4. To make this service provider as the default provider to send a WhatsApp message, select the _Mark this as default_ checkbox.
5. To automatically reply to users who message on WhatsApp but are not tracked on the CleverTap dashboard, select the _Set auto-reply for users not tracked on CleverTap_ checkbox.
6. (Optional) You can set the _Maximum Concurrent API requests_ anywhere between 30 to 1000 requests. Consider your requirement and the provider's limitations to define this value.
7. Click **Save**.
Set Up CleverTap Callbacks in Kaleyra
[](https://docs.clevertap.com/docs/kaleyra#set-up-clevertap-callbacks-in-kaleyra)
---------------------------------------------------------------------------------------------------------------------------
> 📘
>
> ###
>
> Naming WhatsApp Templates
>
> [](https://docs.clevertap.com/docs/kaleyra#naming-whatsapp-templates)
>
> Template names and language variants must be unique for each provider configuration. This means that you can use the same template name once for each provider configuration.
>
> For example, if you have multiple provider configurations, such as _Phone\_1, phone\_2_, you can use the same template name once within _Phone\_1 and Phone\_2_.
CleverTap callbacks are already configured in send message API request headers. You must enable a custom callback URL provided by the Kaleyra support team.
To set up the custom callback URL:
1. Log into your Kaleyra.io account.
2. Click **user profile** in the top right bar,
3. Click **Settings**.

Kaleyra Settings
4. Navigate to the _Settings_ tab

Settings Tab
5. In the _Enable WhatsApp Callback URLs_ field, enter the HTTP Endpoint shared by the Kaleyra Support team to configure the WhatsApp Callback.
6. Click **Save**.

Enable WhatsApp Callbacks
To enable incoming messages callback URL in Kaleyra:
1. Sign in to your Kaleyra.io account.
2. On Kaleyra's dashboard page, click **Channels** from the left menu bar.
The Channels page appears.
3. From the _WhatsApp_ section, click **Manage**. The WhatsApp Dashboard page appears.

Kaleyra Dashboard
4. Click **Configurations**. The _Configurations_ page appears.

Kaleyra Configuration
5. Locate the number you have configured in CleverTap > Click the ellipsis > click _Edit_. The _Edit Number_ pop-up appears.

Kaleyra Configuration
6. Enter the incoming message URL provided by the Kaleyra Support team in the _Incoming URL_ field.

Setup Incoming Callback URL
7. Add the following two query parameters:
* ? followed by _inbound\_message\_callback\_url=_ and paste the _Inbound Message Callback URL_ from the CleverTap's Provider page.
* & followed by _payload\_version=_ and then enter the Payload Version in the Body section of the CleverTap's Provider page.
Find Template Details
[](https://docs.clevertap.com/docs/kaleyra#find-template-details)
===========================================================================================
You need to add the details of your pre-approved templates on the CleverTap dashboard. To find the details of your pre-approved templates on Kaleyra, navigate to the _Template_ section from the Kaleyra dashboard. You can replicate these pre-approved templates in CleverTap to start sending campaigns. Refer to the section below to understand how to add templates in CleverTap.
Add Message Template
[](https://docs.clevertap.com/docs/kaleyra#add-message-template)
=========================================================================================
To create WhatsApp campaigns, you must have pre-approved WhatsApp message templates saved on the CleverTap dashboard.
To add the message templates:
1. Go to _Settings_ > _Channels_ > _WhatsApp_ > _WhatsApp Connect_ from the CleverTap dashboard.
2. Enter the _Provider Nickname_ in the _Search_ field.
3. Select the _Templates_ tab, and click **+Template**.

Create a New Template
3. Enter the template name in the _Namespace_ field.
4. Choose the type of template header (Text or Media). For Media headers, you can use _Image_, _Video_, _Document_, and _Location_.
5. You can choose to use the Limited Time Offer template for your message. For more information, refer to [Limited Time Offer Template](https://docs.clevertap.com/docs/whatsapp-message-templates#limited-time-offer-templates)
.
6. Enter the message content.
7. Select _Footer_ to add a footer text and a button (Quick Reply or a Call To Action).
8. Select the _Language_ in which you want to display the message.

Define Template Content
7. Click **Save Template**.
Test Message Template
[](https://docs.clevertap.com/docs/kaleyra#test-message-template)
===========================================================================================
You can send a test message using the saved templates from the CleverTap dashboard as follows:
1. Right-click the ellipsis below the template.
2. Click **Send Test WhatsApp**.
3. Select the test profiles or manually enter the mobile number to whom you want to send the message and click **Send Test**.

Test a Message Template
The success or failure response appears on the dashboard. If the message is not delivered, you can copy the response payload and share it with the Kaleyra team to debug the issue, as shown in the following figure:

Successful Delivery Response
Create Campaign
[](https://docs.clevertap.com/docs/kaleyra#create-campaign)
===============================================================================
To create a WhatsApp campaign using Kaleyra as the provider, refer to [Create a WhatsApp Campaign](doc:create-message-whatsapp)
.
Creating a Journey
[](https://docs.clevertap.com/docs/kaleyra#creating-a-journey)
=====================================================================================
To create a WhatsApp journey using Kaleyra as the provider, refer to [Create a WhatsApp Journey](doc:engagement-nodes-whatsapp)
.
Updated about 2 months ago
* * *
Ask AI
---
# Times Mobile
Introduction
[](https://docs.clevertap.com/docs/times-mobile#introduction)
==============================================================================
Times Mobile(part of Times Internet Limited) is a leading communication platform that empowers businesses to connect with their users through SMS channels. This document highlights the integration of CleverTap and Times Mobile, empowering businesses to elevate their SMS communication using Times Mobile's infrastructure.
CleverTap's integration with Times Mobile facilitates sending bulk SMS campaigns, receiving real-time delivery updates, and automating personalized texts for your sales and marketing engagement using Times Internet's auto-scalable infrastructure.
For any queries or further assistance, contact [\[email protected\]](https://docs.clevertap.com/cdn-cgi/l/email-protection#691a1c1919061b1d291d00040c1a04060b00050c470007)
.
Prerequisities for Integration
[](https://docs.clevertap.com/docs/times-mobile#prerequisities-for-integration)
==================================================================================================================
Before you begin with integration, ensure you have:
* A CleverTap account with SMS setup enabled.
* A Times Mobile SMS account with respective SMS Push API details.
* The DLT-approved information, including templates and headers, if your account region is in India.
Times Mobile Setup
[](https://docs.clevertap.com/docs/times-mobile#times-mobile-setup)
==========================================================================================
This process involves the following three significant steps:
1. [Configure Times Mobile dashboard](doc:times-internet#configure-times-internet-dashboard)
.
2. [Add Times Mobile details to CleverTap dashboard](doc:times-internet#configure-clevertap-dashboard)
.
3. [Send a test SMS](doc:times-internet#configure-clevertap-dashboard)
.
Configure Times Mobile Dashboard
[](https://docs.clevertap.com/docs/times-mobile#configure-times-mobile-dashboard)
----------------------------------------------------------------------------------------------------------------------
Configuring the Times Mobile dashboard involves the following steps: obtaining SMS Push API credentials and setting up the CleverTap DLR Callback webhook.
To configure the Times Mobile dashboard:
1. Log in to the Times Mobile Dashboard using your credentials.

2. Navigate to _Sender ID Management_ > _Request Sender_ and click **Request For Sender** to request a new sender ID.
3. Enter the following DLT-approved header details: **Sender Name**, **Account Type** (either trans or pro), and **DLT Principal Entity Id**. **Sender Name** should be six characters or digits as per your account type.
 Configure Sender IDs 4. After adding the header details, click **Create Sender Request** to create the sender request. 5. Navigate to _Bulk SMS_ > _HTTP_ from the Times Mobile dashboard to access your SMS Push API credentials. These credentials are required for configuration within the CleverTap platform. CleverTap recommends keeping these credentials handy before configuring them on the CleverTap dashboard.
 Obtain SMS Push API Credentials
6. Click **Username** > **Profile** from the Times Mobile Dashboard.
7. Under the **Delivery Report Post Back URL** section, configure the CleverTap DLR Callback Webhook for real-time SMS delivery updates. For more information, refer to the callback URL column in the [Configure CleverTap Dashboard](doc:times-internet#configure-clevertap-dashboard)
section.
 Configure CleverTap DLR Callback Webhook
If you encounter any issues while configuring, contact [\[email protected\]](https://docs.clevertap.com/cdn-cgi/l/email-protection#1b686e6b6b74696f5b6f72767e6876747972777e357275)
for further assistance.
Configure CleverTap Dashboard
[](https://docs.clevertap.com/docs/times-mobile#configure-clevertap-dashboard)
----------------------------------------------------------------------------------------------------------------
To add Times Mobile details on the CleverTap dashboard:
1. From the CleverTap Dashboard, navigate to _Settings_ > _Engage_ > _Channels_ > _SMS_.
2. Click **+Add Provider**. The _Add SMS Provider_ page opens.
 Add SMS Provider
3. Select the _Setup_ tab and enter the following details:
| Field | Description |
| --- | --- |
| _Provider_ | Select _Other(Generic)_ from the dropdown list. |
| * _Nickname_ | Uniquely identifies the provider. |
| * _Callback URL_ | Enter the callback URL with Times Mobile to post or update the Message Delivery Status to CleverTap. |
| _Request Type_ | Select _GET_ or _POST_ based on the HTTP endpoint. |
| _HTTP Endpoint_ | Enter the Times Mobile SMS Push endpoint along with its respective credentials. |
| _Authentication_ | Select from the following authentication types:
* No Authentication\_ : For GET\_ endpoint, select this option.
* _Basic Authentication_ : For _POST_ endpoint, select this option. Also, provide Times Mobile API _Username_ and _Password_ details.
* _OAuth 2.0_: Enter client URL, client ID, secret key, and key-value pairs (optional). |
| _Parameters_ | Select _x-www-form-unlenencoded_ or _JSON_ for _Type_ column.
For the _POST_ endpoint, select _JSON_ and enter the JSON payload structure. This field appears when you select _POST_ in the _Request Type_ column.
POST endpoint: `https://bsms.timesapi.in/ct/api/v1/message`
For more information, refer to the following:
* [Get endpoint](https://bsms.timesapi.in/ct/api/v1/send?username=%3Capiusername%3E&password=%3Capipassword%3E&unicode=false&from=%3Csenderid%3E&to=$$To&text=$$Body&dltContentId=$$TemplateID&corelationid=$$MessageID)
* [Post endpoint](https://bsms.timesapi.in/ct/api/v1/message)
* [Sample Payload](doc:times-internet#set-up-message-payload) |
| _Headers_ | For the _POST_ endpoint, enter the following key-value pairs:
1. _Key_: Content-Type \| _Value_: application/JSON
2. _Key_: Accept \| _Value_: application/JSON |
| _Custom Key-value pairs in campaign_ | Select this option to pass custom key-value pairs when sending your campaigns. |
| _Mark this as default_ | Select _Mark this as default_ to make this SMS provider the default provider to send the SMS. |
**\*The fields marked with asterisk mark (\*) are mandatory fields.**
 Add Times Mobile as an SMS Provider
4. Click **Save** to save the details.
Send a Test SMS
[](https://docs.clevertap.com/docs/times-mobile#send-a-test-sms)
------------------------------------------------------------------------------------
To ensure that the integration is successful, send a test SMS as follows:
1. Click the _Send Test SMS_ option before creating SMS campaigns and journeys.
2. Enter the following details:
* _Country Code_ and _Mobile Number_: Enter the country code and mobile number you want to send the message to.
* _Message_: This is a test message.

Send a Test SMS
3. Click **Send Test** to send the test campaign.
Times Mobile Callbacks
[](https://docs.clevertap.com/docs/times-mobile#times-mobile-callbacks)
==================================================================================================
In the default setup, Times Mobile sends the information to CleverTap's callback URL as follows:
1. CleverTap generates the callback that customers need to set up on the Times Mobile dashboard.
2. TimesInternet sends the callback directly to CleverTap on the default URL.
3. CleverTap processes the callback.
Upon receiving callbacks from Times Mobile, the comprehensive stats are displayed on the CleverTap dashboard. For more information, refer to the [Stats](doc:times-internet#stats)
section.
Set Up Message Payload
[](https://docs.clevertap.com/docs/times-mobile#set-up-message-payload)
--------------------------------------------------------------------------------------------------
This section provides information about the sample request payload sent to SMS providers.
Stats
[](https://docs.clevertap.com/docs/times-mobile#stats)
================================================================
CleverTap displays comprehensive stats such as Errors, Delivered, Clicked, and CTRs upon receiving callbacks from Times Mobile. After setting up the provider on the CleverTap dashboard, you can view these statistics from the following pages on the CleverTap dashboard:
* For [SMS Stats](https://docs.clevertap.com/docs/sms-stats)
, select the _Stats_ tab of the Campaigns.
* For [Provider Stats](https://docs.clevertap.com/docs/sms-provider-operations)
, select the _Stats_ tab under _Provider_ setup.
Troubleshooting
[](https://docs.clevertap.com/docs/times-mobile#troubleshooting)
====================================================================================
If you encounter issues when sending test messages or saving the configuration, check that the Times Mobile endpoint and parameters are correctly added. Endpoints are case-sensitive. If the issue persists, raise a support ticket with the CleverTap team to obtain error codes. Once you have the error codes, connect with the [Times Mobile Support](https://docs.clevertap.com/cdn-cgi/l/email-protection#92e1e7e2e2fde0e6d2e6fbfff7e1fffdf0fbfef7bcfbfc)
team.
Frequently Asked Questions (FAQs)
[](https://docs.clevertap.com/docs/times-mobile#frequently-asked-questions-faqs)
======================================================================================================================
Explore the FAQs for comprehensive insights and answers to common queries.
###
Where can I check DLT guidelines for sending service/promotional SMS?
[](https://docs.clevertap.com/docs/times-mobile#where-can-i-check-dlt-guidelines-for-sending-servicepromotional-sms)
A. You can check the DLT guidelines for sending service/promotional SMS [here](https://docs.timesmobile.in/cpaas/DLT.pdf)
.
###
What are DLT-approved SMS templates, and what is the approval process?
[](https://docs.clevertap.com/docs/times-mobile#what-are-dlt-approved-sms-templates-and-what-is-the-approval-process)
A. You can find more details about DLT-approved SMS Templates [here](https://docs.timesmobile.in/cpaas/DLT.pdf)
.
###
What is a DLT-approved Header/Sender ID, and how do you get it approved?
[](https://docs.clevertap.com/docs/times-mobile#what-is-a-dlt-approved-headersender-id-and-how-do-you-get-it-approved)
A. You can find more details about DLT-approved Header/Sender ID [here](https://docs.timesmobile.in/cpaas/DLT.pdf)
.
Updated about 2 months ago
* * *
Ask AI
---
# DataChannel
Overview
[](https://docs.clevertap.com/docs/datachannel#overview)
=====================================================================
[DataChannel](https://www.datachannel.co/)
is a cloud-based ETL platform that allows businesses to integrate and load data from various sources, such as CleverTap, into data warehouses such as Amazon Redshift, Google BigQuery, or Snowflake.
With CleverTap and DataChannel integration, you can:
* **360-Degree Customer View**: Sync CleverTap [user profiles](https://developer.clevertap.com/docs/concepts-user-profiles)
(demographics, preferences, activity) with a data warehouse to unify customer data across multiple sources for better personalization.
* **Behavioral Analytics & Funnel Optimization**: Export CleverTap [event data](https://developer.clevertap.com/docs/events)
(app visits, purchases, drop-offs) to analyze user journeys, identify friction points, and optimize conversion funnels.
* **Cross-Channel Attribution & Campaign Performance**: Merge CleverTap events (email opens, push notifications, in-app actions) with CRM and ad platform data to measure marketing impact and refine targeting.
This powerful combination boosts customer engagement and drives impactful marketing and business results.
Prerequisites for Integration
[](https://docs.clevertap.com/docs/datachannel#prerequisites-for-integration)
===============================================================================================================
The following are the prerequisites:
* Ensure you have a DataChannel account.
* Ensure you have a destination data warehouse (for example, Amazon Redshift, Google BigQuery, Snowflake) set up and accessible in DataChannel account.
* Ensure you have a CleverTap account with a valid **Account ID**, **Passcode**, and **Region**.
> 🚧
>
> ###
>
> Support For Integration
>
> [](https://docs.clevertap.com/docs/datachannel#support-for-integration)
>
> This integration is managed and continuously improved by DataChannel. The CleverTap and DataChannel integration has undergone stringent testing to ensure seamless functionality. For any questions or issues, contact [DataChannel](https://www.datachannel.co/contact-us)
> for support and resolution.
Integrate DataChannel with CleverTap
[](https://docs.clevertap.com/docs/datachannel#integrate-datachannel-with-clevertap)
=============================================================================================================================
This process involves the following three major steps:
1. [Add CleverTap as a Source on DataChannel](doc:datachannel#add-clevertap-as-a-source-on-datachannel)
2. [Configure the Data Warehouse as a Destination on DataChannel](doc:datachannel#configure-the-data-warehouse-as-destination-on-datachannel)
3. [Create and Configure Data Pipelines](doc:datachannel#create-and-configure-data-pipelines)
Add CleverTap as a Source on DataChannel
[](https://docs.clevertap.com/docs/datachannel#add-clevertap-as-a-source-on-datachannel)
-------------------------------------------------------------------------------------------------------------------------------------
To add CleverTap as a source in DataChannel for exporting data from CleverTap to Datachannel:
1. Go to _Exporte Connections_ from your DataChannel dashboard and search for _CleverTap_.
2. Click  icon to create a new pipeline.

Add CleverTap as a Source on DataChannel
3. Enter the following details:
| Field | Description |
| --- | --- |
| Account ID | Locate the Project ID under _Settings_ > _Project_ from the CleverTap dashboard. |
| Account Passcode | Locate the Passcode under _Settings_ > _Project_ from the CleverTap dashboard. For more information, refer to [Account Passcode](https://developer.clevertap.com/docs/authentication#create-account-passcode)
. |
| Region | Locate _Region_ for the API endpoint you want to select under _Settings_ > _Project_. To find the API endpoint for your region, refer to [API endpoints based on your data center region](https://developer.clevertap.com/docs/idc#api)
. |

Connect CleverTap as a source
4. Click **Save** to add CleverTap as a source once the connection is verified.
Configure the Data Warehouse as Destination on DataChannel
[](https://docs.clevertap.com/docs/datachannel#configure-the-data-warehouse-as-destination-on-datachannel)
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
After adding CleverTap as a source, configure the [data warehouse](https://docs.datachannel.co/getting-started/1.0.0/applications/cloud_application/clevertap/setup.html)
to store the extracted data from CleverTap. To do so, follow these steps:
> ❗️
>
> ###
>
> Data Warehouse selection
>
> [](https://docs.clevertap.com/docs/datachannel#data-warehouse-selection)
>
> Data Warehouse once selected cannot be changed.
1. Navigate to the _Connect Your DataSource_ section in DataChannel.
2. Select your preferred Data Warehouse from the available options (for example, [Amazon Redshift](https://docs.datachannel.co/getting-started/1.0.0/destinations/redshift.html)
, [Google BigQuery](https://docs.datachannel.co/getting-started/1.0.0/destinations/bigquery.html)
, [Snowflake](https://docs.datachannel.co/getting-started/1.0.0/destinations/snowflake.html)
, [Azure Synapse](https://docs.datachannel.co/getting-started/1.0.0/destinations/azure-synapse.html)
, and [MySQL](https://docs.datachannel.co/getting-started/1.0.0/destinations/mysql.html)
).

Connect DataSource
3. Add your data warehouse as a destination by providing the required connection details and click **Continue**.
Create and Configure Data Pipelines
[](https://docs.clevertap.com/docs/datachannel#create-and-configure-data-pipelines)
---------------------------------------------------------------------------------------------------------------------------
Once CleverTap is connected and the data warehouse is set up, configure data pipelines to determine what data should be extracted from CleverTap and sent to the data warehouse.
Considering a use case to create and configure data pipelines:
**Tracking User Engagement Trends:** To illustrate the process, consider a business that wants to track daily user engagement trends from CleverTap and store them in [Google BigQuery](https://docs.datachannel.co/getting-started/1.0.0/destinations/bigquery.html)
for analysis. To do so, follow these steps:
1. Define Data Sources: Select a data pipeline that suits your use case, and refer to [List of Available](https://docs.datachannel.co/getting-started/1.0.0/applications/cloud_application/clevertap/pipelines.html)
. In this use case, we will select **[Trend Analysis - Daily](https://docs.datachannel.co/getting-started/1.0.0/applications/cloud_application/clevertap/pipelines/trend-analysis-daily.html)
** to track daily user engagement trends from CleverTap

Define Data Sources
2. Report Details Configuration: This pipeline can be used to request and retrieve the details of user events from CleverTap. Enter the following details:
| **Parameters** | **Description** |
| --- | --- |
| Event Name | The event type needed includes both standard and custom events. |
| Number of Days | The number of days for which you wish to get the data in each run. |
| Insert Mode | UPSERT will insert only new records or records with changes; APPEND will insert all fetched data at the end; REPLACE will drop the existing table and recreate a fresh one. |

Report Details Configuration
3. [Schedule Data Sync](https://docs.datachannel.co/getting-started/1.0.0/set-up/scheduling.html)
: Choose a schedule for running the data pipeline:
* [Manual Run](https://docs.datachannel.co/getting-started/1.0.0/set-up/scheduling.html#_manual_run)
: Manually trigger the pipeline whenever required.
* [Scheduled Run](https://docs.datachannel.co/getting-started/1.0.0/set-up/scheduling.html#_scheduled_run)
: Select a predefined schedule from the dropdown options.

Schedule Data Sync
4. [Entering Dataset Details](https://docs.datachannel.co/getting-started/1.0.0/set-up/naming_syncs.html)
:
1. Provide a Name for the dataset.
2. (Optionally) Add a Description for better identification.
3. Check mark the _Run after save_ to save the integration.

Finalize Setup
5. Click **Submit** to finalize the setup and run the data export.
6. Select _Numbers of Runs_ to monitor the pipeline and check the status of your pipeline in the dashboard.
The statuses include:
* Running
* Successful
* Error (if there are issues)

Monitor the Pipeline
7. Select _Data Preview_ to preview the data once the pipeline has successfully run.

Data Preview
FAQs
[](https://docs.clevertap.com/docs/datachannel#faqs)
=============================================================
###
What should I do if my data is not syncing properly?
[](https://docs.clevertap.com/docs/datachannel#what-should-i-do-if-my-data-is-not-syncing-properly)
If your data is not syncing, try the following steps:
1. **Check Pipeline Status** – Ensure the data pipeline is active.
2. **Verify Destination Setup** – Confirm that the data warehouse is correctly configured.
3. **Review Logs** – Check logs in DataChannel for errors or failures.
4. **Confirm API Access** – Make sure CleverTap API access is enabled.
5. **Check Sync Schedule** – Ensure the pipeline is running at the scheduled time.
If the issue persists, contact **[DataChannel Support](https://www.datachannel.co/contact-us)
** for assistance.
Updated about 2 months ago
* * *
Ask AI
---
# Pingbix
Overview
[](https://docs.clevertap.com/docs/pingbix#overview)
=================================================================
[Pingbix](https://pingbix.com/)
is a WhatsApp Business Service Provider (BSP) that helps businesses automate and scale customer communication through WhatsApp. It supports features such as campaign management, real-time delivery tracking, and secure message routing via WhatsApp’s Cloud API.
When integrated with CleverTap, Pingbix enables you to do the following:
* Track message delivery via Pingbix’s callback system.
* Combine WhatsApp messaging with CleverTap’s segmentation and personalization.
* Use pre-approved templates for transactional and promotional campaigns.
* Send WhatsApp messages directly from the CleverTap dashboard.
> 🚧
>
> ###
>
> Support for Integration
>
> [](https://docs.clevertap.com/docs/pingbix#support-for-integration)
>
> This integration is managed and continuously improved by Pingbix. The CleverTap and Pingbix integration has undergone stringent testing to ensure seamless functionality. For any questions or issues, contact [Pingbix](https://pingbix.com/contact)
> for support and resolution.
Prerequisites for Integration
[](https://docs.clevertap.com/docs/pingbix#prerequisites-for-integration)
===========================================================================================================
Check that you have the following:
* WhatsApp Campaigns feature is enabled on your CleverTap account.
* Active Pingbix WABA (WhatsApp Business Account) credentials.
* Pingbix API key and message delivery callback URLs.
Integrate Pingbix with CleverTap
[](https://docs.clevertap.com/docs/pingbix#integrate-pingbix-with-clevertap)
=================================================================================================================
This process involves the following two steps:
1. [Configure CleverTap Dashboard](doc:pingbix#configure-clevertap-dashboard)
2. [Set Up CleverTap Callbacks in Pingbix](doc:pingbix#set-up-clevertap-callbacks-in-pingbix)
Configure CleverTap Dashboard
[](https://docs.clevertap.com/docs/pingbix#configure-clevertap-dashboard)
-----------------------------------------------------------------------------------------------------------
To configure the CleverTap dashboard for Pingbix:
1. Go to _Settings_ > _Channels_ > _WhatsApp_ > _WhatsApp Connect_ from the CleverTap dashboard.
2. Click **\+ Add Provider** and select _Generic (Other)_ from the _Provider_ list.

Provider Setup
3. Enter the following details:
| Field | Details |
| --- | --- |
| Nickname | Enter the nickname as Pingbix or the `<10-digit phone number>` for easy reference. |
| Mobile Number | Add your WhatsApp Integrated number with country code (for example, +918889500122) |
| HTTP End Point | Paste the URL received from the Pingbix team.
Check that the URL is in HTTPS format, that is, your URL must begin with **https://**. |
| Request Type | Ensure the Request Type is _POST_. |
| Headers | Click **Header**
Enter the first key name as a user and enter the user value received from Pingbix.
Enter the second key name as the password, and enter the value received from Pingbix. |
| Delivery Report Callback URL | This URL is generated automatically on the CleverTap dashboard. Refer to [Set Up CleverTap Callbacks in Pingbix](doc:pingbix#set-up-clevertap-callbacks-in-pingbix)
. |
| Inbound Message
Callback URL | This URL is generated automatically in the CleverTap dashboard. Refer to [Set Up CleverTap Callbacks in Pingbix](doc:pingbix#set-up-clevertap-callbacks-in-pingbix)
. |
4. (Optional) Select _Mark this as default_ to make Pingbix as the default provider when sending a WhatsApp messages.
5. (Optional) Select _Set auto-reply for users not tracked on CleverTap_ to automatically reply to a WhatsApp message from users not tracked on the CleverTap dashboard.
6. (Optional) Set the _Maximum Concurrent API requests_ to any value between 30 and 1000. Consider your requirements and the provider's limitations when defining this value.
7. Send a Test WhatsApp notification to verify if the configuration is successful.

Send a Test Message on WhatsApp
Set Up CleverTap Callbacks in Pingbix
[](https://docs.clevertap.com/docs/pingbix#set-up-clevertap-callbacks-in-pingbix)
---------------------------------------------------------------------------------------------------------------------------
To set up CleverTap callbacks in Pingbix, follow the steps below:
1. **Locate Callback URLs in CleverTap**: Go to _Settings_ > _Channels_ > _WhatsApp_ > _WhatsApp Connect_ > _Pingbix_ from the CleverTap dashboard. You will find the _Delivery Report Callback URL_ and _Inbound Message Callback URL_ under the _Provider Configuration_ page.
2. **Share Callback URLs with Pingbix team**: Copy the Delivery and Inbound report callback URLs and send them to the Pingbix WhatsApp support team for configuration.

Callback URLs
Once configured, these webhooks ensure that message delivery reports and inbound messages sync correctly between CleverTap and Pingbix.
> 📘
>
> ###
>
> Note:
>
> [](https://docs.clevertap.com/docs/pingbix#note)
>
> Your templates must be approved on the Pingbix dashboard. Once approved, add the same templates in the CleverTap dashboard for sending out messages. For more information and queries about the Pingbix integration, write to [Pingbix Support](https://pingbix.com/contact)
> .
Adding Message Templates
[](https://docs.clevertap.com/docs/pingbix#adding-message-templates)
-------------------------------------------------------------------------------------------------
To create WhatsApp campaigns, you must have pre-approved WhatsApp message templates saved in the CleverTap dashboard. To add the templates, follow these steps:
1. Go to _Settings_ > _Channels_ > _WhatsApp_ > _WhatsApp Connect_ > _Provider Nickname_ in the CleverTap dashboard.
2. Select the _Templates_ option and click **+Template**.

Create a New Template
3. Enter the template name.
> 📘
>
> ###
>
> Naming WhatsApp Templates
>
> [](https://docs.clevertap.com/docs/pingbix#naming-whatsapp-templates)
>
> Template names and language variants must be unique for each provider configuration. This means that you can use the same template name once for each provider configuration.
>
> For example, if you have multiple provider configurations, such as Phone\_1 and Phone\_2, you can use the particular template name once within Phone\_1 and Phone\_2.
4. You can also choose the language in which you will display the message.
5. Select the type of template header (Text or Media). For Media headers, you can use _Image_, _Video_, _Document_, or _Location_.
6. Create a [Limited Time Offer Template](doc:whatsapp-message-templates#limited-time-offer-templates)
, if required.
7. Enter the message content.
8. Select _Footer_ to add a footer text and a button (Quick Reply or a Call To Action).

Define Template Content
9. Click **Save Template**.
Testing a Message Template
[](https://docs.clevertap.com/docs/pingbix#testing-a-message-template)
-----------------------------------------------------------------------------------------------------
For detailed instructions on testing a WhatsApp message template, refer to [Testing a Message Template](doc:whatsapp-message-templates#testing-a-message-template)
.
Create Campaign
[](https://docs.clevertap.com/docs/pingbix#create-campaign)
-------------------------------------------------------------------------------
For detailed instructions on creating a WhatsApp campaign using Pingbix as the provider, refer to [Create a WhatsApp Campaign](doc:whatsapp#section-creating-a-whatsapp-campaign)
.
Creating a Journey
[](https://docs.clevertap.com/docs/pingbix#creating-a-journey)
-------------------------------------------------------------------------------------
For detailed instructions on creating a WhatsApp journey using Pingbix as the provider, refer to [Create a WhatsApp Journey](https://docs.clevertap.com/docs/engagement-nodes-whatsapp)
.
Updated about 2 months ago
* * *
Ask AI
---
# Infobip
Introduction
[](https://docs.clevertap.com/docs/infobip#introduction)
=========================================================================
CleverTap users can now leverage the WhatsApp capabilities of Infobip to communicate with their customers:
* Sending just-in-time offers to customers to drive purchases
* Gathering feedback about services
* Keeping customers informed and more
> 🚧
>
> ###
>
> Support For Integration
>
> [](https://docs.clevertap.com/docs/infobip#support-for-integration)
>
> This integration is completed by Infobip, and they are dedicated to maintaining and enhancing it. The CleverTap and Infobip integration has undergone stringent testing to ensure seamless functionality. For any questions or issues, contact Infobip for support and resolution.
Prerequisites for Integration
[](https://docs.clevertap.com/docs/infobip#prerequisites-for-integration)
===========================================================================================================
The following are the prerequisites:
* You must enable a WhatsApp Connect add-on on the Clevertap account in addition to the essentials price plan.
* The WhatsApp onboarding must be completed for the phone number to be used with CleverTap.
* You must have Infobip's user credentials.
* The Infobip API endpoint - _[https://clevertap-whatsapp.ibintegrations.com/api/sendmessage](https://clevertap-whatsapp.ibintegrations.com/api/sendmessage)
_.
Integrate Infobip with CleverTap
[](https://docs.clevertap.com/docs/infobip#integrate-infobip-with-clevertap)
=================================================================================================================
This process involves the following three steps:
1. [Find Infobip Details](https://docs.clevertap.com/docs/infobip#find-infobip-details)
.
2. [Configure CleverTap Dashboard](https://docs.clevertap.com/docs/infobip#configure-clevertap-dashboard)
.
3. [Set Up CleverTap callbacks in Infobip](https://docs.clevertap.com/docs/infobip#set-up-clevertap-callbacks-in-infobip)
.
Find Infobip Details
[](https://docs.clevertap.com/docs/infobip#find-infobip-details)
-----------------------------------------------------------------------------------------
We recommend that you keep the _API endpoint_ and _Login Credentials_ handy before starting with the configuration on the CleverTap dashboard:
To find these credentials:
1. Navigate to your Infobip dashboard.
2. [Create a new user](https://www.infobip.com/docs/essentials/manage-users#create-a-user)
from _Account_ > _User profile_.
We recommend creating a separate user for the Infobip-CleverTap WhatsApp integration. Use these user credentials to authenticate the [Infobip API](https://clevertap-whatsapp.ibintegrations.com/api/sendmessage)
and provide basic authentication on the CleverTap dashboard. For more information about user management, refer to [Manage Infobip Users](https://www.infobip.com/docs/essentials/manage-users)
.

Infobip Dashboard
3. Navigate to _Channels and Numbers_ > _WhatsApp_ > _Senders_ tab to find the WhatsApp number.
4. Copy the WhatsApp phone number and keep it handy for further use.

Copy WhatsApp Phone Number
Configure CleverTap Dashboard
[](https://docs.clevertap.com/docs/infobip#configure-clevertap-dashboard)
-----------------------------------------------------------------------------------------------------------
To configure the CleverTap dashboard:
1. Navigate to _Settings_ > _Channels_ > _WhatsApp_ > _WhatsApp Connect_ from the CleverTap dashboard.
2. Click **\+ Add Provider** and _Login to Facebook._

Add a WhatsApp Provider
3. Enter the following details:
| Field | Description |
| --- | --- |
| Provider | Select _Other (Generic)_ from the dropdown list. |
| Nickname | Enter the nickname as _Infobip_ or Infobip <10-digit phone number> for easy reference. |
| Mobile Number | Enter your phone number onboarded to WhatsApp API by Infobip. |
| Request Type | Ensure the Request Type is _Post_. |
| HTTP Endpoint | Enter HTTP Endpoint as the following: _[https://clevertap-whatsapp.ibintegrations.com/api/sendmessage](https://clevertap-whatsapp.ibintegrations.com/api/sendmessage)
_ |
| Authentication | Select _Basic Authentication_ and enter the _Username_ and _Password_ for the user. |
| Delivery Report Callback URL | This URL is generated automatically. Share the URL with your Infobip account manager. |
| Inbound Message Callback URL | This URL is generated automatically. Share the URL with your Infobip account manager. |
4. (Optional) Select _Mark this as default_ to make this service provider the default provider to send a WhatsApp message.
5. (Optional) Select _Set auto-reply for users not tracked on CleverTap_ to automatically reply to users who message on WhatsApp but are not tracked on the CleverTap dashboard.
6. (Optional) You can set the _Maximum Concurrent API requests_ anywhere between 30 to 1000 requests. Consider your requirement and the provider's limitations to define this value.
7. Click **Save** to save the details.
Set Up CleverTap Callbacks in Infobip
[](https://docs.clevertap.com/docs/infobip#set-up-clevertap-callbacks-in-infobip)
---------------------------------------------------------------------------------------------------------------------------
You can find the Callback URLs on the CleverTap dashboard under the Provider _Setup_ page. Naviagte to _Settings_ > _Channels_ > _WhatsApp_ > _WhatsApp Connect_ >_Infobip_.
To set up the CleverTap callbacks, share the following with your Infobip account manager:
* Delivery Report Callback URL
* Inbound Message Callback URL
* The WhatsApp phone number that will be used in CleverTap

Callback URLs
Find or Create Templates
[](https://docs.clevertap.com/docs/infobip#find-or-create-templates)
=================================================================================================
You can find or create WhatsApp templates from the Infobip dashboard. To do so:
1. Navigate to _Channels and Numbers_ from the left menu as shown below:

Set up WhatsApp on Infobip
2. Select _WhatsApp_ and click the _Senders_ tab.
3. From the _Action_ menu, click **View Templates.**

View WhatsApp Templates
3. From the list of templates, search for your template. Expand the template that you want to save in the CleverTap Dashboard.

Expand a WhatsApp Template
4. Export and save the template on your machine.

Export WhatsApp Template
> 📘
>
> ###
>
> Exporting a Template
>
> [](https://docs.clevertap.com/docs/infobip#exporting-a-template)
>
> The Infobip dashboard does not display all the details for the selected template. We recommend exporting the template and keeping the details handy. You can copy and paste the values from the exported template to the CleverTap dashboard to ensure you are not missing any field. For more information, refer to [Adding a WhatsApp Template in CleverTap](doc:infobip#adding-message-template)
> .
Add Message Template
[](https://docs.clevertap.com/docs/infobip#add-message-template)
=========================================================================================
> 📘
>
> ###
>
> Naming WhatsApp Templates
>
> [](https://docs.clevertap.com/docs/infobip#naming-whatsapp-templates)
>
> Template names and language variants must be unique for each provider configuration. This means that you can use the same template name once for each provider configuration.
>
> For example, if you have multiple provider configurations, such as _Phone\_1, phone\_2_, you can use the same template name once within _Phone\_1 and Phone\_2_.
To create WhatsApp campaigns, you must have pre-approved WhatsApp message templates saved in the CleverTap dashboard. To add the message templates:
1. Navigate to _Settings_ > _Channels_ > _WhatsApp_ > _WhatsApp Connect_ >_Provider Nickname_ from the CleverTap dashboard.
2. Select the _Templates_ option, and click **+Template**.

Add Pre-Approved Message Template
3. Enter the template name in the _Namespace_ field.
4. Choose the type of template header (Text or Media). For Media headers, you can use _Image_, _Video_, _Document_, and _Location_.
5. You can choose to use the Limited Time Offer template for your message. For more information, refer to [Limited Time Offer Template](https://docs.clevertap.com/docs/whatsapp-message-templates#limited-time-offer-templates)
.
6. Enter the message content.
7. Select _Footer_ to add a footer text and a button (Quick Reply or a Call To Action).
8. Select the _Language_ in which you want to display the message.

Define Template Content
7. Click **Save Template**.
Test a Message Template
[](https://docs.clevertap.com/docs/infobip#test-a-message-template)
===============================================================================================
You can send a test message using the saved templates from the CleverTap dashboard as follows:
1. Right-click the ellipsis below the template.
2. Click _Send Test_.
3. Select the test profiles or manually enter the mobile number to whom you want to send the test message and click **Send Test**.

Test WhatsApp Message
The success or failure response is displayed on the dashboard. If the message is not delivered, you can copy the response payload and share it with the Infobip team to debug the issue, as shown in the following figure:

Successful Delivery Response
Create Campaign
[](https://docs.clevertap.com/docs/infobip#create-campaign)
===============================================================================
To create a WhatsApp campaign using Infobip as the provider, refer to [Create a WhatsApp Campaign](doc:whatsapp#section-creating-a-whatsapp-campaign)
for detailed instructions.
Creating a Journey
[](https://docs.clevertap.com/docs/infobip#creating-a-journey)
=====================================================================================
To create a WhatsApp journey using Infobip as the provider, refer to [Create a WhatsApp Journey](doc:engagement-nodes-whatsapp)
for detailed instructions.
Updated about 2 months ago
* * *
Ask AI
---
# MSG91
Overview
[](https://docs.clevertap.com/docs/msg91-whatsapp#overview)
========================================================================
[MSG91](https://msg91.com/in)
offers robust WhatsApp messaging solutions that enable businesses to engage with customers through rich media messages, feedback collection, and automated processes. By integrating MSG91 with CleverTap, you can enhance your customer communication strategies by:
* Sending engaging carousels and interactive messages to deliver dynamic content to captivate your audience.
* Collecting valuable customer feedback to gain insights to improve your services.
* Building automated flows and enabling seamless payment processes to streamline operations and enhance user experience.
> 🚧
>
> ###
>
> Support for Integration
>
> [](https://docs.clevertap.com/docs/msg91-whatsapp#support-for-integration)
>
> This integration is managed and continuously improved by MSG91. The CleverTap and MSG91 integration has undergone stringent testing to ensure seamless functionality. For any questions or issues, contact [MSG91](https://docs.clevertap.com/cdn-cgi/l/email-protection#394a4c4949564b4d79544a5e0008175a5654)
> for support and resolution.
Prerequisites for Integration
[](https://docs.clevertap.com/docs/msg91-whatsapp#prerequisites-for-integration)
==================================================================================================================
The following are the prerequisites:
* You must have WhatsApp add-on enabled on the CleverTap account in addition to the Basic or Essentials Plan.
* Ensure that WhatsApp onboarding for the phone number to be used with CleverTap is completed. If you want to activate a new phone number with WhatsApp Business API via MSG91, contact your Account Manager or send an email to [\[email protected\]](https://docs.clevertap.com/cdn-cgi/l/email-protection#473726353329223534072a34207e766924282a)
.
* Ensure that you have the API URL and credentials from MSG91.
Integrate MSG91 with CleverTap
[](https://docs.clevertap.com/docs/msg91-whatsapp#integrate-msg91-with-clevertap)
====================================================================================================================
This process involves the following two steps:
1. [Configure CleverTap Dashboard](doc:msg91-whatsapp#configure-clevertap-dashboard)
.
2. [Set Up CleverTap Callbacks in MSG91](doc:msg91-whatsapp#set-up-clevertap-callbacks-in-msg91)
.
Configure CleverTap Dashboard
[](https://docs.clevertap.com/docs/msg91-whatsapp#configure-clevertap-dashboard)
------------------------------------------------------------------------------------------------------------------
To configure the CleverTap dashboard:
1. Go to _Settings_ > _Channels_ > _WhatsApp_ > _WhatsApp Connect_ from the CleverTap dashboard.
2. Click **\+ Add Provider** and select _Generic (Other)_ from the dropdown.

Provider Setup
3. Enter the following details:
| Field | Details |
| --- | --- |
| Nickname | Enter the nickname as _MSG91_ or MSG91 <10-digit phone number> for easy reference. |
| Mobile Number | Add your WhatsApp Integrated number with country code (for example, 918889500122) |
| Request Type | Ensure the Request Type is _POST_. |
| HTTP End Point | Enter HTTP Endpoint as the following:[https://api.msg91.com/api/v5/whatsapp//outbound/clevertap/](https://api.msg91.com/api/v5/whatsapp//outbound/clevertap/) |
| Authentication | Select Basic Authentication and enter the Username of your MSG91 account. |
4. (Optional) Select _Mark this as default to make this service provider the default provider_ to send a WhatsApp message via MSG91.
5. (Optional) Select _Set auto-reply for users not tracked on CleverTap_ to automatically reply to users who message on WhatsApp but are not tracked on the CleverTap dashboard.
6. (Optional) Set the _Maximum Concurrent API requests_ between 30 and 1000. Consider your requirements and the provider's limitations when defining this value.
Set Up CleverTap Callbacks in MSG91
[](https://docs.clevertap.com/docs/msg91-whatsapp#set-up-clevertap-callbacks-in-msg91)
------------------------------------------------------------------------------------------------------------------------------
To set up CleverTap callbacks in MSG91, follow the steps below:
1. **Locate Callback URLs in CleverTap**: Go to _Settings_ > _Channels_ > _WhatsApp_ > _WhatsApp Connect_ > _MSG91_ from the CleverTap dashboard. You will find the required Callback URLs on the _Provider Configuration_ page.

Callback URLs
2. **Configure Inbound Message Callback in MSG91**: Copy the _Inbound Message Callback URL_ from the CleverTap dashboard and paste it into the _Inbound Messages_ section of the webhook in the MSG91 panel.

Configure Inbound Message Callback in MSG91
3. **Configure Outbound Message Callback in MSG91**: Copy the _Delivery Report Callback URL_ from the CleverTap dashboard and paste it into the _Outbound Messages_ section of the webhook in the MSG91 panel.

Configure Outbound Message Callback in MSG91
4. Add the following header values to your webhook configuration in the CleverTap dashboard:
| Field | Details |
| --- | --- |
| Authkey | Enter your MSG91 Authkey. This is a unique key used to authenticate API requests. Refer to the [MSG91 Auth](https://msg91.com/help/api/where-can-i-find-my-authentication-key)
key to obtain your Authkey. |
| Content-type | Set this to `application/json` to indicate that the request body is in JSON format. |
| Accept | Set this to `application/json` to specify that the response should be in JSON format. |

Configure Headers
5. Enable the CleverTap toggle in the MSG91 panel's WhatsApp number settings before clicking the **Save** button.
6. Test the integration, then click **Save** to finalize the setup.
> 📘
>
> ###
>
> Note:
>
> [](https://docs.clevertap.com/docs/msg91-whatsapp#note)
>
> You have to get your templates approved on the MSG91 dashboard. Once approved, add the same templates in the CleverTap dashboard for sending out messages. For more information and queries about the MSG91 integration, write to [\[email protected\]](https://docs.clevertap.com/cdn-cgi/l/email-protection#91e2e4e1e1fee3e5d1fce2f6a8a0bff2fefc)
> .
Adding Message Templates
[](https://docs.clevertap.com/docs/msg91-whatsapp#adding-message-templates)
--------------------------------------------------------------------------------------------------------
To create WhatsApp campaigns, you must have pre-approved WhatsApp message templates saved in the CleverTap dashboard. To add the templates, follow these steps:
1. Go to _Settings_ > _Channels_ > _WhatsApp_ > _WhatsApp Connect_ > _Provider Nickname_ in the CleverTap dashboard. Further, Select the _Templates_ option and click **+Template**.

Create a New Template
2. Enter the template name.
> 📘
>
> ###
>
> Naming WhatsApp Templates
>
> [](https://docs.clevertap.com/docs/msg91-whatsapp#naming-whatsapp-templates)
>
> Template names and language variants must be unique for each provider configuration. This means that you can use the same template name once for each provider configuration.
>
> For example, if you have multiple provider configurations, such as Phone\_1 and Phone\_2, you can use the a particular template name once within Phone\_1 and Phone\_2.
3. You can also choose the language in which you want to display the message.
4. Select the type of template header (Text or Media). For Media headers, you can use _Image_, _Video_, _Document_, or _Location_.
5. Create a [Limited Time Offer Template](doc:whatsapp-message-templates#limited-time-offer-templates)
, if required.
6. Enter the message content.
7. Select _Footer_ to add a footer text and a button (Quick Reply or a Call To Action).

Define Template Content
8. Click **Save Template**.
Testing a Message Template
[](https://docs.clevertap.com/docs/msg91-whatsapp#testing-a-message-template)
------------------------------------------------------------------------------------------------------------
You can send a test message using the saved templates from the CleverTap dashboard as follows:
1. Right-click the ellipsis below the template.
2. Click **Send Test**.
3. Select the test profiles or manually enter the mobile number to whom you want to send the test message and click **Send Test**.

Test a Message Template
The success or failure response is displayed on the dashboard. If the message is not delivered, you can copy the response payload and share it with the MSG91 team to debug the issue, as shown in the following figure:

Successful Delivery Response
Create Campaign
[](https://docs.clevertap.com/docs/msg91-whatsapp#create-campaign)
--------------------------------------------------------------------------------------
For detailed instructions on creating a WhatsApp campaign using MSG91 as the provider, refer to [Create a WhatsApp Campaign](doc:whatsapp#section-creating-a-whatsapp-campaign)
.
Creating a Journey
[](https://docs.clevertap.com/docs/msg91-whatsapp#creating-a-journey)
--------------------------------------------------------------------------------------------
For detailed instructions on creating a WhatsApp journey using MSG91 as the provider, refer to [Create a WhatsApp Journey](https://docs.clevertap.com/docs/engagement-nodes-whatsapp)
.
Updated about 2 months ago
* * *
Ask AI
---
# Exotel
> 🚧
>
> ###
>
> Note
>
> [](https://docs.clevertap.com/docs/exotel-whatsapp#note)
>
> This integration is completed by Exotel and they are dedicated to maintaining and enhancing it. The CleverTap <> Exotel integration has undergone stringent testing to ensure its seamless functionality. In the event of any questions or issues, users must rely on Exotel for support and resolution.
Introduction
[](https://docs.clevertap.com/docs/exotel-whatsapp#introduction)
=================================================================================
CleverTap users can now leverage the following WhatsApp capabilities of [Exotel](https://exotel.com/)
to communicate with their customers. Communications include:
* Sending just-in-time offers to customers to drive purchases
* Gathering feedback on the services
* Keeping customers informed and more
Prerequisites for Integration
[](https://docs.clevertap.com/docs/exotel-whatsapp#prerequisites-for-integration)
===================================================================================================================
The following are the prerequisites:
* You must have WhatsApp add-on enabled on the Clevertap account in addition to the essentials price plan.
* Ensure that WhatsApp onboarding for the phone number to be used with CleverTap is completed.
* Ensure that you have the infra URL and credentials from Exotel.
If you want to activate a new phone number with WhatsApp business API via Exotel, contact your account manager or email [\[email protected\]](https://docs.clevertap.com/cdn-cgi/l/email-protection#c1a9a4adadae81a4b9aeb5a4adefa8af)
.
Integrate Exotel with CleverTap
[](https://docs.clevertap.com/docs/exotel-whatsapp#integrate-exotel-with-clevertap)
=======================================================================================================================
This process involves the following three steps:
1. Find Exotel Details
2. Configure CleverTap Dashboard
3. Set up CleverTap callbacks in Exotel
Find Exotel Details
[](https://docs.clevertap.com/docs/exotel-whatsapp#find-exotel-details)
-----------------------------------------------------------------------------------------------
We recommend that you keep the following information handy before starting with configuration on the CleverTap dashboard:
* **API Credentials**: To obtain the _API KEY_, _API TOKEN_, and _Account sid_, log in to your Exotel account and navigate to the _Settings_ > _API Settings_ page from the Exotel dashboard.

Exotel Credentials
Configure CleverTap Dashboard
[](https://docs.clevertap.com/docs/exotel-whatsapp#configure-clevertap-dashboard)
-------------------------------------------------------------------------------------------------------------------
To configure the CleverTap dashboard:
1. Navigate to _Settings_ > _Channels_ > _WhatsApp_ > _WhatsApp Connect_ from the CleverTap dashboard.
2. Click **\+ Add Provider** and select Generic (Other) from the dropdown.

Provider Setup
3. Enter the following details:
| Field | Description |
| --- | --- |
| Provider | Select _Other (Generic)_ from the dropdown list. |
| Nickname | Enter the nickname as _Exotel_ |
| WhatsApp Business Number | Enter your phone number onboarded to WhatsApp API by Exotel. |
| Request Type | Ensure the Request Type is _Post_ |
| HTTP Endpoint | Enter
HTTP Endpoint as: [https://api.in.exotel.com/v2/accounts/Exotel/messages/clevertap/whatsapp](https://api.in.exotel.com/v2/accounts/Exotel/messages/clevertap/whatsapp)
Ensure that you replace Exotel with your **Account SID.** |
| Authentication | Select _Basic Authentication_ and enter the Username and Password (From step 1) |
4. Select the _Mark this as default_ checkbox to make this service provider the default provider to send a WhatsApp message.
5. To send an automatic reply to users who message on WhatsApp, but are not tracked on the CleverTap dashboard, you can select the _Set auto reply for users not tracked on CleverTap_ checkbox.
6. (Optional) You can set the _Maximum Concurrent API requests_ anywhere between 30 to 1000 requests. Consider your requirements and the provider's limitations to define this value.
7. Send a Test WhatsApp notification:

Send Test Message on WhatsApp
To ensure that the integration is successful:
a. Click the _Send Test WhatsApp_ hyperlink before you start creating WhatsApp campaigns and journeys. To begin with, activate the conversation window by following any one of the following methods:
i. Save the business contact and send a WhatsApp message to that number.
ii. Copy and share the link with the user you want to send the test notification to. Further, ask the user to click on the link and send a WhatsApp message to initiate a conversation.
iii. If you want to send a test notification to yourself, you can click the link and initiate a WhatsApp conversation.
b. Enter the following details:
_**Country Code and Mobile Number**: Enter the country code and mobile number of the user to whom you want to send the test message.
_ **Message**: Here, you can enter the sample text message you want to send to the test user. Once you click on _Send Test_, the success or failure response displays on the dashboard. If the message is not delivered, you can copy the response payload and share it with the Gupshup team to debug the issue.
7. Click **Save** to save the details.
Set up CleverTap Callbacks in Exotel
[](https://docs.clevertap.com/docs/exotel-whatsapp#set-up-clevertap-callbacks-in-exotel)
---------------------------------------------------------------------------------------------------------------------------------
Further, share the following details of your WhatsApp-enabled phone number with Exotel support at \*[\[email protected\]](https://docs.clevertap.com/cdn-cgi/l/email-protection#224f47515143454b4c450f524f0f5647434f62475a4d56474e0c4b4c)
for enabling WhatsApp integration with Clevertap.
* URL: Exotel.abc.net port XXXX
* Username: Abcorp
* Password: XXXXXXXX
* Phone number: 734550771X
* Account SID: Abc\_1
* Delivery Report Callback URL
* Inbound Message Callback URL
You can copy the _Delivery Report Callback URL_ and _Inbound Message Callback URL_ from the CleverTap dashboard.

Setup Callbacks
Upon receiving the request, the support team configures the callbacks with your WhatsApp phone number, and the integration is confirmed (within 24 hours) post which you can proceed with creating campaigns.
> 🚧
>
> ###
>
> Note:
>
> [](https://docs.clevertap.com/docs/exotel-whatsapp#note-1)
>
> To use templates whitelisted on the META business manager dashboard provided by Exotel, you need to add them to the Clevertap dashboard.
For more information and queries about the Exotel integration, you can write to [\[email protected\]](https://docs.clevertap.com/cdn-cgi/l/email-protection#472f222b2b2807223f2833222b6924282a)
.
Adding Message Template
[](https://docs.clevertap.com/docs/exotel-whatsapp#adding-message-template)
-------------------------------------------------------------------------------------------------------
> 📘
>
> ###
>
> Naming WhatsApp Templates
>
> [](https://docs.clevertap.com/docs/exotel-whatsapp#naming-whatsapp-templates)
>
> Template names and language variants must be unique for each provider configuration. This means that you can use the same template name once for each provider configuration.
>
> For example, if you have multiple provider configurations, such as _Phone\_1, phone\_2_, you can use the same template name once within _Phone\_1 and Phone\_2_.
To create WhatsApp campaigns, you need to have pre-approved WhatsApp message templates saved in the CleverTap dashboard. Follow the procedure below to add the templates.
1. Navigate to _Settings_ > _Channels_ > _WhatsApp_ > _WhatsApp Connect_ > _Provider Nickname_ in the CleverTap dashboard. Further, Select the _Templates_ option and click **+Template**.

Create a New Template
2. Enter the template name in the _namespace_ field.
3. Choose the type of template header (Text or Media). For Media headers, you can use _Image_, _Video_, _Document_, and _Location_.
4. You can choose to use the **Limited Time Offer** template for your message. For more information, refer to [Limited Time Offer Template.](https://docs.clevertap.com/docs/whatsapp-message-templates#limited-time-offer-templates)
.
5. Enter the message content.
6. You can also add a Footer text and a Button (Quick Reply or a Call To Action).
7. You can also choose the language in which you want to display the message.

Define Template Content
7. Click **Save Template**.
Testing a Message Template
[](https://docs.clevertap.com/docs/exotel-whatsapp#testing-a-message-template)
-------------------------------------------------------------------------------------------------------------
You can send a test message using the saved templates from the CleverTap dashboard as follows:
1. Right-click the ellipsis below the template.
2. Click _Send Test_.
3. Select the test profiles or manually enter the mobile number to whom you want to send the test message and click _Send Test_.

Test a Message Template
The success or failure response is displayed on the dashboard. If the message is not delivered, you can copy the response payload and share it with the Exotel team to debug the issue, as shown in the following figure:

Successful Delivery Response
Create Campaign
[](https://docs.clevertap.com/docs/exotel-whatsapp#create-campaign)
---------------------------------------------------------------------------------------
To create a WhatsApp campaign using Exotel as the provider, refer to [Create a WhatsApp Campaign](doc:whatsapp#section-creating-a-whatsapp-campaign)
for detailed instructions.
Creating a Journey
[](https://docs.clevertap.com/docs/exotel-whatsapp#creating-a-journey)
---------------------------------------------------------------------------------------------
To create a WhatsApp journey using ValueFirst as the provider, refer to [Create a WhatsApp Journey](https://docs.clevertap.com/docs/engagement-nodes-whatsapp)
for detailed instructions.
Updated about 2 months ago
* * *
Ask AI
---
# CleverTap
Overview
[](https://docs.clevertap.com/docs/clevertap-bsp#overview)
-----------------------------------------------------------------------
CleverTap is an official WhatsApp Business Service Provider (BSP). You can access WhatsApp business API directly from the CleverTap dashboard and create WhatsApp campaigns within a few minutes after WhatsApp onboarding. CleverTap's WhatsApp Business API removes the dependency of having any external WhatsApp BSP integration to use the WhatsApp channel with the CleverTap dashboard.
> 📘
>
> ###
>
> Engagement using CleverTap as BSP
>
> [](https://docs.clevertap.com/docs/clevertap-bsp#engagement-using-clevertap-as-bsp)
>
> By subscribing to CleverTap's BSP, you can gain access to our Campaigns, Journey, and Conversation features. CleverTap BSP is not available for the [Essentials](https://clevertap.com/clevertap-for-startups-features/)
> plan. If you wish to leverage CleverTap's BSP for your user engagement, please contact our sales team at [\[email protected\]](https://docs.clevertap.com/cdn-cgi/l/email-protection#a4d7c5c8c1d7e4c7c8c1d2c1d6d0c5d48ac7cbc9)
> .
Prerequisites For WhatsApp Onboarding
[](https://docs.clevertap.com/docs/clevertap-bsp#prerequisites-for-whatsapp-onboarding)
---------------------------------------------------------------------------------------------------------------------------------
Listed below are the prerequisites to get started with WhatsApp onboarding with CleverTap BSP.
* You need a verified Facebook Business Manager page to access advanced WhatsApp features. To verify your account, you must submit a few vital documents. [Click here](https://en-gb.facebook.com/business/help/159334372093366)
for more information about the list of documents required at a country level for account verification.
For non-verified pages, businesses can still have restricted access for up to 30 days.
> 🚧
>
> ###
>
> Admin Access
>
> [](https://docs.clevertap.com/docs/clevertap-bsp#admin-access)
>
> It is mandatory for the user proceeding with the WhatsApp onboarding on CleverTap to have admin access to the Facebook Business Manager page.
* Ensure you provide a dedicated WhatsApp number for long-term use, as this number can not be changed later. This number must be a new number and should not be active on personal WhatsApp or Business WhatsApp applications.
* Ensure that your WhatsApp number is active, as you will receive an OTP for verification during the onboarding process.
* While onboarding, ensure that you enter your display name the same as the one used on the Facebook business manager page (also known as the legal name). If the display name doesn't match the business name, you must provide a web URL showing proof of association in the header/footer.
* Lastly, ensure that your business meets Facebook's [commerce policy](https://www.facebook.com/policies_center/commerce/)
.
> ❗️
>
> ###
>
> Unique WhatsApp Number
>
> [](https://docs.clevertap.com/docs/clevertap-bsp#unique-whatsapp-number)
>
> You must use a distinct WhatsApp number for each CleverTap project.
Integrate WhatsApp using CleverTap BSP
[](https://docs.clevertap.com/docs/clevertap-bsp#integrate-whatsapp-using-clevertap-bsp)
-----------------------------------------------------------------------------------------------------------------------------------
To integrate WhatsApp using CleverTap BSP, follow the steps below:
1. Navigate to _Settings_ > _Channels_ > _WhatsApp_ > _WhatsApp Direct_ from the CleverTap dashboard.
2. Click **\+ Provider** and select _CleverTap BSP_ from the _Provider_ dropdown.
3. Read all the prerequisites and click **Continue with Facebook**.
4. To register and connect your WhatsApp business account with CleverTap:
i. Create or select your Meta and WhatsApp Business Account.
ii. Create your WhatsApp Business profile.
iii. Verify your WhatsApp Business number.
After completing the registration, your business is reviewed within 24 hours for compliance with WhatsApp's commerce policy.
5. After your onboarding is successful, you must complete the setup on the CleverTap dashboard.

CleverTap BSP Setup
6. Select your _WABA Name_, _Nickname_, and mobile number to complete the setup.
7. Click **Save and Complete Setup**
> 📘
>
> ###
>
> Note
>
> [](https://docs.clevertap.com/docs/clevertap-bsp#note)
>
> After completing the WhatsApp onboarding process, businesses can immediately:
>
> * Send business-initiated conversations to 250 unique customers in a rolling 24-hour period.
> * Register up to two phone numbers until the WABA display name is approved. Once the display name is approved you can add up to 50 numbers.
Creating WhatsApp Message Templates
[](https://docs.clevertap.com/docs/clevertap-bsp#creating-whatsapp-message-templates)
-----------------------------------------------------------------------------------------------------------------------------
CleverTap BSP customers can easily create WhatsApp Message Templates directly from our platform. There's no need to create the template in Meta first and then recreate it on the CleverTap dashboard. CleverTap automatically syncs the status of your templates with the Meta dashboard, ensuring that your templates always have the latest status in CleverTap.
If required, you can manually [refresh the status of the templates](doc:whatsapp-message-templates#edit-delete-or-refresh-whatsapp-message-templates)
. You can [import the templates from Meta into CleverTap](doc:whatsapp-message-templates#import-templates)
if you want to sync the actual templates
To create different WhatsApp message templates on CleverTap, refer to this detailed document on [Creating WhatsApp Templates](doc:whatsapp-message-templates#create-whatsapp-template)
.
Create a Campaign
[](https://docs.clevertap.com/docs/clevertap-bsp#create-a-campaign)
-----------------------------------------------------------------------------------------
To create a WhatsApp campaign using CleverTap BSP, refer to this detailed document on [How to create a WhatsApp Campaign](doc:whatsapp#section-creating-a-whatsapp-campaign)
.
Create a Journey
[](https://docs.clevertap.com/docs/clevertap-bsp#create-a-journey)
---------------------------------------------------------------------------------------
To create a WhatsApp journey using CleverTap BSP, refer to this detailed document on [How to Create a WhatsApp Journey](https://docs.clevertap.com/docs/engagement-nodes-whatsapp)
.
Creating WhatsApp Message Templates (in Meta)
[](https://docs.clevertap.com/docs/clevertap-bsp#creating-whatsapp-message-templates-in-meta)
-----------------------------------------------------------------------------------------------------------------------------------------------
If you have trouble creating message templates from your CleverTap account, you can create them directly from your Meta account and import them. To get started with template creation in your WhatsApp Business Manager Account provided by Facebook, follow the steps:
1. Log in to your [Facebook Business Manager account](https://business.facebook.com/)
.

WhatsApp Manager
2. Open the hamburger menu at the top of the page and select **WhatsApp Manager**. The WhatsApp Business accounts page opens.
3. Click **Message templates** from the left navigation menu under _Account tools_ as shown below. The list of templates is displayed, where you can see all of your existing templates, their status, and quality ratings.

Message Templates
4. Click **Create Template**. The template creation page opens.

Template Configuration
4. Select the Category, Name, and Language :
* _Category_: Select the type of template you want to create. You can hover over the template types to view details for each template.
> 📘
>
> ###
>
> Unsupported Template Categories
>
> [](https://docs.clevertap.com/docs/clevertap-bsp#unsupported-template-categories)
>
> The **Marketing (Product Messages)** and **Authentication templates** are not supported. We recommend not creating these templates in the WhatsApp Manager Account as they can cause compatibility issues.
* _Name_: Enter the template's name in lowercase letters, numbers, and underscores only.
* _Language_: Select the languages for your message template. You can delete or add more languages in the next step.
5. Click **Continue** after filling up all the required details.
6. Configure the template per your requirement and provide a contextual sample for each custom variable added to the template.

Define Template Content
7. (Optional) Enhance user interactions with messages by incorporating **interactive buttons**. The following information allows you to create and utilize _Call to action (CTA)_ and _Quick Reply_ buttons within your templates:
* **Call to Action (CTA) Buttons:**
* Meta supports the following CTA buttons: _Call Phone_ and _Visit Website_.
* WhatsApp supports only two CTA buttons with Templates. You can include one _Call Phone CTA_ button and one _Visit Website CTA_ button in your templates.
* The _Visit Website CTA button_ supports static and dynamic redirection URLs.
* For static redirection URLs, enter the complete URL for redirection (for example, [https://www.example.com/gp/bestsellers](https://www.example.com/gp/bestsellers)
).
* For dynamic redirection URLs, enter the domain of the URL along with a variable (for example, [https://www.example.com/{{1}}](https://www.example.com/%7B%7B1%7D%7D)
).
> 📘
>
> ###
>
> Tracking Clicks With _Visit Website_ CTAs
>
> [](https://docs.clevertap.com/docs/clevertap-bsp#tracking-clicks-with-visit-website-ctas)
>
> To track clicks in the CTA, we recommend selecting dynamic URLs. Use the following URLs as the Website URL based on your CleverTap account region:
>
> EU1:[https://ct1.io/{{1}}](https://ct1.io/%7B%7B1%7D%7D)
>
> IN1: [https://ct3.io/{{1}}](https://ct3.io/%7B%7B1%7D%7D)
>
> SG1: [https://ct4.io/{{1}}](https://ct4.io/%7B%7B1%7D%7D)
>
> US1: [https://ct5.io/{{1}}](https://ct5.io/%7B%7B1%7D%7D)
* **Quick Reply Buttons:**
* Quick Reply buttons allow the users to choose from predefined response options. For more information about Quick Reply buttons, refer to [WhatsApp Quick Replies](https://faq.whatsapp.com/1791149784551042/?helpref=uf_share)
.
* WhatsApp supports up to three _Quick Reply buttons_ in templates, allowing users to select a suitable option quickly.
8. (Optional) Click **Add Sample** to add an optional content example for your template. This helps in understanding the type of message you want to send during the review and approval process.
> ❗️
>
> ###
>
> Sample Content for Template
>
> [](https://docs.clevertap.com/docs/clevertap-bsp#sample-content-for-template)
>
> Ensure that the sample content that you add does not include any actual user or customer information.
9. Click **Submit**.
Your template is now sent for review. The status of your template is visible under _Message templates_. After your message is approved, you can copy the message template and paste it into the CleverTap dashboard. To learn more about the template creation process, refer to this [detailed document](https://www.facebook.com/business/help/2055875911147364?id=2129163877102343)
by Facebook.
> 📘
>
> ###
>
> Pre-Approved Message Templates
>
> [](https://docs.clevertap.com/docs/clevertap-bsp#pre-approved-message-templates)
>
> Facebook offers some pre-approved WhatsApp message templates for testing. You can use these templates in the CleverTap dashboard to start sending test messages as soon as you complete WhatsApp onboarding.
FAQs
[](https://docs.clevertap.com/docs/clevertap-bsp#faqs)
---------------------------------------------------------------
###
Onboarding
[](https://docs.clevertap.com/docs/clevertap-bsp#onboarding)
**Q. What is Facebook business manager account verification?**
A. As the [prerequisite](doc:clevertap-bsp#prerequisites)
for WhatsApp onboarding explains, your Facebook business manager account needs to be verified to get full WABA access. Facebook business verification is the way for Facebook to know that your business is a legitimate organization. Your business must be registered as per the business registration process of your country.
**Q. Do I need to verify the Facebook manager account again if it is already verified?**
A. Facebook business verification is also required for other purposes, along with getting WABA access. Given this, there are chances that you have already verified your business manager account. You do not have to go through the verification process if your account is verified.
**Q. How do I check if my Facebook business manager account is verified or not?**
A. To check if your Facebook business manager account is verified, open your Facebook business manager account and navigate to _Settings_. Scroll down and click _Security Settings_. If your Business manager account is verified, the "Security Center" section displays as follows:
**Q. What are the requirements for business verification?**
A. To verify the business manager account, you must fill in the business details. Ensure that the information provided aligns with the details registered with local authorities. As long as Facebook can verify your organization from the given information, there is no need to provide supporting documents for verification. To check the exact requirements for verification in your country, refer to the [detailed documentation](https://www.facebook.com/business/help/159334372093366)
**Q. My Facebook business manager is not verified; how do I get it verified?**
A. Follow the steps given in this [document](https://www.facebook.com/business/help/2058515294227817?id=180505742745347)
to understand the steps required for getting your Facebook business manager account verified.
**Q. How long does Facebook take to verify the business manager account?**
A. Facebook takes a few weeks to verify the business manager account. This is subjective to how soon Facebook can verify your documents and can take longer in some cases.
**Q. What happens if I complete WhatsApp onboarding without business verification?**
A. Previously, businesses could not send any messages before completing the account verification. This meant if verification took a few weeks, they had to wait that long to start using the WhatsApp Business APIs.
While waiting for verification, businesses can use the unverified trial experience (sandbox) to test the functionality. During the trial experience, businesses are allowed to initiate a conversation with a limited number of users, but the business can respond to unlimited incoming chats. [Read more](https://www.facebook.com/business/help/2640149499569241)
.
**Q. Are there any repercussions if I do not verify the Facebook business manager account?**
A. It is important to start your Facebook Business verification as soon as possible. In most cases, the account is verified the same day as the process starts, but in some cases, this may take some time. If the business is not verified by Facebook or approved as per WhatsApp commerce and display name policy within 30 days, the number goes offline.
**Q. What are the best practices for WhatsApp display names?**
A. Do not add extra words, spaces, or special characters to your company or brand name used in the business display name. To learn more, refer to the [document](https://www.facebook.com/business/help/338047025165344)
.
**Q. I have completed onboarding; how do I check if my WABA account/display name is approved?**
A. Display approval happens after your business is verified, so if you have not verified your business yet, start the verification at the earliest.
To check your display number approval status, open your Facebook business manager account and navigate to _WhatsApp business manager_ from the hamburger icon in the left navigation bar. Now, select the WhatsApp account associated with the number for which you want to check the display name approval status, and then click _Phone numbers_ from the left navigation bar under _Account tools_.

Display Number Approval Status
Now, click _View_ under Certificate. If your display name is approved, the Display name has an _Approved_ tag in front of it, as shown below:

Approval Status
**Q. How do I check my current messaging limit?**
A. To check your current messaging limits, open your Facebook business manager account and navigate to WhatsApp business manager from the hamburger icon in the left navigation bar. Further, select the WhatsApp account associated with the number for which you want to check the Display name approval status and then click _Phone numbers_ from the left navigation bar under _Account tools_. Your messaging limit appears under _Messaging limit_ in the phone numbers table.

Check Messaging Limit
**Q. How do I increase the messaging limit?**
A. To learn about the messaging limit levels, refer to this [detailed document by Meta](https://developers.facebook.com/docs/whatsapp/messaging-limits#messaging)
.
**Q. How do I check my Whatsapp message usage ?**
A. You can check your WhatsApp usage for the current month from your Meta Business Manager account. To view your usage:
1. Login to your account and select WhatsApp Manager from the Tools shortcuts or under Engage Customers > WhatsApp Manager.

Meta Business Login
Your WhatsApp accounts and onboarded numbers are displayed.

WhatsApp Insights View
2. Select any of the numbers to view usage and charges.
3. Go to Account Tools > Insights.
4. Select the date range to display usage.

View usage by date range
###
Message Templates
[](https://docs.clevertap.com/docs/clevertap-bsp#message-templates)
**Q. What are message templates?**
A. As explained earlier, there are two types of conversations - user-initiated and business-initiated. In the case of user-initiated conversations, you can send any text to end-users. However, if your business initiates the conversation, you can only send the message reviewed and approved by Facebook. These approved text messages are called Message templates.
**Q. How much time does Facebook take to review the templates?**
A. It can take up to 24 hours for approval. Once approved, a notification appears in your WhatsApp Manager, and we send an email to your Business Manager admins. In addition, we also send a webhook notification if you subscribe to message template status changes. Learn more about [Monitoring Status Changes](https://developers.facebook.com/docs/whatsapp/message-templates/guidelines/#monitoring-status-changes)
.
**Q. Are there any best practices for message templates?**
A. Facebook expects you to create templates for genuine use cases and not violate their [policy](https://www.whatsapp.com/legal/business-policy/?fbclid=IwAR3dL90AcNa3qrmGiyDvsWjfhk0dpACCfAMzo5jUrt82CMjxPempfxYl1Dg)
. There is no single correct approach to creating templates but following these basic guidelines will help in getting your templates approved quickly and customers also enjoy interaction with your business.
1. Templates should be short, simple, and have only the necessary text to pass on the required information to the customer.
2. Templates must not have any grammatical or spelling mistakes. Templates that include major spelling or grammatical mistakes are likely to be rejected. Templates with minor punctuation errors or grammatical inconsistencies may be approved but should be avoided.
3. Be mindful of formatting errors. Ensure that you are not missing any sequence in variables ie. {{1}},{{3}},{{4}} or used the curly braces properly in dynamic variables.
4. Title of the template should explain how the template is going to be used. for example, if you are creating a template for sending booking information, the title should be booking\_update. Also, note that the title can not be changed later so name the templates in such a way that it is easier to identify your templates easily.
5. If you plan to use any redirection URLs, ensure that you provide full URLs. Using short URLs in templates might cause templates to be rejected.
6. Use the same language in the template content you chose in the template language field. For example, if you chose Arabic as the template language, then write template content in Arabic.
Refer to these detailed documents by [Facebook](https://developers.facebook.com/docs/whatsapp/message-templates/guidelines/#quality-rating-and-template-status)
to learn more about the best practices for WhatsApp message templates.
**Q. How do I create new templates?**
A. Refer to the [Add Message Template](doc:clevertap-bsp#add-message-template)
section.
**Q. What are the common reasons for template rejection?**
A. Listed below are the common reasons for template rejections:
* Variable parameters are missing or have mismatched curly braces. The correct format is {{1}}.
* Variable parameters contain special characters such as a #, $, or %.
* Variable parameters are not sequential. For example, {{1}}, {{2}}, {{4}}, {{5}} are defined but {{3}} does not exist.
* The message template contains content that violates [WhatsApp's Commerce Policy](https://www.whatsapp.com/legal/commerce-policy?l=et)
.
* The message template contains content that violates [WhatsApp's Business Policy](https://www.whatsapp.com/legal/business-policy/?lang=en)
.
* The content contains potentially abusive or threatening content, such as threatening a customer with legal action or threatening to shame them publicly.
* The message template is a duplicate of an existing template. If a template is submitted with the same content in the body and footer of an existing template, the duplicate template is rejected. A rejection email notification, including the rejection reason that appears in _Account Quality_ on WhatsApp Manager, is sent. You may refer to the Account Quality notification to see the name and language of the existing template with the same content as the rejected duplicate template. You may also choose to edit the template and resubmit. Please note that this check does not apply to OTP templates.
**Q. Can I edit the templates after they are approved?**
A. You can edit a template using the WhatsApp Manager or the [Message Template](https://developers.facebook.com/docs/whatsapp/business-management-api/message-templates#edit-a-message-template)
endpoint. Note that if you edit a message template and resubmit it for approval, its status changes to _In Review_ and cannot be sent to customers until its status changes to _Active_.
**Q. What is template quality, and how do I check the quality of my templates?**
A. To check the quality rating of your templates, open your Facebook business manager account and navigate to _WhatsApp business manager_ from the hamburger icon in the left navigation bar. Further, select the WhatsApp account associated with the number for which you want to check the template quality rating, and then click on _Message templates_ from the left nav bar under account tools.
**Q. What are common template statuses?**
A. Templates can have the following statuses:
* In-Review: This indicates that the template is still under review. Review can take up to 24 hours.
* Rejected: Indicates that the template has been rejected during the review process. [Learn more](https://developers.facebook.com/docs/whatsapp/message-templates/guidelines/#appeals)
.
* Active - Quality pending: Indicates that the message template is yet to receive quality customer feedback. Message templates with this status can be sent to customers. Learn more about [Quality Rating](https://developers.facebook.com/docs/whatsapp/message-templates/guidelines/#quality-rating)
.
* Active - High Quality: Indicates that the template has received little or no negative customer feedback. Message templates with this status can be sent to customers. Learn more about [Quality Rating](https://developers.facebook.com/docs/whatsapp/message-templates/guidelines/#quality-rating)
.
* Active - Medium Quality: Indicates that the template has received negative feedback from multiple customers but may soon become paused or disabled. Message templates with this status can be sent to customers. Learn more about [Quality Rating](https://developers.facebook.com/docs/whatsapp/message-templates/guidelines/#quality-rating)
.
* Active - Low Quality: Indicates that the template has received negative feedback from multiple customers. Message templates with this status can be sent to customers but are in danger of being paused or disabled soon, so we recommend that you address the issues that customers report. Learn more about [Quality Rating](https://developers.facebook.com/docs/whatsapp/message-templates/guidelines/#quality-rating)
.
* Paused: Indicates that the template has been paused due to recurring negative customer feedback. Message templates with this status cannot be sent to customers. Learn more about [Template Pausing](https://developers.facebook.com/docs/whatsapp/message-templates/guidelines/#template-pausing)
.
* Disabled: Indicates that the template has been disabled due to recurring negative customer feedback or for violating one or more of our policies. Message templates with this status cannot be sent to customers. You may be able to edit a disabled message template and request an appeal. [Learn more](https://developers.facebook.com/docs/whatsapp/message-templates/guidelines/#appeals)
.
* Appeal Requested: Indicates that an appeal has been requested. [Learn more](https://developers.facebook.com/docs/whatsapp/message-templates/guidelines/#appeals)
###
Number Quality
[](https://docs.clevertap.com/docs/clevertap-bsp#number-quality)
**Q. What is number quality and connection status?**
A. Your quality rating indicates how template messages have been received by your users in the last 24 hours. There are three different states of messaging quality:
* Green: High quality
* Yellow: Medium quality
* Red: Low-quality
If your Quality rating remains Red for seven or more days, your number's connection status changes to _Flagged_ or _Restricted_.
* Flagged: Indicates that the quality rating has reached a low state. Businesses can not upgrade messaging limit tiers during the Flagged phase. If the message quality improves to a high or medium state by the seventh day from when your status was moved to Flagged, the status changes to _Connected_. If the quality rating does not improve, the status still changes to Connected, but you are placed in a lower messaging limit tier.
* Restricted: Indicates that you have reached your messaging limit. During a Restricted phase, you can not send any notification messages until the 24-hour window is reset. However, you can respond to any messages that customers initiate. [Learn more](https://www.facebook.com/business/help/896873687365001)
.
**Q. How do I check my number quality?**
A. Navigate to Facebook business manager and open WhatsApp business manager. Further, click _Phone number_ under _Account tools_. This will show you the number quality and status of your numbers.

Number Quality
**Q. What to do if the number quality is Red? How to improve Quality Rating?**
A. Follow the guidelines below to improve your Quality Rating:
* Reduce the WhatsApp campaigns for a week and send only important notifications and target your champion user base only.
* Ensure that your templates comply with the WhatsApp Business Policy.
* Ensure that your messages are clear, personalized, and useful to users.
* Avoid sending open-ended welcome or introductory messages.
* Only send template messages to users that have opted in to receive messages on that specific topic. For example, if a user opted-in for COVID updates but starts receiving other health updates, they may respond negatively because they did not opt-in for that specific communication.
* Be mindful of your messaging frequency. Avoid sending users too many notifications in a day.
* Be thoughtful of informational messages, and optimize the content and the message length.
* Check if your organization has added and sent a new template within the last 7 days. This may help determine a problematic template(s).
###
Number Migration
[](https://docs.clevertap.com/docs/clevertap-bsp#number-migration)
**Q. I want to migrate my number from CleverTap to external BSP; what is the process?**
A. Please contact your account manager to seek support for the migration process or raise a ticket with our support team from your CleverTap dashboard.
**Q. I want to migrate numbers from external BSP to CleverTap BSP; how do I get this done?**
A. Please contact your account manager to seek support for the migration process.
Also, refer to this [document](https://developers.facebook.com/docs/whatsapp/business-management-api/guides/migrate-phone-to-different-waba/)
to know more about the migration process.
Updated about 2 months ago
* * *
Ask AI
---
# Branded Domain
Overview
[](https://docs.clevertap.com/docs/branded-domain#overview)
========================================================================
Branded Domains in CleverTap help you apply your brand to tracking across Email, SMS, WhatsApp, and RCS campaigns.
* For **SMS**, **WhatsApp**, and **RCS campaigns**, it is used to generate short, trackable links.
* For **Email campaigns**, it is used to brand links and open-tracking pixels using a custom domain.
Using branded domains improves user trust and can boost engagement rates.
> 📘
>
> ####
>
> Private Beta
>
> [](https://docs.clevertap.com/docs/branded-domain#private-beta)
>
> This feature is currently released in Private Beta. If you want to access the feature, contact your Customer Success Manager.
Domain Types
[](https://docs.clevertap.com/docs/branded-domain#domain-types)
================================================================================
CleverTap supports two types of branded domains:
| Domain | Description | Supported Channels |
| --- | --- | --- |
| System Domain | Provided by CleverTap, where you can customize the system-generated short links with your brand's prefix for easy integration without the need for DNS configuration. | WhatsApp, SMS & RCS |
| Custom Domain | Enables you to use your own subdomain for complete control over your branding and tracking. To use a custom domain, you will need to configure DNS records with your domain provider for proper verification and campaign tracking. | Email, WhatsApp, SMS & RCS |
Both options allow you to define specific settings, such as the URL structure and 404 error page, ensuring your branded domain is set up to suit your needs.
Add Domain
[](https://docs.clevertap.com/docs/branded-domain#add-domain)
============================================================================
This section provides information about creating a branded system and a custom domain for your campaigns. To add a domain, perform the following steps:
1. Go to _Settings_ > _Set Up_ > _Branded Domain_.
2. Click **Add Domain** and select the channel.
3. Enter the details you are prompted to provide based on the selected channel. For more information, refer to [System Domain](doc:branded-domain#add-system-domain)
and [Custom Domain](doc:branded-domain#add-custom-domain)
.

Add Domain
3. Click **Save**.
* For a System Domain, the status is set to Active immediately.
* For a Custom Domain, the status is set to Pending Verification, and DNS records are generated for you to configure with your domain provider.
Add System Domain
[](https://docs.clevertap.com/docs/branded-domain#add-system-domain)
------------------------------------------------------------------------------------------
You can create a system domain to quickly start using branded links in your WhatsApp/SMS & RCS campaigns without DNS configuration. To add a system domain, enter the following details:

Add System Domain for WhatsApp/SMS & RCS
| Field | Description |
| --- | --- |
| Nickname | Provide a name to identify the domain (for example, "Marketing"). |
| Channel | Displays the channel for which the branded domain is being created. |
| Domain Type | A CleverTap-provided system domain that can be customized with your brand prefix. No DNS setup required. This is available only for WhatsApp/SMS & RCS channels. |
| Domain | The base domain used for branding and tracking. When adding a system domain, this is auto-filled based on your account region. For more information, refer to _Domain and Account Region Mapping for WhatsApp/SMS & RCS_ below the table. |
| Branded URL Schema | Defines the structure of the branded tracking URL. This is available for WhatsApp/SMS & RCS channels and is required for adding a system domain.
URL Structure: `domain/adjoiner/Shortkey`
This includes the following:
* **Domain**: The domain entered above is prepopulated here.
* **Adjoiner**: A brand-specific path separator that connects the Domain and Shortkey, helping personalize and group URLs. The **Adjoiner** can only contain lowercase letters, numbers, and hyphens. It must not start or end with a hyphen, and cannot contain special characters such as `@`, `#`, `&`, and so on.
* **Shortkey**: A unique, auto-generated code added to the branded domain, helping track clicks on links within campaigns.
For example, `ct3.io/clevertap/abc123` |
| Error Page | The page users see if a tracking link is invalid or has expired. You can use CleverTap’s system error page or provide a custom URL to maintain brand consistency even in error scenarios. Click _Preview Error Page_ to view and verify the error before the domain becomes active. |
Once you enter all the details, click **Save**. The status is set to **Active** immediately
> 📘
>
> ####
>
> Domain and Account Region Mapping for WhatsApp/SMS & RCS
>
> [](https://docs.clevertap.com/docs/branded-domain#domain-and-account-region-mapping-for-whatsappsms--rcs)
>
> | Dashboard URL | Region | System Domain | Example URL |
> | --- | --- | --- | --- |
> | eu1.dashboard.clevertap.com | EU | ct1.io | ct1.io/25AlJz |
> | in1.dashboard.clevertap.com | IN | ct3.io | ct3.io/52KlAz |
> | sg1.dashboard.clevertap.com | SG | ct4.io | ct4.io/25ZlAz |
> | us1.dashboard.clevertap.com | US | ct5.io | ct5.io/52ZlKa |
> | mec1.dashboard.clevertap.com | Middle East | ct8.io | ct8.io/25ZaJz |
> | aps3.dashboard.clevertap.com | Indonesia | ct9.io | ct9.io/52KJz |
Add Custom Domain
[](https://docs.clevertap.com/docs/branded-domain#add-custom-domain)
------------------------------------------------------------------------------------------
Use your own subdomain (for example, `sales.yourbrand.com`) for maximum brand visibility. This option allows you to fully control the branding and tracking for your campaigns.

Add Custom Domain for Email

Add Custom Domain for WhatsApp/SMS & RCS
| Field | Description |
| --- | --- |
| Nickname | Provide a name to identify the domain (for example, "Marketing"). |
| Channel | The channel this branded domain will be used for. |
| Domain Type | Your own subdomain (for example, links.yourbrand.com) that requires DNS configuration. |
| Domain | Enter your own subdomain to be used for branding and tracking |
| Branded URL Schema | This is available for WhatsApp/SMS & RCS channels and is required for adding a custom domain. It defines the structure of the branded tracking URL. |
| Error Page | Optional field. Available only for WhatsApp/SMS & RCS channels. Provide the page you want users to see if a tracking link is invalid or has expired. You can use CleverTap’s system error page or provide a custom URL to maintain brand consistency even in error scenarios. Click _Preview Error Page_ to view and verify the error before the domain becomes active. |
Once you enter all the details, click **Save & Generate DNS**. The domain status is set to **Pending Verification** immediately, and DNS Records are generated to configure it on your Domain provider dashboard. The generated records include two CNAME records and one TXT record

DNS Records Generated for Email

DNS Records Generated for WhatsApp/SMS & RCS
> 📘
>
> ####
>
> Custom Domain
>
> [](https://docs.clevertap.com/docs/branded-domain#custom-domain)
>
> You can add up to 5 unique custom domains per account per channel.
###
Verify Custom Domain
[](https://docs.clevertap.com/docs/branded-domain#verify-custom-domain)
After DNS records are generated, verify them so the domain becomes active and available for use. To do so, perform the following steps:
1. Go to the domain provider dashboard and configure the following DNS records. When configuring DNS records with your domain provider, enter only the prefix part in the Name field. The prefix is the part that precedes the main domain. For example, if the CNAME is `_c58ebcb5c******5f03bb6b174349.track.yourdomain.com`, enter `_c58ebcb5c******5f03bb6b174349.track` in the Name field.
| Type | Description |
| --- | --- |
| CNAME | Used for domain ownership verification. |
| CNAME | Redirects branded links to CleverTap's short URL service for WhatsApp/SMS & RCS campaigns. For Email campaigns, it supports click and open tracking. |
| TXT | Verifies domain association with CleverTap. |
2. Once your DNS records are saved, go back to the **Branded Domain** page on the CleverTap dashboard.
3. Click the  icon next to your domain to verify your domain and refresh the status on the CleverTap dashboard. DNS verification may take up to 24 hours to complete. If verification fails, check your DNS configuration with your domain provider to ensure it is accurate. If the settings are correct, try refreshing after some time.
Best Practices for Adding Domain in CleverTap
[](https://docs.clevertap.com/docs/branded-domain#best-practices-for-adding-domain-in-clevertap)
==================================================================================================================================================
Here are some tips to ensure your branded domain setup is effective and compliant:
* **For System Domains** (like `ct3.io/yourbrand/abc123`):
* Choose a short and meaningful **Adjoiner** that clearly represents your brand or campaign type.
* Use lowercase letters and hyphens (`-`) if needed (for example, `/clevertap/`, `/new-user/`, `/sale2024/`).
* Keep it concise: Aim for 5–8 characters in the **Adjoiner** (excluding the slashes) to avoid long URLs in campaigns.
* Avoid vague terms like `/track/` or `/link/` — use something unique to your brand.
* **For Custom Domains** (like `links.yourbrand.com`):
* Use a subdomain such as **links.**, **click.**, or **promo.** (for example,`links.yourbrand.com`, `click.yourbrand.com`).
* Keep the **Subdomain** short, relevant, and easy to remember.
* Avoid complex words, long phrases, or special characters in the **Subdomain** name.
* Ensure you configure **DNS records** exactly as shown after setup to avoid delays in verification.
* Avoid the following:
* Using more than 20 characters in the **Adjoiner** or **Subdomain**.
* Starting or ending **Adjoiners** with hyphens.
* Using non-brand-specific generic terms.
> 📘
>
> ####
>
> Pro Tip: Buy New Short Domain for Campaigns
>
> [](https://docs.clevertap.com/docs/branded-domain#pro-tip-buy-new-short-domain-for-campaigns)
>
> If your existing domain is long or complex, consider purchasing a new, short domain for marketing messages. Ideally, the domain must be 5–8 characters long and phonetically similar to your brand name. This improves:
>
> * Link trustworthiness
> * User recall and voice-based sharing (for example, over phone or radio)
> * Visual clarity in messages and notifications
>
> **Examples**:
>
> * If your brand name is long (for example, **ExampleStore**), consider short domain options like **exstr.in**, **exsto.co**, or **exst.co**.
> * For multi-word brand names (for example, **Example Food Market**), you could use shortened versions such as **exfdmr.com**, **efmkt.in**, or **xfmk.co**.
Manage Branded Domains
[](https://docs.clevertap.com/docs/branded-domain#manage-branded-domains)
====================================================================================================
The Domain Listing page allows you to view and manage all your configured domains. You can easily edit domain settings, view DNS records, and make any necessary updates to check if your domains are correctly set up and functioning.
Go to _Settings_ > _Set Up_ > _Branded Domains_. You can see a list of all your domains (system or custom), including the following details:

Branded Domains Page
| Column | Description |
| --- | --- |
| _Nickname_ | A user-defined name to help you identify the domain (for example, "Sales Campaign"). |
| _Domain URL_ | Displays the full URL of the branded domain being used for tracking links in the case of WhatsApp/SMS & RCS campaigns (for example, `ct3.io/clevertap/abc123`). Displays the branded domain being used for email campaigns (for example, `track.yourdomain.com`). |
| _Created By_ | The email address of the user who created the domain. |
| _Status_ | The current status of the domain. It can be:
* **Active**: Domain is verified and ready to be used in campaigns.
* **Pending Verification**: Domain is awaiting DNS verification and cannot be used until verified.
* **Failed**: Domain verification failed due to incorrect or missing DNS records. |
| _Last Updated On_ | The timestamp when the domain settings were last updated. |
After adding the domain, you can perform the following operations by hovering it:

Manage Branded Domains
* **Set as Default**: You can set one verified domain as the default for WhatsApp, SMS, and RCS, and a different verified domain as the default for Email. This domain is automatically used for wrapping and tracking links in SMS, WhatsApp, RCS, and Email campaigns (including template buttons). You can override it per campaign when creating new ones.
* **Edit**: You can edit the nickname of the domain. Additionally, for WhatsApp/SMS & RCS campaigns, you can set a custom 404 error page (except for system defaults).
* **Verify Domain**: You can manually verify the domain by checking the status. If the verification fails, you can click the  icon next to the domain to retry after making the necessary corrections.
* **View DNS Records**: You can access and review the DNS settings associated with your domain. This includes details such as CNAME and TXT records, which are essential for domain verification and proper tracking. By viewing these records, you can ensure that the domain is correctly configured with your DNS provider for seamless integration and functionality.
FAQs
[](https://docs.clevertap.com/docs/branded-domain#faqs)
================================================================
###
Can I switch between path-based and query-based adjoiners?
[](https://docs.clevertap.com/docs/branded-domain#can-i-switch-between-path-based-and-query-based-adjoiners)
No, you must choose one format per domain — either **path-based** (`/yourbrand/`) or **query-based** (`?key=yourbrand`). You cannot mix both formats in a single domain configuration.
###
What happens if my custom domain becomes unverified?
[](https://docs.clevertap.com/docs/branded-domain#what-happens-if-my-custom-domain-becomes-unverified)
If a branded domain used for Email moves from Active to Pending Verification or Failed:
* CleverTap sends an email alert to inform you of the status change
* CleverTap automatically falls back to the system domain for email click and open tracking
* Email campaigns continue to send without interruption
Once the domain is verified again, it can be reused in future campaigns.
###
Will old campaigns use the new branded domain?
[](https://docs.clevertap.com/docs/branded-domain#will-old-campaigns-use-the-new-branded-domain)
No. Campaigns created before you set up a branded domain will continue using the **System Domain** unless you manually edit or recreate them with the new branded domain.
###
I configured the DNS records, but my domain has still not been verified. What should I do?
[](https://docs.clevertap.com/docs/branded-domain#i-configured-the-dns-records-but-my-domain-has-still-not-been-verified-what-should-i-do)
Check the following:
* **DNS records** are entered exactly as shown in the CleverTap dashboard.
* You’ve entered only the required prefix in the **Key** field (for example, short, not short.clevertap.com)
* Wait up to 24 hours, then try refreshing again
###
When will a link preview be shown for my branded domain link?
[](https://docs.clevertap.com/docs/branded-domain#when-will-a-link-preview-be-shown-for-my-branded-domain-link)
A link preview is generated when the messaging platform (such as SMS, WhatsApp, or RCS) scans the URL included in your message and detects the required Open Graph metadata on the destination page. The following tags must be present and properly configured in the page’s HTML:
* ``
* ``
* ``
If these tags are available and valid, the platform may display a visual preview containing a title, description, and image. A preview may not be shown in the following cases:
* The Open Graph tags are missing or incorrectly implemented
* The domain is blocked by `robots.txt` or firewalls
* The page is inaccessible to external crawlers
To validate whether your Open Graph metadata is implemented correctly, use any metadata testing tool or Open Graph debugger.
###
How do link previews work on iOS devices, and why might they not appear?
[](https://docs.clevertap.com/docs/branded-domain#how-do-link-previews-work-on-ios-devices-and-why-might-they-not-appear)
iOS devices running version 10 or above support link previews in the native Messages application. These previews may still appear for SMS-based messages, but several conditions must be met for reliable rendering.
**Preview Requirements**
* Only one link should be included in the message. Messages with multiple links will not generate a preview.
* The link must be the final element in the message. No text, punctuation, or symbols should follow the link.
* The domain must be served over HTTPS and use a valid SSL certificate. Self-signed, expired, or incomplete certificates will block preview generation.
* The recipient must tap _Tap to Load Preview_ for metadata to be fetched.
**iOS-specific Behaviors and Limitations**
* iOS delays metadata fetching until after the message is delivered, and in some cases, until the user interacts with the message.
* Devices may display cached metadata even after updates have been made to the page’s Open Graph tags.
* Certain third-party messaging apps may block previews by default, unless they are explicitly enabled in the settings.
These constraints can lead to inconsistent preview rendering on iOS devices, even when metadata is correctly configured.
Updated about 1 month ago
* * *
Ask AI
---
# Segments
Overview
[](https://docs.clevertap.com/docs/segments#overview)
==================================================================
A segment in CleverTap is a group of users that share the same characteristics such as actions performed, actions not performed, or user profile properties based on the defined criteria. For example, a segment can be users who launched the app for the first time in the past 30 days. A more complex segment could be users who live in New York, were acquired via a Facebook campaign in April, transacted three or more times in May and June, and have not transacted in the past two weeks.
The _Segments_ page lets you create segments, perform different operations on the segments, and view segment trends over time to understand how a segment behaves in response to your marketing initiatives. The entire CleverTap dashboard can be filtered by any segment you create, including any of our analytics features.

View List of Created Segments
| Field | Description |
| --- | --- |
| Segment details | Displays the details like segment name, ID, and email ID of the user who created the segment. |
| Type | Displays the type of segment. The following are the options available:
* Past Behavior Segment
* Live User Segment
* Custom List Segment
* Partner Segment (where Partner Name can be Amplitude, Mixpanel) |
| Created on | Displays the date on which the segment was created. |
| Updated on | Displays the date on which the segment was last updated. |
| Updated by | Displays the email ID of the user who last updated the segment. |
| Goals | Displays the number of goals that are running on the segment. |
| IBS Goals | Displays the number of goals running with Intent-Based Segment. |
| Engagement | * Displays the number of active and scheduled customer engagements such as campaigns and journeys that use the segment within [include/exclude](doc:segments#include-and-exclude-segments)
filters.
* On clicking the number, it displays the list of campaigns and journeys where the segment is being used. You can also click on a particular campaign/journey from this list to view the campaign details. |
| Dependent Segments | * Displays the number of other segments that include or exclude the selected segment.
* On clicking the number, it displays the list of segments that include/exclude the selected segment. You can also click on a particular segment from this list to view the segment details. |
System User Segments
[](https://docs.clevertap.com/docs/segments#system-user-segments)
==========================================================================================
Before creating any segment on the CleverTap dashboard, there are default system segments already present on the dashboard. The following are the system-defined user segments that are available for your use:
* **All Users**: This user segment contains all the users added to your project.
* **Test Users**: The Test User segment is a default user segment in CleverTap that businesses can use to test their campaigns, journeys, and product experiences before sending them to actual users. This segment allows businesses to experiment with new features, messaging, and campaigns in a safe and controlled environment. Using Test Users helps businesses measure the effectiveness of their ideas before rolling them out to a larger audience. Test Users can be manually created from the CleverTap dashboard or imported through a CSV file and segmented based on various criteria. For more information, refer to [Mark a User Profile as a Test Profile](doc:user-profiles#mark-a-user-profile-as-a-test-profile)
.
Types of Segments
[](https://docs.clevertap.com/docs/segments#types-of-segments)
====================================================================================
There are three types of segments in CleverTap, which are explained in the following sections:
* [Past Behavior Segments](doc:segments#past-behavior-segments)
* [Live User Segments](doc:segments#live-user-segments)
* [Custom List Segments](doc:segments#custom-list-segments)
Past Behavior Segments
[](https://docs.clevertap.com/docs/segments#past-behavior-segments)
----------------------------------------------------------------------------------------------
Past behavior segments include users grouped by their actions in the past. You can group users based on a single activity or do complex combinations of actions, inactions, and user properties.
For example, you can create a segment of users from California, who are females, launched the application in the last 30 days, and have not purchased anything from the app.
Past behavior segments can be based on:
* **Actions**: Add users to a segment if they have performed an event. For example, users who added a product to the cart in the past 30 days.
* **Inaction**: Add users to a segment if they have performed an event but did not perform another event within a certain time. For example, users who added a product to the cart but did not purchase in the last 30 days.
* **Actions with user properties**: Add users to a segment if they did or did not perform an event and have a common user property. For example, platinum-level users who added a product to the cart but did not purchase in the last 30 days.
Live User Segments
[](https://docs.clevertap.com/docs/segments#live-user-segments)
--------------------------------------------------------------------------------------
While past behavior segments let you evaluate users based on historic criteria, live user segments let you track what is happening in your app right now. When you define a set of behaviors of interest, CleverTap monitors for these behaviors as they happen in your app and immediately adds a user to a segment the moment their behavior matches your action criteria. You can create live user segments for the following:
* **Single action**: Add users to a segment as soon as they perform an event. For example, users who booked a movie ticket from your app.
* **Inaction within time**: Add users to a segment when they perform a particular event but did not perform another event within a certain time. For example, users who have added a product to the cart but did not purchase it within 10 minutes of adding the product to the cart.
* **On a date/time**: Add users to a segment based on date and time property value. For example, users who have an appointment five days from the current date.
* **Page visit**: Add users to a segment as soon as they visit a specific URL on your website. For example, users who have visited the Resources page of your website.
* **Referrer entry**: Add users to a segment based on a referring website or campaign. For example, users who have visited your website via a specific external referrer URL.
* **Page count**: Add users to a segment based on the number of pages visited by them. For example, users who have visited five web pages on your website.
Custom List Segments
[](https://docs.clevertap.com/docs/segments#custom-list-segments)
------------------------------------------------------------------------------------------
A custom list segment is a list of users from any source, including third-party tools or internal databases. You can deliver personalized messages to these users based on their past or real-time behavior in the app. For more information, refer to [Custom List Segment](doc:custom-list-segments)
.
Create Segments
[](https://docs.clevertap.com/docs/segments#create-segments)
================================================================================
The steps vary based on the type of segment you want to create.
Create Past Behavior Segments
[](https://docs.clevertap.com/docs/segments#create-past-behavior-segments)
------------------------------------------------------------------------------------------------------------
In this example, we can create an action-based segment where users will qualify if they have applied for a payment offer at least one time in the past 30 days.
To create a past behavior segment, perform the following steps:
1. Navigate to _Segments_ > _Segments_ from the dashboard.
2. Click **+Segment**.

Create a New Segment
3. Select the box _Actions_ underneath _Past behavior segments_ from the main segment creation page.

Past Behavior Segments
4. Define the segment rule as shown below on the segment query page.

Create a Past Behavior Segment
5. Click **Save segment** and name the segment.
You can now view your new segment on the _Segment List_ page.
Create Live User Segments
[](https://docs.clevertap.com/docs/segments#create-live-user-segments)
----------------------------------------------------------------------------------------------------
In this example, we can create an _Inaction within time_ segment for which users will qualify in real-time as soon as they add a product to their cart but do not purchase the product within 10 minutes.
> 📘
>
> ###
>
> Golden Window for Mobile Transactions
>
> [](https://docs.clevertap.com/docs/segments#golden-window-for-mobile-transactions)
>
> The golden window within which most users transact on our iOS and Android app platforms is within 10 minutes.
To create a live segment with CleverTap, perform the following steps:
1. From the dashboard, navigate to _Segments_ > _Segments_.
2. Click **\+ Segment**.
3. Under _Live user segments_, select the _Inaction within time_ box.

Live User Segments
4. Select the appropriate properties for your live user segment.
You may choose to select the _Filter on past user behavior and common properties_ checkbox to apply past action, inaction, or common user property filters.

Create a Live User Segment
5. Click **Save segment** and name the segment.
> 📘
>
> ###
>
> Segment Naming Best Practices
>
> [](https://docs.clevertap.com/docs/segments#segment-naming-best-practices)
>
> Convey the core meaning of the segment while keeping the name brief.
You can now see your new segment in the main section as _Added to cart but no charge within 10 minutes_.
View Segment Details
[](https://docs.clevertap.com/docs/segments#view-segment-details)
==========================================================================================
To view segment details, navigate to _Segments_ > _Segments_, search for the segment you are looking for and then click on it. On clicking, segment details are displayed. At the top of the page, you can click _View segment definition_ to understand more about the underlying query.
Past Behavior Segment Details
[](https://docs.clevertap.com/docs/segments#past-behavior-segment-details)
------------------------------------------------------------------------------------------------------------
The top portion of the past behavior user segment report consists of a way to first view the segment definition to understand its underlying query. There are graphs on the left-hand side showing the plot of the number of users who qualified for the segment going forward from the first complete day post-segment creation. The list on the right-hand side shows the sample list of users who qualified for the segment on this day.

Segment Trend
The past behavior segment statistics are computed daily. However, when these segments are used in campaigns, the users who qualify for these segments are computed in real time. This ensures that users meeting the segment criteria during campaign execution reflect the most recent user activity data.
The lower portion of the past behavior segment report consists of reachability percentages for these users within each messaging channel. The lower-most part of the report shows you how to do more with this segment by either filtering relevant analytics dashboard views by this particular user segment or reaching out to this segment via relevant messaging channels.

Segment Size and Reachability
Live User Segment Details
[](https://docs.clevertap.com/docs/segments#live-user-segment-details)
----------------------------------------------------------------------------------------------------
To view a live user segment report, perform the following steps:
1. From the dashboard, navigate to _Segments_ > _Segments_.
2. Search for the segment you are looking for, then click on it.
At the top of the report, you can click _View segment definition_ to understand more about the underlying query.
The two graphs describe the following:
* The left-hand side shows the plot of the number of users who qualified for the segment going forward from the first complete day after creating the segment.
* The right-hand side shows the real-time rate at which users are qualifying for the segment vs. all user activity on your app/website.

Segment Reports
* The lower portion of the live user segment report consists of a list of sample users trickling into your segment in real time on the right-hand side. It also shows the reachability percentages for these users within each messaging channel on the left-hand side.

Segment Size and Reachability
* The lower-most part of the report shows how to do more with this segment by either filtering relevant analytics dashboard views by this particular user segment or reaching out to this segment via relevant messaging channels.

Sample Users
Export Users in a Segment
[](https://docs.clevertap.com/docs/segments#export-users-in-a-segment)
====================================================================================================
CleverTap allows you to export the users from any segment in the CSV format. To do so:
1. From the _Segments_ page, select the segment from which you may want to export the users. You can also filter out the segments using the _Type_ and _Goals_ filters. The page opens where all the segment details are displayed.
2. Scroll down and navigate to the _Sample users_ section and click **Download**.

Download Sample Users
3. Select the fields you want to export and click **Proceed**.

Select the User Details
> 📘
>
> ###
>
> Mismatch in Segment Size and Number of Users Exported to CSV File
>
> [](https://docs.clevertap.com/docs/segments#mismatch-in-segment-size-and-number-of-users-exported-to-csv-file)
>
> The number of users displayed under the _Segment size and reachability_ section may vary from the number of users exported to the CSV file. This variation is due to the inclusion of blacklisted users under the _Segment size and reachability_ section.
View Analytics Filtered by Segment
[](https://docs.clevertap.com/docs/segments#view-analytics-filtered-by-segment)
======================================================================================================================
Under the _Do more with this segment section,_ you have the option to view an analytics report. This is for the chosen segment alone and not your entire user base.
Real-time dashboard views such as the _Today_ dashboard only enable filtering by live user segments. Analytics based on past behavior such as mobile app, revenue, funnels, cohorts, trends, and events will only enable filtering their stats by past behavior segments.
Create Campaigns for a Chosen Segment
[](https://docs.clevertap.com/docs/segments#create-campaigns-for-a-chosen-segment)
============================================================================================================================
Under the _Do more with this segment_ section, under _Engage_, you have the option to create a campaign to message a specific segment.
This immediately takes you to the messaging channel with your segment criteria pre-populated in the target.

Create a Campaign from the Segment
Include and Exclude Segments
[](https://docs.clevertap.com/docs/segments#include-and-exclude-segments)
==========================================================================================================
You can simplify complex queries by including or excluding the existing user segments. Create segments with complex conditions once and then reuse them in different scenarios.
You can create powerful segmentation that is valid for a variety of scenarios.

Include and Exclude Segments
Exclude Segments
[](https://docs.clevertap.com/docs/segments#exclude-segments)
----------------------------------------------------------------------------------
There may be instances when you want to exclude some users based on specific criteria.
For example, you want to offer discounts to all the users who have expressed interest by adding the product to the cart in the past 30 days; however, you want to save your engagement dollars by excluding the power users.
The parameters for these power users can be the following:
* Users who have charged three times in the past three months, and
* Users who have launched the app 15 times in the past month, and
* Users who rated a product 10 times in the past year
Now, you can create a segment with these criteria called _Power Users_ and use it every time rather than creating a complex query each time. You can save all these parameters in a segment called _Power Users_ and exclude them from the discount message.
The following is a campaign query for an e-commerce app that excludes the _Power Users_ segment.

Exclude Segments
Include Segments
[](https://docs.clevertap.com/docs/segments#include-segments)
----------------------------------------------------------------------------------
There may be instances when you want to include some users based on specific criteria.
Consider the example of a ride-hailing app. You want to nudge your users to enroll for a monthly pass as soon as they open the app. The parameters for these users can be the following:
* The users must be power users, and
* The users have booked more than five rides in a month, and
* They belong to select cities in the country
Now, you can create a segment with these criteria called _Power Users_ and using it repeatedly rather than creating a complex query each time.
The following is a campaign query for a ride-hailing app that includes the _Power Users_ segment.

Include Segment
> 📘
>
> ###
>
> Include and Exclude Segments
>
> [](https://docs.clevertap.com/docs/segments#include-and-exclude-segments-1)
>
> * You can include and exclude segments in the same query. It is considered as an _AND_ condition between the Included and the Excluded segments.
> * The include and exclude segments are currently unavailable for bulletins and A/B Testing.
> * The segments available for including or excluding users can only be of the type [PBS](doc:segments#section-past-behavior-segments)
> segment.
Additional AND By Behavior Filters
[](https://docs.clevertap.com/docs/segments#additional-and-by-behavior-filters)
======================================================================================================================
_AND By behavior_ filters provide customers the ability to segment users based on the count, average, or total sum of a property value.
###
Count
[](https://docs.clevertap.com/docs/segments#count)
The count filter allows customers to filter users by event count. The query finds all users who performed a _Charged_ event greater than 5 times in the past 30 days.

Count Filter
###
Average of Property Filter
[](https://docs.clevertap.com/docs/segments#average-of-property-filter)
The _Average of property_ filter allows customers to filter users by the average of a chosen event property. The query finds all users who performed a _Charged_ event such that the average _Revenue_ event property per event is greater than $10.
The _Average of property_ filter allows averaging the value of the selected event property. For example, you can find out the average revenue earned from all users who performed purchases worth $10 or less. Let us assume that 5 users charged for each for $3, $5, $7, $2, and $8. The average value of all the purchases lower than $10 is ($ 3+ 5 +7+2+8)/5 events = 25/5= $5 per event.
Let us assume that the value for 2 charged events is missing. The charged event values received are $3, $5, and $7. The value of the missing events will be considered as 0. The average of property is now ($3 + 5 +7 +0 +0)/5 events = 15/5 =$3 per event.
If you want to exclude all the events that do not have event properties, you can select the property that exists a condition in the _Filter by_ section.

Average of Property Filter
###
Total Sum of Property
[](https://docs.clevertap.com/docs/segments#total-sum-of-property)
The _Total sum of property_ filter allows customers to filter users by the sum of a chosen event property. The query finds all users who performed a _Charged_ event such that the _Revenue_ event property is greater than $10.

Total Sum of Property Filter
> 📘
>
> ###
>
> Include Users Who Did Not Do the Event
>
> [](https://docs.clevertap.com/docs/segments#include-users-who-did-not-do-the-event)
>
> If the query is to find people who performed the charged event fewer than five times, by default, the users who have not performed the charged event are not included in the result set. Only the users who did the charged event but did it fewer than five times are included; however, if the checkbox for _Include users who didn’t do the event_ is selected, those users are also included in the result set. The same is true for sum and average.

Include Users Who Did Not Do an Event
Segment Operations
[](https://docs.clevertap.com/docs/segments#segment-operations)
======================================================================================
You can perform different actions on the segments from the _Segments_ page. Each of them is explained in the sections to follow
Search Segment
[](https://docs.clevertap.com/docs/segments#search-segment)
------------------------------------------------------------------------------
You can search segments by their Name or ID from the _Segments_ page.

Search a Segment
Copy Segment Name and ID
[](https://docs.clevertap.com/docs/segments#copy-segment-name-and-id)
--------------------------------------------------------------------------------------------------
To copy segment name and ID:
1. From _Segments_ page, hover on the _name_ or _ID_ of the required segment.
2. Click the  icon against the respective segment.

Copy a Segment Name and ID
Engage with Segment
[](https://docs.clevertap.com/docs/segments#engage-with-segment)
----------------------------------------------------------------------------------------
To engage with a segment directly from the _Segments_ page:
1. Click  icon displayed against the segment name under the _Segment details_ column and click **Engage**.

Engage with a Segment
On clicking, _Messaging Channels_ popup displays.
2. Select the _Messaging Channel_.

Select a Messaging Channel
On selecting the channel, you are navigated to the messaging channel with your segment criteria pre-populated under the _Who_ section of the _New Campaign_ page.

Create a Campaign
Clone a Segment
[](https://docs.clevertap.com/docs/segments#clone-a-segment)
--------------------------------------------------------------------------------
This operation helps to create a new segment from an already existing segment with minor or no modifications to the qualification criteria of the segment. To clone a segment directly from the _Segments_ page:
1. Click the  icon displayed against the segment name under the _Segment details_ column and click **Clone**.

Clone a Segment
On clicking, the _Create New_ page opens with prepopulated qualification criteria.
2. Make the necessary modifications to the qualification criteria, if required.
3. Click **Save segment**.
4. Enter the _Segment name_ and click **Save**.
Delete
[](https://docs.clevertap.com/docs/segments#delete)
--------------------------------------------------------------
There may be times when you may need to delete unused segments. To delete the unused segments:
1. Click icon displayed against the segment name under the _Segment details_ column and click **Delete**.

Delete a Segment
On clicking, the _Delete Segment?_ popup is displayed on the right side of the screen.
2. Click **Delete** to confirm your action.
> 📘
>
> ###
>
> Note
>
> [](https://docs.clevertap.com/docs/segments#note)
>
> If your account's total number of segments exceeds 1000, you can view up to 500 segments on a single page and delete a maximum of 500 segments at a time. If the number of segments is less than 1000, you can view up to 50 segments on a single page and delete a maximum of 50 segments at a time.
Sort
[](https://docs.clevertap.com/docs/segments#sort)
----------------------------------------------------------
You can sort segments based on the following columns under _Segments_ page by clicking the arrows against the respective columns :
* Segment details
* Created on
* Updated On
* Engagement
* Dependent Segments

Sort Segments
Filter Segments
[](https://docs.clevertap.com/docs/segments#filter-segments)
--------------------------------------------------------------------------------
You can filter out segments based on the following fields by clicking the  icon:
* Type: Indicates the type of segment.
* Goals. Indicates the goals running on the segment.
* Created by: Indicates the name of the user who created the segment.
* Updated by: Indicates the name of the user who last updated the segment.

Filter Segments
You can also filter segments based on the date on which the segments were created. To do so, select the date range, available at the top, for which you want to view the segment.

Filter Segments by Date
Updated about 2 months ago
* * *
Ask AI
---
# Generic WhatsApp
Overview
[](https://docs.clevertap.com/docs/generic-whatsapp#overview)
==========================================================================
CleverTap supports any WhatsApp provider via integration. CleverTap has recently made its WhatsApp API and standard callback formats accessible to WhatsApp service providers globally. Now, BSPs and customers are no longer required to rely on CleverTap to build the native WhatsApp integration. Instead, they can utilize these APIs to build the integration themselves independently.
> 📘
>
> ###
>
> For CleverTap Customers
>
> [](https://docs.clevertap.com/docs/generic-whatsapp#for-clevertap-customers)
>
> This feature is helpful to customers in the following ways:
>
> * Customers can build middleware between CleverTap and BSP and create their own endpoint. They can start using WhatsApp functionality in CleverTap with the BSP of their choice.
> * Customers can request their BSPs to build the CleverTap integration. This will allow customers to use the provider with CleverTap without any development.
> 📘
>
> ###
>
> For WhatsApp BSPs
>
> [](https://docs.clevertap.com/docs/generic-whatsapp#for-whatsapp-bsps)
>
> Providers who wish to pursue the partnership must follow the integration steps outlined in this document and send an email to [\[email protected\]](https://docs.clevertap.com/cdn-cgi/l/email-protection#f990978d9c9e8b988d9096978ab99a959c8f9c8b8d9889d79a9694)
> or [\[email protected\]](https://docs.clevertap.com/cdn-cgi/l/email-protection#8fffeefdfbe1eafda2e6e1fbeae8fdeefbe6e0e1fccfece3eaf9eafdfbeeffa1ece0e2)
> to include their names in the supported provider's list.
Supported Business Service Providers
[](https://docs.clevertap.com/docs/generic-whatsapp#supported-business-service-providers)
----------------------------------------------------------------------------------------------------------------------------------
The following Business Service Providers have built ready-to-use WhatsApp integration with CleverTap using CleverTap's generic integration.
* [Exotel](https://docs.clevertap.com/docs/exotel-whatsapp)
* [Haptik](https://docs.clevertap.com/docs/haptik)
* [Kaleyra](https://docs.clevertap.com/docs/kaleyra)
You can use this generic API documentation for other providers to establish an integration between CleverTap and your business service provider. Alternatively, you can ask your provider to create a ready-to-use integration with CleverTap based on this documentation.
Partner Acceptance Criteria
[](https://docs.clevertap.com/docs/generic-whatsapp#partner-acceptance-criteria)
----------------------------------------------------------------------------------------------------------------
Any WhatsApp partner can integrate with our open APIs. However, to become a supported partner with CleverTap, they must share the following with CleverTap:
* Production API endpoint for sending Template and Freeform notifications via a single endpoint.
* Production API credentials for two test accounts so the CleverTap team can test the integration.
* Providers must provide dashboard access so the CleverTap team can create or share approved templates to test the campaign flow.
* Providers must add CleverTap's callback URL to the test accounts. This helps CleverTap check whether the callbacks are received in the correct format.
* Providers are required to publish a CleverTap integration guide in their user documentation. This will enable CleverTap to cross-reference the integration guide from our documents.
* Partners must provide the contact details of their dedicated support and product team so that CleverTap can contact them in case of any issues.
* Providers must support a minimum of 1500 concurrent API requests for each customer using the integration.
* Partners must test integration with a few customers at scale.
* Partners are responsible for maintaining the integration and proactively resolving any issues.
Test Partner Integration
[](https://docs.clevertap.com/docs/generic-whatsapp#test-partner-integration)
==========================================================================================================
Partners must test their integration in the CleverTap sandbox environment to validate message delivery, callbacks, and two-way communication. The following steps outline the required configuration and testing flow.
* Any partner can request access to the CleverTap sandbox account by writing to our partnership teams.
* Partners must develop the middleware connecting CleverTap and their platform. This should enable partners to receive message payloads (both freeform and template messages) from CleverTap and send the Delivery Receipts (DLRs) and Incoming Message Opt-Out (IMO)Callback per the payload structure published by CleverTap.
* Partners must save their messaging endpoints in the CleverTap sandbox account and configure CleverTap DLR and incoming message [callback URLs](https://docs.clevertap.com/docs/generic-whatsapp#2-set-up-clevertap-callbacks-with-provider)
at their end. This requires that partners accept our endpoint [validation payload](https://docs.clevertap.com/docs/generic-whatsapp#validation-payload-1)
and return a \[200 OK\] success API response.
* Partners must [save the template](https://docs.clevertap.com/docs/haptik#adding-message-template)
and send a test notification to ensure template messages are delivered to the end user.
* Once the messaging endpoints and templates have been saved and tested successfully, the partner can [create a WhatsApp campaign](https://docs.clevertap.com/docs/create-message-whatsapp)
. The campaigns must target a large user base to scale-test the integration.
* Once the Campaign has been published and completed successfully, check the [WhatsApp campaign stats](https://docs.clevertap.com/docs/whatsapp-stats)
and ensure the following:
* Sent, Delivered, and Viewed counts are captured successfully and match your platform count.
* The campaign error count is per expectation, and errors are categorized correctly.
* Test campaigns for different combinations of templates, such as media headers, footers, CTA, quick replies, and so on. This test is required to ensure that all templates are working as expected.
* Once the campaign has been tested successfully, go to [conversations](https://docs.clevertap.com/docs/conversations)
and check whether incoming responses are being shown correctly for all the users who are replying.
* Respond to users from [agent chat](https://docs.clevertap.com/docs/conversations#role-based-access-agent-role)
with different combinations ( text, media, location, documents, and so on) and check whether the messages are being delivered to end users correctly.
* Similarly, to the previous step, send different types of messages from end-user devices on WhatsApp and check whether all messages are being captured and shown in CleverTap conversations.
Troubleshooting and FAQs for Generic Integration
[](https://docs.clevertap.com/docs/generic-whatsapp#troubleshooting-and-faqs-for-generic-integration)
==========================================================================================================================================================
These are some of the frequent issues that partners usually face when testing the integration.
Q. Provider setting is not being saved in the CleverTap dashboard
[](https://docs.clevertap.com/docs/generic-whatsapp#q-provider-setting-is-not-being-saved-in-the-clevertap-dashboard)
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Whenever a provider setting is saved in the CleverTap dashboard, we send out a [dummy messaging payload](https://docs.clevertap.com/docs/generic-whatsapp#validation-payload-1)
to verify that your endpoint is up and returning a success response. If we do not receive the expected success response within one second, we display an error showing the API request and response received from your endpoint.
 Failed API response
Partners can use the request shown in the above pop-up in Postman to debug the issue further.
Q. Why am I unable to save the templates in the CleverTap dashboard?
[](https://docs.clevertap.com/docs/generic-whatsapp#q-why-am-i-unable-to-save-the-templates-in-the-clevertap-dashboard)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
CleverTap validates the Template that is saved in the dashboard by trying to deliver the Template message to a dummy number. This is required to ensure that customers don't save the incorrect templates and run into issues later when creating an actual campaign. To validate the Templates, we send the payload according to the template saved to the message endpoint which is saved in provider settings. If we receive the success response from the partner's endpoint within a second, we save the templates else, we display an error showing the request body and the API response.

Partners can use the request body in Postman to debug the issue in detail at their end.
Q. Why is the Template Message not being delivered to the end user ?
[](https://docs.clevertap.com/docs/generic-whatsapp#q-why-is-the-template-message-not-being-delivered-to-the-end-user-)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
CleverTap is only responsible for sending the messaging payloads to the partners. Final delivery is owned by partners. Check the messaging payload received at the partner's end & ask them to resolve the issue. Having mentioned this, there could be many issues for messaging not delivering to end users, such as Template mismatch, Template deleted, or paused by META, and so on. To eliminate this issue as a possible cause, try different templates.
If none of the templates are being delivered, then this might happen because of integration issues. Partners can get the template payload by [testing the templates](https://docs.clevertap.com/docs/haptik#testing-a-message-template)
and comparing the payload to find the mismatch and resolve the issue.
Q. Getting lots of generic miscellaneous errors in the campaign
[](https://docs.clevertap.com/docs/generic-whatsapp#q-getting-lots-of-generic-miscellaneous-errors-in-the-campaign)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Generic miscellaneous errors in the campaign come primarily for three reasons.
* We received the error code **2004** in response to the messaging API request.
* We received the error code **1009** in the status callback.
* Messaging API requests timed out because we didn't receive the API success response within the defined timeout limits(one second). This usually happens when Partner's API endpoint cannot support the concurrency limit at which CleverTap sends the messaging requests.
Q. Why is the incoming response not recorded?
[](https://docs.clevertap.com/docs/generic-whatsapp#q-why-is-the-incoming-response-not-recorded)
--------------------------------------------------------------------------------------------------------------------------------------------------
Two issues can cause this:
* The phone number used to send the WhatsApp message has never been targeted via CleverTap's WhatsApp campaigns. Create a sample campaign for the number that sends incoming messages.
* Incoming message callbacks are not coming in expected callback formats. Test with our [sample payload](https://docs.clevertap.com/docs/generic-whatsapp#api-payload-for-template-message)
.
Q. Why is the WhatsApp campaign not live?
[](https://docs.clevertap.com/docs/generic-whatsapp#q-why-is-the-whatsapp-campaign-not-live)
------------------------------------------------------------------------------------------------------------------------------------------
Check that the account is not dormant. A dormant account is an account that does not receive any data for more than 15 days. [Upload a sample event](https://developer.clevertap.com/docs/upload-events-api#overview)
to resume using the account.
CleverTap marks an account as dormant if the account does not receive any data in 15 days. Campaigns will not go live in the dormant account because there is no data to target. To activate the account, partners must [Upload a sample event](https://developer.clevertap.com/docs/upload-events-api#overview)
.
Q. Why don't I have access to WhatsApp campaigns & conversations?
[](https://docs.clevertap.com/docs/generic-whatsapp#q-why-dont-i-have-access-to-whatsapp-campaigns--conversations)
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Enable the WhatsApp Connect Add-on and contact us at [\[email protected\]](https://docs.clevertap.com/cdn-cgi/l/email-protection#fc8c9d8e8892998ed1959288999b8e9d889593928fbc9f90998a998e889d8cd29f9391)
.
Q. Why don't I have access to campaigns creation?
[](https://docs.clevertap.com/docs/generic-whatsapp#q-why-dont-i-have-access-to-campaigns-creation)
---------------------------------------------------------------------------------------------------------------------------------------------------------
Before creating a campaign to target users, you must have a few users already added to your CleverTap project. If there are no users added to your project, you will see the following screen when you try to access the campaigns:
 Campaigns First Time Screen
There are multiple ways to add users to a CleverTap project.
1. **Via CSV upload**: CSV uploads are easy way to add test users in a CleverTap Project. The following are the conditions for updating the flags:
1. The objectId or identity must be the first column in the uploaded CSV file.
2. The Phone column is mandatory, and phone numbers must have the country code. For example, +14155551234.
Following is a table that displays the CSV columns:
| Identity | Email | Phone | MSG-whatsapp | MSG-sms |
| --- | --- | --- | --- | --- |
| [\[email protected\]](https://docs.clevertap.com/cdn-cgi/l/email-protection#670d080f0949030802270d080f090308024904080a) | | +14155551234 | TRUE | TRUE |
| 14155551235 | | | TRUE | TRUE |
| 14155551234 | | +14155551234 | TRUE | TRUE |
| 234853412 | [\[email protected\]](https://docs.clevertap.com/docs/generic-whatsapp) | +14155551234 | TRUE | TRUE |
2. **Via User upload APIs** CleverTap offers APIs that enable you to send the values of subscription flags programmatically. This method is useful for automating the subscription management process and integrating CleverTap with your existing systems. For more information, see [upload user profiles](https://developer.clevertap.com/docs/upload-user-profiles-api)
. Following is an example of subscribing a user for WhatsApp messaging:
**Base URLs**
Here is an example base URL for an account in the India region:
[https://in1.api.clevertap.com/1/upload](https://in1.api.clevertap.com/1/upload)
| Region | API Endpoint |
| --- | --- |
| India | in1.api.clevertap.com |
| Singapore | sg1.api.clevertap.com |
| United States | us1.api.clevertap.com |
| Indonesia | aps3.api.clevertap.com |
| Middle East (UAE) | mec1.api.clevertap.com |
| Europe (default region) | api.clevertap.com |
**Headers**
The API headers are used while processing the API request. The following headers are required when you use CleverTap APIs:
The X-CleverTap-Account-Id and X-CleverTap-Passcode authenticate the request.
| Header | Description | Type | Example Value |
| --- | --- | --- | --- |
| X-CleverTap-Account-Id | Your CleverTap Account ID | string | "X-CleverTap-Account-Id: ACCOUNT\_ID" |
| X-CleverTap-Passcode | Your CleverTap Account Passcode. | string | "X-CleverTap-Passcode: PASSCODE" |
| Content-Type | Request content-type is always set to application/json. | string | "Content-Type: application/json" |
Refer to the [API Authentication](https://developer.clevertap.com/docs/authentication)
to obtain the header values. To understand the common queries and concerns related to CleverTap APIs, refer to [API FAQs](https://developer.clevertap.com/docs/api-faqs)
.
**Sample JSON Payload**
Following is a sample JSON payload to upload a user profile:
JSON
{
"d": [\
{\
"identity": "1189549", \
"type": "profile",\
"profileData": {\
"Name": "Jack Montana",\
"Email": "[email protected]",\
"Phone": "+14155551234",\
"Gender": "M",\
"MSG-sms": true,\
"MSG-email":true,//called when email must be subscribed \
"MSG-whatsapp": true,\
"Customer Type": "internal test user"\
}\
}\
]
}
To know more about user upload APIs, refer to [Upload User Profiles](https://developer.clevertap.com/docs/upload-user-profiles-api)
.
Integration Steps for CleverTap Customers using Generic Integration
[](https://docs.clevertap.com/docs/generic-whatsapp#integration-steps-for-clevertap-customers-using-generic-integration)
================================================================================================================================================================================================
CleverTap Customers must get endpoint and authentication details from their WhatsApp providers before starting the integrations.
> 📘
>
> ###
>
> Note
>
> [](https://docs.clevertap.com/docs/generic-whatsapp#note)
>
> 1. BSPs might have a dedicated endpoint (different from their standard endpoint) for CleverTap integration. Given this, you must get the API details for CleverTap integration from your provider.
> 2. Please note that your WhatsApp providers are responsible for final message delivery and sending DLR and IMOs back to Clevertap. In case of any issue with these, You will have to ask your providers to resolve these issues.
This process involves the following steps:
1. [Set Up WhatsApp Provider In CleverTap Dashboard](doc:generic-whatsapp#1-set-up-whatsapp-provider-in-clevertap-dashboard)
2. [Set Up CleverTap Callbacks with Provider](doc:generic-whatsapp#2-set-up-clevertap-callbacks-with-provider)
3. [Adding Message Template](doc:generic-whatsapp#3-adding-message-template)
4. [Create a Campaign](doc:generic-whatsapp#4-create-a-campaign)
5. [Creating a Journey](doc:generic-whatsapp#5-creating-a-journey)
1\. Set Up WhatsApp Provider In CleverTap Dashboard
[](https://docs.clevertap.com/docs/generic-whatsapp#1-set-up-whatsapp-provider-in-clevertap-dashboard)
--------------------------------------------------------------------------------------------------------------------------------------------------------------
To configure the CleverTap dashboard:
1. Navigate to _Settings_ > _Channels_ > _WhatsApp_\> _WhatsApp Connect_ from the CleverTap dashboard.
2. Click **\+ Add Provider** and select Generic (Other) from the dropdown.
 Add a WhatsApp Provider
3. Enter the following details:
| Field | Description |
| --- | --- |
| Provider | Select _Other (Generic)_ from the dropdown list. |
| Nickname | Enter the nickname <10-digit phone number> for easy reference. |
| Mobile Number | Enter your phone number onboarded to WhatsApp API by your BSP. |
| Request Type | Ensure the Request Type is _Post_. |
| HTTP Endpoint | Enter HTTP Endpoint as provided by your BSP. |
| Authentication | Select _Basic Authentication_ and enter the _Username_ and _Password_ for the user. |
| Delivery Report Callback URL | This URL is generated automatically. Share the URL with your BSP account manager. It is your BSP's responsibility to integrate this URL in their dashboard. |
| Inbound Message Callback URL | This URL is generated automatically. Share the URL with your BSP account manager. It is your BSP's responsibility to integrate this URL in their dashboard. |
4. (Optional) Select _Mark this as default_ to make this service provider the default provider to send a WhatsApp message.
5. (Optional) Select _Set auto-reply for users not tracked on CleverTap_ to automatically reply to users who message on WhatsApp but are not tracked on the CleverTap dashboard.
6. (Optional) You can set the _Maximum Concurrent API requests_ anywhere between 30 to 1000 requests. Consider your requirements and the provider's limitations to define this value.
7. Send a Test WhatsApp notification:
 Send a Test WhatsApp Message
8. Click **Save** to save the details.
2\. Set Up CleverTap Callbacks with Provider
[](https://docs.clevertap.com/docs/generic-whatsapp#2-set-up-clevertap-callbacks-with-provider)
------------------------------------------------------------------------------------------------------------------------------------------------
You can find the Callback URLs on the CleverTap dashboard under the Provider _Setup_ page. Naviagte to _Settings_ > _Channels_ > _WhatsApp_ .
To set up the CleverTap callbacks, share the following with your BSP account manager:
* Delivery Report Callback URL
* Inbound Message Callback URL
* The WhatsApp phone number that will be used in CleverTap
 Callback URLs
3\. Adding Message Template
[](https://docs.clevertap.com/docs/generic-whatsapp#3-adding-message-template)
--------------------------------------------------------------------------------------------------------------
To create WhatsApp campaigns, you must have pre-approved WhatsApp message templates saved in the CleverTap dashboard. To add the message templates:
1. Navigate to _Settings_ > _Channels_ > _WhatsApp_ > _WhatsApp Connect_ >_Provider Nickname_ from the CleverTap dashboard.
2. Select the _Templates_ option, and click **+Template**.
For more information, refer to adding a [generic message template](https://docs.clevertap.com/docs/haptik#adding-message-template)
###
Import Templates
[](https://docs.clevertap.com/docs/generic-whatsapp#import-templates)
The Import Template functionality allows importing WhatsApp message templates from a vendor into CleverTap without manually recreating them. This eliminates the need to duplicate template content field by field and helps reduce errors caused by formatting mismatches.
The import will be successful only if the vendor supports template import functionality. In such cases, the vendor will provide the required API endpoint, authentication credentials, and additional configuration details such as import limits and click-tracking domains.
Imported templates must follow [Meta’s template import format](https://developers.facebook.com/docs/whatsapp/business-management-api/message-templates/#best-practices-for-marketing-templates)
. To set up the import, configure the following fields:
1. Navigate to _Settings_ > _Channels_ > _WhatsApp_ > _WhatsApp Connect_ >_\+ Provider Configuration_ from the CleverTap dashboard.
2. Select _Generic (other)_ from the list, and then select the **Template import setup** check box.  Import Template
3. Select _Request Type_: Select **GET** from the _Request Type_ list. This is the supported method for importing templates via an external endpoint.
4. Specify _HTTP Endpoint_: Enter the _HTTP endpoint_ URL provided by the vendor. This is the URL to which CleverTap will send the **GET** request to fetch the templates for import. CleverTap expects the vendor to return a response that matches this structure exactly. The following is an example of the request and response formats:
**API Call Example**:
JSON
curl --location 'https://vendor-api.XXXX.com/templates/import?limit=50' \
--header 'Authorization: Bearer ********************'
**Second Request**: If the number of templates exceeds the defined limit, CleverTap uses the `after` cursor returned in the first response to fetch the next batch of templates. This ensures all available templates are retrieved in sequential pages.
JSON
curl --location 'https://vendor-api.XXXX.com/templates/import?limit=500&after=MgZDZD"' \
--header 'Authorization: Bearer ********************'
**Expected Response for Basic Template**:
JSON
{
"data": [\
{\
"name": "dashboard_track_order",\
"message_send_ttl_seconds": 30,\
"previous_category": "MARKETING",\
"parameter_format": "POSITIONAL",\
"components": [\
{\
"type": "BODY",\
"text": "Hey {{1}}, Your order is out for delivery. Track your order here",\
"example": {\
"body_text": [\
["Sample"]\
]\
}\
},\
{\
"type": "BUTTONS",\
"buttons": [\
{\
"type": "URL",\
"text": "Track Order",\
"url": "https://XXXX/{{1}}",\
"example": ["https://XXXX/test"]\
}\
]\
}\
],\
"language": "en",\
"status": "APPROVED",\
"category": "UTILITY",\
"id": "83383905XXXX"\
}\
],
"paging": {
"cursors": {
"before": "MAZDZD",
"after": "MgZDZD"
},
"next": "https://vendor-api.XXXX.com/templates/import?limit=500&after=MgZDZD"
}
}
**Expected Response for LTO Templates**:
JSON
{
"data": [\
{\
"name": "lto_template_import",\
"message_send_ttl_seconds": 86400,\
"parameter_format": "POSITIONAL",\
"components": [\
{\
"type": "HEADER",\
"format": "VIDEO",\
"example": {\
"header_handle": [\
"https://XXXXXX/v/t61.29466-34/XXXX.mp4"\
]\
}\
},\
{\
"type": "BODY",\
"text": "Celebrate Diwali with a sparkle!\nHey {{1}},\nOur exclusive Diwali Sale is here for a limited time—enjoy massive discounts on your favorite products. Don't miss your chance to brighten up your celebrations and save big. Shop now before the best deals disappear. Explore the Diwali magic with us—tap to unlock your special offer.",\
"example": {\
"body_text": [\
["sample"]\
]\
}\
},\
{\
"type": "LIMITED_TIME_OFFER",\
"limited_time_offer": {\
"text": "Buy Now",\
"has_expiration": true\
}\
},\
{\
"type": "BUTTONS",\
"buttons": [\
{\
"type": "COPY_CODE",\
"text": "Copy offer code",\
"example": ["HAPPYDIWALI"]\
},\
{\
"type": "URL",\
"text": "Dynamic Button",\
"url": "https://XXXX/{{1}}",\
"example": ["https://XXXX/test"]\
},\
{\
"type": "URL",\
"text": "Click tracking",\
"url": "https://XXXX/{{1}}",\
"example": ["https://XXXX/test"]\
},\
{\
"type": "PHONE_NUMBER",\
"text": "Call us",\
"phone_number": "+91XXXXXXX"\
},\
{\
"type": "QUICK_REPLY",\
"text": "Show More"\
},\
{\
"type": "QUICK_REPLY",\
"text": "Coupon Code"\
},\
{\
"type": "QUICK_REPLY",\
"text": "STOP"\
}\
]\
}\
],\
"language": "en",\
"status": "APPROVED",\
"category": "MARKETING",\
"id": "27152845XXXX"\
}\
],
"paging": {
"cursors": {
"before": "MAZDZD",
"after": "MgZDZD"
},
"next": "https://vendor-api.XXXX.com/templates/import?limit=500&after=MgZDZD"
}
}
**Expected Response for Carousel Template**
JSON
{
"data": [\
{\
"name": "carousel_test_01",\
"message_send_ttl_seconds": 54000,\
"parameter_format": "POSITIONAL",\
"components": [\
{\
"type": "BODY",\
"text": "hello {{1}}, Welcome to CleverTap",\
"example": {\
"body_text": [\
[\
"Deepa"\
]\
]\
}\
},\
{\
"type": "CAROUSEL",\
"cards": [\
{\
"components": [\
{\
"type": "HEADER",\
"format": "VIDEO",\
"example": {\
"header_handle": [\
"https://XXXXXX/v/t61.29466-34/XXXX.mp4"\
]\
}\
},\
{\
"type": "BODY",\
"text": "dsd"\
},\
{\
"type": "BUTTONS",\
"buttons": [\
{\
"type": "URL",\
"text": "dsds",\
"url": "http://www.example.com/"\
}\
]\
}\
]\
},\
{\
"components": [\
{\
"type": "HEADER",\
"format": "VIDEO",\
"example": {\
"header_handle": [\
"https://XXXXXX/v/t61.29466-34/XXXX.mp4"\
]\
}\
},\
{\
"type": "BODY",\
"text": "dsd"\
},\
{\
"type": "BUTTONS",\
"buttons": [\
{\
"type": "URL",\
"text": "dsds",\
"url": "http://www.example.com/"\
}\
]\
}\
]\
}\
]\
}\
],\
"language": "bg",\
"status": "APPROVED",\
"category": "MARKETING",\
"id": "1498361544XXXXXX"\
}\
],
"paging": {
"cursors": {
"before": "MAZDZD",
"after": "MgZDZD"
},
"next": "https://vendor-api.XXXX.com/templates/import?limit=500&after=MgZDZD"
}
}
5. Specify _Import Limits & Pagination_: Define the number of templates to retrieve in each request (recommended: 50 to 500) and configure how pagination is handled. Vendors may use page numbers, cursors, or tokens to return additional results. These values are provided by the vendor and must be configured accurately to ensure full template retrieval.
6. Configure _Authentication_ (optional): Add the appropriate authentication headers if the vendor’s API requires authorization. CleverTap supports Basic Authentication and custom header-based tokens. For more details on authentication methods (including _Basic Authentication_), refer to the [Set Up Webhooks documentation](https://docs.clevertap.com/docs/setup-webhooks#basic-authentication)
.
7. Set _Track Clicks_ (optional): This field enables click tracking on imported templates that contain buttons using a click-tracking domain. Since Meta does not natively support click tracking, vendors may implement it by using a dynamic button configured with a custom tracking domain.
If the vendor supports click tracking through such a solution, provide the relevant domain in this field. During import, CleverTap will identify templates containing this domain and tag the associated buttons for click tracking. For more information, refer to the [Click Tracking section in WhatsApp Stats](https://docs.clevertap.com/docs/whatsapp-stats#clicked)
.
8. Once the configuration is complete and saved, navigate to the _Templates_ tab.
4\. Create a Campaign
[](https://docs.clevertap.com/docs/generic-whatsapp#4-create-a-campaign)
--------------------------------------------------------------------------------------------------
To create a WhatsApp campaign using your BSP as the provider, refer to [Create a WhatsApp Campaign](doc:whatsapp#section-creating-a-whatsapp-campaign)
for detailed instructions. If your users reply to notifications sent from CleverTap, incoming messages appear under the _Conversation_ section of the dashboard. Businesses can reply to incoming messages by selecting the chat.
5\. Creating a Journey
[](https://docs.clevertap.com/docs/generic-whatsapp#5-creating-a-journey)
----------------------------------------------------------------------------------------------------
To create a WhatsApp journey using Infobip as the provider, refer to [Create a WhatsApp Journey](doc:engagement-nodes-whatsapp)
for detailed instructions.
Generic WhatsApp Integration Terminology
[](https://docs.clevertap.com/docs/generic-whatsapp#generic-whatsapp-integration-terminology)
==========================================================================================================================================
Messaging API Endpoint
[](https://docs.clevertap.com/docs/generic-whatsapp#messaging-api-endpoint)
------------------------------------------------------------------------------------------------------
BSPs are requested to create an endpoint where CleverTap can send the notification payload for campaigns and free-form messages. Customers must ask BSPs to share the API endpoint that can accept the CleverTap Payload to save the provider in CleverTap Dashboard.
API Authentication
[](https://docs.clevertap.com/docs/generic-whatsapp#api-authentication)
----------------------------------------------------------------------------------------------
The CleverTap's REST API supports basic authentication or custom headers for authentication. Providers must share these credentials with customers so that customers can save these credentials with an endpoint.
IMO(Incoming Message) & DLR (Status) Callbacks
[](https://docs.clevertap.com/docs/generic-whatsapp#imoincoming-message--dlr-status-callbacks)
-------------------------------------------------------------------------------------------------------------------------------------------------
CleverTap creates unique DLR callbacks for each customer. WhatsApp providers/customers have to configure the [DLR and IMO](https://docs.clevertap.com/docs/generic-whatsapp#message-status-callbacks)
callbacks at their end to send the Messages status and incoming messages to CleverTap. Status and incoming messages will only be captured if these are sent in CleverTap's expected payload structure.
Template Message Payload
[](https://docs.clevertap.com/docs/generic-whatsapp#template-message-payload)
----------------------------------------------------------------------------------------------------------
CleverTap has published the [Template Message payload formats](https://docs.clevertap.com/docs/generic-whatsapp#api-payload-for-template-message)
that will be sent to messaging endpoint whenever a template message is sent from CleverTap Dashboard.
Freeform Message Payload
[](https://docs.clevertap.com/docs/generic-whatsapp#freeform-message-payload)
----------------------------------------------------------------------------------------------------------
CleverTap has published the [Freeform Messsage payload formats](https://docs.clevertap.com/docs/generic-whatsapp#api-payload-for-freeform-message)
that will be sent to messaging endpoint whenever a freeform message is sent from CleverTap Dashboard.
Validation Payload
[](https://docs.clevertap.com/docs/generic-whatsapp#validation-payload)
----------------------------------------------------------------------------------------------
CleverTap sends a [dummy message payload API endpoint](https://docs.clevertap.com/docs/generic-whatsapp#validation-payload-1)
, and credentials are configured in the CleverTap dashboard. This is required since at the time of saving provider in CleverTap doesn't have templates to test the credentials.
API Concurrency
[](https://docs.clevertap.com/docs/generic-whatsapp#api-concurrency)
----------------------------------------------------------------------------------------
By default, CleverTap hits the generic messaging API endpoint at 1500 concurrency ie. 1500 concurrent messaging requests are sent to messaging endpoint whenever a campaign is created in the CleverTap dashboard.
Messaging & Callback Payloads
[](https://docs.clevertap.com/docs/generic-whatsapp#messaging--callback-payloads)
===================================================================================================================
Messaging API Specification
[](https://docs.clevertap.com/docs/generic-whatsapp#messaging-api-specification)
----------------------------------------------------------------------------------------------------------------
CleverTap sends outbound message payloads into two categories:
* Templates messages: These are preapproved messages templates needed to initiate a conversation with conversation.
* Freeform messages: These are free text messages that can be sent to end user in response to their incoming messages.
CleverTap sends either of the payloads depending on the type of message sent by the dashboard user. CleverTap sends the`isTemplate` key to helping BSPs understand whether this is a templatized message or a freeform message.
> 📘
>
> ###
>
> Single Endpoint
>
> [](https://docs.clevertap.com/docs/generic-whatsapp#single-endpoint)
>
> CleverTap does not support different endpoints for different types of messages, so BSPs must provide just one endpoint to process freeform and template messages.
###
API Payload for Template Message
[](https://docs.clevertap.com/docs/generic-whatsapp#api-payload-for-template-message)
CleverTap sends this payload for sending the template message notification.
The outgoing template message payload can be broken down into the following three sections:
* User & notification information
* Template information includes template name, namespace, template language, and so on.
* Content information
> 📘
>
> ###
>
> Payload Essentials
>
> [](https://docs.clevertap.com/docs/generic-whatsapp#payload-essentials)
>
> The message payload is encoded into UTF-8 (Unicode Transformation Format) before being sent to the provider's endpoint.
>
> Values with $$ ($$To,$$BusinessWabaNumber) are dynamic values and change for each request.
>
> CleverTap does not support templates with contacts currently, so contact objects are not sent with payload.
>
> CleverTap does not support Name, Address, or URL key in location object.
>
> `msg_id` is a unique parameter for each message sent from CleverTap and must be present in callbacks sent by BSP to CleverTap.
####
Payload Description for Template Message
[](https://docs.clevertap.com/docs/generic-whatsapp#payload-description-for-template-message)
| Parameter | Description | Data Type | Example Values |
| --- | --- | --- | --- |
| payloadVersion | Version of the payload being used. | Float | 0.1 |
| to | Recipient's phone number | String | "919876543210", "+919876543210" |
| wabaNumber | WhatsApp Business Account number | String | "1234567890" |
| isTemplate | Indicates if the message is a template | Boolean | TRUE |
| msgId | Unique identifier for the message | String | "i\|campaignID\|batchID\|j\|campaign\_variant" |
| template.namespace | Identifier for the template in CleverTap Dashboard | String | "my\_template\_namespace" |
| template.languageCode | Language and locale code for the template | String | "en\_US" |
| components.type | Type of component, like header, body, button, and so on. | String | "header", "body", "button" |
| header.type | Type of header like text, video, image, file, location | String | "text", "video", "image", "file", "location" |
| header.text.text | Text content for text header | String | "Hello, World!" |
| header.video.mediaURL | URL to the video media file | String | [http://example.com/video.mp4](http://example.com/video.mp4) |
| header.image.mediaURL | URL to the image media file | String | [http://example.com/image.jpg](http://example.com/image.jpg) |
| header.file.mediaURL | URL to the file media | String | [http://example.com/document.pdf](http://example.com/document.pdf) |
| header.file.filename | Filename for the file | String | "document.pdf" |
| header.location.longitude | Longitude for location header | String | "74.0060" |
| header.location.latitude | Latitude for location header | String | "40.7128" |
| header.location.name | Name for the location | String | "Central Park" |
| header.location.address | Address for the location | String | "New York, NY 10024" |
| body.text | Body text of the message | String | "Your order is ready for pickup." |
| footer | Footer text for the message | String | "Thank you for choosing us!" |
| button.subType | Specific type of button like dynamicUrl, staticUrl, quickReply, callPhone | String | "dynamicUrl", "staticUrl" |
| button.buttonText | Text displayed on the button | String | "Click Here", "Copy Offer Code" |
| button.index | Position of the button | Integer | 1, 2 |
| button.parameters | Parameters for the button, like URL suffix, phone number, and so on. | Array | Depends on button.type |
| customProps | Custom key-value pairs defined at the time of creating campaigns | Array | \[
{
"key1": "Value1"
},
{
"Key2": "Value2"
}
\] |
####
Payload Samples for Template Message
[](https://docs.clevertap.com/docs/generic-whatsapp#payload-samples-for-template-message)
Text Template with FooterImage Template with Dynamic URL CTA buttonsSimple Text TemplateMedia TemplateLimited Time Offer TemplateMulti Button TemplatesCarousel TemplateTemplate with Custom Key-Value
{
"payloadVersion":0.1,
"to": "919999999999",
"wabaNumber": "91999999XXXX",
"isTemplate": true,
"msgId": "25596363|1639561857|20220227|25596363",
"template": {
"namespace": "Namespace:sample",
"languageCode":"en(uk)"
},
"components": [\
\
{\
"type": "body",\
"body": {\
"text":"This is sample body",\
"parameters": [\
{\
"type": "text",\
"text": "Sample"\
}\
]}},\
{\
"type": "footer",\
"footertext":"this is footer"\
\
}\
]}
{
"payloadVersion": 0.1,
"to": "919999999999",
"wabaNumber": "919999999999",
"isTemplate": true,
"msgId": "i|campaignID|batchID|j",
"template": {
"namespace": "Namespace:sample",
"languageCode": "en"
},
"components": [\
{\
"type": "header",\
"header": {\
"type": "image",\
"image": {\
"mediaURL": "httpa://www.example.com/image.png"\
}\
}\
},\
{\
"type": "body",\
"body": {\
"text": "This is sample body",\
"parameters": [\
{\
"type": "text",\
"text": "sample"\
}\
]\
}\
},\
{\
"type": "button",\
"index": 0,\
"subType": "dynamicUrl",\
"buttonText": "Sample CTA TEXT",\
"parameters": [\
{\
"type": "text",\
"text": "https://www.example.com"\
}\
]\
}\
]
}
{
"payloadVersion": 0.1,
"to": "+9199XXXXXXX",
"wabaNumber": "+91999999999",
"isTemplate": true,
"msgId": "1|2|3|4|5",
"template": {
"namespace": "Sample_Template",// Template name saved in CleverTap Dashboard
"languageCode": "en(UK)"
},
"components": [\
\
{\
"type": "body",\
"body": {\
"text": "Hey User, This is Body",\
"parameters": [\
{\
"type": "text",\
"text": "user"\
}\
]\
}\
}\
]
}
{
"payloadVersion": 0.1,
"to": "+9199XXXXXXX",
"wabaNumber": "+91999999999",
"isTemplate": true,
"msgId": "1|2|3|4|5",
"template": {
"namespace": "Sample_Template",// Template name saved in CleverTap Dashboard
"languageCode": "en(UK)"
},
"components": [\
{\
"type": "header",\
"header": {\
"type": "image",\
"image": {\
"mediaURL": "example.com/image.png"\
}\
}\
\
{\
"type": "body",\
"body": {\
"text": "Hey User, This is Body",\
"parameters": [\
{\
"type": "text",\
"text": "user" \
}\
]\
}\
},\
{ \
"type": "button",\
"index": 0,\
"subType": "dynamicUrl",\
"buttonText": "Check-out cart",\
"parameters": [\
{\
"type": "text",\
"text": "cart"\
}\
]\
},\
{\
"type": "button",\
"index": 0,\
"subType": "callPhone",\
"buttonText": "Call support",\
"parameters": [\
{\
"type": "text",\
"text": "+91994876856"\
}\
]\
}\
]
}
{
"payloadVersion": 0.1,
"wabaNumber": "919999999999",
"to": "+919999999244",
"isTemplate": true,
"template": {
"namespace": "Test_template",
"languageCode": "en"
},
"components": [\
{\
"type": "header",\
"header": {\
"type": "image",\
"image": {\
"mediaURL": "https://hatrabbits.com/wp-content/uploads/2017/01/random.jpg"\
}\
}\
},\
{\
"type": "body",\
"body": {\
"text": "Hey 0, Welcome to CleverTap.",\
"parameters": [\
{\
"type": "text",\
"text": "0"\
}\
]\
}\
},\
{\
"type": "limited_time_offer",\
"text": "Buy 1 Get 1 Free",\
"parameters": [\
{\
"type": "limited_time_offer",\
"limited_time_offer": {\
"expiration_time_ms": 1712081380237\
}\
}\
]\
},\
{\
"type": "button",\
"index": 0,\
"buttonText": "Copy offer code",\
"subType": "copy_code",\
"parameters": [\
{\
"type": "coupon_code",\
"coupon_code": "SAMPLECODE"\
}\
]\
},\
{\
"type": "button",\
"index": 1,\
"buttonText": "Check Out Now",\
"subType": "dynamicUrl",\
"parameters": [\
{\
"type": "text",\
"text": "0"\
}\
]\
},\
{\
"type": "button",\
"index": 2,\
"buttonText": "Call support",\
"subType": "callPhone",\
"parameters": [\
{\
"type": "text",\
"text": "+91999999999"\
}\
]\
},\
{\
"type": "button",\
"index": 3,\
"buttonText": "Yes",\
"subType": "quickReply"\
},\
{\
"type": "button",\
"index": 4,\
"buttonText": "No",\
"subType": "quickReply"\
},\
{\
"type": "button",\
"index": 5,\
"buttonText": "Show More",\
"subType": "quickReply"\
}\
],
"msgId": "0|0|0|0"
}
{
"payloadVersion": 0.1,
"wabaNumber": "9407178156",
"to": "+9198574656",
"isTemplate": true,
"template": {
"namespace": "Test_Template",
"languageCode": "en"
},
"components": [\
{\
"type": "header",\
"header": {\
"type": "file",\
"file": {\
"mediaURL": "http://www.clevertap.com/~offer/pdf/new_offer.pdf",\
"filename": "New_offer"\
}\
}\
},\
{\
"type": "body",\
"body": {\
"text": "Hey 0, This is a test template",\
"parameters": [\
{\
"type": "text",\
"text": "0"\
}\
]\
}\
},\
{\
"type": "footer",\
"footer": "Please reply \"stop\" to optout"\
},\
{\
"type": "button",\
"index": 0,\
"buttonText": "Copy offer code",\
"subType": "copy_code",\
"parameters": [\
{\
"type": "coupon_code",\
"coupon_code": "SAMPLECODE"\
}\
]\
},\
{\
"type": "button",\
"index": 1,\
"buttonText": "Visit App",\
"subType": "dynamicUrl",\
"parameters": [\
{\
"type": "text",\
"text": "https://www.clevertap.com/{{1}}"\
}\
]\
},\
{\
"type": "button",\
"index": 2,\
"buttonText": "Check Out Now",\
"subType": "staticUrl",\
"parameters": [\
{\
"type": "text",\
"text": "https://www.clevertap.com"\
}\
]\
},\
{\
"type": "button",\
"index": 3,\
"buttonText": "Show more",\
"subType": "quickReply"\
},\
{\
"type": "button",\
"index": 4,\
"buttonText": "Not Now",\
"subType": "quickReply"\
},\
{\
"type": "button",\
"index": 5,\
"buttonText": "STOP",\
"subType": "quickReply"\
}\
],
"msgId": "0|0|0|0"
}
{
"payloadVersion": 0.1,
"wabaNumber": "+919930079420",
"to": "+91999645754",
"isTemplate": true,
"template": {
"namespace": "carousel_test_1",
"languageCode": "en"
},
"components": [\
{\
"type": "body",\
"body": {\
"text": "hello main body 0",\
"parameters": [\
{\
"type": "text",\
"text": "0"\
}\
]\
}\
},\
{\
"type": "carousel",\
"cards": [\
{\
"components": [\
{\
"type": "header",\
"header": {\
"type": "image",\
"image": {\
"mediaURL": "https://hatrabbits.com/wp-content/uploads/2017/01/random.jpg"\
}\
}\
},\
{\
"type": "body",\
"body": {\
"text": "Hello card1 0, how are you?? 1",\
"parameters": [\
{\
"type": "text",\
"text": "0"\
},\
{\
"type": "text",\
"text": "1"\
}\
]\
}\
},\
{\
"type": "button",\
"index": 0,\
"buttonText": "Shop Now",\
"subType": "dynamicUrl",\
"parameters": [\
{\
"type": "text",\
"text": "wa/5xu5auQ"\
}\
]\
},\
{\
"type": "button",\
"index": 1,\
"buttonText": "Dynamic",\
"subType": "dynamicUrl",\
"parameters": [\
{\
"type": "text",\
"text": "0"\
}\
]\
}\
]\
},\
{\
"components": [\
{\
"type": "header",\
"header": {\
"type": "image",\
"image": {\
"mediaURL": "https://hatrabbits.com/wp-content/uploads/2017/01/random.jpg"\
}\
}\
},\
{\
"type": "body",\
"body": {\
"text": "Hello card2 0, how are you?? 1",\
"parameters": [\
{\
"type": "text",\
"text": "0"\
},\
{\
"type": "text",\
"text": "1"\
}\
]\
}\
},\
{\
"type": "button",\
"index": 0,\
"buttonText": "Shop Now",\
"subType": "staticUrl",\
"parameters": [\
{\
"type": "text",\
"text": "https://www.clevertap.com"\
}\
]\
},\
{\
"type": "button",\
"index": 1,\
"buttonText": "Dynamic",\
"subType": "dynamicUrl",\
"parameters": [\
{\
"type": "text",\
"text": "0"\
}\
]\
}\
]\
}\
]\
}\
],
"msgId": "0|0|0|0"
}
{
"payloadVersion": 0.1,
"wabaNumber": "9407178156",
"to": "7658734869",
"isTemplate": true,
"template": {
"namespace": "sample_template",
"languageCode": "en"
},
"components": [\
{\
"type": "header",\
"header": {\
"type": "file",\
"file": {\
"mediaURL": "https://d1510fwumr3byl.cloudfront.net/dist/1400000001/i/f90291d5c12140b1b36a9047c407ad75.pdf?v=1724156050",\
"filename": "OctoberCM2"\
}\
}\
},\
{\
"type": "body",\
"body": {\
"text": "Hey User, This test templates",\
"parameters": [\
{\
"type": "text",\
"text": "User"\
}\
]\
}\
},\
{\
"type": "footer",\
"footer": "Please reply \"stop\" to optout"\
},\
{\
"type": "button",\
"index": 0,\
"buttonText": "Copy offer code",\
"subType": "copy_code",\
"parameters": [\
{\
"type": "coupon_code",\
"coupon_code": "BLACKFRIDAY20"\
}\
]\
},\
{\
"type": "button",\
"index": 1,\
"buttonText": "Visit App",\
"subType": "staticUrl",\
"parameters": [\
{\
"type": "text",\
"text": "https://www.clevertap.com"\
}\
]\
},\
{\
"type": "button",\
"index": 2,\
"buttonText": "Check Out Now",\
"subType": "staticUrl",\
"parameters": [\
{\
"type": "text",\
"text": "https://www.clevertap.com"\
}\
]\
},\
{\
"type": "button",\
"index": 3,\
"buttonText": "Show more",\
"subType": "quickReply"\
},\
{\
"type": "button",\
"index": 4,\
"buttonText": "Not Now",\
"subType": "quickReply"\
},\
{\
"type": "button",\
"index": 5,\
"buttonText": "STOP",\
"subType": "quickReply"\
},\
{\
"customProps": [\
{\
"Key1": "$$Value1"\
},\
{\
"key2": "$$Value2"\
}\
]\
}\
],
"msgId": "0|0|0|0"
}
API Payload for Freeform Message
[](https://docs.clevertap.com/docs/generic-whatsapp#api-payload-for-freeform-message)
--------------------------------------------------------------------------------------------------------------------------
CleverTap will send this payload for sending the Freeform message notification.
Freeform message API payload has the user information about the targetted users, media URLs, and text.
> 📘
>
> ###
>
> Payload Essentials
>
> [](https://docs.clevertap.com/docs/generic-whatsapp#payload-essentials-1)
>
> * Values with $$ (for example $$To,$$BusinessWabaNumber) are dynamic values and change for each request.
>
> * Dynamic Reply Button, interactive lists, and product catalog, contacts, and locations are not currently supported in the CleverTap platform. This is why these objects are not mentioned in the payload.
>
> * CleverTap does not support Name, Address, or URL key in location object.
>
> * `msg_id` is a unique parameter for each message sent from CleverTap and must be present in callbacks sent by BSP to CleverTap.
>
####
Payload Description for Freeform Message
[](https://docs.clevertap.com/docs/generic-whatsapp#payload-description-for-freeform-message)
| Parameter | Description | Example Value | | | |
| --- | --- | --- | --- | --- | --- |
| to | Targeted user’s phone number | 9199XXXXXXXX | | | |
| "payloadversion" | Version of the payload being sent to CleverTap | 0.1 | | | |
| wabaNumber | Business’s WABA number | 9189XXXXXXXX | | | |
| isTemplate | Used to highlight the whether the payload being sent is for templates or freeform | true/false | | | |
| msgId | Unique identifier for message being sent and expected to be present in callback payloads | 25596363\\ | 1639561857\\ | 20220227\\ | 25596363 |
| audio.mediaURL | Media URL of the file | [www.example.com/audio.mp3](http://www.example.com/audio.mp3) | | | |
| file.mediaURL | Media URL of the file | [www.example.com/document.pdf](http://www.example.com/document.pdf) | | | |
| file.caption | Message body | “This is message body” | | | |
| file.filename | Title of the file | “sample\_document.pdf” | | | |
| image.mediaURL | Media URL of the file | [www.example.com/image.png](http://www.example.com/image.png) | | | |
| image.caption | Message body | “This is message body” | | | |
| video.mediaURL | Media URL of the file | [www.example.com/video.mp4](http://www.example.com/video.mp4) | | | |
| video.caption | Message body | “This is message body” | | | |
####
Payload Samples For Freeform Message
[](https://docs.clevertap.com/docs/generic-whatsapp#payload-samples-for-freeform-message)
Message Template with AudioMessage Template with ImageMessage with documents
{
"payloadVersion":0.1,
"to": "919999999999",
“msg_id”:"25596363|1639561857|20220227|25596363",
"wabaNumber": "91999999XXXX",
"type": "audio",
"isTemplate": false,
"audio": {
"mediaURL": "www.example.com/audio.mp3"
}
}
{
"payloadVersion":0.1,
"to": "919999999999",
"wabaNumber": "91999999XXXX",
“msg_id”:"25596363|1639561857|20220227|25596363",
"type": "image",
"isTemplate": false,
"image": {"mediaURL": "www.example.com/image.png","caption": "This is body"} }
{
"payloadVersion":0.1,
"to": "919999999999",
"wabaNumber": "91999999XXXX",
“msg_id”:"25596363|1639561857|20220227|25596363",
"type": "file",
"isTemplate": false,
"file": {
"mediaURL": "www.example.com/document.pdf",
"caption": "This is body",
"filename": "sample.pdf"
} }
Expected API Response
[](https://docs.clevertap.com/docs/generic-whatsapp#expected-api-response)
----------------------------------------------------------------------------------------------------
###
Validation Payload
[](https://docs.clevertap.com/docs/generic-whatsapp#validation-payload-1)
CleverTap sends the following payload to validate the Messaging endpoint and API credentials saved in the dashboard. We expect success response within a second to save the endpoint.
If the format is incorrect, we throw an error showing the API request and response we received from the endpoint.
###
Error Objects
[](https://docs.clevertap.com/docs/generic-whatsapp#error-objects)
CleverTap expects partners to return any of the following responses depending on whether the request was successful. CleverTap will read the response body if the API request status code is _200 OK_, so notification processing-related errors and codes can be sent in the response body. Read the following for expected error codes:
> 📘
>
> ###
>
> Error Object
>
> [](https://docs.clevertap.com/docs/generic-whatsapp#error-object)
>
> The error object for the following error code needs to be specified only if there are errors in the send message API request:
>
> * 2000 → Invalid credentials
> * 2001 → Invalid template parameters
> * 2002 → Invalid phone number
> * 2003 → Phone number not subscribed
> * 2004 → Other
###
HTTPS Codes
[](https://docs.clevertap.com/docs/generic-whatsapp#https-codes)
200 Successful API callCode 200Code 500Code 429Code 403
{
"status": "success | failure",
}
{
"status": "failure",
"error" : {
"code" : 2000,
"message" : "Invalid Credentials"
}
}
{
"status": "failure",
"error" : {
"message" : "Unable to process the request"
}
}
{ "message" : "Too many requests to process"}
{ "message" : "Bad Request"}
WhatsApp Callbacks
[](https://docs.clevertap.com/docs/generic-whatsapp#whatsapp-callbacks)
----------------------------------------------------------------------------------------------
CleverTap automatically creates unique callback URLs for each customer. These callback URLs are available under the _Provider_ setup section. BSPs are expected to add these callbacks at their end and forward the incoming messages to CleverTap’s callback URL in the specified format. CleverTap creates separate callback URLs for message status and incoming messages. Both these callbacks must be configured at the BSP's end.
###
Callback Authentication
[](https://docs.clevertap.com/docs/generic-whatsapp#callback-authentication)
CleverTap creates unique callback URLs for each customer and does not need any authentication. CleverTap accepts the callbacks if the callbacks are sent in the expected format.
###
Incoming Message Callbacks
[](https://docs.clevertap.com/docs/generic-whatsapp#incoming-message-callbacks)
BSPs must add CleverTap's incoming message callback URL at their end and forward the incoming message in the following format.
####
Payload Description for Incoming Message Callbacks
[](https://docs.clevertap.com/docs/generic-whatsapp#payload-description-for-incoming-message-callbacks)
| Parameter | Description | Example Value | | | |
| --- | --- | --- | --- | --- | --- |
| from | Source number for incoming message | “9199XXXXXXXX” | | | |
| payloadVersion | version of the callback payload being sent to CleverTap | “0.1“ | | | |
| wabaNumber | Destination business WABA number to which message was sent | “9199XXXXXXXX” | | | |
| timestamp | Timestamp when the message was sent | “1647441774” | | | |
| type | Type of incoming message | “text/audio/video/image” | | | |
| context.id | `Msg_id` of the message to which the user has responded | 25596363\\ | 1639561857\\ | 20220227\\ | 25596363 |
| text.body | Text received from end user | “Hey, This is message” | | | |
| location.lattitude | Latitude of the location shared | 2.457476548 | | | |
| location.Longitude | Longitude of the location shared | 1.565867657 | | | |
| location.name | Name of the location shared | Joe’s House | | | |
| location.address | Address of the location shared | 102, Parker street, USA | | | |
| location.url | Address URL | [www.example.com](http://www.example.com/) | | | |
| image.mediaURL | Media File URL | [www.example.com/image.png](http://www.example.com/image.png) | | | |
| image.mimetype | Media file mime type | .png/.jpeg | | | |
| image.caption | Image caption | “This is caption” | | | |
| file.mediaURL | Media File URL | [www.example.com/file.pdf](http://www.example.com/file.pdf) | | | |
| file.mimetype | Media file mime type | .pdf | | | |
| file.caption | Image caption | “This is caption” | | | |
| audio.mediaURL | Media File URL | [www.example.com/audio.mp3](http://www.example.com/audio.mp3) | | | |
| video.mimetype | Media file mime type | .mp3 | | | |
| video.mediaURL | Media File URL | [www.example.com/image.png](http://www.example.com/image.png) | | | |
| video.mimetype | Media file mime type | .mp4 | | | |
| video.caption | Image caption | “This is caption” | | | |
####
Sample Payload for Incoming Message Callbacks
[](https://docs.clevertap.com/docs/generic-whatsapp#sample-payload-for-incoming-message-callbacks)
Incoming message with DocumentIncoming message with location
{
"payloadVersion":"0.1",
"from": "919999999999",
"wabaNumber": "9199999998888",
"timestamp": "1647441774",
"type": "file",
"context": {
"id": "25596363|1639561857|20220227|25596363"
},
"document": {
"mediaURL": "www.example.com/document.pdf",
"caption": "This is body",
"mimeType": ".pdf"
}
}
{
"payloadversion":"0.1",
"from": "919999999999",
"wabaNumber": "9199999998888",
"timestamp": "1647441774",
"type": "location",
"context": {
"id": "25596363|1639561857|20220227|25596363"
},
"location": {
"address": "107, baker street",
"latitude": "2.457476548",
"longitude": "2.457476548",
"name": "Johns office", //optional
"url": "www.johnsoffice.com" // optional
}
}
###
Message Status Callbacks
[](https://docs.clevertap.com/docs/generic-whatsapp#message-status-callbacks)
BSPs must add CleverTap's message status callback URL at their end and forward the message statuses (DLR callback) in the following format. CleverTap uses these callbacks to populate the campaign statistics.
> 📘
>
> ###
>
> Provider Click Tracking
>
> [](https://docs.clevertap.com/docs/generic-whatsapp#provider-click-tracking)
>
> Click-tracking data is accessible only when the **Provider Click Tracking** button is utilized in the campaign templates.
Sent Status CallbackDelivered Status CallbackRead Status CallbackFailed Status CallbackClicked Status Callback
{
"payloadVersion": $$paypoadVersion,
"statuses": [\
{\
"msgId": "$$customMessageID",\
"status": "sent",\
"timestamp": "$$timestamp", //Event timestamp\
}\
]
}
{
"payloadVersion": $$paypoadVersion,
"statuses": [\
{\
"msgId": "$$customMessageID",\
"status": "delivered",\
"timestamp": "$$timestamp", //Event timestamp\
}\
]
}
{
"payloadVersion": $$paypoadVersion,
"statuses": [\
{\
"msgId": "$$customMessageID",\
"status": "read",\
"timestamp": "$$timestamp", //Event timestamp\
}\
]
}
{
"payloadVersion": $$paypoadVersion,
"statuses": [\
{\
"msgId": "$$customMessageID",\
"status": "failed",\
"timestamp": "$$timestamp", //Event timestamp\
"error": {\
"code": "$$errorcode",\
"title": "$$errordescription"\
}\
}\
]
}
{
"payloadVersion": "0.1",
"statuses": [\
{\
"msgId": "4930004|1731583253|20241114|4930004",\
"status": "Clicked"\
"url": "www.google.com/19nov",\
"shortUrl": "https://bit.ly/3Oj42219",\
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36"\
}\
]
}
####
Payload Description for Message Status Callbacks
[](https://docs.clevertap.com/docs/generic-whatsapp#payload-description-for-message-status-callbacks)
| Parameter | Description | Example Value | | | |
| --- | --- | --- | --- | --- | --- |
| payloadversion | Version of the payload being sent to CleverTap | 0.1 | | | |
| statuses\[X\].status | Notification status | “sent/delivered/read/failed/clicked” | | | |
| statuses\[X\].timestamp | Timestamp of the event | “1647441774” | | | |
| statuses\[X\].msgId | Unique identifier for message being sent and expected to be present in callback payloads | 25596363\\ | 1639561857\\ | 20220227\\ | 25596363 |
| statuses\[X\].error.code | Failure Error code | 1001 | | | |
| statuses\[X\].error.title | Description of error | Message specified does not match with any template. | | | |
####
Sample Payload for Message Status Callbacks
[](https://docs.clevertap.com/docs/generic-whatsapp#sample-payload-for-message-status-callbacks)
Successful Delivery PayloadFailure Delivery PayloadGeneric Click Callback Payload
{
"payloadVersion":"0.1",
"statuses": [{\
"msgId": "25596363|1639561857|20220227|25596363", // same as outbound message ID\
"status": "delivered",\
"timestamp": "1647441774", //Event timestamp\
}]
}
{"paytloadVersion":"0.1",
"statuses": [{\
"msgId": "25596363|1639561857|20220227|25596363",\
"status": "failed",\
"timestamp": "1647441774", //Event timestamp\
"error": {\
"code": 1004,\
"title": "Invalid phone number."\
}}]
}
{
"payloadVersion": "0.1",
"statuses": [\
{\
"msgId": "4930004|1731583253|20241114|4930004",\
"status": "Clicked",\
"ts": 1435322805,\
"url": "www.google.com/19nov",\
"shortUrl": "https://bit.ly/3Oj42219",\
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36"\
}\
]
}
###
Callback Error Codes
[](https://docs.clevertap.com/docs/generic-whatsapp#callback-error-codes)
> 🚧
>
> ###
>
> Callback Error Codes
>
> [](https://docs.clevertap.com/docs/generic-whatsapp#callback-error-codes-1)
>
> Listed below are the expected callback error codes:
>
> * 1000 → Invalid credentials
> * 1001 → Invalid template parameters
> * 1002 → Invalid phone number
> * 1003 → The phone number is no longer active
> * 1004 → Too many send requests to phone numbers
> * 1005 → The phone number is temporarily unavailable or not in the provider network
> * 1006 → Phone number is blacklisted
> * 1007 → User device can’t receive the message
> * 1008 → This message is sent outside of the WhatsApp chat window
> * 1009 → Other
> * 1010 → WhatsApp Message Blocked by Meta
Creating/Uploading User Base
[](https://docs.clevertap.com/docs/generic-whatsapp#creatinguploading-user-base)
=================================================================================================================
You can upload a CSV file to upload a set of internal users by going to _Settings_ > _CSV uploads_. The following is the sample CSV format for uploading user data.
| Identity | Name | Email | Phone | Gender | MSG-WhatsApp | Upload Name |
| --- | --- | --- | --- | --- | --- | --- |
| [\[email protected\]](https://docs.clevertap.com/cdn-cgi/l/email-protection#18727770767c777d587b747d6e7d6a6c7968367b7775) | John Doe | | +9199\*\*\*\*\*420 | M | TRUE | Sample Upload |
Accepted Message Formats
[](https://docs.clevertap.com/docs/generic-whatsapp#accepted-message-formats)
----------------------------------------------------------------------------------------------------------
CleverTap currently has limitations on the types of WhatsApp messages supported on the dashboard. We are working on adding support for the new message types as soon as possible but for the time being, only the following message types are supported.
**Freeform Messages**
This message type supports the following format:
* Simple text
* Audio
* Video
* Images
* Document
**Template messages**
The elements of the Template message include a header, footer, simple text, and buttons.
The header section supports the following formats:
* Text
* Image
* Videos
* Locations
* Audios
* Documents
FAQs
[](https://docs.clevertap.com/docs/generic-whatsapp#faqs)
==================================================================
**Q. My WhatsApp provider has shared the API credentials with me. Can I save the provider in the CleverTap dashboard and start creating WhatsApp campaigns?**
**Ans:** Ensure that your WhatsApp service provider is there in the list of integrated partners. If yes, ensure that you are using the custom API endpoint that your partner has created for CleverTap integration.
Updated 23 days ago
* * *
Ask AI
---
# Features and Add-ons
Overview
[](https://docs.clevertap.com/docs/features-add-ons#overview)
==========================================================================
The Essentials plan offers features and add-ons that are essential for early-stage businesses to maximize retention and customer lifetime value. Read on to find out what's included.
Features
[](https://docs.clevertap.com/docs/features-add-ons#features)
==========================================================================
Behavioral Analytics
[](https://docs.clevertap.com/docs/features-add-ons#behavioral-analytics)
--------------------------------------------------------------------------------------------------
Gain deep user insights with the following powerful data analysis tools:
* [Boards](https://docs.clevertap.com/docs/simple-reports?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB)
: In CleverTap, we have pre-built dashboards to help you answer general questions about your app usage.
* [Funnels](https://docs.clevertap.com/docs/funnels?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB)
: Funnels are defined as a series of events that a user performs in a particular order. Funnels show users progress through defined paths in your app and pinpoint where they drop off between steps.
* [Cohorts](https://docs.clevertap.com/docs/cohorts?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB)
: Cohort analysis is a way to group users who are similarly based on who or what they have done and track their behavior over time.
* [Trends](https://docs.clevertap.com/docs/trends?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB)
: Trends provide you with the capability to understand how users are using the platform.
* [Pivots](https://docs.clevertap.com/docs/pivots?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB)
: Pivot is a valuable tool for marketers dealing with large volumes of data. It helps them create concise summaries and view custom reports to obtain user insights effectively.
* [Flows](https://docs.clevertap.com/docs/flows?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB)
: Flows provide the capability to understand the ways a user navigates through an application giving a broad view of the common paths users take as well as where they get stuck.
* [Analyze Events](https://docs.clevertap.com/docs/events-analytics?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB)
: Analyzing events helps to understand your audience's behavior comprehensively, whether you want to view which countries use your app the most or what hours of the day they might stream a show.
* [Real Impact](https://docs.clevertap.com/docs/real-impact?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB)
: Real Impact is a reporting dashboard that shows how and to what extent users respond to your CleverTap marketing campaigns—everything from the revenue generated to churn.
* [Session Analytics](https://docs.clevertap.com/docs/session-analytics?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB)
: Session Analytics helps track the events that users perform within a session. Analyzing session length is a great way to measure engagement for certain apps, such as video or music streaming, news, and so on.
Messaging Channels
[](https://docs.clevertap.com/docs/features-add-ons#messaging-channels)
----------------------------------------------------------------------------------------------
The following channels are available for CleverTap for Startups:
* [Push Notifications](https://docs.clevertap.com/docs/push?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB)
* [Web Push](https://docs.clevertap.com/docs/web-push?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB)
* [In-App](https://docs.clevertap.com/docs/in-app?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB)
* [Web Pop-up](https://docs.clevertap.com/docs/web-pop-up?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB)
* [App Inbox](https://docs.clevertap.com/docs/app-inbox?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB)
* [SMS](https://docs.clevertap.com/docs/sms?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB)
* [Email](https://docs.clevertap.com/docs/email?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB)
* [WhatsApp](https://docs.clevertap.com/docs/whatsapp-direct-add-on)
* [Journey](https://docs.clevertap.com/docs/journeys?utm_source=C4S&utm_medium=doc&utm_id=KB)
* [Webhooks](https://docs.clevertap.com/docs/webhooks-overview?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB)
You can integrate with Email, SMS, and WhatsApp service providers of your choice as part of the plan. CleverTap does not impose any extra charges on the plan, as the cost is directly settled between you and the service provider. You also get four additional messaging channels available as an add-on in the Essentials plan.
[Campaigns](https://docs.clevertap.com/docs/campaign-approval-workflow?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB)
[](https://docs.clevertap.com/docs/features-add-ons#campaigns)
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
CleverTap campaigns communicate with your users at scale. Make use of the 13 different messaging channels. The campaign feature provides you with a Preview & Test button to test it before you send it to the end users. It enables you to do A/B testing on messages, which you can create using the built-in editor.
[Journey Orchestration](https://docs.clevertap.com/docs/journeys?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB)
[](https://docs.clevertap.com/docs/features-add-ons#journey-orchestration)
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
A Journey is a visual campaign builder that lets you create omni-channel messaging experiences for your users. Journeys are ideal for engaging users across the lifecycle of your application. Depending on how they act or fail to act, we can nudge users further ahead through Journeys.
[Segmentation](https://docs.clevertap.com/docs/find-people?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB)
[](https://docs.clevertap.com/docs/features-add-ons#segmentation)
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
The Segment feature can be used to group users based on their actions performed, actions not performed, or user profile properties that match a set of defined criteria. There are three types of Segments in CleverTap:
* Live user
* Psychographic
* Past behavior
To access additional information, refer to the [FAQ](https://staging.docs.user.clevertap.net/docs/features-add-onscopy?utm_source=C4S&utm_medium=doc&utm_id=KB#faqs)
section for details on commonly encountered queries.
Add-ons
[](https://docs.clevertap.com/docs/features-add-ons#add-ons)
========================================================================
As a part of the Essentials plan, a few of the features available in the Enterprise plans are available as additional add-ons. These add-ons must be added to your billing to be able to use them.
The add-ons are billed at 10% of your base plan, determined by your initial MAU requirements.
For more information about the Add-ons offered by CleverTap, refer to [CleverTap for Startup Features](https://clevertap.com/clevertap-for-startups-features?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB)
.
| Add-ons | Feature | Description | Price |
| --- | --- | --- | --- |
| Advanced Analytics | Behavioral Analytics | 1. Get access to [Pivots](https://docs.clevertap.com/docs/pivots?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB)
and [Flows](https://docs.clevertap.com/docs/flows?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB)
for better insight into data.
2. Use [Custom Formulas](https://docs.clevertap.com/docs/trends#custom-formula?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB%22)
to analyze data.
3. Combine events into a single [Composite Event](https://docs.clevertap.com/docs/composite-events?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB)
.
4. Advanced [Cohort](https://docs.clevertap.com/docs/cohorts#unbounded?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB)
features like Unbounded Retention, Custom Bracket, Custom Metrics, and any Event. | 10% of the base plan |
| Premium Channels | Messaging Channels | Use remarketing via [Facebook Audiences](https://docs.clevertap.com/docs/facebook-audiences?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB)
and [Google Ads](https://docs.clevertap.com/docs/google-adwords?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB)
to re-engage with users outside of your app or website. Native Display shows a banner inside the app in a coded banner placement. | 10% of the base plan |
| [WhatsApp Connect](https://docs.clevertap.com/docs/whatsapp?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB) | Messaging Channels | Use our new WhatsApp channel add-on to connect with your users directly from CleverTap. | 10% of the base plan |
| [WhatsApp Direct](https://docs.clevertap.com/docs/whatsapp-direct-add-on) | Messaging Channels | Use the WhatsApp Direct Add-on to engage with customers on WhatsApp without bringing your own Business Solution Provider (BSP). | 20% of the base plan (excluding credits purchased) |
| [CleverTap Email](doc:email) | Messaging Channels | Seamlessly manage your email campaigns within CleverTap without integrating an external Email Service Provider. | $50 + 10% of the base plan |
| Content Personalization | Campaign Optimization | Create user-specific campaigns using [Liquid Tags](https://docs.clevertap.com/docs/liquid-tags?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB)
, [Linked Content](https://docs.clevertap.com/docs/linked-content?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB)
, [Bulletins](https://docs.clevertap.com/docs/bulletins?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB)
, [Catalog Send-Time Personalization](https://docs.clevertap.com/docs/catalog-send-time-personalization?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB)
, [Constant Event Property Campaign](https://docs.clevertap.com/docs/constant-property?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB)
, and [Geofence](https://docs.clevertap.com/docs/geofencing?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB)
. | 10% of the base plan |
| Cloud Export | Data Management | Export event and user data through:
1. [GCP Export](https://docs.clevertap.com/docs/data-export-to-gcp?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB)
2. [Batch Data Export through to AWS S3](https://docs.clevertap.com/docs/data-export-to-aws-s3?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB)
3. [AWS Eventbridge](https://docs.clevertap.com/docs/amazon-eventbridge?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB)
4. [Bulk Export to Mixpanel](https://docs.clevertap.com/docs/mixpanel-export?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB)
5. [Bulk Export to Amplitude](https://docs.clevertap.com/docs/amplitude-export?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB)
6. [Bulk Export to mParticle](doc:mparticle-export)
7. [Bulk Export to Segment](doc:segmentcom)
8. [Bulk Export to Azure](doc:microsoft-azure) | 10% of the base plan |
| [Custom List Segment](doc:custom-list-segments) | Segmentation | Create a custom list segment by uploading user lists via the dashboard or API. | 20% of the base plan |
| [Promotions](doc:promo-campaigns) | Promo Campaigns | Use [Promo Campaigns](doc:promo-campaigns)
to reward users based on how they engage with your brand. Distribute [Coupons](doc:coupons)
to incentivize purchases. Set up [Loyalty Wallets](doc:loyalty-wallets)
to distribute points for actions like purchases or referrals. Distribute [Partner Vouchers](doc:partner-vouchers)
to delight existing users and attract new ones. | 20% of the base plan |
After you create an account, you can find in-depth information about the platform features, their functioning, and setup through the following resources on your CleverTap dashboard:
* [CleverTap University](https://academy.clevertap.com/catalog?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB)
* [Upskill with CleverTap](https://eu1.dashboard.clevertap.com/x/upskil?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB)
FAQs
[](https://docs.clevertap.com/docs/features-add-ons#faqs)
==================================================================
###
When will my add-on removal take effect?
[](https://docs.clevertap.com/docs/features-add-ons#when-will-my-add-on-removal-take-effect)
Product add-ons removal will be effective at the end of your current billing period. You can cancel the removal request anytime.
###
Can we run A/B tests on Clevertap?
[](https://docs.clevertap.com/docs/features-add-ons#can-we-run-ab-tests-on-clevertap)
To run A/B tests on the messaging you send in campaigns, A/B Multivariate Testing can be used. More details can be found [here](https://docs.clevertap.com/docs/ab-multivariate-testing?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB)
.
###
Does CleverTap help in tracking the source of acquisition?
[](https://docs.clevertap.com/docs/features-add-ons#does-clevertap-help-in-tracking-the-source-of-acquisition)
CleverTap integrates with many attribution partners, such as Appsflyer, Branch, and so on, to track app installations, measure attribution with third-party sources, and view reports on the CleverTap dashboard. Check out the complete list of attribution partners [here](https://docs.clevertap.com/docs/attribution?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB)
.
###
Does CleverTap have a feature to analyze the time spent per user each day?
[](https://docs.clevertap.com/docs/features-add-ons#does-clevertap-have-a-feature-to-analyze-the-time-spent-per-user-each-day)
You can utilize CleverTap's Session Analytics to track user events within a session, despite the absence of a usage time tracking mechanism. A session is a period of continuous activity by the user. Analyzing session length is a great way to measure engagement for certain apps, such as video or music streaming, news, and so on. You can read more [here](https://docs.clevertap.com/docs/session-analytics?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB)
.
###
What is the delivery rate for Push Notifications sent via CleverTap?
[](https://docs.clevertap.com/docs/features-add-ons#what-is-the-delivery-rate-for-push-notifications-sent-via-clevertap)
Reachability of 100% is possible only for iOS for the opted-in users. In the case of Android, it is usually impossible due to the battery optimization features of Chinese OEMs like One Plus, Xiaomi, so on.
With CleverTap, you can achieve a delivery rate of over 80%. More details regarding increasing the push delivery rate can be found [here](https://clevertap.com/blog/push-deliverability?utm_source=C4Sdoc&utm_medium=doc&utm_campaign=KB)
.
Updated about 2 months ago
* * *
Ask AI
---
# Control Groups
Overview
[](https://docs.clevertap.com/docs/control-groups#overview)
========================================================================
Marketing teams typically run various campaigns and journeys to onboard, convert, and retain their users. However, it is hard to measure the efficacy of these campaigns and journeys independently. For example, was the purchase increase today due to the reminder email we sent last night, or could it have been that those users would have bought anyway without the reminder?
A control group is a set of users marked to be excluded from all marketing campaigns. You can measure the effectiveness of your initiatives by comparing this group with the target group of users who received your campaigns.
CleverTap allows you to measure and track the performance of your engagement efforts by comparing it to the Control Group
You can create 4 different types of Control Groups:-
* System Control Group
* System Control Group is created on your entire user base
* You can create one System Control per account
* You can create a system control group of size between 2% to 5%
* Custom Control Group
* Custom Control Group is created on your entire user base
* You can create up to 10 Custom Control Groups per account
* You can create a custom control group of size between 2% to 5%
* Custom Control Groups are generally created for short-duration strategies
For example, determining engagement impact for Christmas campaigns
* Campaign Control Group
* Campaign Control Group is created on the user base that qualifies for the campaign.
* You can create a campaign control group at the time of campaign creation.
* You can create a campaign control group of size between 2% to 99%
* Journey Control Group
* Journey Control Group is created on the user base that qualifies for the journey.
* You can create a journey control group at the time of journey creation.
* You can create a journey control group of size between 2% to 99%
Control Group Qualification
[](https://docs.clevertap.com/docs/control-groups#control-group-qualification)
==============================================================================================================
* When a Control Group is created, it is created from all the users who are a part of the application at the given time.
For example, if a 5% Control Group is created, then every 1 in 20 users will be a part of the Control Group.
* This selection of users who are a part of the Control Group is completely random. We do not introduce any bias for qualification
* For all new users coming to the application after creating the control group, qualification to the Control Group will be based on the size of the control group.
For example, if a 5% Control Group is created, every 1 in 20 new users will be a part of the Control Group
Creating a System Control Group
[](https://docs.clevertap.com/docs/control-groups#creating-a-system-control-group)
======================================================================================================================
1. You can create a system control group from _Settings_ > _Control Group_.
Here, you can create a System Control Group

Create a System Control Group
2. You can choose to apply the Control Group to existing running campaigns and journeys by checking the box to _Apply to all current campaigns and journeys_.
> 🚧
>
> **Important Note**
>
> After you make this selection, you cannot change it.

Apply System Control Group to All Journeys and Campaigns
3. Now, you will be able to see the details of the system control group you created

System Control Group Details
Creating a Custom Control Group
[](https://docs.clevertap.com/docs/control-groups#creating-a-custom-control-group)
======================================================================================================================
> 📘
>
> **Note**
>
> Custom Control Group can be created only after you have a created a System Control Group.
1. When you move to _Custom Control Group_ and create a new custom control group, a new group will be created for you.

Create a Custom Control Group
2. Once you click on **\+ Create New**, you asked to provide a name, purpose, and control group size

Enter Details for Custom Control Group
3. Now, you will be able to see the details of the custom control group(s) you created
You can create up to 10 Custom control groups

View Details of all Custom Control Groups
Campaign and Journey Creation
[](https://docs.clevertap.com/docs/control-groups#campaign-and-journey-creation)
==================================================================================================================
> ❗️
>
> **Removing System Control Group**
>
> Although CleverTap provides the option to remove the System Control Group, we recommend to only use this option for transactional messages. Removing the System Control Group will impact the campaign and journey reports
Campaign Creation
[](https://docs.clevertap.com/docs/control-groups#campaign-creation)
------------------------------------------------------------------------------------------
After you have created a System and/or Custom control group, you can now use this control group in your campaigns. In the campaign creation workflow, when in the _Setup_ section, you are given the option to add/remove the Control Group
* The system control group is applied by default for every campaign.
* You can choose to add a Custom control group to the campaign.
* Optionally, you can also add a _Campaign_ control group. This control group will be applicable only to the related campaign.

Use Control Groups in Campaigns
Journey Creation
[](https://docs.clevertap.com/docs/control-groups#journey-creation)
----------------------------------------------------------------------------------------
After you have created a System and/or Custom control group, you can now use this control group in your _Journeys_.
In the entry node of the Journey, you are given the option to add/remove the Control Group.
* The system control group is applied by default for every campaign.
* You can choose to add a _Custom_ control group to the campaign.
* Optionally, you can also add a _Journey_ control group. This control group will be applicable only to the related journey.

Use Control Groups in Journeys
Reporting Stats
[](https://docs.clevertap.com/docs/control-groups#reporting-stats)
======================================================================================
1. Campaign or Journey Qualification
* All users who have qualified for the campaign based on the _who_ section selected by you.
* In Journeys, it is all the users who have qualified on the _who_ section selected by you in the entry node.
* This will include users who are a part of the Control Group qualification.
2. Control Group Qualification
* All users who have qualified for the system or custom control group
3. Control Group Qualification for the campaign
* All users who have qualified for the campaign AND were qualified to be a part of the Control Group
* There may be users who are a part of the Custom Control Group or System Control Group, but do not qualify for the campaign. These users will not be a part of the Control Group for this campaign.
* There may be users who are a part of the Control Group, but do not qualify for the campaign. These users will not be a part of the Control Group for the campaign in question.
4. Control Group Qualification for the journey
* All users who have qualified for the journey AND were qualified to be a part of the Control Group
* There may be users who are a part of the Custom Control Group or System Control Group, but do not qualify for the journey. These users will not be a part of the Control Group for this journey.
**Note**: If the _Campaign_ or _Journey_ qualifies a very small user base, there may be a condition, that no user from the qualified based is a part of the Control Group. In that case, we will not showcase the Control Group stats for that campaign.
> 🚧
>
> Deleting Control Group
>
> If a Control Group is deleted when campaigns and journeys are running with the Control Group, the corresponding campaign and journey report will be impacted
Once a campaign or a journey is created with a Control Group, the stats for it can be viewed on the stats page
Here you can see -
1. Number of users in the Control Group
2. Conversions of Target Group w.r.t. Control Group
3. Revenue of Target Group w.r.t. Control Group
* Revenue is calculated as ARPU (Average Revenue Per User)
\*\* where ARPU = Total Revenue / number of users
Control Group Exports
[](https://docs.clevertap.com/docs/control-groups#control-group-exports)
==================================================================================================
> 📘
>
> **Exports Disabled**
>
> Currently, the Journey Control Group exports option is disabled. If you want to enable this option, contact your Customer Success Manager.
Control group users can be exported to AWS S3. The option is available via _Settings_ > _Partners_ > _Exports_. To export control groups:
1. Click the **Create Export** button and choose the export partner.

Export Control Groups
2. Enter the following details to export the control group users:
* **Type**: Select the export **Type**. Select events (you can choose multiple values here).
* **Frequency**: Select the export frequency.
* **Dates to export data**: Select the days you want to export the data.
* **Format**: Select the export format from the available options: JSON, XML, CSV, or Parquet.
* **Export data as a string**: Select this option to export data in string format.

Create an Export
When selecting events for exporting the control group, the following control groups are available:
* System Control Group
* Custom Control Group
* System Control Group (Journeys)
* Custom & Journey Control Group (Journeys)
If a user is part of a control group, then for each campaign, that the user qualifies for within the selected days to get data, there will be one entry present in the export. For example, if user A is part of the system control group and it qualifies for campaign ABC and campaign XYZ, then in _System Control Group_ export, we will have two entries for this user, one for each campaign. The same is applicable to all control group exports for journeys.
System Control Group
[](https://docs.clevertap.com/docs/control-groups#system-control-group)
------------------------------------------------------------------------------------------------
Export System Control Group users' data in all campaigns within the selected days.
JSON format Example -
JSON
{"ts":20200319221000,"eventName":"Control Group","profile":{"all_identities":["[email protected]"],"platform":"iOS","name":"JamesSmith","email":"[email protected]","push_token":"ios-19020907-0","phone":119021007089},"deviceInfo":{"make":"Apple","model":"iPhone8,1","appVersion":"App Version 4","sdkVersion":"0","osVersion":"9.1"},"controlGroupName":"System Control Group","eventProps":{"Campaign id":"1584635757","Campaign name":"ok","Campaign type":"Mobile Push - iOS"}}
Custom Control Group
[](https://docs.clevertap.com/docs/control-groups#custom-control-group)
------------------------------------------------------------------------------------------------
Export Custom Control Group users' data in all campaigns within selected days. Each entry has a Control group name.
JSON format Example -
JSON
{"ts":20200319221000,"eventName":"Control Group","profile":{"all_identities":["[email protected]"],"platform":"iOS","name":"JohnJohnson","email":"[email protected]","push_token":"ios-13120107-3","phone":119112607389},"deviceInfo":{"make":"Apple","model":"iPhone8,1","appVersion":"AppVersion0","sdkVersion":"0","osVersion":"9.2"},"controlGroupName":"CustomCG1","eventProps":{"Campaign id":"1584635757","Campaign name":"ok","Campaign type":"Mobile Push - iOS"}}
System Control Group (Journeys)
[](https://docs.clevertap.com/docs/control-groups#system-control-group-journeys)
--------------------------------------------------------------------------------------------------------------------
Export System control group users' data in all Journeys within the selected days.
JSON format Example -
JSON
{"ts":20200317193200,"eventName":"Journey Control Group","profile":{"all_identities":["[email protected]"],"platform":"iOS","name":"JamesSmith","email":"[email protected]","push_token":"ios-19020907-0","phone":119021007089},"deviceInfo":{"make":"Apple","model":"iPhone8,1","appVersion":"App Version 4","sdkVersion":"0","osVersion":"9.1"},"controlGroupName":"System Control Group","eventProps":{"Journey id":"171","Journey name":"PBS_All_users"}}
Custom & Journey Control Group (Journeys)
[](https://docs.clevertap.com/docs/control-groups#custom--journey-control-group-journeys)
---------------------------------------------------------------------------------------------------------------------------------------
Export data for Custom and Journey control group users in all Journeys within selected days. Each entry will have a Control group name. For the Journey control group, the value of this field is **Journey Control Group**.
JSON format Example (Custom control group user) -
JSON
{"ts":20200310230600,"eventName":"Journey Control Group","profile":{"identity":"123","all_identities":["123"],"platform":"iOS","name":"Kritii Agrawal","push_token":"3dbf357c5a6db427714343d52f10cbf9d4b1c3859f96423370dcd595370363b2","phone":919833108201},"deviceInfo":{"make":"Apple","model":"iPhone9,3","appVersion":"2.0.0","sdkVersion":"30401","osVersion":"Others","dpi":326,"dimensions":{"width":58,"height":103,"unit":"mm"}},"controlGroupName":"Test group A","eventProps":{"Journey id":"145","Journey name":"trigger on jn 144 step 4- Testing Event"}}
JSON format Example (Journey control group user) -
JSON
{"ts":20200310230600,"eventName":"Journey Control Group","profile":{"identity":"123","all_identities":["123"],"platform":"iOS","name":"Aditi Agrawal","push_token":"3dbf357c5a6db427714343d52f10cbf9d4b1c3859f96423370dcd595370363b2","phone":919833108201},"deviceInfo":{"make":"Apple","model":"iPhone9,3","appVersion":"2.0.0","sdkVersion":"30401","osVersion":"Others","dpi":326,"dimensions":{"width":58,"height":103,"unit":"mm"}},"controlGroupName":"Journey Control Group","eventProps":{"Journey id":"145","Journey name":"trigger on jn 144 step 4- Testing Event"}}
JSON
{"ts":20200310230600,"eventName":"Journey Control Group","profile":{"identity":"123","all_identities":["123"],"platform":"iOS","name":"Kritii Agrawal","push_token":"3dbf357c5a6db427714343d52f10cbf9d4b1c3859f96423370dcd595370363b2","phone":919833108201},"deviceInfo":{"make":"Apple","model":"iPhone9,3","appVersion":"2.0.0","sdkVersion":"30401","osVersion":"Others","dpi":326,"dimensions":{"width":58,"height":103,"unit":"mm"}},"controlGroupName":"Test group A","eventProps":{"Journey id":"145","Journey name":"trigger on jn 144 step 4- Testing Event"}}
JSON format Example (Journey control group user) -
JSON
{"ts":20200310230600,"eventName":"Journey Control Group","profile":{"identity":"123","all_identities":["123"],"platform":"iOS","name":"Aditi Agrawal","push_token":"3dbf357c5a6db427714343d52f10cbf9d4b1c3859f96423370dcd595370363b2","phone":919833108201},"deviceInfo":{"make":"Apple","model":"iPhone9,3","appVersion":"2.0.0","sdkVersion":"30401","osVersion":"Others","dpi":326,"dimensions":{"width":58,"height":103,"unit":"mm"}},"controlGroupName":"Journey Control Group","eventProps":{"Journey id":"145","Journey name":"trigger on jn 144 step 4- Testing Event"}}
Video Tutorials
[](https://docs.clevertap.com/docs/control-groups#video-tutorials)
======================================================================================
###
Understanding Control Groups
[](https://docs.clevertap.com/docs/control-groups#understanding-control-groups)
###
Using Control Groups
[](https://docs.clevertap.com/docs/control-groups#using-control-groups)
Updated about 2 months ago
* * *
Ask AI
---
# Journeys List
Overview
[](https://docs.clevertap.com/docs/journeys-list#overview)
=======================================================================
The _Journeys List_ page on the CleverTap Dashboard provides a comprehensive overview of all the Journeys created on the dashboard with detailed performance statistics. This section also allows you to search for and filter specific Journeys easily.

Journeys List
If a Journey has been edited after publishing, it may have multiple versions. The list displays details of the latest journey entity, which can be either published or in the _Draft_ state. For example, you have a journey called Cart Abandonment where:
* Version 1 was published on June 1.
* You edited the journey on June 15, creating Version 2 (in Draft).
* On June 20, you published Version 2.
If you view the journey on the list and version 2 is the latest version, all journey information shown will correspond to version 2 only. To view metrics for a different version, you must open the Journey and select the desired version using the Version Selector at the top.

Select Journey Version from Dropdown
The following details are displayed for each journey:
| Field | Description |
| --- | --- |
| Journey Details | Displays the Journey name and the name of the version that is on the list. It also displays the unique identifier for the Journey. This ID remains the same across versions. |
| Start Time | Displays the date and time when the Journey state changed to _Running_ and users started entering the Journey. |
| Status | Displays the current state of the Journey, such as Draft, Scheduled, Running, Paused, Completed, Restricted, and Stopped. For more information, refer to [Journey States](doc:journey-states)
. |
| Entry Type | Specifies how users qualify for the Journey. They can qualify based on the Past behavior/ Custom list (actions they have performed or have been performing in the past) or Live behavior (as soon as they perform any action). |
| Total versions | Displays the number of versions created for the Journey.
* \*Note\*\*: A new version is created each time you make structural changes to the published Journey, such as updating entry criteria or conversion goals. For more information, refer to [Edit a Journey](doc:edit-a-journey)
. |
| Goals Met | Displays the total number of users who completed the Journey goal(s) defined in the Journey, such as purchases, sign-ups, or other tracked events. |
| Entered Users | Displays the number of unique users who entered the Journey based on the entry criteria. |
| Timed-Out Users | Displays the total number of users who exited the Journey without achieving any defined goals because they exceeded the Journey timelines |
| Rate | Indicates the percentage of Goal Met.
* If the goal exists, it is calculated as \[(Number of users who met the goal/Total number of qualified users) \* 100\].
* If the goal does not exist, it is calculated as \[(Number of users who exited last node/Total number of qualified users) \* 100. |\
| Created By | Displays the email ID of the user who created the journey. |\
| Created On | Displays the date on which the Journey was initially created. |\
| Published By | Displays the email ID of the user who last published the Journey. If the Journey has been edited post-publish, this reflects the most recent version. |\
| Published On | Displays the date on which the most recent version of the Journey was published. |\
\
Filter Journeys\
\
[](https://docs.clevertap.com/docs/journeys-list#filter-journeys)\
\
=====================================================================================\
\
You can locate a specific journey from the 'All Journeys' page using Journey Filters. By applying these filters, you can refine your search based on the following criteria:\
\
* Entry type\
* Status\
* Created by\
* [Labels](doc:journeys-list#assign-label-to-journeys)\
\
* IntelliNODE\
\
The list shows the details for the latest journey entity, which can be published or in the _Draft_ state. You can apply quick filters directly from the top of the _All Journeys_ page.\
\
\
\
Quick Journey Filters\
\
To filter journeys, perform the following steps:\
\
1. Go to _Journeys_ from the CleverTap dashboard. The All Journeys page opens.\
2. Click  icon. The _Filter Journeys_ window opens on the right side.\
3. Apply the required filters and click **Apply**. For example, if you want to look at the _Running_ journeys with Entry type as _Past Behavior_.\
\
\
\
Filter Journeys\
\
You can also save your frequently used custom filters by clicking **Save Filter** from the _Filter Journeys_ window.\
\
Assign Label to Journeys\
\
[](https://docs.clevertap.com/docs/journeys-list#assign-label-to-journeys)\
\
=======================================================================================================\
\
Labels help categorize engagements with meaningful names or themes, making it easier to organize, analyze performance, and understand user behavior across multiple journeys. Here are some of the examples for Journey Labels:\
\
* Onboarding: Group all Journeys related to new user onboarding.\
* Re-engage: Categorize Journeys designed to re-engage users who have become inactive.\
\
**Key Benefits of Journey Labels**\
\
* **Simplified Organization**: Use labels to group Journeys with similar objectives, themes, or target audiences.\
* **Enhanced Analysis**: Leverage labels to track notifications and analyze Journey performance effectively.\
\
To assign labels to the journeys, perform the following steps:\
\
1. Select the required journey from the _All Journeys_ page.\
2. Click  icon. The _Add Label_ popup opens.\
3. Select the label you want to assign from the list and click **Add**. OR \
To add a new label, type the desired name, select it, and click **Add**.\
\
\
\
Assign Journey Label\
\
You can also utilize Journey Labels to analyze Journey performance from the _Analytics_ section for the _Notifications Sent_ event. This helps track the total number of notifications sent by Journeys tagged with specific labels, thereby gaining deeper insights into user segmentation and Journey effectiveness.\
\
\
\
Analyze Journey Performance Using Journey Label\
\
This empowers you to analyze performance data more granularly and refine your Journey strategies based on actionable insights.\
\
Updated about 2 months ago\
\
* * *\
\
Ask AI
---
# A/B & Multivariate Testing
Overview
[](https://docs.clevertap.com/docs/ab-multivariate-testing#overview)
---------------------------------------------------------------------------------
Optimizing messages and campaigns is a crucial activity for any app marketer. Clevertap offers three ways to optimize everything you deliver:
* A/B & multivariate testing.
* Split message delivery.
* Sending campaigns to an audience subset.
A/B Testing
[](https://docs.clevertap.com/docs/ab-multivariate-testing#ab-testing)
======================================================================================
A/B testing lets you compare up to three different versions of a message for any campaign. You can try different copy, creatives, calls to action, or any combination of these to make sure you have designed the best message for each campaign.
Pick the test audience size to run and we do the rest. We determine the winner based on the number of clicks. In the case of email, the winner is determined based on views. We then deliver the winning variant to the rest of your target audience.

Results of A/B Testing
For any campaign, you need the content and creatives for each message. When you create a push notification campaign, you have an option to add up to three variants of any message to test which one performs best.
You can determine the size of the test to run after adding the desired number of variants.
> 📘
>
> ###
>
> Ideal Audience Size for A/B Testing
>
> [](https://docs.clevertap.com/docs/ab-multivariate-testing#ideal-audience-size-for-ab-testing)
>
> * For reliable A/B testing, CleverTap recommends a minimum of **5000** users base to reduce randomness in variant assignment.
> * When the user base **exceeds 10,000 users**, variant distribution becomes substantially more stable. This minimizes deviations and provides more precise insights.
> * Testing with fewer than 5,000 users increases the likelihood of inconsistent distribution and skewed performance metrics.
> * If the user base is small, consider the following practices:
> * Limit the number of variants.
> * Extend the test duration.
> Use segment-based targeting.
> * Avoid frequent, rapid re-tests.
Campaigns Sent to Past Behavior Segments
[](https://docs.clevertap.com/docs/ab-multivariate-testing#campaigns-sent-to-past-behavior-segments)
-------------------------------------------------------------------------------------------------------------------------------------------------
For campaigns sent to past behavior segments (grouping of users based on their past actions), you have two options: launch the A/B test to a percentage of your target audience or send out an absolute number of messages. In either case, we deliver the variants equally to the test audience.

Test the Campaigns Sent to Past Behaviour Segments
For example:
* You are testing three messages (Variant A, Variant B, Variant C)
* Your Campaign Reach is 2,000,000 users
* You choose a Test Population of 15% of Campaign Reach (300,000 users)
Then, we send:
* Variant A to 100,000 users
* Variant B to 100,000 users
* Variant C to 100,000 users
After the 300,000 messages have been delivered, we calculate the winning message over this test group based on the number of views.
We then automatically send the winning message to the remainder of your target audience which in this example is 1,700,000 users.
The following is a sample report:

Sample Campaign Reports
Campaigns Sent to Live User Segments
[](https://docs.clevertap.com/docs/ab-multivariate-testing#campaigns-sent-to-live-user-segments)
-----------------------------------------------------------------------------------------------------------------------------------------
With campaigns sent to live user segments, campaign (triggered) messages are delivered immediately when a user’s activity matches the criteria that you have selected.
###
Example
[](https://docs.clevertap.com/docs/ab-multivariate-testing#example)
In this scenario, you want to send a message when the user has completed a booking or purchase. Since it is not possible to determine the reach of triggered campaigns upfront, you must decide how many of the total messages to send for A/B testing before a winner is declared.
If you select 500 users as your test audience, we alternate delivery of Variant A and Variant B as users qualify for the campaign. After 500 total messages are sent (Variant A – 250 and Variant B – 250), we decide the winner based on the number of views and only continue with this winning message for the duration of the campaign.
Deciding on a test audience for A/B testing triggered campaigns requires some estimation. We recommend you check the total messages that were sent for similar triggered campaigns in the past to get a sense of how many users may qualify. If you select a test audience that is too small (25 users) you will get a statistically insignificant sample.
If your test group size exceeds the total number of users who ultimately qualify for that campaign, then no winner is be declared and each message variant is alternatively delivered for the duration of the campaign.
To clarify further, here is how this process works across different channels:
* **For mobile channels:** If the campaign starts at 7 PM and has a conversion window until 7:30 PM, then Variants A and B are sent alternately during the conversion window (7 PM to 7:30 PM). Once the conversion window ends, the winner variant is declared based on the conversion metrics. The winning variant is sent from 7:31 PM onwards for the remainder of the campaign.
* **For other channels:** If the campaign starts at 7 PM, the conversion time is 30 minutes, and a sample size of 1000 is selected, then Variants A and B are sent alternately until 1000 users are reached (for example, this is achieved by 7:15 PM). At 7:15 PM, we wait for the 30-minute conversion window to complete. By 7:45 PM, the winner variant is declared based on performance metrics such as conversions. The winner variant is sent for the rest of the campaign duration.
> 📘
>
> ###
>
> Same Number of Views/Clicks
>
> [](https://docs.clevertap.com/docs/ab-multivariate-testing#same-number-of-viewsclicks)
>
> * For Email and WhatsApp, if all variants receive the same number of views, then Variant A is declared the winner.
> * For the rest of the channels, if all variants receive the same number of clicks, then Variant A is declared the winner.
Split Delivery
[](https://docs.clevertap.com/docs/ab-multivariate-testing#split-delivery)
=============================================================================================
For some campaigns, you want to send multiple variants of a message to your entire target audience without selecting a winner. With split delivery, you choose what percentage of your target audience receives each variant and we deliver them accordingly.

Results of Split Delivery Test
> 📘
>
> ###
>
> Variant Consistency in Live Campaigns
>
> [](https://docs.clevertap.com/docs/ab-multivariate-testing#variant-consistency-in-live-campaigns)
>
> For Split Delivery or A/B tests, users are consistently shown the same variant upon repeated qualifications, with one notable exception. If the event triggering the campaign is sent via API using user identity (without device information), variant assignments become random each time the user qualifies.
>
> To ensure variant consistency, CleverTap recommends sending events via SDK or through the API using object ID (refer to the following table).
>
> | Event Source | Variant Consistency |
> | --- | --- |
> | SDK | Consistent |
> | API (object ID) | Consistent |
> | API (user identity) | Random |
>
> **Example**
>
> * Consider a trigger campaign with the two variants: Variant A and Variant B.
> * **Scenario 1: Event triggered via SDK**
> * **Outcome**: User receives Variant A initially and consistently sees Variant A upon all subsequent qualifications.
> * **Scenario 2: Event triggered via API using user identity**
> * **Outcome**: User receives a random variant on each qualification. For example, the user might first see Variant A, then Variant B in subsequent triggers, and again Variant A later, due to missing device information.
**How it works**
As with A/B testing, you can add up to three variants to a campaign message. With split delivery, you can decide what percentage of your audience receives each message variant. We deliver the messages in exactly this proportion for the duration of the campaign.

Variant Distribution for Split Delivery
After the campaign is completed, navigate to the campaign stats to compare how each message performed.
Deliver to a Subset of the Target Audience
[](https://docs.clevertap.com/docs/ab-multivariate-testing#deliver-to-a-subset-of-the-target-audience)
=====================================================================================================================================================
Sometimes you want to send a message to only a subset of the qualifying audience (target reach) for a campaign or avoid sending it if the number of qualified users exceeds the specified number.
A use case is a limited offer when you want to distribute a fixed number of coupon codes. If the total reach for your campaign exceeds the available number of coupon codes, you can simply limit the number of users who will receive the message to the available number of coupons.

Deliver Campaigns to Subset of Users
Here is how it works:
In the campaign creation flow, when you are determining who to send your message to under the _Limits and Control Group_ section, select the option to limit delivery of the messages to the number you want.
For triggered campaigns (based on live user segments), as users qualify, they receive the message until the total specified quantity is delivered, after which the campaign ends. For campaigns based on past behavior segments, we randomly select the users who receive the message.
The campaign limits can also be configured as follows:
* Global campaign limit: Set up at the device level.
* When _Send to all devices_ is selected, it limits the number of messages to be sent to all the active devices of each user every day (or as per the limits in settings). For instance, if the limit for the Mobile Push channel is set to 2 messages per day, and the user has 2 active devices with push tokens. When the push campaign is sent, it is delivered to all the user's active devices, resulting in a total message count of 2 in this scenario.
* When _Send to last active device_ is selected, limits the number of messages to be sent to each user for each day (or as per the limits in settings).
* Campaign run limit: Limits the number of users for the entire campaign or each run of a campaign for a fixed time or recurring campaign. In the case of live campaigns, each day is considered as each run.
* Safety check: Prevents sending out unwanted campaigns. A campaign does not run if the number of qualified users exceeds the safety limit. The campaign creator receives an email alert for further action.
> 👍
>
> ###
>
> Target Audience Example
>
> [](https://docs.clevertap.com/docs/ab-multivariate-testing#target-audience-example)
>
> A customer has a budget for distributing 1,000 discount coupons but the qualified user count is 10,000. If you select the safety check, the campaign does not run and prevents the sender from spending over budget.

Control Group and Targeting Cap
Email A/B Testing
[](https://docs.clevertap.com/docs/ab-multivariate-testing#email-ab-testing)
==================================================================================================
CleverTap's email A/B testing feature lets you compare up to three different versions of an email to find the best-performing one. You decide the size of the test audience for the A/B test, we determine the winner based on the number of views, and then deliver the winning message to the rest of your target audience.
Setup Steps
[](https://docs.clevertap.com/docs/ab-multivariate-testing#setup-steps)
---------------------------------------------------------------------------------------
Creating an email campaign using the A/B testing feature follows a similar pattern to creating a normal email campaign. After choosing the segment to target and frequency of communication, you can run the campaign as an A/B test using the following steps.
1. Select _A/B Test_ to set up the email A/B test.

Create a Message
2. On the next page, build two or three different variations of the email you want to send. You can modify the email template, content, subject line, and sender name.
3. Click **Done** after you are finished building the email variations.

Variant Distribution of Emails
> 📘
>
> ###
>
> Winner Evaluation
>
> [](https://docs.clevertap.com/docs/ab-multivariate-testing#winner-evaluation)
>
> We determine the winner based on the number of views and then deliver the winning message to the rest of your target audience.
>
> In the above image, we are sending the A/B test to a sample size of 10% who will receive either Variant A or B. In other words, 5% of the target segment will receive email Variant A and another 5% will receive email Variant B. We will wait for 45 minutes to evaluate the winner based on the number of views. The winner variant is then automatically sent to the remaining 90% of the target segment.
>
> If there is a tie between Variant A and B, we will send the email Variant A to the remaining 90% of the audience.
You are finished with setting up the A/B test portion of building your email campaign. Now, you can complete the rest of the steps similar to a normal campaign.
6. Click **Publish Campaign** to finalize your campaign.

Publish the Campaign
Multi-variant Campaigns
[](https://docs.clevertap.com/docs/ab-multivariate-testing#multi-variant-campaigns)
===============================================================================================================
Using the message by user property type, you can create multi-variant campaigns. You can send a campaign based on the selected user property.
For example, if you have users segregated based on languages. You can send campaign content in different languages based on their user property. You can select the language as the user property for the multivariate campaign. This allows you to create multiple messages in the same campaign, each reaching out to users based on their language preference.
You can create up to 50 such variants in the same message. The default variant engage the users who have no value against the profile property.

Create Multi-Variant Campaigns
You can also perform analysis and derive insights based on the variant of the notification sent. For analysis, you can filter the information based on the event property _Variant_ for the notification-based events (Notification Sent, Notification Clicked, etc.) as shown in the following figures. You can download the list of users to whom a specific notification variant was sent, as well as save this query as a segment and use it for further action.

Filtering Variant Details on Event Page

Filtering Variants on Funnels Page
Updated about 2 months ago
* * *
Ask AI
---
# Recommended Delay for Inaction Campaigns
Overview
[](https://docs.clevertap.com/docs/recommended-delay#overview)
===========================================================================
_Recommended Delay_ is a feature that recommends the best time to send a message for an inaction campaign which is designed to engage users who do not do a certain action.
Use Cases
[](https://docs.clevertap.com/docs/recommended-delay#use-cases)
=============================================================================
First Scenario: Nudge users who install your app (action) but do not purchase something within a two-hour (inaction) timeframe. Here, the two-hour gap is selected based on manual analytics. Using the _Recommend Delay_ feature, you can let CleverTap automatically decide the golden period within which the user should have purchased and then send out a message to re-engage users who do not purchase within that period.
Second Scenario: The average time it takes a user to add an item to their cart (action 1) and then checkout (action 2) is five minutes. If the user has not completed the checkout process within five minutes of adding the item to their cart (inaction), then the likelihood that a user will check out drops substantially. If you use the _Recommended Delay_ feature, we will recommend the best time to wait before you send a notification to the user if they have not completed the checkout process.
How It Works
[](https://docs.clevertap.com/docs/recommended-delay#how-it-works)
===================================================================================
CleverTap creates this recommendation by calculating the average time users take to convert from one action to another action.
Beyond this average time, the likelihood that a user completes the second action drops substantially; however, if you send a message to the user at that point, you can increase the conversion rate for the second action.
Create an Inaction Campaign
[](https://docs.clevertap.com/docs/recommended-delay#create-an-inaction-campaign)
=================================================================================================================
To create an inaction campaign:
1. From the dashboard, navigate to _Campaigns_.
2. Click **\+ Campaign**.
3. Select a messaging channel.

Create an Inaction Campaign
4. Under _Start here_ > _Qualification Criteria_, select _Live Behavior_.
5. Click **Done**.

Select the Qualification Criteria
7. Under the _Set a goal_ section, select _Conversion Tracking_.
8. Select event properties, conversion time, and revenue property.
9. Click **Done**.

Set Campaign Goal
10. Navigate to _Who_ > _Target Segment_.
11. Under _Find users from segment_, select **Inaction**
12. Click **or find best delay**.

Fine Best Delay
Updated about 2 months ago
* * *
Ask AI
---
# Time in User Property
Overview
[](https://docs.clevertap.com/docs/time-in-user-property#overview)
===============================================================================
Time in User Property gives you full control over when messages are delivered by allowing you to define the send time outside CleverTap for each user and pass it directly as a user property. Instead of relying on CleverTap’s system-calculated Best Time, you decide the best time logic using your own models, rules, or data pipelines, and CleverTap delivers messages exactly at the time you specify for each user.
The calculated time value is transferred to CleverTap by updating a user property through supported data ingestion methods such as the Profile API, CSV upload, or data sync integrations. The value is stored as a standard user property in the user profile and used during campaign execution to determine message delivery time for each user.
> 📘
>
> ###
>
> Private Beta
>
> [](https://docs.clevertap.com/docs/time-in-user-property#private-beta)
>
> Currently, this feature is a Private Beta Release. If you want access to this feature, contact your Account Manager.
When should you use this?
[](https://docs.clevertap.com/docs/time-in-user-property#when-should-you-use-this)
----------------------------------------------------------------------------------------------------------------
Use Time in User Property if:
* You externally calculate the best send time for each user.
* You want CleverTap to deliver messages exactly at the time you provide for each user.
* You want to avoid creating multiple time-based campaigns or segments.
Setting up Time in User Property
[](https://docs.clevertap.com/docs/time-in-user-property#setting-up-time-in-user-property)
===============================================================================================================================
Setting up Time in User Property involves two steps:
1. Pass the time value in a user property
2. Use the property in campaigns
Step 1: Pass the time value in a user property
[](https://docs.clevertap.com/docs/time-in-user-property#step-1-pass-the-time-value-in-a-user-property)
----------------------------------------------------------------------------------------------------------------------------------------------------------
Pass a time-of-day value (in minutes) as a user property in the user profile. This value represents the number of minutes since the start of the day (00:00) and is used to determine the exact time at which the message should be sent to that user (in account timezone).
For example, if you set the user property to `1125`, CleverTap schedules the message to be delivered to that user at 6:45 PM (account timezone). Similarly, `0` means 12:00 AM, `145` means 02:25 AM, `570` means 09:30 AM, and `1125` means 06:45 PM.
Step 2: Use the property in campaigns
[](https://docs.clevertap.com/docs/time-in-user-property#step-2-use-the-property-in-campaigns)
----------------------------------------------------------------------------------------------------------------------------------------
To configure the Send Time for a specific campaign,
1. Navigate to the _When_ section.
2. Select _Schedule for later_ or _Set as Recurring_ under the Data and time section, depending on the nature of your campaign.
3. Select _Time in User Property_ as the send-time option. This instructs CleverTap to schedule message delivery for each user based on the time stored in the selected user property.

Time in User Property
4. Specify the Start time and End time of the campaign. If End Time is not specified, the campaign runs for 24 hours.

Start and End Time
5. In the _Delivery Preferences_ section, navigate to the _Time in user property configuration_. Select the **User Property** from the dropdown.
6. Configure the fallback behavior for the following scenarios:
1. **Fallback for users with no/invalid time in user property:** Applies when the selected user property is missing, empty, or contains an invalid value, so CleverTap cannot determine a send time for that user using Time in User Property.
2. **Fallback for users not qualifying in campaign time range:** Applies when the user has a valid time value in the selected user property, but that time falls outside the campaign’s configured Start Time and End Time, so the user cannot be included within the campaign’s send window.

Time in user property configuration
> 📘
>
> Note
>
> [](https://docs.clevertap.com/docs/time-in-user-property#note)
>
> -----------------------------------------------------------------------
>
> * This option is available only for Past Behaviour Campaigns.
> * Campaign-level throttling and limits apply as usual.
> * Time in User Property uses the account timezone, not the user’s local timezone.
> * The send time is locked in when the campaign begins running for users who qualify at that time. Updates made to the user property after dispatch begins do not affect message delivery for those users. However, users who qualify later will follow the updated time value available at the time they enter the campaign.
> * Supported time format:
> * The user property must be passed as an integer representing the number of minutes since the start of the day `(00:00)`.
> * For example, `145` means 02:25 AM and `1125` means 06:45 PM.
> * Seconds are not supported.
Updated about 5 hours ago
* * *
Ask AI
---
# Conversations
Overview
[](https://docs.clevertap.com/docs/conversations#overview)
-----------------------------------------------------------------------
Consumers across the globe are increasingly shifting from phone calls, emails, and social media platforms to real-time messaging apps. They are turning to WhatsApp, Facebook Messenger, Telegram, and other local apps to connect with family, friends, and colleagues. A similar experience is expected from brands to communicate with their users in real-time rather than waiting for responses from agents in call centers or passively communicating over emails.
Use Cases
[](https://docs.clevertap.com/docs/conversations#use-cases)
-------------------------------------------------------------------------
Engaging your end-users with chat-based conversations has a huge impact on your business metrics. The following table demonstrates some use cases:
| Example Industry | Use Cases |
| --- | --- |
| Travel and Hospitality | * Transactional messages like bookings, refunds, cancelations
* Reminders for upcoming flights or gate information on silent airports |
| Food Delivery | * Food delivery status, including information on driver and ETA
* Thank you messages after order delivery |
| Streaming Media/OTT | * Premium service options when a user finishes a movie/episode |
Auto Responders
[](https://docs.clevertap.com/docs/conversations#auto-responders)
=====================================================================================
You can have a set of auto-responses to answer customer queries which can help relieve your agents and also significantly reduce the response time for the customer.
Set Up FAQs
[](https://docs.clevertap.com/docs/conversations#set-up-faqs)
-----------------------------------------------------------------------------
You can add an FAQ from the _Autoresponders_ page or upload a CSV file with multiple FAQs. To do so, perform the following steps:
1. From the dashboard, navigate to _Conversations_ > _Setup_ > _Autoresponders_.
2. Click the **Create** or **Edit** button on the FAQs section to add FAQs.

Setup FAQs
3. Click the **\+ FAQ** button to add FAQs.

List of FAQs
The _Create an FAQ_ window displays.

Create an FAQ
4. Create a new FAQ or select _Upload CSV_ to upload a CSV file. Download the sample CSV to view the format for uploading your FAQs.

Upload FAQ using CSV
5. Click the **Test FAQ** link to test your FAQs. It shows the specified response when you enter a keyword.

Compose FAQ
> 📘
>
> ###
>
> View Matched and FAQ Links
>
> [](https://docs.clevertap.com/docs/conversations#view-matched-and-faq-links)
>
> The _View Matched_ link displays only for a saved FAQ. Clicking the FAQ link shows you the expected answer and the mapped FAQ.
###
Test FAQ
[](https://docs.clevertap.com/docs/conversations#test-faq)
When you test a response, you can see the matching FAQ for it. To test response for a saved FAQ, follow the steps:
1. From the dashboard, navigate to _Conversations_ > _Autoresponders_.
2. Click the _Test FAQ_ link. The _Test FAQs_ window displays.

View FAQs
3. Enter a string to test the response. The response displays a link to the matching FAQ.
4. Click the **View matched** link to view the FAQ that best matches the response.

Edit an FAQ
###
Edit or Archive FAQs
[](https://docs.clevertap.com/docs/conversations#edit-or-archive-faqs)
To view the FAQ list, perform the following steps:
1. From the dashboard, navigate to _Conversations_ > _Setup_ > _Autoresponders_.
2. Click the **Edit** button on FAQs section to view FAQs.
3. View, edit, clone, or archive FAQs.

Edit or Archive an FAQ
###
FAQ Types
[](https://docs.clevertap.com/docs/conversations#faq-types)
You can create four types of FAQs to help distinguish your FAQs, such as:
* Greetings: Add a greeting such as hi, hello, good morning, and so on.
* General: Any conversation which is specific to your business need.
* Closing: Add an end to the conversation. For example, "Thank you for contacting us. Have a good day."
* Filler: Add a filler in the conversation. For example, "Please wait while I fetch your information."
> 📘
>
> ###
>
> Adding a Question to an FAQ
>
> [](https://docs.clevertap.com/docs/conversations#adding-a-question-to-an-faq)
>
> When setting up an autoresponder, it is mandatory to add at least one question to the FAQ. Our NLP model (on which the responder is built) ensures that if similar questions are asked by your users, the autoresponder responds with the right answer.
Set Up a Quick Reply
[](https://docs.clevertap.com/docs/conversations#set-up-a-quick-reply)
-----------------------------------------------------------------------------------------------
A quick reply can help you set the context for a conversation, generally during your non-business hours. To set up quick replies, perform the following steps:
1. From the dashboard, navigate to _Conversations_ > _Setup_ > _Autoresponders_ > _Quick reply_.
2. Click the **\+ Reply** button to add quick replies. The Quick Reply page displays.
3. Create a quick reply and select any of the time periods when the _Quick Reply_ must be active:
* Always on
* During specific hours
* Between period

Setup a Quick Reply
###
Always
[](https://docs.clevertap.com/docs/conversations#always)
The _Always_ quick reply triggers a specified response. It is triggered for all incoming messages, regardless of the time or day. It is ideal for providing immediate assistance or information to users without any time restrictions.
###
During Specific Hours
[](https://docs.clevertap.com/docs/conversations#during-specific-hours)
The _During Specific Hours_ quick reply allows you to specify certain hours during which the predefined response should be triggered. It is useful for setting up responses that are relevant only during specific time periods, such as non-business hours support. You can even define hours on specific days such as 5.00 PM to 9.00 AM on Weekdays and all hours on Saturdays and Sundays.
###
Between Period
[](https://docs.clevertap.com/docs/conversations#between-period)
The _Between period_ quick reply triggers responses within specific time intervals or date ranges. It is suitable for creating responses that are relevant only during certain date ranges or recurring intervals, such as holidays.
Prioritize
[](https://docs.clevertap.com/docs/conversations#prioritize)
---------------------------------------------------------------------------
You can prioritize FAQs over quick replies and vice versa. To prioritize autoresponders, perform the following steps:
1. From the dashboard, navigate to _Conversations_ > _Setup_ > _Autoresponders_.
2. Select _FAQs_ and _Quick Reply_ from the list. The priority is set by the order of selection.

Prioritize Autoresponders
3. Click **Save**.
Autoresponder Flow
[](https://docs.clevertap.com/docs/conversations#autoresponder-flow)
-------------------------------------------------------------------------------------------
The following image shows the flow of the autoresponder:

Conversation Autoresponder Flow
> 🚧
>
> ###
>
> FAQ Responder Configuration
>
> [](https://docs.clevertap.com/docs/conversations#faq-responder-configuration)
>
> This flow assumes that the FAQ responder is configured first in the _Responders chain_ section.
FAQ Best Practices
[](https://docs.clevertap.com/docs/conversations#faq-best-practices)
-------------------------------------------------------------------------------------------
This section covers FAQ best practices, including:
1. Check that the questions are detailed and clear. Always use complete and meaningful sentences.
Example:
* Correct: How can I recover the password of my account?
* Incorrect: Wrong password.
2. Add enough context to a question. Check that the answer contains all the relevant information for the user.
Example:
* Correct: How can I return my order?
* Incorrect: How to return?
3. Avoid having questions that have less than five words, however, it is okay to have short responses for closing, fillers, or greeting.
Example:
* Correct: Do you have COD as a payment option?
* Incorrect: COD please.
4. Check that the FAQ sets are contextually exclusive from each other.
5. Try to add related questions in the same FAQ to provide more context. The responder model can handle spelling errors as long as they do not affect the meaning of the sentence. Context and flow are more important than simple spelling errors or grammatical variations.
On the other hand, acronyms and lingos must be added in related questions separately.
Example FAQ: Do you have cash on delivery as a payment option?
Related example questions:
* Do you have COD as a payment method?
* Can I pay after the delivery is completed?
6. The responder works best for the English language. Use of any other language for adding FAQs. For example, writing Hindi using Roman/Latin script may result in unpredictable performance.
Role Based Access: Agent Role
[](https://docs.clevertap.com/docs/conversations#role-based-access-agent-role)
----------------------------------------------------------------------------------------------------------------
CleverTap has a system role of agents which gives the capability to dashboard users to access conversations. Apart from an agent, an admin can also access conversations. You can have multiple agents in the conversations dashboard.
> 📘
>
> ###
>
> Agent Role
>
> [](https://docs.clevertap.com/docs/conversations#agent-role)
>
> Agent role is a system role along with an admin, a member, a creator, and an approver. A user who is allocated an agent role will be able to access conversations.
To assign an agent role to a dashboard user, perform the following steps:
1. From the dashboard, navigate to _Account_ > _Settings_ > _Users_.
2. Select a user to assign an _Agent_ role.
For more details on user role management, refer to [Role Based Access Control](doc:role-based-access-control)
.

Role Based Access
If you are an authenticated user (Role = Admin or Agent), you can access conversations by clicking on _Conversations_ from the left navigation bar.
> 🚧
>
> ###
>
> One Agent per Conversation
>
> [](https://docs.clevertap.com/docs/conversations#one-agent-per-conversation)
>
> It might happen that two or more agents click on the same conversation. In such cases, only the first agent can chat with the user and the agents who clicked later will not be able to chat.
The _Conversations_ dashboard looks like the following:

Conversation Dashboard
You see a list of conversations when you arrive on the dashboard. These conversations display when your end-users reply to one of your campaigns.
You can click any of the messages to open the chat window. The chat window is the panel that displays on the right where you can chat with your users seamlessly.

Respond to Conversations
Unlike [WhatsApp](doc:whatsapp)
campaigns where you have to use a templated messages, _Conversations_ lets you use free form messages and attach files.
Converting User Queries into Customer Support Tickets
[](https://docs.clevertap.com/docs/conversations#converting-user-queries-into-customer-supporttickets)
----------------------------------------------------------------------------------------------------------------------------------------------------------------
> 📘
>
> ###
>
> Customer Support Ticketing
>
> [](https://docs.clevertap.com/docs/conversations#customer-support-ticketing)
>
> CleverTap provides putting a ticket status to ongoing chats with your end-users. This helps in categorizing and later searching based on the resolution status of your customer's queries.
You can assign one of the following five ticket statuses:
* New: As soon as a user replies to a campaign message, it is marked as _New_. This is irrespective of the previous ticket status with that user.
* Active: When an agent replies to the user.
* Pending: When the user replies back to the agent.
* Resolved: When the agent resolves the conversation.
* Inactive: These are all conversations that are past the 24-hour conversation.

Ticketing in Conversations
> 📘
>
> ###
>
> Inactive Conversations
>
> [](https://docs.clevertap.com/docs/conversations#inactive-conversations)
>
> The maximum limit for inactive conversations to appear in the inactive tab is 15.
Change Status
An agent can move the status from one to the other. As shown in the following table, tickets auto change status based on these criteria:
| Flow | Status | Location |
| --- | --- | --- |
| When user messages you for the first time | New | All conversations |
| When your agent replies back to the user | Active | My conversations (for the agent) |
| When user replies back to the agent | Pending | My conversations (for the agent) |
| When agent resolves the conversation | Resolved | All conversation |
| When a 24-hour window expires | Inactive | Inactive conversations |
The ticket status is similar to a system profile property and hence, it is also searchable on the dashboard.
Update Status Manually
[](https://docs.clevertap.com/docs/conversations#update-status-manually)
---------------------------------------------------------------------------------------------------
To assign a ticket to a conversation, perform the following steps:
1. Cick on a conversation and close it. A pop-up displays asking you to assign a ticket before closing it.
2. Select a new ticket status.
3. Click **Assign and close**.

Update Conversation Status Manually
Search and Sort Conversations
[](https://docs.clevertap.com/docs/conversations#search-and-sort-conversations)
-----------------------------------------------------------------------------------------------------------------
If you have millions of conversations going, CleverTap provides an easy way to search your conversations by clicking on the search bar on top of the conversations dashboard.
The following filters are available:
* Search bar: Filters on user name, latest message text.
* Campaign: Filters based on campaign names.
* Label: Filters based on campaign labels.
* Ticket status: Filters based on ticket status.
Updated about 2 months ago
* * *
Ask AI
---
# Product Experiences Next Gen
With Product Experiences, you can change the behavior and appearance of your app remotely without an update. This helps you to deliver an In-App personalization experience to your app users and test their response. The feature comprises the following tools:
* **Remote Config**: A smart solution that lets businesses customize, manage, and adjust their application or website from a distance. It requires minimal development effort and allows for changes in the app’s design, user experience, and workflow for all users or specific groups. With Remote Config, you can:
* Easily roll out new features.
* Modify call-to-action (CTA) text.
* Adjust game difficulty levels.
* Personalize other elements of the app for specific user segments.
* **Product A/B Tests**: This feature enables you to experiment with different versions of your app's user interface or functionality. You can precisely measure results using Key Performance Indicators (KPIs) and seamlessly deploy the most successful version to your user base.
Resources
[](https://docs.clevertap.com/docs/product-experiences-nextgen#resources)
=======================================================================================
Refer to the following documents to understand CleverTap's new and enhanced Product Experiences feature:
#### Remote Config
[Remote Config User Guide](https://docs.clevertap.com/docs/remote-config)
[Android Developer Guide](https://developer.clevertap.com/docs/android-remote-config)
[iOS Developer Guide](https://developer.clevertap.com/docs/ios-remote-config)
[Web Developer Guide](https://developer.clevertap.com/docs/web-remote-config)
[Unity Developer Guide](https://developer.clevertap.com/docs/unity-remote-config-sdk-v300)
[Flutter Developer Guide](https://developer.clevertap.com/docs/flutter-remote-config)
[React Native Developer Guide](https://developer.clevertap.com/docs/react-native-remote-config)
[Cordova Developer Guide](https://developer.clevertap.com/docs/cordova-remote-config)
[Remote Config APIs](https://developer.clevertap.com/docs/remote-config-api)
#### A/B Tests
[Overview](https://docs.clevertap.com/docs/product-ab-tests)
[Create A/B Tests](https://docs.clevertap.com/docs/create-ab-tests)
[A/B Test Results](https://docs.clevertap.com/docs/ab-test-results)
[A/B Test Best Practices](https://docs.clevertap.com/docs/ab-test-best-practices)
[FAQs](https://docs.clevertap.com/docs/ab-test-faqs)
Updated about 2 months ago
* * *
Ask AI
---
# Best Time Campaign
Overview
[](https://docs.clevertap.com/docs/best-time#overview)
===================================================================
_Best Time_ is a feature that learns from your user's activity over time to recommend the most optimal time to send a message to each user for a campaign or a journey. This optimizes the message send-time for each user based on their time zone and the period they are most active with your application. These time-based messages help achieve the following for the Campaigns and Journeys built using the Best Time feature:
* Increased Engagement
* Personalized Experience
* Improved Conversion Rates
Best Time Overview Video
[](https://docs.clevertap.com/docs/best-time#best-time-overview-video)
===================================================================================================
Learn how to send campaigns based on contextual Best Time for users with a sample use case.
It enables you can create a Best Time Config based on the event and its properties. The Best Time Config refers to an event that triggers the determination of the best time to send a notification to your users. Thereby ensuring the optimal time to send messages or notifications to individual users based on their historical behavior and engagement patterns.
With this feature, you can:
* Configure up to 10 different configurations based on specific event filters along with the properties.
* View the distribution of optimal times for your users, thereby maximizing the impact of the campaigns.
* Select a fallback time for those without a clear best time.

How It Works
[](https://docs.clevertap.com/docs/best-time#how-it-works)
===========================================================================
CleverTap identifies the best time based on a selected event. The _Best Time_ campaigns are sent by splitting a day into 12 buckets of two hours each. The users are then assigned to one of these buckets based on the time of the day they are most active on the app. The user is then sent the campaign or journey in that two-hour window. If any user has not performed the selected event in the last 180 days, you can select the time slot (fallback time) for sending the campaign based on the user distribution.
For example, you want to send personalized discount offers to your users based on the Product Viewed in the last 180 days. With the Best Time feature, you can optimize the timing of these messages to maximize user engagement and conversion rates based on user distribution.

Sample Best Time Config
> 👍
>
> ###
>
> Bucket Example
>
> [](https://docs.clevertap.com/docs/best-time#bucket-example)
>
> For example, if a _Best Time_ campaign is created on January 1 at 5:15 PM, the campaign will start running based on the upcoming best time slot i.e. 6 P.M. and the users will receive campaigns based on the slot in which they are most active on the application.
> 📘
>
> ###
>
> Best Time Campaign Handling During DND
>
> [](https://docs.clevertap.com/docs/best-time#best-time-campaign-handling-during-dnd)
>
> If the Best Time bucket coincides with the DND period defined by the user, then the campaign message is discarded.
Create Best Time Campaigns
[](https://docs.clevertap.com/docs/best-time#create-best-time-campaigns)
=======================================================================================================
This is a two-step process that includes the following steps:
1. [Set Up the Best Time Event](https://docs.clevertap.com/docs/best-time#set-up-best-time-event)
.
2. [Create a Campaign using the Best Time feature](https://docs.clevertap.com/docs/best-time#create-a-campaign-using-the-best-time-feature)
.
Set Up Best Time Event
[](https://docs.clevertap.com/docs/best-time#set-up-best-time-event)
-----------------------------------------------------------------------------------------------
You can configure the best time option for one-time or recurring campaigns for **Email**, **SMS**, **Push**, **WhatsApp**, and **Web Push** channels. To set up Best Time campaigns:
1. Navigate to _Settings_ > _Setup_ > _Best Time_ from the CleverTap dashboard.
2. Click **\+ Best-Time Config**.

Set Up Best Time Event
3. Enter the _Config name_ to uniquely identify the Best Time event.
4. Select the system/custom event for which you want to define the Best Time campaign.
5. Click **\+ Filter** to target a particular set of users for the campaign.
Consider an example where you want to send Best Time campaigns to users who have performed the _Added To Cart_ event for the product _Ironman Helmet_ on their mobile devices.
6. (Optional) Click **Preview User Distribution** to check the user distribution for the selected event in the last 180 days. You can also change the filter based on the user distribution to achieve optimal conversion rates.

Define Best Time Config
7. Click **Save** to save the Best Time event.
Currently, you can create journeys using the default Best Time config. So, it is mandatory to mark one of the Best Time configs as Default to refer to it later. You can do so by clicking the  icon and selecting _Mark as Default_.

Marking Best Time Event as Default
Similarly, you can also delete a particular Best Time event by clicking the  icon and then selecting _Delete_.
> 📘
>
> ###
>
> Default Best Time Events
>
> [](https://docs.clevertap.com/docs/best-time#default-best-time-events)
>
> The default Best Time events cannot be deleted. Also, deleting such events does not impact the already running campaigns.
Create a Campaign using the Best Time Feature
[](https://docs.clevertap.com/docs/best-time#create-a-campaign-using-the-best-time-feature)
---------------------------------------------------------------------------------------------------------------------------------------------
Here, consider an example of the Best Time email campaign. To create a campaign with this feature, perform the following steps:
1. Navigate to _Campaigns_ from the CleverTap dashboard.
2. Click **\+ Campaign**.

Create a Campaign
3. Select _Email_ from the list of messaging channels.
4. Define all the following information for the campaign:
* Qualification Criteria
* Email Service Provider
* Campaign Goal
* Who
* What
For more information about configuring the above details on the CleverTap dashboard, refer to [Create Email Campaign](doc:create-message-email)
.
5. Define the Best Time campaign schedule:
a. From the _When_ section of the campaign, select _Schedule for later_ or _Set as Recurring_ under the Data and time section, depending on the nature of your campaign.
b. Select the date to send the campaign and select _Best time for every user_ from the dropdown.

Define Best Time Campaign Schedule
Best Time feature works with the following campaign types:
* One-time campaign, which is scheduled for a later time
* Campaigns scheduled for multiple dates
* Recurring campaign
> 🚧
>
> ###
>
> Campaign Time Overlap
>
> [](https://docs.clevertap.com/docs/best-time#campaign-time-overlap)
>
> If you have the Best Time campaign scheduled for the present day, you cannot schedule a Fixed Time campaign for the next day to avoid campaign time overlap between two dates.
c. Click **Done**.
d. Select the _Best Time event_ under the _Delivery preferences_ section or select _Ad hoc event_ to define the Best Time event here if not done earlier.

Select Best Time Event
e. Select the _Fallback time frame_ if the best time is unavailable for the users or the user has not performed the selected event in the last 180 days.
f. Set up the remaining fields under the _When_ section of the campaign and click **Done**.
The campaign is now ready to publish.
Create Best Time Journeys
[](https://docs.clevertap.com/docs/best-time#create-best-time-journeys)
=====================================================================================================
For campaigns following a past behavior segment, messages can be delivered at the best time with any of the following channels: [email](doc:email)
, [push notifications](doc:push)
, [web push](doc:web-push)
, and [SMS](doc:SMS)
.
1. [Set Up the Best Time Event](doc:best-time#set-up-best-time-event)
.
2. [Create Journeys with Best Time Feature](doc:best-time#create-a-campaign-using-the-best-time-feature)
.
Create Journeys with Best Time Feature
[](https://docs.clevertap.com/docs/best-time#create-journeys-with-best-time-feature)
-------------------------------------------------------------------------------------------------------------------------------
To create journeys using the Best time feature:
1. [Create a journey](https://docs.clevertap.com/docs/journeys)
as per your requirement.
2. Click on the  icon between the segment and the consecutive message node.
3. Select the _Best time_ option to send a message at the best time. Currently, you can create journeys using the default Best Time config. So, it is mandatory to mark one of the Best Time configs as Default to refer to it later.
4. Click **Save & Close**.

Define Delivery Options
Advanced Options
[](https://docs.clevertap.com/docs/best-time#advanced-options)
===================================================================================
If _Best Time_ is chosen as the delivery option, the following advanced options are applicable:
* User time zone: Considering the _Best Time_ feature chooses the time when the user is most active, the [user time zone](https://docs.clevertap.com/docs/notification-delivery-options#section-delivery-in-user-s-timezone)
is always implicitly applied.
* Global throttle limits: Cannot be applied with the _Best Time_ feature.
Updated about 2 months ago
* * *
Ask AI
---
# Messaging Frequency Caps
Overview
[](https://docs.clevertap.com/docs/messaging-frequency-caps#overview)
==================================================================================
Frequency caps help you control the number of messages your users receive. It is common to run multiple messaging campaigns simultaneously or in close proximity to one another. The same user may qualify for more than one of these campaigns and be subject to receiving several messages in short succession.
Alternatively, for a recurring or triggered campaign, the same user may re-qualify for this campaign and receive the same message more than once. Frequency caps provide the capability to ensure your users do not receive too many messages.
CleverTap has two types of frequency caps, including:
* _Global Frequency Caps_ control the maximum messages a user can get across campaigns for a particular channel of communication.
* _Message-level Frequency Caps_ define how often messages can be sent to a particular user for a particular campaign.
When a frequency cap applies to a user, CleverTap will not deliver the associated message. The dropped messages will be accounted for in the campaign report error table.
Global Frequency Caps
[](https://docs.clevertap.com/docs/messaging-frequency-caps#global-frequency-caps)
============================================================================================================
Global frequency caps operate on a per-channel basis and let you specify the message cadence, dwell time between messages, and throttle limits (delivery rates).
Maximum Messages per Channel
[](https://docs.clevertap.com/docs/messaging-frequency-caps#maximum-messages-per-channel)
--------------------------------------------------------------------------------------------------------------------------
You can define the maximum number of messages a user can receive from a specific communication channel across campaigns.

> 👍
>
> ###
>
> Cadence Example
>
> [](https://docs.clevertap.com/docs/messaging-frequency-caps#cadence-example)
>
> You can define a cadence of three push notifications in seven days. This ensures that users only receive three push messages in seven days.
Dwell Time Between Messages
[](https://docs.clevertap.com/docs/messaging-frequency-caps#dwell-time-between-messages)
------------------------------------------------------------------------------------------------------------------------
For a communication channel, you can define the minimum time gap between messages across campaigns.
For example, you can set a minimum gap of at least four hours between messages with a range of:
* Minimum gap: 15 minutes.
* Maximum gap: Seven days.

Throttle
[](https://docs.clevertap.com/docs/messaging-frequency-caps#throttle)
----------------------------------------------------------------------------------
Throttle is a feature that enables you to manage the rate at which notifications are sent to end users. It helps prevent overload on your platform/operations by distributing the incoming traffic over a longer period of time rather than redirecting too many users to your mobile application/website at once with too many notifications simultaneously. This feature can significantly reduce the peak traffic on your platform, enabling you to serve more customers without impacting the platform's performance.
Finding the optimal throttling rate is crucial in ensuring the effectiveness of your engagements. A high throttling rate can overload your platform, while a low rate can result in engagements running for longer than expected, affecting the relevance of your messages to end users. Therefore, it is important to strike a balance by setting a reasonable throttling rate that suits your engagement reach and frequency to ensure that your messaging stays relevant without overloading your platform.
> 📘
>
> ###
>
> Throttle Limit Recommendations
>
> [](https://docs.clevertap.com/docs/messaging-frequency-caps#throttle-limit-recommendations)
>
> Check that you always set throttle limit to more than 100 when setting the Ad Hoc limit.
>
> Always check that your throttle limit is set high enough to prevent messages from running for multiple days, because the messages will stop delivering after the third day. This ensures that the relevance for messsages is maintained.
>
> The _restricted reach_ of your messages is displayed in a banner below the _Global throttle limits_. Make sure that the restricted reach is higher than your expected reach to ensure that all users receive the messages.
###
Types of Throttle
[](https://docs.clevertap.com/docs/messaging-frequency-caps#types-of-throttle)
There are two types of throttle:
* _Global Limit_: Select this option to apply global throttle settings to control the overall rate of message delivery. This setting ensures a consistent throttling rate across all campaigns or engagement nodes in journeys.
* _Ad hoc Limit_: Select this option if you want to override the global throttle limits for specific campaigns or engagement nodes in journeys. This option allows for more granular control over message delivery rates based on individual requirements.
####
Global Limit
[](https://docs.clevertap.com/docs/messaging-frequency-caps#global-limit)
The Global Limit is a default throttle setting that applies to all campaigns. This limit is set globally and can be configured from the _Settings_ section. To change the throttle limit:
1. Go to _Settings > Setup > Campaign Limits_.
2. Click **Add channel** and select the channel from the list to add a throttle limit for the channel.

Set Up Global Throttle Limits
This is now the global limit for all your campaigns. You can check this limit from the Campaigns by navigating to _Delivery preferences_ under the _When_ section.

Set Global Limits
> 📘
>
> ###
>
> Note
>
> [](https://docs.clevertap.com/docs/messaging-frequency-caps#note)
>
> * If Global Throttle Limits (GTL) are not set in global settings, you can still configure them for a specific campaign or journey.
> * For a Campaign, navigate to the _When_ section > _Delivery Preferences_ > _Ad Hoc limit_.
> * For a Journey, select the specific Engagement node in the _Journey_ setup > _When_ section > _Delivery Preferences_ > _Ad Hoc limit_.
> * The GTL checkbox is always enabled in Campaigns, similar to Journeys, allowing users to set ad hoc limits even if GTL is not configured in global settings.
>
> 
>
> Delivery Preferences
####
Ad hoc Limit
[](https://docs.clevertap.com/docs/messaging-frequency-caps#ad-hoc-limit)
The Ad Hoc Limit enables you to use a custom throttle limit for a specific campaign, which is different from the Global Throttle settings. This is useful when you want to apply a different throttle limit for a particular campaign without changing the global settings.
1. Go to the _When_ section > _Delivery preferences_. The Delivery preferences section displays the _Global Limit_ and the _Ad Hoc Limit_.
2. Select _Ad Hoc_ Limit to change throttle the message from the current campaign.
3. Enter the value and Click **Done**.

Set Adhoc Limit
The Ad Hoc limit applies only to the current campaign or an engagement node in journeys.
###
Throttling in Journeys
[](https://docs.clevertap.com/docs/messaging-frequency-caps#throttling-in-journeys)
For Journeys, throttle limits for the engagement nodes are the same as the Campaign throttle limits for Push notifications, SMS, Email, Webhooks, and WhatsApp.

Set Up Throttle Limits from Journeys
Depending on the time settings within a Journey, throttling may be allowed or disallowed:
* **Timezone**: The _Account Timezone_ setting provides a centralized way to manage and schedule campaigns, ensuring consistency in timing and reporting across the entire user base. User Timezone settings are designed to send messages at the timezone the user was last active. Applying throttling in this context could cause delays in message delivery, disrupting optimal engagement times and reducing the overall effectiveness of the communication. To avoid this, throttling is allowed only when the messages are scheduled based on the Account Timezone. If you still schedule messages based on the User Timezone, a popup notifies you that throttling will be disabled for campaign limits.
Throttling is permitted when you schedule messages based on the User Timezone only if you select the _Exclude the node from user timezone_ option.

Throttling Permitted When Scheduling Campaigns Based on Account Timezone
* **Best Time Campaigns**: The Best Time setting is designed to optimize message delivery by sending messages at times when users are most likely to engage based on their individual behavior and activity patterns. Throttling is not permitted in this context because it could cause delays in message delivery, disrupting the optimized timing and reducing the overall effectiveness of the campaign. Additionally, throttling would undermine the personalized nature of Best Time messaging by introducing inconsistencies in delivery, potentially diminishing the user experience. To ensure messages are delivered at the ideal moment, CleverTap disables throttling for campaigns that use Best Time, helping to maximize engagement success.

* **Segment Action Node with Zero Sleep Time**: When a segment action node with zero sleep time is added before an engagement node, CleverTap automatically removes throttling for the following engagement node. Zero sleep time indicates that users should proceed immediately from the segment action to the next step without delay. In this scenario, throttling, which controls message delivery rates by spreading them out over time, conflicts with the intent of instant progression. By disabling throttling, CleverTap ensures that messages are delivered in real time, preserving their relevance and impact.
Additionally, when this configuration is applied, the system prompts for user confirmation, ensuring you are aware that the following engagement node will no longer be subject to throttling limits.

Segment Action Node with Zero Sleep Time
However, if you set a sleep time of more than 24 hours, throttle limits remain in effect for the engagement node that follows the segment action node.

Segment Action Node with Sleep Time Greater Than One Day
Message-level Frequency Caps
[](https://docs.clevertap.com/docs/messaging-frequency-caps#message-level-frequency-caps)
==========================================================================================================================
Message-level caps let you control the number of times a particular ongoing campaign is delivered to the same user.
> 🚧
>
> ###
>
> Message Level and Global Frequency Caps
>
> [](https://docs.clevertap.com/docs/messaging-frequency-caps#message-level-and-global-frequency-caps)
>
> Message-level and global frequency caps work together when applied simultaneously. A user may be subject to either or both frequency cap limits.
> 📘
>
> ###
>
> Note
>
> [](https://docs.clevertap.com/docs/messaging-frequency-caps#note-1)
>
> Session limits are not a part of Campaign limits. They are considered separately.
These caps are important for recurring campaigns or triggered campaigns where the same user may re-qualify multiple times to receive a message.
Control Options
[](https://docs.clevertap.com/docs/messaging-frequency-caps#control-options)
------------------------------------------------------------------------------------------------
The control options include:
* Send every time the user qualifies (default): This sends a message every time the user qualifies (can choose to respect global caps).
* Send with a minimum gap of: This sets a minimum gap between subsequent messages. The minimum gap allowed is five minutes, and the maximum gap allowed is 30 days.
FAQs
[](https://docs.clevertap.com/docs/messaging-frequency-caps#faqs)
==========================================================================
###
Q. How does the User DND Set error occur?
[](https://docs.clevertap.com/docs/messaging-frequency-caps#q-how-does-the-user-dnd-set-error-occur)
A. The _User DND Set_ error occurs when you qualify users for a campaign despite unsubscribing on the target device. This error informs you that these users have been passed into the error bucket.
###
Q. What is the Frequency Caps Exceed error?
[](https://docs.clevertap.com/docs/messaging-frequency-caps#q-what-is-the-frequency-caps-exceed-error)
A. The _Global Frequency_ feature limits the total number of messages that can be scheduled per day for a user, taking into account all active devices and across different communication channels.
Navigate to _Settings_ > _Engage_ > _Setup_ > _Campaign limits_ to cap the frequency for various channels.
From the _Campaigns limits_ page, you can define the number of messages you want to send to each user in X number of days.

You can also specify the following:
* _Dwell time_ is the gap you want to keep between messages.
* _Throttle_ controls the flow of your messages.
For more information on dwell time, refer to [Dwell Time Between Messages](https://docs.clevertap.com/docs/messaging-frequency-caps#section-dwell-time-between-messages)
.
For more information on throttling, refer to [Throttle](https://docs.clevertap.com/docs/messaging-frequency-caps#section-throttle)
.
Now, when you create a campaign, and you want to disable the _Global frequency limit_, clear the _Global Campaign Limit_ option under the _Who_ section. The _Global Campaign Limit_ is enabled by default.
Updated about 2 months ago
* * *
Ask AI
---
# Define Goals
Overview
[](https://docs.clevertap.com/docs/define-goals#overview)
======================================================================
By defining a goal, you can decide when a user can exit the Journey path. It helps you to compare a Journey’s effectiveness against a Control Group. For example, your goal could be to increase user registrations on your platform or want existing users to use your platform more frequently.
To define a goal, you can drag and drop any segment from the left-hand side palette and add it as a goal for your Journey. A Journey can support up to **three** goals, and a user exits from the journey upon completing any of the goals.

Define a Journey Goal
Types of Goals
[](https://docs.clevertap.com/docs/define-goals#types-of-goals)
----------------------------------------------------------------------------------
* Action-based goals: In this goal, users will exit your Journey as soon as they perform a goal, in real-time. For example, exit people as soon as they perform the _Charged_ event, where _item_ is _Red Nike Shoes_.
* Past behavior goals: Past behavior goals, like segments, are evaluated once every twenty-four hours, at 12:00 am. Once the goal is evaluated, users who meet this goal will not be a part of the Journey from that day onward. For example, exit people if they have spent at least $300 in the past week.
Updated about 2 months ago
* * *
Ask AI
---
# Journey Overview
Overview
[](https://docs.clevertap.com/docs/journeys#overview)
==================================================================
With Journeys, you can craft seamless, automated omnichannel messaging experiences for your users using our intuitive Journey canvas. It is designed to guide users through a series of touchpoints, wherein each messaging channel delivers the most relevant content at the most relevant time, driving them toward your desired conversion.
For example, you can automate welcome messages after signup, send timely reminders for incomplete actions, or celebrate user achievements with rewards. By aligning your communication with each milestone, Journeys helps you create meaningful interactions that drive conversions and foster long-term loyalty (refer to the following illustration).

Sample Use Case for Journeys
You can always update the What section of a live journey, such as message content or service provider settings. For changes beyond these, such as updating the entry criteria that determine which users qualify for the journey, rearranging nodes to adjust the communication flow, or modifying goals, you must create a new draft version of the journey. This lets you optimize journeys safely without disrupting users in the current version. For more information, refer to [Editing in Journeys](doc:edit-a-journey)
.
Journey Overview Video Tutorial
[](https://docs.clevertap.com/docs/journeys#journey-overview-video-tutorial)
================================================================================================================
Discover the video tutorial for the Journey overview and a sample use case.
Advantages of Journey
[](https://docs.clevertap.com/docs/journeys#advantages-of-journey)
============================================================================================
The following are the advantages of CleverTap Journey:
* **Automates and enhances user engagement experiences within the app**: By automating engagement workflows, apps can trigger in-app messages, such as personalized offers, when a user adds an item to their cart but does not complete the purchase. This ensures timely and relevant communication.
* **Delivers personalized and omnichannel messaging experiences**: For example, a user browsing shoes on an e-commerce portal could receive an email with tailored recommendations, followed by a push notification with a discount code if they don’t act on the email.
* **Increases user retention**: By sending regular updates, such as reminders for unused loyalty points or upcoming app-exclusive events, you can keep users engaged and encourage them to revisit the app frequently.
* **Experimentation using[IntelliNODE](doc:intellinode)
**: By using the IntelliNODE feature, businesses can A/B test different journey paths for the users. For example, testing whether offering a 10% discount versus free shipping leads to better conversion rates for abandoned cart recoveries.
* **Flexible Editing and Continuous Optimization**: For active journeys, minor changes such as updating message content or provider settings can be made without disrupting the user movement within the same version. For structural edits, such as changing entry criteria, node paths, or goals, you must create a new version, ensuring active users are not affected while optimizing the journey. For example, a retention team wants to improve reactivation rates for dormant users. In the current journey, users receive a single push notification after seven days of inactivity. The team creates a new version that introduces an additional email touchpoint on day five and adjusts the messaging sequence. This allows you to test the new journey without affecting users in the existing journey, and compare the results to determine which version drives better engagement.
A truly effective journey reaches users across multiple touchpoints. By leveraging [Omnichannel Marketing](https://clevertap.com/blog/omnichannel-marketing-guide/)
, you can create personalized and consistent experiences across channels such as Email, Push, SMS, and more.
When Can You Send a Journey?
[](https://docs.clevertap.com/docs/journeys#when-can-you-send-a-journey)
=========================================================================================================
A Journey can be delivered at any stage of the user's app lifecycle. For example:
* **User Onboarding**: Create an onboarding Journey that engages users over several days or weeks, utilizing multiple channels to educate them about your app's unique features.
* **User Re-engagement**: Build a long-running re-engagement Journey to pull users back if they begin to slip away.
* **User Transaction**: Build a promotional Journey to entice active users to re-purchase or transact at different times.
Additional References
[](https://docs.clevertap.com/docs/journeys#additional-references)
============================================================================================
The following are the additional Journey references:
* [Journey Operations](https://docs.clevertap.com/docs/journey-operations)
* [IntelliNode](https://docs.clevertap.com/docs/intellinode)
* [Journey Performance](https://docs.clevertap.com/docs/viewing-statistics)
* [Journey Reports](https://docs.clevertap.com/docs/viewing-journey-reports)
* [Journey FAQs](https://docs.clevertap.com/docs/faqs)
* [Journey Use Cases](https://docs.clevertap.com/docs/journey-use-cases)
Updated about 2 months ago
* * *
Ask AI
---
# Geofencing Campaign
Overview
[](https://docs.clevertap.com/docs/geofencing-campaign-1#overview)
===============================================================================
A geofence is a virtual geographic area, represented as latitude and longitude pairs combined with a radius, forming a circle in a specific position on a map. CleverTap offers geofencing, a GPS location-based service. Customers can use this service to engage their audience by sending relevant messages to Android and iOS users. Geofences can vary in size, and a cluster can contain up to 100 geofences.
Customers can define geofences around the world from the CleverTap dashboard. Campaigns are delivered in real time to users as they exit or enter geofences or sent as follow-ups hours or days later. CleverTap's location analytics create user data as users enter or exit geofences. This data can be used for retargeting. Geofence-specific analytics can generate insight into activities or locations of interest.
Create Geofences
[](https://docs.clevertap.com/docs/geofencing-campaign-1#create-geofences)
===============================================================================================
To create geofences, perform the following steps:
1. From the CleverTap dashboard, navigate to _Settings_ > _Geofences_.
2. Click **Add Cluster** and select **Create** to create a new geofence cluster.

Geofence Cluster
3. Select the preferred unit of measure for tracking the location of the geofence clusters. Select the distance in kilometers or miles and click **Continue**.

Set Up Geofence
5. Click the _Search for location_ window to select the area you want to display on the map or enter a location in the search bar. A setting pop-up window displays.
6. Enter a _Geofence_ name.
7. Determine the radius that the geofence must cover.
8. Click **Save** on the pop-up window.

Define Geofence Radius
9. Click **Continue**.
10. Enter a geofence cluster name.
11. Select the start and end time of tracking the users. If you select _Select date and time_, day and time options display beneath the radio buttons where you can choose a future start and end date and time.

Schedule Cluster Tracking
12. When entering the details for the geofence cluster, you can select Do Not Disturb (DND). The DND option prevents triggering an engagement for users who enter the geofence on specified days and times.

Set Up Do Not Disturb Details
13. Click **Create** or **Save Draft**. You can also edit or delete a geofence by clicking the edit or delete icon.

Edit or Delete Geofences in a Cluster
> 📘
>
> ###
>
> Geofence and Cluster Limits
>
> [](https://docs.clevertap.com/docs/geofencing-campaign-1#geofence-and-cluster-limits)
>
> You can create up to 100 geofences in each cluster and up to 100 clusters for your app.
Geofence Operations
[](https://docs.clevertap.com/docs/geofencing-campaign-1#geofence-operations)
=====================================================================================================
You can perform different actions on the geofence clusters from the All Geofences page. The following sections briefly discuss each operation.
Filter Geofence Clusters
[](https://docs.clevertap.com/docs/geofencing-campaign-1#filter-geofence-clusters)
---------------------------------------------------------------------------------------------------------------
You can quickly search your geofence clusters by applying the required filters. To do so, click **Filters** to filter the list of available geofence clusters based on their states, such as Draft, Scheduled, Active, Paused, and Archived.

Filters
Manage Individual Geofence Clusters
[](https://docs.clevertap.com/docs/geofencing-campaign-1#manage-individual-geofence-clusters)
-------------------------------------------------------------------------------------------------------------------------------------
You can perform the following actions on a geofence cluster:
* Edit: Modify the geofence cluster's name, location, or radius.
* Copy: Duplicate an existing cluster to quickly create a similar one.
* Pause: Temporarily deactivate the cluster without deleting it.

Manage Individual Geofences
Bulk Actions
[](https://docs.clevertap.com/docs/geofencing-campaign-1#bulk-actions)
---------------------------------------------------------------------------------------
You can perform bulk actions on multiple geofence clusters at once using the toolbar at the top of the All Geofences page. The following bulk actions are available:
* Pause: Temporarily deactivate the selected clusters. They will stop tracking user activity until reactivated.
* Start: Activate selected clusters to begin location tracking.
* Archive: Archive clusters that are no longer needed. They can be reactivated if needed and event tracking will resume.

Bulk Actions
Bulk Upload
[](https://docs.clevertap.com/docs/geofencing-campaign-1#bulk-upload)
-------------------------------------------------------------------------------------
You can upload multiple geofences in bulk to new and existing clusters using a CSV or JSON file, instead of manually adding geofences. This feature is useful for scenarios involving a large number of geofences, such as, for franchises, stores, or branches.
> 📘
>
> ###
>
> Private Beta
>
> [](https://docs.clevertap.com/docs/geofencing-campaign-1#private-beta)
>
> Currently, this feature is released in Private Beta. If you want access to this feature, contact your Account Manager.
To bulk upload geofences, perform the following steps:
1. From the CleverTap dashboard, navigate to _Settings_ > _Geofences_.
2. Click **Add Cluster** and select **Upload** to bulk upload geofences.

Upload Geofence Cluster
3. Click **Upload File** or drag and drop the files to start the upload process.

Upload Cluster
3. To see previously uploaded files, click **View Uploaded Files**. Here you can filter by status: **Processing**, **Imported**, **Partially Imported**, and **Failed**. Once your upload is processed, you will receive an email confirmation.

View Uploaded Files
> 📘
>
> ###
>
> Note
>
> [](https://docs.clevertap.com/docs/geofencing-campaign-1#note)
>
> * If a file includes mixed units for a new cluster, the first valid unit is used and others are adjusted accordingly. For existing clusters, their unit is retained.
> * Follow the below general guidelines for bulk uploads:
> * Maximum 100 clusters can be added to the dashboard, including existing clusters. Each geocluster can contain maximum 100 geofences.
> * Maximum upload limit per file is 10,000 geofences.
> * Start and end time must be in YYYYMMDDHHMM format. For example, 202512300445.
> * For unit of measure, use `km` for kilometers and `mi` for miles.
> * Latitude and longitude must be in decimal format without symbols (For example, 19.1114, 72.8677)
> * The supported file formats are CSV and JSON.
> * Maximum file size is 5 MB.
###
Error Scenarios & Messages
[](https://docs.clevertap.com/docs/geofencing-campaign-1#error-scenarios--messages)
If the file fails validation, it will not be uploaded. You will receive detailed feedback by email, including an error report. Refer to the following table for common error scenarios:
| Scenario | Message |
| --- | --- |
| Invalid format | _Invalid file format. Try again using a CSV or JSON file._ |
| File too large | _File size limit of 5MB exceeded._ |
| Duplicate geofence/cluster name | _Geofence with this name already exists. Try another name._ |
| More than 100 geofences in a cluster | _Limit of 100 geofences per cluster exceeded._ |
| Archived cluster | _Cannot import to archived cluster._ |
| Invalid coordinates | _Invalid coordinates. Check and rectify._ |
| Invalid name characters | _Name must start with a letter. Only letters, numbers, and special characters ( ) . -_ are allowed.\_ |
Geofence Cluster States
[](https://docs.clevertap.com/docs/geofencing-campaign-1#geofence-cluster-states)
-------------------------------------------------------------------------------------------------------------
Geofence Clusters' states helps track progress and manage campaigns efficiently. Each state has distinct characteristics that determine what actions can be performed. The following table explains the campaign states.
| **State** | **Description** |
| --- | --- |
| Draft | The geofence is created but not yet live. |
| Scheduled | The geofence is set to go live at a future time. |
| Active | The geofence is currently live and tracking user activity. |
| Paused | The geofence is temporarily paused; can be resumed later. |
| Archived | The geofence is no longer in use. This will pause tracking and stop all engagements. |
> ℹ️
>
> ###
>
> Geofence Events
>
> [](https://docs.clevertap.com/docs/geofencing-campaign-1#geofence-events)
>
> CleverTap raises three system events related to geofence interactions. The following events can be used to run campaigns, analytics, and segmentation:
>
> * **Cluster-level Events**: These events fire when a user enters or exits a geocluster.
> * Geocluster Entered
> * Geocluster Exited
> * **Fence-level Events**: These events fire when a user enters a geofence.
> * Geofence Entered
>
> Each event includes the following properties:
>
> * **Cluster ID**
> * **Cluster Name**
> * **Geofence ID**
>
> The geocluster name displays under event properties if the event has at least one occurrence.
>
> For more information, refer to [System Events](doc:events#section-system-events)
> .
Common Use Cases
[](https://docs.clevertap.com/docs/geofencing-campaign-1#common-use-cases)
===============================================================================================
Learn how to create personalized, location-triggered push campaigns using geofences.
Scenario
[](https://docs.clevertap.com/docs/geofencing-campaign-1#scenario)
-------------------------------------------------------------------------------
A retail company that sells apparel wants to increase traffic to its physical stores in Mumbai. They have multiple store locations and want to send personalized promotions to customers close to their stores. Using CleverTap's geofence campaign, the retail company can target users who enter the specified radius around their store locations with real-time and location-based messages.
Steps to Implement a Geofence Campaign
[](https://docs.clevertap.com/docs/geofencing-campaign-1#steps-to-implement-a-geofence-campaign)
-------------------------------------------------------------------------------------------------------------------------------------------
To solve the above business use case, create a push notification campaign adding the geofence cluster. The retail company can target users most likely to visit their physical stores and increase footfall. By using CleverTap's geofence campaign, they can send real-time, location-based messages that are personalized and relevant to the user.
The following are the steps to create a push notification campaign with a geofence cluster for users who enter the geofence:
###
1\. Set Up a Geofence Cluster
[](https://docs.clevertap.com/docs/geofencing-campaign-1#1-set-up-a-geofence-cluster)
Set up a geofence cluster around the store locations from the CleverTap dashboard. You can specify the radius and location coordinates of each store location. To set up a geofence cluster, refer to [Create Geofences](https://docs.clevertap.com/docs/geofencing-campaign-1#create-geofences)
.
###
2\. Create a Campaign
[](https://docs.clevertap.com/docs/geofencing-campaign-1#2-create-a-campaign)
After you have set up the geofence cluster and created the segment, you can create a geofence campaign from the CleverTap dashboard. To do so, perform the following steps:
1. From the dashboard, navigate to _Campaigns_.
2. Click **\+ Campaign**.
3. Select _Push Notifications_ as a messaging channel.

Create Campaign
4. Select the _Live Behavior_.
5. Click **Done**.

Set Qualification Criteria
6. Select _Conversion Tracking_ under the _Set a goal_ section.
7. Select the conversion event, time, and revenue property.
8. Click **Done**.

Set a Goal
9. Select the _Geofence Entered_ event with event property as _Geofence ID_ from the _Who_ section of campaign creation.

Define - Who
This ensures that the message is only sent to users close to the store locations.
10. Set up the message content and design. For more information, refer to [Define Message Content](https://docs.clevertap.com/docs/create-message-push#define-message-content)
###
3\. Personalize the Message
[](https://docs.clevertap.com/docs/geofencing-campaign-1#3-personalize-the-message)
You can also use CleverTap's personalization features to make the message more relevant to the user. For example, you can include the user's name or previous purchase history in the message. For more information, refer to [Personalize Message](doc:personalize-message-all)
.
###
4\. Schedule the Campaign
[](https://docs.clevertap.com/docs/geofencing-campaign-1#4-schedule-the-campaign)
Finally, schedule the campaign to be sent at a specific time or based on particular triggers. For example, send a campaign when the user enters the geofence for the first time.
Maximize your [Location-Based Marketing](https://clevertap.com/blog/location-based-marketing-guide/)
with best practices and strategies to deliver targeted messages to users based on their physical location.
FAQs
[](https://docs.clevertap.com/docs/geofencing-campaign-1#faqs)
=======================================================================
Here are answers to common questions about using Geofences with Campaigns.
###
What happens when I unarchive a draft geofence?
[](https://docs.clevertap.com/docs/geofencing-campaign-1#what-happens-when-i-unarchive-a-draft-geofence)
When a draft geofence is unarchived, all clusters will go back to the draft state. Archived clusters can be seen using the _Filters_ dropdown.
###
What happens if I pause a geofence and resume it later?
[](https://docs.clevertap.com/docs/geofencing-campaign-1#what-happens-if-i-pause-a-geofence-and-resume-it-later)
When you pause a geofence, it stops tracking user activity. You can resume event tracking for the geofence cluster anytime by clicking **Resume tracking**. You will also be able to create engagements for the cluster.
###
Can I edit a geofence while it's active?
[](https://docs.clevertap.com/docs/geofencing-campaign-1#can-i-edit-a-geofence-while-its-active)
Yes, you can edit the name, radius, or coordinates of a geofence. The changes apply immediately to live tracking and may affect ongoing campaigns. It is recommended to pause the geofence before making major edits to avoid inconsistent behavior.
###
Will users receive messages if they enter a geofence during the Do Not Disturb (DND) window?
[](https://docs.clevertap.com/docs/geofencing-campaign-1#will-users-receive-messages-if-they-enter-a-geofence-during-the-do-not-disturb-dnd-window)
No. If the user enters the geofence during an active DND window, no engagement is triggered even if the campaign is active.
Updated 7 days ago
* * *
Ask AI
---
# Create a Journey
Overview
[](https://docs.clevertap.com/docs/create-a-journey#overview)
==========================================================================
On the CleverTap dashboard, click **Journeys** under the _MESSAGES_ section on the left pane. Journey creation includes the following high-level steps:
| Steps | Description |
| --- | --- |
| [**Setting Up a Journey**](doc:setup-journey) | Specify the following details and criteria to set up a Journey:
* Journey name
* Type of user behavior to qualify user entry into a Journey
* Date and time when the users can qualify for the Journey
* Do not disturb and timezone preference
* Control group
* Journey timeout |
| [**Define Goals**](doc:define-goals) | Define the goal of the Journey. A goal is the desired action you want a subset of users to achieve on your app as they progress through a Journey. For example, perform a purchase, subscribe, launch, or register on the app, and so on. |
| [**Define Entry Segment**](doc:define-entry-segment) | Define your target users for the Journey based on their past behavior or live action. For example, target users who have just installed an app to increase user registrations. |
| [**Define Journey Path**](doc:construct-a-journey) | Define various Journey paths based on the specified goal and entry criteria. It orchestrates the path users can follow based on their actions on each engagement node. |
| [**Personalize the Journey Content**](doc:personalization-in-journeys) | Use CleverTap's personalization capabilities, such as [Recommendations](doc:recommendations)
, [Linked Content](doc:linked-content)
, and [Liquid Tags](doc:liquid-tags)
, to customize the Journey for specific users. You can send dynamic and real-time recommendations to users based on user behavior. |
| [**Publish a Journey**](doc:taking-a-journey-live) | Save and publish the Journey. |
| [**Monitor the Journey**](doc:viewing-statistics) | Monitor its performance using Journey stats. |
Once you have created and published a journey, you can edit it to make changes to the current journey or create a new version without affecting the current live version. This allows you to iterate and improve your engagement flow over time. For more information, refer to [Edit a Journey](doc:edit-a-journey)
.
Prerequisites for Creating a Journey
[](https://docs.clevertap.com/docs/create-a-journey#prerequisites-for-creating-a-journey)
==================================================================================================================================
First, you must understand the use case you are trying to solve using a Journey. Based on this, you will plan your Journey creation.
Consider a scenario where a segment of users regularly visits your app and frequently views specific products. However, they are indecisive about buying the product. They are most likely still evaluating the product or looking for more exciting offers. To solve this sample use case, you must have the following prerequisites:
* **Determine your use case**: Create a Journey that delivers real-time offers to entice on-the-fence shoppers to buy the product.
* **Define the goal**: On-the-fence shoppers make a purchase.
* **Identify your target segment**: Analyze and track all users viewing a product frequently. For example, fetch users whose event property is _Product Viewed_ and the view count is more than five times.
* **Identify the offer/promotion**: Determine the specific discount, benefit, or promotion you want to give shoppers. For example, it could be a percentage discount, a gift, an extended trial period, or exclusive access to certain features.
* **Identify the engagement channels**: Determine the various engagement channels through which users will engage with the app. For example, Push, In-App, Email, and so on.
* **Identify the duration of your Journey**: Decide on the duration of the offer. Ensure the time frame is reasonable enough to entice the user to buy the product.
* **Visualize the Journey path**: Visualize the logical flow of users' journey paths depending on their actions. For example, the users move along different paths based on their actions:
* **Path A**: Users who viewed the product more than five times.
* **Path B**: Users who viewed the product more than ten times.
Now that you have outlined your Journey requirement, you can start creating the Journey.
Before building a Journey on the CleverTap Dashboard, ensure you understand the [Journey Components](doc:journey-components)
.
Updated about 2 months ago
* * *
Ask AI
---
# Setting Up a Journey
Overview
[](https://docs.clevertap.com/docs/setup-journey#overview)
=======================================================================
Set up your journey by defining the following:
* [Journey Entry](https://docs.clevertap.com/docs/setup-journey#define-the-journey-entry-criteria)
* [Journey Entry Timelines](https://docs.clevertap.com/docs/setup-journey#define-the-journey-entry-timelines)
* [DND and Timezone](https://docs.clevertap.com/docs/setup-journey#dnd-and-timezone)
* [Control Group](https://docs.clevertap.com/docs/setup-journey#define-the-control-group)
* [Journey Timeout](https://docs.clevertap.com/docs/setup-journey#select-a-journey-timeout)
* [User Exit From a Journey](https://docs.clevertap.com/docs/setup-journey#user-exit-from-a-journey)
The first step to building a Journey is defining the Journey's configuration within the Setup node.
Click _Journeys_ from the dashboard and click the **+Journey** button to set up a Journey. A new Journey canvas is displayed.

Journey Setup
Click **Setup**. The _Setup_ window displays. Enter the **Journey Name**.
Using keyboard shortcuts, you can efficiently set up and manage journeys. Click the  icon to learn about the keyboard shortcuts.

Keyboard Shortcuts in Journeys
Define the Journey Entry Criteria
[](https://docs.clevertap.com/docs/setup-journey#define-the-journey-entry-criteria)
-------------------------------------------------------------------------------------------------------------------------
Select the _Journey entry criteria_. It can be a specific time or an event trigger.
When you start building your Journey, you must define your _entry criteria_. This is a condition that decides if the users will be included in the Journey. The entry criteria of a Journey is essentially the segment of users you want to target.
The various types of segments you can use are:
* **Live User segments**: These segments qualify people as soon as they meet your specified criteria
* **Past Behavior segments**: In this type of Entry Criteria, users who match your specified entry criteria will qualify once every twenty-four hours.
Live user segments are further classified as follows:
* **Action**: In this type of _entry criteria_, users will enter your Journey, as soon as they perform an event. For example: Enter people into your Journey, as soon as they install your application.
* **Inaction**: Users enter your Journey, as soon as they don’t do something in the future. For example: If someone adds an item to their cart, but doesn’t transact within 15 mins.
* **Property Date-time segments**: Qualify a user relative to a specific date and time in a property.
* **Page visit**: Users will qualify as soon as they reach a web page that matches your specifications.
* **Refer entry**: When users come to your website from a certain referrer, for example, Facebook, or Twitter, they will be qualified for your Journey.
* **Page count**: As soon as the user sees the specified number of pages, they will be a part of your Journey.

Set Journey Entry Criteria
Define the Journey Entry Timelines
[](https://docs.clevertap.com/docs/setup-journey#define-the-journey-entry-timelines)
---------------------------------------------------------------------------------------------------------------------------
We support one-time, multiple dates, and recurring Journeys. For example, for monthly payment reminders, you can schedule a Journey to start on the 1st of every month

Define Journey Entry Timelines
###
Enter Once
[](https://docs.clevertap.com/docs/setup-journey#enter-once)
This Journey type runs only once at the start time. Users who have exited the journey through journey timeout, force exit, or Goal completion cannot re-enter. No new users will be added after the journey runs its course at the start time.
###
Enter on Specific Dates
[](https://docs.clevertap.com/docs/setup-journey#enter-on-specific-dates)
This Journey type runs on multiple selected dates. Select the journey end time according to your business requirements. The option to allow users to re-enter the journey may be selected.
###
Enter on Recurring Basis
[](https://docs.clevertap.com/docs/setup-journey#enter-on-recurring-basis)
This Journey type runs repeatedly and allows new users to enter based on the criteria selected in the _Repeat every_ section. The first run is immediate upon publishing the Journey. The subsequent runs are based on the selected criteria. The option to allow users to re-enter the journey may be selected. For more information about entry timelines for a PBS Journey, refer to [FAQ](doc:faqs#q-how-does-a-past-behavior-segment-journey-work)
.
###
Allow Users to Re-Enter the Journey
[](https://docs.clevertap.com/docs/setup-journey#allow-users-to-re-enter-the-journey)
By default, a user qualifies for a Journey only once. However, you can optionally allow users who have exited from a Journey to re-enter it, should they meet the entry criteria at a later date.
Once a user enters the journey, they can exit the journey by matching different exit criteria, and only then can they qualify to re-enter the journey.
Consider an example where the user qualifies for the journey if they have not made any purchase in the last 30 days. After waiting for one day, qualifying users receive a Push Notification with a discount promotion code at 10 AM, as shown in the following image:

Re-Entry of Users in Journeys
If the Journey was set up with the default behavior (users cannot re-enter the Journey), then after they purchase and receive the push notification, they would continue moving ahead in the journey and finally exit it. As the _Allow users to re-enter the journey_ option was not selected, the users would not enter the journey again.
If the Journey is configured with the setting where _Allow users to re-enter the journey_ option was selected, they will receive the corresponding push notification and exit the Journey after completing a purchase.
However, if the users again qualify in the entry criteria while the journey is still running, they will enter the journey and receive the promotional offer to make the purchase.

Allow Users to Re-Enter the Journey
DND and Timezone
[](https://docs.clevertap.com/docs/setup-journey#dnd-and-timezone)
---------------------------------------------------------------------------------------
CleverTap provides an option for configuring the _Do Not Disturb_ hours for notification delivery when creating a journey. The DND feature manages message delivery via engagement nodes in Journeys so that campaigns are only sent after the DND period or discarded. To configure DND for Push, SMS, Email & Web Push journeys, select the days and enter the time when you do not want to send campaign notifications. If you will use the same time inactive period for each day, click the **Apply to all** link.

Configure DND and Timezone for Journeys
When sending a message during Do Not Disturb (DND) hours, you can select one of the following options:
* _Don't send a message_: Select this option to discard the message altogether. In this case, the message is not sent to the user, and the user moves ahead in the journey along the unreachable path. If the unreachable path is not defined or drawn, the user is stuck at the engagement node.
* _Send message after DND_: Select this option to send a message after DND.
* _Scenario 1 (Before Feature Release)_
DND Period: Monday 11:00 PM to Tuesday 12:00 PM
User qualifies for the campaign: Tuesday 11:00 AM (During DND)
The engagement is delayed as it falls within the user's DND period. The user receives the engagement as soon as the DND period ends, at 12:00 PM on Tuesday.
* _Scenario 2 (After Feature Release)_
DND Period: Monday 11:00 PM to Tuesday 12:00 PM
User qualifies for the campaign: Tuesday 11:00 AM (During DND)
The engagement is delayed as it falls within the user's DND period. The user receives the engagement on Wednesday at 11:00 AM, which is at the time scheduled. This ensures that notifications respect the user's active and inactive times and are only sent during their designated active hours.

Send Message After DND
> ❗️
>
> ###
>
> DND Conflict Hours
>
> [](https://docs.clevertap.com/docs/setup-journey#dnd-conflict-hours)
>
> If you schedule a message node to send out delivery during the scheduled DND hours, you will receive an error message. This error message appears at the publishing of the journey.
>
> 
>
> DND Conflict Hours
Define the Control Group
[](https://docs.clevertap.com/docs/setup-journey#define-the-control-group)
-------------------------------------------------------------------------------------------------------
Define the required control groups. For more information on control groups, see [Control Groups](doc:control-groups)
.

Define Conflict Group
Select a Journey Timeout
[](https://docs.clevertap.com/docs/setup-journey#select-a-journey-timeout)
-------------------------------------------------------------------------------------------------------
Journeys are sequences of campaigns. At each stage of a Journey, you can choose to segment your audience further and deliver campaigns across multiple channels.
While creating Journeys, you can choose to specify a Journey Timeout, which will be the maximum time a user spends in a Journey. Users exit the journey once this window is complete for them, irrespective of the journey stage.
> 🚧
>
> Once a user has exited the Journey, the user is free to re-qualify, if you have allowed re-entry in your setup.

Journey Timeout
User Exit From a Journey
[](https://docs.clevertap.com/docs/setup-journey#user-exit-from-a-journey)
-------------------------------------------------------------------------------------------------------
Assessing a Journey's effectiveness becomes challenging when a user gets stuck in a Journey. Hence, exiting users from the Journey is crucial in various scenarios.
Users exit the Journey based on four conditions:
* If the Journey goal is set:
* User achieves the Journey goal.
* User times out of the Journey.
* User is forced to exit the Journey via the **Force Exit** node.
* If the Journey goal is not set:
* User exits the Journey through the last engagement node.
Updated about 2 months ago
* * *
Ask AI
---
# Journey States
Overview
[](https://docs.clevertap.com/docs/journey-states#overview)
========================================================================
Journey States in CleverTap refer to the distinct phases a user experiences within an automated Journey. Each state is defined by unique characteristics determining how and when users enter, progress through, or exit the Journey. These states offer valuable insights into user behavior, enabling marketers to monitor engagement and optimize workflow efficiency.
The following table gives a quick overview of key aspects for each journey state:
* User Entry
* User Movement
* Possible Next Actions
* Possible Next States
* Editing Permissions
| State Name | User Entry | User Movement | Possible Next Actions | Possible Next States | Editing Options |
| --- | --- | --- | --- | --- | --- |
| **Draft** | Not Applicable | Not Applicable | Edit, Save, Publish, Clone | Scheduled, Running | Full editing allowed |
| **Scheduled** | Not Applicable | Not Applicable | Edit, Clone, Pause, Stop | Running, Paused, Stopped | Partial edit (What section). |
| **Running** | Users enter the journey as per the entry criteria | Users progress as per the defined flow | Edit, Clone, Pause, Stop | Paused, Stopped, Restricted, Completed | * Partial edit (What section).
* Full edit creates a new version. |
| **Paused** | No new user entry | Existing users continue to move through the flow | Edit, Clone, Resume, Stop | Running, Stopped, Restricted, Completed | * Partial edit (What section).
* Full edit creates a new version. |
| **Completed** | No new user entry | Existing users progress until they exit | Edit, Clone, Stop | Stopped | Full edit creates a new version. |
| **Stopped** | No new user entry | No further progression; users are exited over 30–60 days | Edit, Clone | None | Full edit creates a new version. |
| **Restricted** | No new entry | Existing users continue the movement | Edit, Stop | Stopped | * Partial edit (What section).
* Full edit creates a new version. |
Draft
[](https://docs.clevertap.com/docs/journey-states#draft)
==================================================================
The Draft State in CleverTap refers to a Journey created but not published. Any unsaved changes in this state may be lost unless explicitly saved. If you have an existing unsaved Journey in the cache and choose to create a new Journey, CleverTap provides the option to either start a fresh Journey or restore the cached Journey for further editing.
If you restore the cached Journey, the most recent version saved in your browser cache loads, enabling you to continue editing from where you stopped. The cache is specific to each user and depends on the web browser, ensuring that only the user who created the Journey can access it while preventing accidental data loss.
The _Created By_ and _Published By_ columns on the Journeys List page identify the users responsible for creating and publishing a journey or its versions. The _Created By_ column shows the user who initially created the journey or its latest draft version, while the _Published By_ column indicates the user who published that specific version. When a draft is published, the journey transitions to the Scheduled or Running state based on its setup. Each version maintains its own creation and publishing metadata to enable accurate version tracking.
> 📘
>
> ###
>
> Draft Management
>
> [](https://docs.clevertap.com/docs/journey-states#draft-management)
>
> Only one draft is allowed per Journey entity at any time. Creating a new draft version replaces the existing one.
Scheduled
[](https://docs.clevertap.com/docs/journey-states#scheduled)
==========================================================================
The Scheduled state indicates that the journey is set to go live at a later time. In this state, users do not yet qualify for the journey, which becomes active when the scheduled time arrives.
The following table describes the key difference between the Past Behavior and Live Behavior Journeys in the Scheduled state:
| **Feature** | **Past Behavior Setup** | **Live Behavior Setup** |
| --- | --- | --- |
| **Qualification Criteria** | Based on **past actions** or **custom lists**. | Based on **real-time user actions** or **inactivity**. |
| **Entry Timing** | **At a fixed time**. | **At a fixed time**. |
| **Trigger Type** | Static triggers based on predefined events. | Dynamic triggers that act as soon as the criteria are met. |
| **Use Case Focus** | Re-engagement or follow-ups based on past activities (for example, targeting users who checked out last month). | Real-time engagement or retention campaigns (for example, sending a real-time cart abandonment reminder). |
If the journey is stopped while in the Scheduled state, it will not go live, and no users will qualify for the journey.
Editing Journey in Scheduled State
[](https://docs.clevertap.com/docs/journey-states#editing-journey-in-scheduled-state)
----------------------------------------------------------------------------------------------------------------------------
To edit a scheduled journey, click the  icon. In this state, you can only do limited edits to the _What_ section of engagement nodes, such as message content, providers, and manual distribution percentages.
Running
[](https://docs.clevertap.com/docs/journey-states#running)
======================================================================
The Running state indicates that the journey is active, and the users execute actions as defined. In this state, users enter the Journey as they qualify and progress through it according to the flow after qualifying (refer to the following GIF).

User Entry and Movement in Running State
As users move through the Journey nodes (for example, receiving a message, meeting a condition, or dropping off), the stats are updated immediately in the dashboard. The date range selection in the calendar widget directly influences the Node stats. Consider an example where the Journey running from January 1 to January 10 sends push notifications to users. On January 5, you use the calendar widget to filter data for January 1–January 4. The Node stats update to reflect only the number of users who entered, dropped off, or converted during that time frame. Always ensure you are analyzing the correct time frame. For nodes with scheduled actions (for example, if a campaign is scheduled to run after two days), stats are updated only when those actions are triggered.
Editing Journey in Running State
[](https://docs.clevertap.com/docs/journey-states#editing-journey-in-running-state)
------------------------------------------------------------------------------------------------------------------------
You can edit the _What_ section of engagement nodes, such as message content, provider configuration, or manual distribution settings, without creating a new version. You must create a new version to modify other journey aspects (for example, entry criteria, goal logic, and journey structure).
Once you publish a new version, you can:
* **Stop the older version**, if you want all users to move to the new version immediately
* **Mark the old version Restricted** if you want to allow existing users to continue moving through it. The new users who meet the updated entry criteria are routed into the new version of the journey.
Paused
[](https://docs.clevertap.com/docs/journey-states#paused)
====================================================================
The Paused state indicates that already qualified users or users who have entered the journey continue to advance through the journey. However, no new users qualify for the journey until it resumes (refer to the following GIF). For example, consider a Journey targeting users who abandon their cart without completing a purchase within 30 minutes. If you pause the Journey, users who are already qualified continue to progress and receive notifications as per the Journey setup, such as receiving a discount after 24 hours. However, new users who meet the criteria during the pause do not enter. Once the Journey resumes, new users qualify again based on the cart abandonment trigger. Existing user progress remains unaffected by the paused period.

User Entry and Movement in Paused State
Editing Journey in Paused State
[](https://docs.clevertap.com/docs/journey-states#editing-journey-in-paused-state)
----------------------------------------------------------------------------------------------------------------------
While updates to the What section, such as message content or provider settings, are still allowed without versioning, any structural changes require you to create a new draft version. This includes edits to nodes, paths, goals, and qualification logic.
When you publish the new version, CleverTap prompts you to choose how to handle the paused version:
* **Stop the older version**, if you want all users to move to the new version immediately
* **Mark the old version Restricted** if you want to allow existing users to continue moving through it. The new users who meet the updated entry criteria are routed into the new version of the journey. Once you move the older journey to Restricted, it cannot be resumed.
> 📘
>
> ###
>
> Note
>
> [](https://docs.clevertap.com/docs/journey-states#note)
>
> Only one version of a journey can be in the Paused/Running state at a time.
Stopped
[](https://docs.clevertap.com/docs/journey-states#stopped)
======================================================================
The Stopped state indicates that the journey has been permanently deactivated. Users currently in the journey do not progress further, and actions are halted.

User Entry and Movement in Stopped State
Editing Journey in Stopped State
[](https://docs.clevertap.com/docs/journey-states#editing-journey-in-stopped-state)
------------------------------------------------------------------------------------------------------------------------
You can make changes to a stopped journey by creating a new draft version. This allows you to modify all aspects of the journey, including nodes, paths, goals, and qualification criteria.
Once the new version is published, it becomes the active version of the journey. The stopped version remains inactive; users do not progress, and no new users qualify for it. Any users still present in the journey are exited automatically within 30 to 60 days.
Completed
[](https://docs.clevertap.com/docs/journey-states#completed)
==========================================================================
The Completed state signifies that the user entry is marked complete. The already qualified users continue to progress and exit the journey once they have timed out (refer to the following GIF).

User Entry and Movement in Completed State
Editing Journey in Completed State
[](https://docs.clevertap.com/docs/journey-states#editing-journey-in-completed-state)
----------------------------------------------------------------------------------------------------------------------------
You can make changes to a Journey in the Completed State by creating a new draft version. This includes updates to nodes, paths, goals, and entry criteria. When you publish the new version, you will be prompted to choose how the completed version should be handled:
Once you publish a new version, you can:
* **Force exit from version**, if you want all users to move to the new version immediately
* **Keep moving in version** if you want to allow existing users to continue moving through it. The new users who meet the updated entry criteria are routed into the new version of the journey.

Edit a Journey in Completed State
Restricted
[](https://docs.clevertap.com/docs/journey-states#restricted)
============================================================================
The Restricted state indicates that the journey version is no longer accepting new users, but users who have already qualified will continue to progress through the journey. This is a system-driven state that is applied when a new version of the journey is published and the previous version is not stopped, but retained to support in-progress users.
For example, consider a running journey that you edit and publish as a new version. If you choose not to stop the previous version, it enters the Restricted state. In this state, the journey flow remains active only for users already inside the journey; no new users will be able to enter.

User Entry and Movement in Restricted State
A version in the Restricted state cannot be made active again. This state exists solely to ensure continuity for users already in the journey, while new users are directed to the latest active version.
Editing Journey in Restricted State
[](https://docs.clevertap.com/docs/journey-states#editing-journey-in-restricted-state)
------------------------------------------------------------------------------------------------------------------------------
Journey in the Restricted state supports limited edits to the _What_ section. To edit the journey beyond the What section, select _Full editing_ to create a new version. This initiates a new draft version. Once published, the older version remains restricted, and only the new version will remain active.
Updated about 2 months ago
* * *
Ask AI
---
# Journey Concepts
Overview
[](https://docs.clevertap.com/docs/journey-concepts#overview)
==========================================================================
This section covers the following Journey concepts:
* [Journey States](doc:journey-states)
* [Journey Components](https://docs.clevertap.com/docs/journey-concepts#journey-components)
* [Journey Procedures and Outcomes](https://docs.clevertap.com/docs/journey-components#journey-procedures-and-outcomes)
Journey Components
[](https://docs.clevertap.com/docs/journey-concepts#journey-components)
==============================================================================================
A Journey is configured using a combination of the following components:
* [Journey Nodes](https://docs.clevertap.com/docs/journey-components#journey-nodes-nodes)
* [Segment Nodes](https://docs.clevertap.com/docs/journey-concepts#segment-nodes)
* [Engagement Nodes](https://docs.clevertap.com/docs/journey-concepts#engagement-nodes)
* [Engagement Node Actions](https://docs.clevertap.com/docs/journey-concepts#engagement-node-actions)
* [Controller Nodes](https://docs.clevertap.com/docs/journey-concepts#controller-nodes)
* [Journey Connections](https://docs.clevertap.com/docs/journey-concepts#journey-connections)
* [Journey Links](https://docs.clevertap.com/docs/journey-concepts#journey-links)
* [Sleep Time](https://docs.clevertap.com/docs/journey-concepts#sleep-time)
Journey Nodes
[](https://docs.clevertap.com/docs/journey-concepts#journey-nodes)
------------------------------------------------------------------------------------
Nodes are different entry and exit points for user navigation.
The user navigates from a milestone to the intended one through different nodes, depending on the route they take.
For example, you want the user to register and purchase a product on your platform after installing the app. When the user registers on your platform after app installation, a journey to purchase a product activates. However, if the user does not register on your platform even after app installation, you can activate a journey that nudges them to register on the platform.
Nodes make it possible to automatically detect the route that the user takes, in order to steer them to the next relevant node.
A Journey is a combination of _Segment_ nodes and _Engagement_ nodes. You can connect _Segment_ nodes and _Engagement_ nodes to each other to create powerful automation.
When compared with Campaigns, the _Segment_ nodes define the audience, and _Engagement_ nodes define the target.
###
Segment Nodes
[](https://docs.clevertap.com/docs/journey-concepts#segment-nodes)
_Segment_ nodes are various points in a journey to qualify users based on certain events.
The events may be either entry or navigation points based on the user's action/inaction.
In case of users not qualifying for a _Segment_, they may either be waiting for qualification or exit the journey, if entered.
For example, on a successful login creation after installing the app, the user qualifies for a _registered_ event. In cases where the user does not create a login, they do not qualify, and based on the journey parameters, they either wait to enter the node or exit the journey.

Segment Nodes
####
Types of Segment Nodes
[](https://docs.clevertap.com/docs/journey-concepts#types-of-segment-nodes)
| Segment Node | Description | Example |
| --- | --- | --- |
| Action | Qualification to this node occurs as soon as the user performs the said event. | Qualify users as soon as they do _app install_. |
| Inaction | Segment users who did the first/initial event, but did not do the second event within a specified time interval. | Qualify users who _added to cart_, but did not purchase within five mins. |
| Past Behavior | Segment users who performed one event AND did not perform another in the past _n_ days. | Qualify users who performed _Video Watched_ AND did not do _Subscription Paid_ in the last 30 days. |
| Date Time | Segment users based on a _date time_ property value like flight time, due date, travel time, and so on. | Qualify users who have their credit card due date in the upcoming week. |
| Journey Trigger | * \*Use this node only in the entry criteria\*\*.
Segment users based on a different user journey node. | Qualify users in current journey when they enter _X_ node of another journey.
For instance, all users who have received nudges based on _Video Watched_ and _Subscription not paid_ enter the current journey that offers discount codes for subscribing.̧ |
| Custom list | * \*Use this node only in the entry criteria\*\*.
Upload custom list of users for entry to the Journey. | Qualify users based on an uploaded list from your Retail Point of Sale (POS). |
| Page Visit | * \*Web based segment\*\*.
Segment users as soon as they visit a specific page. | Qualify users as soon as they visit a specific page. |
| Referrer Entry | * \*Web based segment\*\*.
Segment users based on a referring website or campaign. | Qualify users as soon as they enter your website based on a referring website or campaign. |
| Page Count | * \*Web based segment\*\*.
Segment users based on the number of pages visited by them. | Qualify users as soon as they visit _X_ pages. |
###
Engagement Nodes
[](https://docs.clevertap.com/docs/journey-concepts#engagement-nodes)
_Engagement_ nodes are interaction points in a user journey that determine the channel and its message contents. The interaction points are users engaging with nudges/notifications sent to them. Users that do not interact with engagements do not qualify.
For example, you can qualify users when they click a link in an email to indicate interaction. This enables further engagement to prompt certain user actions.

Engagement Nodes
####
Types of Engagement Nodes
[](https://docs.clevertap.com/docs/journey-concepts#types-of-engagement-nodes)
| Engagement Node | Description | Node Actions |
| --- | --- | --- |
| Push | Send push notifications that display in the users' notification tray or the notification inbox. | * Sent
* Failed
* Clicked
* Unreachable |
| SMS | Send text messages to your app or website users even outside of the app. | * Sent
* Failed
* Unreachable |
| Email | Send emails to your app or website users | * Sent
* Failed
* Viewed
* Clicked
* Unreachable |
| Webhook | Use it to receive push notifications on the app server and track events in a system. You can also connect with an external source (e.g., Chatbots and virtual assistants) to send something via API. | * Sent |
| Web Push | Send browser-based messages to your website users even outside of your website. | * Sent
* Failed
* Viewed
* Clicked
* Unreachable |
| Web Pop-up | Display pop-up messages on desktop or mobile websites. | * Sent
* Viewed
* Clicked |
| WhatsApp | Send WhatsApp messages to your app or website users even outside of the app.To know more, refer
[Engagement Nodes - WhatsApp](doc:engagement-nodes-whatsapp) | * Sent
* Failed
* Delivered
* Unreachable |
| Exit Intent | Display pop-up messages before users leave your website | * Sent
* Viewed
* Clicked |
| In-app | Display pop-up messages while a user is in the app. An In-App renders as soon as the user performs an event. | * Viewed
* Clicked |
| Web Native Display | Display content on your website without interrupting the user journey. | * Viewed
* Clicked |
| Inbox | Send messages that remain accessible after they’re received in the app. | * Sent
* Viewed
* Clicked |
| Facebook | Send messages to users outside of your app or website via ads on Facebook. | * Sent
* Failed
* Unreachable |
| Google | Send messages to users outside of your app or website, via ads on Google apps. | * Sent
* Failed
* Unreachable |
| Amazon event bridge | Interact with Amazon EventBridge(if integrated) to send user action-based notifications. | Sent |
| Segment | Interact with Segment(if integrated) to personalize engagements based on user actions. | Sent |
| mParticle | Interact with mParticle(if integrated) to collect user data for rich engagements. | Sent |
####
Engagement Node Actions
[](https://docs.clevertap.com/docs/journey-concepts#engagement-node-actions)
This section explains the status of the message delivery and the actions a user may perform on the engagement node.
| Node Actions | Description |
| --- | --- |
| **Sent** | Indicates that the message is sent from CleverTap and has reached the recipient's device. In the case of a Webhook, the recipient is the system server. |
| **Failed** | Indicates that the sent message could not be delivered to its intended recipient due to specific errors. For example, third-party provider issues. |
| **Unreachable** | Indicates that the sent message could not be delivered because the recipient's device or contact information is unavailable. For example, a push token or phone number does not exist. |
| **Viewed** | Indicates that the user viewed the message sent from CleverTap. For example, the user views an Email or In-App notification. |
| **Clicked** | Indicates that the user clicked the message sent from CleverTap. For example, the user clicks a Push, In-App, Email, Web Popup, or Web Push message. |
| **Delivered** | In WhatsApp, _Sent_ indicates that the message is on its way to the user's device, and _Delivered_ indicates that the message has reached the recipient's device. If the user blocks you, the message does not reach them. |
###
Controller Nodes
[](https://docs.clevertap.com/docs/journey-concepts#controller-nodes)
_Controller_ Nodes are points in a user journey that perform certain actions. For example, you may exit a user from a journey after completing an _Email Engagement_.

Journey Controllers
####
Types of Controller Nodes
[](https://docs.clevertap.com/docs/journey-concepts#types-of-controller-nodes)
| Controller Node | Description |
| --- | --- |
| Force exit | Exit a user from a journey. |
| [User profile update](https://docs.clevertap.com/docs/construct-a-journey#using-user-profile-update-node) | Updates a system or custom property. If the user property for the user doesn’t exist in the profile, then the property is created for that user profile. Irrespective of whether the update fails or succeeds, the user moves ahead via the **Updated** path. |
| [IntelliNODE](https://docs.clevertap.com/docs/intellinode) | Define and compare multiple journey variations within a single journey. |
Journey Connections
[](https://docs.clevertap.com/docs/journey-concepts#journey-connections)
------------------------------------------------------------------------------------------------
You can connect your journey nodes through _links_ and specify a _sleep time_ before an action.
###
Journey Links
[](https://docs.clevertap.com/docs/journey-concepts#journey-links)
Journey links are routing rules between different nodes. Based on user behavior or action, you can create a connection between a node and link it to distinct nodes.
For example, when you send push notifications to nudge buying for a segment of new users within the past year but have not purchased anything in the past month, you create a link between the segment node _Past behavior_ and the engagement node _Push_.

Journey Links
###
Sleep Time
[](https://docs.clevertap.com/docs/journey-concepts#sleep-time)
When you choose a journey link and connect it to the engagement node, the **hourglass**  icon appears on the link. Click the **hourglass**  to modify the sleep time. By default, there's no sleep time.
Sleep Time enables you to specify whether to do the specified action immediately or after a gap. You may define the gap in minutes, hours or days.
In the below figure, you may choose to send the nudge either immediately, as soon as the user qualifies, or wait for a few days before nudging the user.

Sleep Time
> 📘
>
> ###
>
> Note
>
> [](https://docs.clevertap.com/docs/journey-concepts#note)
>
> The In-App renders as soon as the user performs an event. Hence, sleep time does not apply to In-App. However, to add a delay, add a segment node followed by the In-App node.
Journey Procedures and Outcomes
[](https://docs.clevertap.com/docs/journey-concepts#journey-procedures-and-outcomes)
========================================================================================================================
The following table describes the procedures and outcomes involved in a Journey:
| Concept | Description |
| --- | --- |
| **Publish the Journey** | Makes your journey live. |
| **Schedule the Journey** | Activates the journey (users begin entering the journey) at a specified time—either now or at a later date. |
| **Initial Run of the Journey** | The initial run of the journey occurs as soon as it is activated based on the scheduled date and time. |
| **Subsequent Run of the Journey** | In the case of a PBS journey, after the initial run, if the journey is set to recurring, subsequent runs occur at 12:00 a.m. the following day. Assuming the recurring day is set to T, the subsequent run occurs on T+1 day. |
Updated about 2 months ago
* * *
Ask AI
---
# Use Custom Reward Issued in Engagements
Overview
[](https://docs.clevertap.com/docs/use-custom-reward-issued-in-engagements#overview)
=================================================================================================
CleverTap allows you to engage users who have received a Custom Reward by targeting them through the CT Custom Reward Issued event.
This system event helps you personalize communication and drive users to complete key actions, such as redeeming an offer, using a reward, or making a follow-up purchase.
Use Custom Reward Issued in Engagements
[](https://docs.clevertap.com/docs/use-custom-reward-issued-in-engagements#use-custom-reward-issued-in-engagements)
===============================================================================================================================================================
If you are a food delivery app that wants to increase redemption rates on the app. Let's say you want to remind users who received a custom reward but have not redeemed it yet. You can set up a campaign as follows:
1. Go to _Campaigns_ from the CleverTap dashboard.
2. Click **\+ Campaign** and select a messaging channel from the _Messaging Channels_ dropdown.
3. Click **Add an event** from the _Who_ section.
4. Select the _CT Custom Reward Issued_ event and the required _Event Property_.

Target CT Custom Reward Issued Users with a Campaign/Journey
For more information about creating a campaign, refer to the _Create Message_ document of the respective messaging channel.
CT Custom Reward Issued
[](https://docs.clevertap.com/docs/use-custom-reward-issued-in-engagements#ct-custom-reward-issued)
===============================================================================================================================
After a custom reward is issued to a user, CleverTap logs the _CT Custom Reward Issued_ event. This event enables you to engage users by creating targeted campaigns based on custom reward-related actions.
This event includes both System and Custom Properties that allow you to:
* Filter users for targeted engagement.
* Personalize message content using Liquid Tags.
Updated about 2 months ago
* * *
Ask AI
---
# Personalization in Journeys
Overview
[](https://docs.clevertap.com/docs/personalization-in-journeys#overview)
=====================================================================================
While creating a complex orchestration for your users, ending personalized messages is equally important to increase the actionability of those messages. The following steps guide you on achieving this within different engagement nodes available on Journeys:
* [Personalize Messages in Journeys](https://docs.clevertap.com/docs/personalization-in-journeys#personalize-messages-in-journeys)
* [Personalize Events across Nodes](https://docs.clevertap.com/docs/personalization-in-journeys#personalize-events-across-nodes)
Personalize Messages in Journeys
[](https://docs.clevertap.com/docs/personalization-in-journeys#personalize-messages-in-journeys)
=====================================================================================================================================
You can personalize messages journeys after you finish [constructing a journey](https://docs.clevertap.com/docs/construct-a-journey)
. To personalize the messages in Journeys from the engagement nodes:
1. Click an engagement node and create a campaign.
2. Select _What_ and then select the _Message Type_.

Select the Message Type
3. Click _Go To Editor_ to edit and personalize the message. You can either use the inline @ personalization option or the more advanced options from _Personalization_ icon at the top of the page.

Create a Personalized Message
For more information about message personalization, see [Message Personalization across campaigns](doc:personalize-message-all)
Personalize Events across Nodes
[](https://docs.clevertap.com/docs/personalization-in-journeys#personalize-events-across-nodes)
===================================================================================================================================
You can personalize an _Event Triggered Journey_ to engage a user through the subsequent engagement nodes or messaging channels.
For example, a user adds an item to the cart but does not purchase it. You can then create a journey to send personalized reminders for the abandoned cart item through different channels. To achieve this personalization, you can personalize multiple messages in the journey based on the event _Abandoned Cart_ in the following order:
1. _Push Message Reminder_: After an hour of abandoning the cart, send a reminder message that says, "Hey, the iPhone 14 in your cart is still waiting."
2. _Push Message Followup_: Send a follow-up message that says, "Still interested in iPhone 14? It’s still waiting in your cart; tap Buy to finish your purchase."
3. _Email Message_: An email that includes the Product Name, Image, Price, and Link to the product purchase.
The previous action node decides the event in the subsequent engagement node when multiple engagement nodes exist. The following table explains the node personalization sequence:
| Preceeding Node | Subsequent Node | Is Event Personalization Available? |
| --- | --- | --- |
| Action Segment Node | Engagement Node | Yes |
| Inaction Segment Node | Engagement Node | Yes (For main event) |
| Date Time Segment Node | Engagement Node | Yes |
Node Event Personalization Considerations
[](https://docs.clevertap.com/docs/personalization-in-journeys#node-event-personalization-considerations)
-------------------------------------------------------------------------------------------------------------------------------------------------------
There are some factors to consider when personalizing events across engagement nodes:
* Event personalization is available for the Action, Inaction, and Date Time segment nodes.
* Currently, online channels such as Web Pop-up, In-App, and App Inbox do not support Event Personalization across Nodes.
Valid Journeys for Node Personalization
[](https://docs.clevertap.com/docs/personalization-in-journeys#valid-journeys-for-node-personalization)
---------------------------------------------------------------------------------------------------------------------------------------------------
The following scenarios indicate a valid user journey for node personalization:
###
Personalize Engagement Nodes after Action Node
[](https://docs.clevertap.com/docs/personalization-in-journeys#personalize-engagement-nodes-after-action-node)
You can personalize multiple messages in the journey based on the user event, that is, the abandoned cart event, when the engagement node follows the action node. For example, if a user adds an item to the cart but does not purchase it, you can set up a journey to send reminders for the abandoned cart item. You can send a push message followed by an email message to nudge the user.
* Push Message Reminder: This is a reminder after an hour of abandoning the cart. A message that says, "Hey, the iPhone 14 in your cart is still waiting."
* Email Message: This is an email that includes the Product Name, Image, Price, and Link to the product purchase.
Following is a sample Journey flow:
_Action Node > Engagement Node 1 > Engagement node 2_

Sample Journey - Engagement Nodes after Action Node
###
Personalize Engagement Node with Delay
[](https://docs.clevertap.com/docs/personalization-in-journeys#personalize-engagement-node-with-delay)
You can set up a maximum delay of less than 24 hours per node in a journey. The following journey shows a 15-hour delay for each node. Send a push message after 15 hours and send another email message after 15 hours of delay.
Following is a sample Journey flow:
_Action Node > (delay of 15 hrs) > Engagement Node 1 > (delay of 15 hrs) > Engagement node 2_

Sample Journey - Engagement Node with Delay
###
Personalize Engagement Node with Delay and Controller Node
[](https://docs.clevertap.com/docs/personalization-in-journeys#personalize-engagement-node-with-delay-and-controller-node)
You can personalize an event across two engagement nodes even if there is a Controller Node, such as User Profile Update, or IntelliNODE, between these engagement nodes.
Consider a Journey where Engagement Node 1 before the Controller Node and Engagement Node 2 after the Controller Node (updating a user profile) can be personalized based on the event in the Entry Node.
Following is a sample Journey flow:
_Action Node > (delay of 15 hrs) > Engagement Node 1 > Controller node > (delay of 15 hrs) > Engagement node 2_

Sample Journey Flow - Engagement Node with Delay and Controller Node
###
Personalize Events across Multiple Action Nodes
[](https://docs.clevertap.com/docs/personalization-in-journeys#personalize-events-across-multiple-action-nodes)
You can only personalize events from a preceding Action Node. Consider the following scenario: The entry segment is an Action Node _Segment 1_. All the subsequent engagement nodes get a trigger event from _Segment 1_. However, if you add another Action Node _Segment 2_ in the Journey, all the subsequent engagement nodes get a trigger event from _Segment 2_ .
Refer to the following Journey example:
_Segment 1 (Event 1) > Engagement Node 1(Event 1) > Engagement Node 2 (Event 1) > Segment 2 (Event 2) > Engagement Node 3 (Event 2) > Engagement Node 4 (Event 2)_
Now, all the engagement nodes after _Engagement Node 3_ will only get trigger events from _Segment 2_ for event personalization.

Sample Journey Flow - Events Across Multiple Action Nodes
Updated about 2 months ago
* * *
Ask AI
---
# Custom Rewards
Overview
[](https://docs.clevertap.com/docs/custom-rewards#overview)
========================================================================
Custom Rewards help you extend CleverTap’s reward ecosystem to integrate with your own partner systems. They allow you to create, manage, and distribute a catalog of external rewards, such as gift cards, digital subscriptions, physical items (for example, iPhones, cameras), or wallet-based credits, through CleverTap Promo campaigns.
With Custom Rewards, you can maintain a centralized reward catalog that your system or your reward partner can fulfill. CleverTap manages the orchestration, triggering, and secure delivery of these rewards via **webhook notifications** whenever a user qualifies for a campaign.
By using Custom Rewards, you can:
* Configure and manage external rewards centrally.
* Automate reward distribution through Promo campaigns.
* Ensure accuracy, scalability, and governance in reward fulfillment.
Custom Reward Types
[](https://docs.clevertap.com/docs/custom-rewards#custom-reward-types)
==============================================================================================
Custom Rewards support two types of reward delivery:
* **Physical & Digital Reward**: Digital or physical rewards such as vouchers, gift cards, or an iPhone.
* **Self-managed Wallet Credits**: Real money or point-based rewards managed in an external wallet. An external wallet is a real-money or points-based system hosted on your infrastructure. It is responsible for storing, crediting, and redeeming wallet balances when a user earns rewards. CleverTap only triggers the reward delivery via webhook; your wallet service performs the actual crediting.
For more information about how to configure Custom Rewards in a campaign, refer to Create Custom Rewards.
Examples by Business Verticals
[](https://docs.clevertap.com/docs/custom-rewards#examples-by-business-verticals)
====================================================================================================================
Custom Rewards are flexible and apply across industries. Examples include:
* **Quick Commerce**: Customers spending over $100 can instantly receive a movie ticket or streaming voucher, turning high-value purchases into rewarding experiences.
* **FinTech**: A fixed deposit above ₹10,000 can trigger instant cashback to a user’s wallet, adding real-time value to financial milestones.
* **E-Commerce**: Shoppers completing three purchases in a week can be gifted a third-party voucher, encouraging repeat buying and loyalty.
* **Telecom**: Prepaid users recharging a monthly plan can unlock one-month OTT access, enhancing satisfaction with added entertainment benefits.
* **EdTech**: Learners finishing a course on time can earn a digital certificate and discount voucher, motivating continued engagement.
* **Mobility**: Frequent riders completing ten rides in a month can get wallet credits, rewarding consistent usage.
Prerequisites
[](https://docs.clevertap.com/docs/custom-rewards#prerequisites)
==================================================================================
Before you begin, ensure you have the following:
* A webhook endpoint that your system must expose to receive reward data. To know how to do that, refer to [Set Up Webhooks](doc:setup-webhooks#set-up-webhooks)
.
* Access to CleverTap Promo with the Promo add-on enabled.
* Webhook keys are already configured for mapping CleverTap system keys to your internal reward system.
Updated about 2 months ago
* * *
Ask AI
---
# Journey Performance
Concepts
[](https://docs.clevertap.com/docs/viewing-statistics#concepts)
============================================================================
Before diving into Journey statistics, it is essential to understand a few key terms. These concepts define how user progress is tracked through the Journey and help you interpret the stats more accurately.
* **Goal Met**: If a goal is set in the Journey builder, these are all users who met the goal.
* **Journey Timeout** : If a Journey timeout is set in the Journey builder (entry criteria), all the users are timed out.
* **Node Timeout**: The qualifying window set for the node, after which users will proceed to the next node via the Node Timeout connector.
* **Version Exit**: The number of users who exited the journey from this version after reaching the selected node.
Overview
[](https://docs.clevertap.com/docs/viewing-statistics#overview)
============================================================================
Click _Engage_ > _Journeys_ from the left side menu. The _Journey List_ page opens. Search for a journey and then click to open a Journey. The _Journey Canvas_ displays the following four tabs for each journey version:
* **Overview Tab**: Displays your Journey components and connections.

Journey Overview
* [Node Stats Tab](doc:node-stats)
: Displays stats for each Node.

Node Stats
* [Engagement Stats Tab](doc:engagement-stats)
: Displays stats for the Engagement.

Engagement Stats
* [Journey Stats Tab](doc:journey-stats)
: Displays stats for the Journey.

Journey Stats
If a Journey has been edited after publishing, it may have multiple versions. To view metrics for a different version, select the desired version using the Version Selector at the top.
Frequently asked questions
[](https://docs.clevertap.com/docs/viewing-statistics#frequently-asked-questions)
================================================================================================================
###
Why do my users not qualify?
[](https://docs.clevertap.com/docs/viewing-statistics#why-do-my-users-not-qualify)
Check if your user matches all the entry-level segments in the initial node.
If it is an action, check if the event is from the API. If yes, then check if you are passing the event in real-time or in batches. Passing the event with a backdated timestamp will not qualify users in a live-action.
###
What are the last nodes?
[](https://docs.clevertap.com/docs/viewing-statistics#what-are-the-last-nodes)
These are the nodes without an output path, which are present in Journeys without goals.
###
What happens to my users if my Journey does not have a goal?
[](https://docs.clevertap.com/docs/viewing-statistics#what-happens-to-my-users-if-my-journey-does-not-have-a-goal)
If you do not set a goal, the users from the last node exit the Journey. Their Journey is considered complete when they reach the last node.
###
Where can I view the users who are waiting due to a delay or sleep defined between two nodes?
[](https://docs.clevertap.com/docs/viewing-statistics#where-can-i-view-the-users-who-are-waiting-due-to-a-delay-or-sleep-defined-between-two-nodes)
You will see them on the following node under 'Waiting users'.
###
What are _Unreachable_ profiles?
[](https://docs.clevertap.com/docs/viewing-statistics#what-are-unreachable-profiles)
_Unreachable_ profiles are profiles that lack an identity, email, phone number, or token (web/push).
###
What happens to Unreachable profiles if they reach the last engagement node?
[](https://docs.clevertap.com/docs/viewing-statistics#what-happens-to-unreachable-profiles-if-they-reach-the-last-engagement-node)
If the Journey Goal is set up, _Unreachable_ profiles move to _Waiting users_ > _Before Node_ stats.
If the Journey Goal is not set up, _Unreachable_ profiles exit the journey.
###
Why is the number of users on nodes not matching or adding up?
[](https://docs.clevertap.com/docs/viewing-statistics#why-is-the-number-of-users-on-nodes-not-matching-or-adding-up)
The count of users depends on the selected date range. If the original date range of the Journey does not match the date range in your search, then the numbers will differ from the original.
###
How do I verify the number of users entering a specific node?
[](https://docs.clevertap.com/docs/viewing-statistics#how-do-i-verify-the-number-of-users-entering-a-specific-node)
The number of users moving forward from a node will always match the number of users who are entering the following nodes.
###
What is this intermediate stat on node stat?
[](https://docs.clevertap.com/docs/viewing-statistics#what-is-this-intermediate-stat-on-node-stat)
If you draw the same connector, such as 'Yes', multiple times from a node and connect it to multiple Segment nodes, the users will move after the first action. The stats for these Waiting users are displayed as an intermediate node on the connector.

Intermediate Node - Build

Intermediate Node - Stats
###
How will I see the stats for the Phantom node?
[](https://docs.clevertap.com/docs/viewing-statistics#how-will-i-see-the-stats-for-the-phantom-node)
A Phantom node appears only when a _Viewed_ or _Clicked_ connector is drawn from an Engage node. The originating node will display the Sent count, and the Phantom node will display the Clicked or Viewed count. For more information on Phantom nodes, refer to [Users waiting at Engage nodes](https://docs.clevertap.com/docs/journeys#section-users-waiting-at-segment-node)
.

Phantom Node - Build

Phantom Node - Stats
Updated about 2 months ago
* * *
Ask AI
---
# Constant Event Property
Overview
[](https://docs.clevertap.com/docs/constant-property#overview)
---------------------------------------------------------------------------
A _Constant Property_ is an event property that can be tracked across multiple events. Segmentation is done if multiple events are done with the same value of the event property held constant. This feature enables a marketer to create a single Campaign for all the values of the property held constant instead of individual campaigns for each value of the property.
Example #1 - Single item engagement
[](https://docs.clevertap.com/docs/constant-property#example-1---single-item-engagement)
--------------------------------------------------------------------------------------------------------------------------------
As a growth marketer for an E-Commerce app, you want to segment out an audience that has Viewed a product in the past but not bought that exact same product. A straightforward segmentation would be to qualify people based on each product - Users who did Product Viewed Event where Product Name = Red Shoes in the last 30 days and Users who did not do Charged Event where Product Name = Red Shoes in the last 30 days. This would need to be repeated for all the items that the E-Commerce app has available.
"Constant Property" feature allows a single segmentation where you can mark the property "Product Name" to be kept constant and the system will fire the same query for all the values of the Product Name and qualify those users accordingly. The "Constant Property" value will be available as a Personalisation key inside the Message body.
If User A has Viewed "Jenny red shoes" and not Purchased that exact product then would get an engagement as -
Hello A
You have added **Jenny red shoes** to your cart. How about a discount code Cashback20 to help you save more?
If User B has Viewed "Wonderland yellow jacket" and not Purchased that exact product then would get an engagement as -
Hello B
You have added **Wonderland yellow jacket** to your cart. How about a discount code Cashback20 to help you save more?
Example #2 - Summary engagement
[](https://docs.clevertap.com/docs/constant-property#example-2---summary-engagement)
------------------------------------------------------------------------------------------------------------------------
As a growth marketer for the E-Commerce app, you may want to send a summary of Weekly Expenses and Savings on the transactions the User has done on the application. This can nudge the users to continue seeing value in purchasing from your E-Commerce platform.
The following are some sample engagement messages where John spent $100 over the last 1 week and saved $20 by using various coupons. Mary spent $120 over the last 1 week and saved $40 by using various coupons. You can send out a notification that says something like the following:
Message for JohnMessage for Mary
Hello John!
The weekend sale is here! You have been able to save $20!! from your purchases worth $100 over the last week. Shop more on the weekend and choose from exciting products with more than 20% OFF!!
Hello Mary!
The weekend sale is here! You have been able to save $40!! from your purchases worth $120 over the last week. Shop more on the weekend and choose from exciting products with more than 20% OFF!!
Hold Event Property Constant
[](https://docs.clevertap.com/docs/constant-property#hold-event-property-constant)
===================================================================================================================
You can hold a property constant in an inaction campaign or a Past behavior-type campaign. Currently, the Constant Event Property supports Push, Email, SMS, and Webhook campaigns.
Alias Event Property
[](https://docs.clevertap.com/docs/constant-property#alias-event-property)
---------------------------------------------------------------------------------------------------
If different names call the same event property for various events, you can create an Alias property that will hold all the properties from other events. You can then use this across campaigns and analytics.
For example, the event _Purchased_ has an event property that holds the product id of the item called _product\_id_. However, the event _Added to cart\_has an event property called \_Product ID_ that holds the same value. You can create an _Alias Event property_ called _Product ID_ containing the event property _product\_id_ and _Product ID_.
Holding an event property constant across [Past Behavior Segments](doc:create-segments#create-past-behavior-segments)
achieves the desired message for users.
1. Navigate to _Settings_ > _Schema_ > _Events_ > _Alias event property._
2. Click the **+Alias Event Property** button. The _Create Alias Event Property_ window displays.
3. Enter the name for the _Alias event property_.
4. Click the **\+ Event property** link to map current events and their properties to the new alias.

Create Alias Event Property
You can now use this _Alias event property_ in all campaigns within the Constant Property option.
Inaction Campaign
[](https://docs.clevertap.com/docs/constant-property#inaction-campaign)
---------------------------------------------------------------------------------------------
You want to engage all the users who dropped off after adding a product to the cart. The event property across these events is _Product Name_. The value of this event property can be anything from Jenny's red shoes, running shoes, a Wonderland yellow jacket, a baseball bat, and so on.
You can define the conditions for the target audience and then select the constant event property.
To create a campaign:
1. From the dashboard, navigate to _Campaigns_.
2. Click **\+ Campaign**.
3. Select a messaging channel.

Select a Messaging Channel
4. Under the _Start here_ section, select the qualification criteria as _Live Behavior_.
5. Click **Done**.

Select Qualification Criteria for Campaigns
6. Under the _Who_ section, select events, and properties, as required.
7. Select the _Constant event property_ checkbox, then select _Product name_.
8. Click **Done** and personalize the message using [Liquid Tags](doc:liquid-tags)
under the _What_ section.

Select the Target Segment
For example, you can send the campaign with the item name that the user who added an item to the cart but did not purchase.
Liquid
Hurrah.. !
Complete your purchase of {{ ConstantEventProperty | default:"this item" }} with 15% off on using code GRT572E.
Following is a sample message the user gets:
Text
Hurrah.. !
Complete your purchase of Jenny red shoes with 15% off on using code GRT572E.
We hold the property such as _Products_ across all the events. The _Product property_ value can be anything, such as Jenny red shoes, Cool Ice blue goggles, or George High white hat. The Constant Event Property holds the value of the product.
Past Behavior Campaigns
[](https://docs.clevertap.com/docs/constant-property#past-behavior-campaigns)
---------------------------------------------------------------------------------------------------------
Let's take the earlier [OTT example](https://docs.clevertap.com/docs/constant-property#section-sending-a-summary)
. You can define the conditions for the target audience and then select the constant event property.
To create a campaign:
1. From the dashboard, navigate to _Campaigns_.
2. Click **\+ Campaign**.
3. Select a messaging channel.
4. Under the _Start here_ section, select the qualification criteria as _Past behavior/Custom list_.
5. Click **Done**.

Select the Qualification Criteria
6. Under the _Who_ section, select the required events and properties.
7. Select the _Constant event property_ checkbox, then select _Product name_.
8. Click **Done** and personalize the message using [Liquid Tags](doc:liquid-tags)
under the _What_ section.

Select the Target Segment
For example, you can send the campaign with a list of shows that the user is still watching.
Liquid
Hello {{ Profile.name | default:"there" }}
The weekend is here! How about you finish watching these episodes from the past week?
{% for index in ConstantEventProperty %}
{{ index | default:"Failed" }}
{% endfor %}
Following is a sample message that is received by your user:
Text
Hello John
The weekend is here! How about you finish watching these episodes from the past week?
* Funny Cats
* Dogs eat makeup
* Fast cars
You can additionally use 'limit' in the For loop above to define the upper limit of the number of items in your message. In case you do not want to show more than three shows, you can use the following:
Limit
{% for index in ConstantEventProperty limit:3 %}
This will restrict the maximum number of values in constant event property per user to 3. For users having lesser values, say 2, they will get the message with only 2 show names. To know more about limits, see [Limit in Liquid Tags](doc:https://docs.clevertap.com/docs/liquid-tags#section-limit)
. By default, the limit is 5 (even if `limit` tag is not used)
You can also refer to a value at a particular order by referencing the index of that value in the array. For example, a user added to cart but did not purchase Red shoes, yellow jacket, and Blue T-shirt. You can target users for specifically the second item from the bottom that they added to cart. It can be achieved using the following script. The last item is index 0, second last index 1, and so on.
Specific item in the list
Second last item - {{ ConstantEventProperty[1] | default:"index default" }}
Stats
[](https://docs.clevertap.com/docs/constant-property#stats)
=====================================================================
The stats page for Campaigns where the "Constant Property" feature is used, shows comprehensive details as follows:
* Event count for each value of the constant event property (Top 10 or Bottom 10)
* User count for each value of the constant event property for notification sent, viewed, clicked, converted, and in control group.
You can change the conversion event and map the conversion event's property to the constant event property and also track conversion for the same value of event property.

Constant Property Statistics
Conversion Event
[](https://docs.clevertap.com/docs/constant-property#conversion-event)
-------------------------------------------------------------------------------------------
The conversion event helps you track conversion. To track revenue, set the user conversion event from the campaign setup.
* Mapping constant property with conversion event property allows you to view conversion rate for specific property values
* You can view metrics for any conversion event and track conversion rate when any item is purchased or track the conversion rate for a specific item that is added to the cart.

Setup Conversion Tracking
Advanced - Constant Property with Catalog Personalization
[](https://docs.clevertap.com/docs/constant-property#advanced---constant-property-with-catalog-personalization)
=============================================================================================================================================================================
You can combine [catalog personalization](doc:catalog-send-time-personalization)
with constant event property to unleash the full power of campaign personalization.
For example, you can hold an event property (Product ID) constant and also add to it the rating and cost present in a catalog via catalog personalization.

Sample Campaigns using Constant Property with and without Catalog
First, you must map the constant event property to the catalog. To do so, perform the following steps:
1. From the dashboard, navigate to _Campaigns_.
2. Click **\+ Campaign**.
3. Select a messaging channel.
4. Under the _What_ section, select a message type.
5. Click **Go To Editor**.

Select the Message Type
6. Click **Personalization**.

Compose a Single Message
7. Under _Catalog_, select a catalog.
8. Select the required events and properties.
9. Click **Apply**.

Personalization using Catalog
10. Enter any mandatory content for your message.
11. Click **Done**.

Compose the Message
12. Under the _Who_ section, select the required events and properties.
13. Select the _Constant event property_ checkbox, then select _Product name_.
14. Click **Done**.

Select Target Segment
Past behavior Campaign Personalization
[](https://docs.clevertap.com/docs/constant-property#past-behavior-campaign-personalization)
---------------------------------------------------------------------------------------------------------------------------------------
For Past behavior Campaigns, you can use the following liquid script. In this example, the item is the index used for looping over the list of items for a user. _Rating_ and _Amount_ are the column names from which we are fetching additional values that can be used in the message.
Constant event property with catalog personalisation
Hello {{ Profile.name | default:"there" }},
Here is another reason to complete purchase items added to your cart. Use Coupon FRT456P to get 15% discount on -
{% for item in Catalog["Amount Catalog"] %}
{{item.Name | default: "jhsfk"}}, rated at {{item.Rating | default: "3"}}-star and currently priced at ${{item.Amount | default: "79999"}}
{% endfor %}
Enjoy.. !!
A user receives a message like:
Liquid
Hello John,
Here is another reason to complete purchase items added to your cart. Use Coupon FRT456P to get 15% discount on -
Jenny red shoes, rated at 4-star and currently priced at $129
Rocket umbrella, rated at 5-star and currently priced at $49
Crosil watch, rated at 5-star and currently priced at $299
Enjoy.. !!
Inaction Campaigns Personalization
[](https://docs.clevertap.com/docs/constant-property#inaction-campaigns-personalization)
-------------------------------------------------------------------------------------------------------------------------------
For inaction campaigns using Past behavior segments, you can use the following liquid script to use a particular column from the selected catalog in the message.
Liquid
Hurrah.. !
Complete your purchase of {{ ConstantEventProperty | default:"this item" }}, with 15% off on using code GRT572E.
{{ ConstantEventProperty | default:"this item" }} is rated {{ Catalog["Amount Catalog"].Rating | default:"3" }}-star and is currently priced at {{ Catalog["Amount Catalog"].Amount | default:"$99" }}.
A user receives a message like:
Text
Hurrah.. !
Complete your purchase of Nautical White T-shirt, with 15% off on using code GRT572E.
Nautical White T-shirt is rated 4-star and is currently priced at $69.
Updated about 2 months ago
* * *
Ask AI
---
# Define Entry Segment
Overview
[](https://docs.clevertap.com/docs/define-entry-segment#overview)
==============================================================================
The Entry Segment block can be considered as a starting point for creating a Journey. It defines the criteria based on which the users enter a Journey.

Entry Segment Block
* * *
Remember that the selection made in the _Setup_ determines the segments available for drag and drop on the Journey canvas:
| Configuration in Setup | Enabled Segments |
| --- | --- |
| If you selected _At a specific time_ in Setup | The _Past behavior_, _Journey Trigger_, and _Custom list_ segments are enabled. |
| If you selected _By an event trigger_ in Setup | The _Action_, _Inaction_, _Date time_, _Journey Trigger_, _Page visit_, _Referrer entry_, and _Page count_ segments are enabled. |
* * *
To define the Entry Segment for a Journey:
1. Drag and drop one of the desired segments to the **Entry Segment** block. For example, use the **Past behavior** segment.

Entry Segment Node for Journeys
2. Click the dropped **Entry Segment**. The **Segment** pane appears. The following image displays the **Who** section for a Past Behaviour segment.

3. Enter the segment name.
4. Under the **Who** section, also called Query Builder, define the criteria as required. All rules defined are combined using the **AND** operator. Users qualify only if they fulfill all the criteria.
* From the first list, select the [segment of users](https://docs.clevertap.com/docs/define-entry-segment#find-users-from-the-segment)
.
* From the second list, define the [user action criteria](https://docs.clevertap.com/docs/define-entry-segment#filter-by-action)
.
* From the third list, define the [user inaction criteria](https://docs.clevertap.com/docs/define-entry-segment#filter-by-inaction)
.
* From the fourth list, define the [user properties criteria](https://docs.clevertap.com/docs/define-entry-segment#filter-by-user-properties)
.
* From the fifth list, define the [user interests criteria](https://docs.clevertap.com/docs/define-entry-segment#filter-by-user-interest)
.
5. If required, select **Do not send users unsubscribed** to exclude the unsubscribed users from the Journey.
6. Click **Continue** and **Save & Close**.
> 📘
>
> ###
>
> Note
>
> [](https://docs.clevertap.com/docs/define-entry-segment#note)
>
> * For more information about Journey entry criteria, refer to the [Define the Journey Entry Criteria](https://docs.clevertap.com/docs/setup-journey#define-the-journey-entry-criteria)
> section.
> * For more information about what type of user segments can be used, refer to the [Segments](doc:segments)
> section.
Entry Segment Criteria
[](https://docs.clevertap.com/docs/define-entry-segment#entry-segment-criteria)
==========================================================================================================
Under the **Who** section, also called Query Builder, you can define the criteria for the user's entry into a Journey.
Find Users from the Segment
[](https://docs.clevertap.com/docs/define-entry-segment#find-users-from-the-segment)
--------------------------------------------------------------------------------------------------------------------
When you publish a Journey, users are filtered from the segment you select from this dropdown menu. Based on your Journey type, Past Behaviour, or Live Action, a list of existing segments appears. The below image shows the Past Behaviour Segments list.

Filter by Action
[](https://docs.clevertap.com/docs/define-entry-segment#filter-by-action)
----------------------------------------------------------------------------------------------
Using the **Who have done\[Operator\] of these events** filter in the **Who** section, you can filter users for your Journey based on their actions within a specified time. You may also filter the users depending on whether the event occurred for the first time, for the last time, at a given time of day, or on a specific day of the week. You can define one or more criteria to filter the users.
This set of criteria can be refined using the following two types of operators:
* **All (AND)**: Fetches users who match all the event criteria set in the action filter. For example, a user did _App Launched_ event and _Charged_ in the last 30 days.

* **Any (OR)**: Fetches users who fulfill any combination of the event criteria set in the action filter. You can also specify how many times these events occur. For example, a user did _Video Watched_ event or _Video Liked_ event more than once in the last 30 days.

Filter by Inaction
[](https://docs.clevertap.com/docs/define-entry-segment#filter-by-inaction)
--------------------------------------------------------------------------------------------------
Using the **Who have not done** filter in the **Who** section, you can filter users for your Journey based on the actions they did not perform within a specified time. You may also filter the user depending on whether the event did not occur for the first time, for the last time, at a given time of day, or on a specific day of the week.
For instance, you can create a Journey that targets users as soon as they add a product to their cart but do not finish transacting within 10 minutes; that is the golden window within which most users transact on iOS and Android app platforms. By default, it evaluates all the criteria using the **OR** operator. If you specify multiple criteria, the user is qualified if any of the criteria are met.
Filter by User Properties
[](https://docs.clevertap.com/docs/define-entry-segment#filter-by-user-properties)
----------------------------------------------------------------------------------------------------------------
Using the **With user properties** filter in the **Who** section, you can filter users for your Journey based on the user's properties such as language, location, gender, phone number, and so on. By default, it combines all the criteria using the **AND** operator.
For example, you can send a push notification to English-speaking female and male users who have a phone number.

Filter by User Properties
The following table explains the various user property types:
| Property Type | Description | Example |
| --- | --- | --- |
| **User Properties** | Custom [user profile properties](https://docs.clevertap.com/docs/user-profiles#section-user-profile-data-model)
that you define and send to CleverTap. | Customer Type = Platinum |
| **Demographics** | Demographics filters include _Age_ and _Gender_. | Age = 25 to 40 years
Gender = Female |
| **Geography** | User's location Filters include _Country_, _Region_, and _City_. CleverTap's SDK can automatically detect this from the user's IP address. | Country = United States
State = California
City = San Francisco |
| **Geography Radius** | User's exact location. You can select a city and then define the target radius. You can also select multiple cities. You can receive this information using CleverTap's SDK. For more information, refer to the [iOS](https://developer.clevertap.com/docs/ios#section-send-location-information-to-clevertap)
and [Android](https://developer.clevertap.com/docs/android#section-manually-updating-user-location)
developer guides. | Locations = San Francisco, USA; Paris, France |
| **Reachability** | Reachability filters include _Has email address_, _Has phone number_, _Unsubscribed email_, and _Unsubscribed SMS_. These filters help analyze the communication preferences of the users with the help of the following flags:
* _MSG-push_: Indicates that the user has enabled push notification from the application. Works with the DDND Flag.
* _MSG-sms_: When set to true, it indicates that the user has subscribed to SMS notifications. When set to false, it indicates that the user does not want to receive SMS notifications.
* _MSG-email_: When set to true, it indicates that the user has subscribed to Email notifications. When set to false, it indicates that the user does not want to receive email notifications.
* _MSG-whatsapp_: When set to true, it indicates that the user has subscribed to WhatsApp notifications. When set to false, it indicates that the user does not want to receive WhatsApp notifications.
For more information about each of these flags, refer to communication preferences listed under the [Manually Updating Predefined User Profile Properties](https://developer.clevertap.com/docs/concepts-user-profiles#manually-updating-predefined-user-profile-properties)
section. | Unsubscribed email = No |
| **App Fields** | App fields filters include _App Version_, _Device Make_, _Device Model_, _OS Version_, and CleverTap _SDK Version_. CleverTap's SDK sends this information for each device with your app, meaning a single user can have multiple devices associated with the user profile. | OS Version = 10 |
Filter by User Interest
[](https://docs.clevertap.com/docs/define-entry-segment#filter-by-user-interest)
------------------------------------------------------------------------------------------------------------
Using the **With interests** filter in the **Who** section, you can filter users for your Journey based on the user's interests, such as event property, time of the day, and specific day of the week. For more information, refer to the [Psychographic Segmentation](https://docs.clevertap.com/docs/psychographic-segmentation)
documentation. By default, it combines all the criteria using the **AND** operator.
The following table explains the various user interest types:
| Property Type | Description | Example |
| --- | --- | --- |
| **Event Property** | Select the event property based on which you want to meet the criteria. | For example, App Launched in the last 30 days. |
| **Time of the day** | Time of day when the event was raised. It contains the start and end times. | 12 PM - 6 PM |
| **Day of the week** | Day of the week when the event was raised, such as Sunday, Monday, Tuesday, and so on. | Day of the week = Sunday |
After defining the entry segment criteria, you can choose how you want to communicate with the users. For more information about Journey paths, refer to the [Define Journey Path](https://docs.clevertap.com/docs/construct-a-journey)
section
Updated about 2 months ago
* * *
Ask AI
---
# Publish a Journey
Overview
[](https://docs.clevertap.com/docs/taking-a-journey-live#overview)
===============================================================================
After building your Journey, you can save it as a draft for further editing or publish it to make it live. This document offers a step-by-step guide to managing CleverTap Journeys, detailing the processes of saving drafts, publishing Journeys, and activating them effectively.
Once a Journey is published, you can still edit it to make changes. This creates a new version of the Journey without disrupting the live version. For more information, refer to [Edit a Journey](doc:edit-a-journey)
.
Save Journeys
[](https://docs.clevertap.com/docs/taking-a-journey-live#save-journeys)
=========================================================================================
Once you create and save a journey, the status of the Journey changes to the _[Draft state](doc:journey-states#draft-state)
_. You can make more changes to it at a later date or time. Any unsaved changes in this state may be lost unless explicitly saved.
To save a journey, follow these steps:
1. Click **Save Draft** from the Journey canvas. The _Save this journey as_ popup opens.
2. _Enter journey name_ and click **Save**.

Save Journeys
The other journey actions, such as _Archive_, _Stop_, and so on, are unavailable, as the journey has still not been published.
Publish Journeys
[](https://docs.clevertap.com/docs/taking-a-journey-live#publish-journeys)
===============================================================================================
After setting up the Journey, click **Publish** on the Journey canvas to activate it. The _Publish journey_ popup opens. Enter or verify the Journey name. You can also update the name here if needed. Add a description or summary for your Journey to help understand its purpose and click **Publish**. For example, _This journey aims to onboard new users by sending a welcome push notification immediately after signup_.
The description can be up to 120 characters long.

Add a Description and Publish the Journey
You can view the description from the Journey List page. Click the  icon and select _View description_ from the available actions. You can also edit the description when editing the Journey.

View Journey Description
Once you publish a journey, the journey status on the _Journey List_ page changes to _Running_ or _Scheduled_.
You can edit any part of the published Journey, including entry criteria, paths, and content, by creating a new version. This allows you to iterate without disrupting the currently running version. You can still edit the _What_ section of a message node inline without creating a new version. For more information about how editing works, refer to [Edit a Journey](doc:edit-a-journey)
.

Edit a Currently Active Journey
Journey Activation, User Qualification, and Message Delivery
[](https://docs.clevertap.com/docs/taking-a-journey-live#journey-activation-user-qualification-and-message-delivery)
=====================================================================================================================================================================================
Once the journey is activated, users qualify, and messages are sent to the users based on the [Journey Entry Timeline](doc:setup-journey#define-the-journey-entry-timelines)
they are activated as follows:
* **Activation**: Journeys activate immediately after publishing or at a scheduled start time.
* **User Qualification**: Users qualify for the Journey at midnight the day after activation. It applies to both multi-date and recurring Journeys.
* **Message Delivery**: Messages are sent to users starting from the night of publishing and continue as scheduled. It applies to both multi-date and recurring Journeys.
Updated about 2 months ago
* * *
Ask AI
---
# Delivery Preferences within Journey Nodes
Overview
[](https://docs.clevertap.com/docs/delivery-preferences-within-journey-nodes#overview)
===================================================================================================
Node frequency provides the ability to define when the messages must be delivered. If a user qualifies outside this window, the message is discarded.
For example, you have qualified users based on their time with the platform and now want to introduce a new exciting feature and remind them of it every weekday in the next week. To do so, you can set node frequency to send the selected engagement type.
To set node frequency for In-App, Web pop-up, or Exit intent nodes in journeys:
1. Select _In-app_ and click on the node to edit it.

Set Node Frequency
1. Under **Delivery**, select the **Set frequency** checkbox.
2. Select the days and enter the time period during which you do not want to send notifications. If you want to use the same time inactive period for each day, click **Apply to all**.

Select Days and Time
4. Select the frequency.

Select Frequency
5. Click **Save & Close**.
Updated about 2 months ago
* * *
Ask AI
---
# Handle Duplicate Voucher Codes
Overview
[](https://docs.clevertap.com/docs/handle-duplicate-voucher-codes#overview)
========================================================================================
To maintain data integrity and prevent redemption conflicts, CleverTap enforces strict duplicate checks when uploading voucher codes. The system validates voucher codes based on the combination of List Tag and Partner across all active voucher lists (lists that are not archived).
This document outlines the rules, scenarios, and best practices for handling duplicate voucher codes in CleverTap.
Duplicate Voucher Code Rules
[](https://docs.clevertap.com/docs/handle-duplicate-voucher-codes#duplicate-voucher-code-rules)
================================================================================================================================
CleverTap follows a structured approach to prevent duplicate voucher codes while ensuring flexibility where needed.
Duplicate Voucher Codes Blocked
[](https://docs.clevertap.com/docs/handle-duplicate-voucher-codes#duplicate-voucher-codes-blocked)
--------------------------------------------------------------------------------------------------------------------------------------
CleverTap prevents duplicate codes within the same partner and list tag to avoid unintended voucher conflicts and redemption errors.
* A voucher code cannot be uploaded again within the same voucher list (if the List Tag and Partner are the same).
* A voucher code cannot be uploaded to another list under the same Partner if the List Tag already contains that code in any active voucher list.
The following table illustrates different scenarios of voucher code duplication across lists. The **Available Codes** column represents the existing codes in active voucher lists, helping you verify duplication before uploading new codes.
| List Name | Partner | List Tag | Available Codes | Codes Uploaded | Duplication Allowed? |
| --- | --- | --- | --- | --- | --- |
| List D | Partner A | List Tag A | `Code1, Code2, Code3` | `Code1, Code2, Code3` | Not Allowed (Same Partner and List Tag) |
Duplicate Voucher Codes Allowed
[](https://docs.clevertap.com/docs/handle-duplicate-voucher-codes#duplicate-voucher-codes-allowed)
--------------------------------------------------------------------------------------------------------------------------------------
In certain cases, CleverTap permits duplicate codes to enable cross-partner distribution and list reusability. This ensures businesses can manage vouchers effectively without unnecessary upload restrictions.
* A voucher code can be uploaded under the same List Tag but with a different Partner, as each partner operates independently.
* Once a voucher list is archived, its codes are no longer checked for duplication, allowing the same codes to be uploaded again.
The following table illustrates different scenarios of voucher code duplication across lists. The **Available Codes** column represents the existing codes in active voucher lists, helping you verify duplication before uploading new codes.
| List Name | Partner | List Tag | Available Codes | Codes Uploaded | Duplication Allowed? |
| --- | --- | --- | --- | --- | --- |
| List A | Partner A | List Tag A | \- | `Code1, Code2, Code3` | Allowed (First-time upload) |
| List B | Partner A | List Tag B | `Code1, Code4, Code5` | `Code1, Code4, Code5` | Allowed (Different List Tag under the same Partner) |
| List C | Partner B | List Tag A | `Code1, Code2, Code3` | `Code1, Code2, Code3` | Allowed (Different Partner, different redemptions) |
| List E | Partner A | List Tag A (Archived) | `Code1, Code2, Code3` | `Code1, Code2, Code3` | Allowed because List A is archived |
Manage Duplicate Voucher Codes Across Partners
[](https://docs.clevertap.com/docs/handle-duplicate-voucher-codes#manage-duplicate-voucher-codes-across-partners)
====================================================================================================================================================================
Consider a scenario where Customer X runs a New Year sale campaign and collaborates with multiple partners to distribute discount vouchers. Each partner, such as Partner A and Partner B, operates independently, managing their own set of voucher codes.
As each partner controls their own redemption platform, CleverTap enforces duplication checks within the same partner but allows the same code across different partners.
| Scenario | Action | Allowed? | Reason |
| --- | --- | --- | --- |
| Uploading `Code 1` under different partners | * Code1 is uploaded under Partner A (similar to List A).
* Code1 is uploaded under Partner B (similar to List C). | Yes | Different partners operate independently, preventing redemption conflicts. |
| Uploading `Code 1` again under the same partner | * Code1 was already uploaded under Partner A (similar to List A).
* Customer X attempts to upload Code1 again under Partner A in another active list (similar to List D). | No | Partner A already has an active list with `Code 1`. CleverTap prevents duplicates within the same partner across active lists. |
| Re-uploading `Code 1` after archiving the original list | * `Code 1` was in List A (archived).
* Customer X attempts to re-upload `Code 1` under a new list (similar to List E). | Yes | Once a list is archived, its codes are no longer checked for duplication, allowing re-upload. |
Updated about 2 months ago
* * *
Ask AI
---
# Use Partner Vouchers in Campaigns
Engage with Voucher Assigned Users
[](https://docs.clevertap.com/docs/use-partner-vouchers-in-campaigns#engage-with-voucher-assigned-users)
===============================================================================================================================================
CleverTap allows you to target users who have received a voucher by creating a campaign based on the _CT Partner Voucher Rewarded_ event. This event helps personalize communication and drive users toward completing a desired action, such as making a purchase or redeeming an offer.
For example, suppose you are a food delivery app that wants to increase redemption rates on the app. Let's say you want to remind users who received a discount voucher but have not redeemed it yet. You can set up a campaign as follows:
1. Go to _Campaigns_ from the CleverTap dashboard.
2. Click **\+ Campaign** and select a messaging channel from the _Messaging Channels_ dropdown.
3. Click **Add an event** from the _Who_ section.
4. Select the _CT Partner Voucher Rewarded_ event and the required _Event Property_.

Target Users with a Campaign/Journey
For more information about creating a campaign, refer to the _Create Message_ document of the respective messaging channel.
CT Partner Voucher Rewarded
[](https://docs.clevertap.com/docs/use-partner-vouchers-in-campaigns#ct-partner-voucher-rewarded)
=================================================================================================================================
After a voucher is assigned to a user, CleverTap triggers the _CT Partner Voucher Rewarded_ event. This event enables you to engage users by creating targeted campaigns based on voucher-related actions.
The event includes the following System and Custom event properties, which help you track and personalize user engagement strategies:
System Event Property
[](https://docs.clevertap.com/docs/use-partner-vouchers-in-campaigns#system-event-property)
---------------------------------------------------------------------------------------------------------------------
| Property | Description | Example Value |
| --- | --- | --- |
| `CT Source` | Identifies the source system or module that triggered the event. | `Promo Module` |
Custom Event Properties
[](https://docs.clevertap.com/docs/use-partner-vouchers-in-campaigns#custom-event-properties)
-------------------------------------------------------------------------------------------------------------------------
| Property | Description |
| --- | --- |
| `campaignId` | The unique identifier of the campaign through which the voucher was distributed. For example, CMP123456. |
| `eventTimestamp` | The exact time when the voucher was assigned to the user. For example, 1708351200. |
| `listDescription` | A brief description of the voucher list, typically outlining its purpose or restrictions. For example, _Winter Sale 2024 - ₹500 off on orders above ₹2000_ |
| `listExpiry` | The expiration date of the voucher list, after which no more vouchers from this list can be assigned. For example, `2024-03-31T23:59:59Z` |
| `listTag` | A short, unique identifier for the voucher list, used to categorize vouchers within CleverTap. For example, `winter_sale_500`. |
| `partner` | The name of the voucher provider. For example, `Puma` |
| `source` | The origin of the voucher assignment. For example, Campaign or API. |
| `voucherCode` | The unique code assigned to the user for redemption. For example, `PM500FF` |
| `voucherListId` | The unique identifier of the voucher list to which the assigned voucher belongs. For example, `1837` |
These properties can be leveraged in Liquid Tags to personalize messages, enabling dynamic content in your engagement campaigns.
Updated about 2 months ago
* * *
Ask AI
---
# Define Journey Path
Overview
[](https://docs.clevertap.com/docs/construct-a-journey#overview)
=============================================================================
You can connect the Segment, Engagement, and Controller blocks from the Journey canvas to define how your users must move through the Journey.
Create a Journey
[](https://docs.clevertap.com/docs/construct-a-journey#create-a-journey)
=============================================================================================
The first step is to define your target users. Drag the _Segment_ block from the palette to the canvas.

Segment Node for Journey
Click the Segment node to define the qualifying criteria for your users. Define your qualifying criteria and click **Continue**.
View the details and **Save & Close**.

Select Target Segment
Next, decide the type of engagement to send to the qualified users.

Select Engagement Type

Select the Message Type
Add more nodes to plan for scenarios where the user does or does not respond. For example, you want to send an additional nudge if the user does not buy a product or a thank you note if the user does purchase the product. You can decide the level of details for your Journey.
> 🚧
>
> ###
>
> Note
>
> [](https://docs.clevertap.com/docs/construct-a-journey#note)
>
> You can apply campaign limits in a Journey. However, global throttling is not supported in Journeys.
Connections
[](https://docs.clevertap.com/docs/construct-a-journey#connections)
===================================================================================
Drag and drop blocks from the palette to the canvas to create connections.
Connect Segment & Engage Blocks
[](https://docs.clevertap.com/docs/construct-a-journey#connect-segment--engage-blocks)
--------------------------------------------------------------------------------------------------------------------------
Once you have defined a segment of users, you can choose to communicate with the segment by dragging and dropping a channel of communication from the palette on the right-hand side. This communication could go to users who match the segment criteria specified by you, or to the rest of the users i.e. the users who don’t match your segment criteria.
> 📘
>
> ###
>
> Tip on Duplicating Segments
>
> [](https://docs.clevertap.com/docs/construct-a-journey#tip-on-duplicating-segments)
>
> To duplicate a specific segment, use the copy/paste function by hovering over a segment, then perform the following:
>
> * MacOS: Alt + mouse click
> * Windows: Ctrl + mouse click

Connect Segment and Engage Blocks
Connect Engage & Segment Blocks
[](https://docs.clevertap.com/docs/construct-a-journey#connect-engage--segment-blocks)
--------------------------------------------------------------------------------------------------------------------------
After a user receives a message, you can add a segment after that to ensure that only users who meet the criteria specified by you are taken further in the Journey.
Example: After users receive a push notification, wait for 1 day, check if users have transacted, for the people that have transacted, send them down path A, and for those who haven’t send them down path B.

Connect Engage and Segment Blocks
Connect Engage & Engage Blocks
[](https://docs.clevertap.com/docs/construct-a-journey#connect-engage--engage-blocks)
------------------------------------------------------------------------------------------------------------------------
After a user receives a message, you can follow it up immediately, or with a delay with another message on a channel of communication of your choosing.
Example: After a user receives a push notification, you can wait for 3 days, and send another push notification.

Connect Engage with Engage Blocks
Connect Segment & Segment Blocks
[](https://docs.clevertap.com/docs/construct-a-journey#connect-segment--segment-blocks)
----------------------------------------------------------------------------------------------------------------------------
After a user has been segmented, you can follow it up with another segment to further refine your Journey.
Example: If someone has not transacted in the last 30 days, send users who qualify for this segment down path A, and if one of these users adds an item to their cart, and doesn’t buy within 15 mins, send them down a specific path.

Connect Segment and Segment Blocks
User Flow in Journeys
[](https://docs.clevertap.com/docs/construct-a-journey#user-flow-in-journeys)
=======================================================================================================
Your users perform one action in a Journey and then move on to the next action. However, there may be instances when they do not move forward in the Journey if not handled correctly.
We will walk through various combinations to ensure all users' participation in journeys.
Users Waiting at Segment Node
[](https://docs.clevertap.com/docs/construct-a-journey#users-waiting-at-segment-node)
-----------------------------------------------------------------------------------------------------------------------
In scenarios where the next node in a Journey is a Segment Node, the Users will wait till they qualify for the node or exit via Journey Timeouts or Goals.
For instance, you have shown the Users a Welcome message In-app and are now waiting for them to qualify for the next Segment Node, _Redeem Offer_. In this case, you’d want to set a time limit based on which the users should move down a different path if they don’t qualify for the Segment. This will allow you to nudge the Users to Redeem their offer in this example, and then they can join the main journey again.

Users Waiting at Segment Node
###
Set the Qualifying Window
[](https://docs.clevertap.com/docs/construct-a-journey#set-the-qualifying-window)
Click the **hexagon** on the _Segment_ node to set the qualifying window for the users.
> 🚧
>
> The qualifying window must be set up in combination with the drawing of the Node Timeout connector. The users will not move if the _Node Timeout_ is not connected to another node.

Set Qualifying Window
###
Connect to Another Node
[](https://docs.clevertap.com/docs/construct-a-journey#connect-to-another-node)
Connect the _Node Timeout_ connector to another node. After the qualifying window is complete, the user automatically moves to the next node through this timeout connector.

Node Timeout Connector
> 📘
>
> ###
>
> Note
>
> [](https://docs.clevertap.com/docs/construct-a-journey#note-1)
>
> The yellow indicator on your segment node is a reminder that you may need to plan for _Waiting_ _users_ on this node in the Journey.
Users Waiting at Engage Node
[](https://docs.clevertap.com/docs/construct-a-journey#users-waiting-at-engage-node)
---------------------------------------------------------------------------------------------------------------------
There may be another instance where the users have received a message but they may still wait for action. If the users do not click the message, then they are waiting for the next action. It means that when you created the Journey, the node following the Engage node is connected with a _Viewed_ or _Clicked_ connector. When you draw a _Viewed_ or _Clicked_ connector, a _Phantom_ node with a node timeout will appear automatically. You can set the qualifying window from this _Phantom_ node to move the users further.

Users Waiting at Engage Node
Using User Profile Update Node
[](https://docs.clevertap.com/docs/construct-a-journey#using-user-profile-update-node)
=========================================================================================================================
The **User profile update** node is a controller node that allows you to update user properties in a Journey. It updates the user profile details based on the events triggered in the preceding segment or engagement node. Consider an action segment node followed by a user profile update node. For example, when a user subscribes to an OTT channel, the _Channel Subscribed_ event is triggered. The user profile update node tracks this event and updates the latest property values, such as subscription plan name, price, validity, billing interval, etc.

User Profile Update Node
You can add conditional logic to your live behaviour Journeys using Liquid Tags, which can reference events from the previous segment. This enables you to retrieve event properties and use them to update user profile details.
User Profile Update Node Video Tutorial
[](https://docs.clevertap.com/docs/construct-a-journey#user-profile-update-node-video-tutorial)
-------------------------------------------------------------------------------------------------------------------------------------------
Discover the video tutorial for the User Profile Update node in Journeys.
To define the user profile update node:
1. Drag and drop the **User profile update** node and connect it to the desired segment node.
2. Click the **User profile update** node. The **Controller - User profile update** window appears.
3. Enter the controller name.
4. Under **Setup**, click **\+ User Property** and define the user property values. The following UI elements appear. For more information, refer to the [Define User Property](https://docs.clevertap.com/docs/construct-a-journey#define-user-property-values)
section.

5. Click **Continue** and **Save & Close**.
Define User Property Values
[](https://docs.clevertap.com/docs/construct-a-journey#define-user-property-values)
-------------------------------------------------------------------------------------------------------------------
This section describes how to define user property values.
| UI Elements | Description |
| --- | --- |
| **User Property** | From the drop-down list, you may choose the following two categories of user properties to update:
* **System Properties**: System user properties are predefined attributes often essential for user identification, segmentation, and tracking. You can set boolean values or custom values. For example, _MSG-whatsapp_ set to _True_ indicates that the user has subscribed to WhatsApp notifications.
* **Custom Properties**: Custom user properties allow you to capture additional data about a user that is not captured by system properties. For example, subscription plan, language preference, location, interests, and so on. |
| **Operator** | From the drop-down list, you may choose one of the following operators to set values to the user properties:
* **Set to**: Sets a new value to the current user property value. By default, combines comma-separated values into a single value.
* **Increase by**: Adds a specified value to an existing value.
* **Decrease by**: Subtracts a specified value from an existing value.
* **Add to array**: Appends the new value to the existing array.
* **Remove from array**: Removes the values from the array. |
| **Text Box** | Depending on the type of user property and operator you choose, you can enter the values in the following formats:
* Set a boolean value. For example, _True_ or _False_. It is not case-sensitive.
* Set an array of comma-separated values. For example, the Location is set to London, Amsterdam, New York.
* Set liquid tag conditions. The maximum character limit for the Liquid Tag condition is 512. For more information, refer to [Updating User Profile Details using Liquid Tags](https://docs.clevertap.com/docs/construct-a-journey#updating-user-properties-using-liquid-tags)
. |
| **Apply as a single value** | This is enabled for **Add to array** and **Remove from array** operators:
* When you check the box, it combines the comma-separated values into one single value. For example, "London, UK" is considered a single value.
* When you uncheck the box, it separates the values using commas. For example, "London", "UK" are considered separate values. |
Updating User Properties using Liquid Tags
[](https://docs.clevertap.com/docs/construct-a-journey#updating-user-properties-using-liquid-tags)
-------------------------------------------------------------------------------------------------------------------------------------------------
This section explains how to update user properties using the user profile update node and liquid tags.
###
Use Case 1: Update User's Preferred Movie According to User Ratings
[](https://docs.clevertap.com/docs/construct-a-journey#use-case-1-update-users-preferred-movie-according-to-user-ratings)
This use case lets you update a user's preferred or favorite movie based on the ratings the user provided for a movie. You can reference the _Movie Rated_ event property in the conditional logic to update the _Favorite Movie_ user property. The following is a sample conditional logic:

###
Use Case 2: Total Customer Revenue Based on Yearly Flights Booked per User
[](https://docs.clevertap.com/docs/construct-a-journey#use-case-2-total-customer-revenue-based-on-yearly-flights-booked-per-user)
In this use case, you can keep track of a customer's total revenue for the year by adding up all their flight booking amount. For example, if a user booked flights worth $1000 by September 14th and then booked another flight for $500 on September 15th, an event is triggered with this new booking information. You can reference the _Booking Amount_ event property in the liquid logic and add it to the _Total Revenue_ user property, resulting in a total revenue of $1500 for the year.

###
Use Case 3: Score a Customer Using Triggered Segment Journey
[](https://docs.clevertap.com/docs/construct-a-journey#use-case-3-score-a-customer-using-triggered-segment-journey)
This use case lets you identify certain user behaviors, assign the users a score based on their activity, and segment them later for targeted marketing campaigns. For instance, when users update their profile, such as adding a picture or status on social media, their engagement score goes up by 1. The following is a sample logical condition:

###
Use Case 4: Calculate the Total Purchase Value for a User when a Charged Event is Recorded
[](https://docs.clevertap.com/docs/construct-a-journey#use-case-4-calculate-the-total-purchase-value-for-a-user-when-a-charged-event-is-recorded)
This use case tracks a user's total purchase value by adding up the amounts of their purchases recorded through a _Charged_ event and updates it when a product is returned. For instance, if a customer buys groceries costing $50, $100, $30, and $75, the total value of their groceries purchased is $255. The following is a sample logical condition:

> 📘
>
> ###
>
> Points to Remember
>
> [](https://docs.clevertap.com/docs/construct-a-journey#points-to-remember)
>
> * Only event properties can be used in liquid tags for user profile update node.
> * You can update a specific user property only once.
> * Irrespective of whether the update fails or succeeds, user moves ahead via the **Updated** path.
> * If the user property for the user does not exist in the profile, then the property is created for that user profile.
Updated about 2 months ago
* * *
Ask AI
---
# Create Custom Rewards
Overview
[](https://docs.clevertap.com/docs/create-custom-rewards#overview)
===============================================================================
Before using Custom Rewards in Promo campaigns, you must first create the reward configurations that will be triggered via webhooks.
You can create the following two types of Custom Rewards:
* [Create Physical & Digital Reward](doc:create-custom-rewards#create-physical--digital-rewards)
* [Create Self-managed Wallet Credits](doc:create-custom-rewards#create-self-managed-wallet-credits)
Create Physical & Digital Rewards
[](https://docs.clevertap.com/docs/create-custom-rewards#create-physical--digital-rewards)
================================================================================================================================
Physical & Digital Rewards manage external digital or physical rewards such as vouchers, gift cards, or merchandise.
To create a Physical & Digital Reward, perform the following steps:
1. Go to _Promo > Rewards > Webhook Rewards > Physical & Digital Reward_.
2. Click **Add reward configuration**.
3. In the creation modal, fill in the following details:
* **Client Reward ID**: A unique identifier from your system. This value is case-sensitive and must not duplicate an existing reward.
* **Client Reward Name**: The name of the reward.
* **Client Reward Description**: Optional details about the reward.
* **Reward Expiry**: Choose **Never Ends** or a specific date.
4. Click **Save**.

Add Reward Configuration
Create Self-managed Wallet Credits
[](https://docs.clevertap.com/docs/create-custom-rewards#create-self-managed-wallet-credits)
===================================================================================================================================
Self-managed Wallet Credits represent real money or point-based rewards managed in an external wallet.
To create a Webhook Wallet, perform the following steps:
1. Go to _Promo > Rewards_ > _Webhook Rewards_ > _Self-managed Wallet Credits_.
2. Click **Add Wallet Configuration**.
3. In the creation modal, fill in the following details:
* **Wallet ID**: A unique external wallet ID from your system. This value is case-sensitive and must not duplicate an existing reward.
* **Wallet Name**: The display name of the wallet.
4. Click **Save**.

Add Wallet Configuration
JSON Payloads
[](https://docs.clevertap.com/docs/create-custom-rewards#json-payloads)
=========================================================================================
The following is an example payload for both types of custom rewards:
Physical & digital rewardsSelf-managed wallet credits
{
"profiles": {
"email": "[email protected]",
"identity": "foo",
"phone": "+919538784114",
"objectId": "g55b74fb10307"
},
"reward": {
"clientRewardId": "110303",
"clevertapRewardId": "20303",
"rewardName": "PVR MOVIE TICKET",
"rewardDescription": "Free PVR Movie ticket",
"campaignId": 123494
},
"customMetadata": {
"metadata key1": "value1",
"metadata key2": "value2"
}
}
{
"profiles": {
"email": "[email protected]",
"identity": "foo",
"phone": "+919538784114",
"objectId": "g55b74fb10307"
},
"reward": {
"clientRewardId": "110303",
"clevertapRewardId": "20303",
"rewardName": "PVR MOVIE TICKET",
"rewardDescription": "Free PVR Movie ticket",
"campaignId": 123494
},
"customMetadata": {
"metadata key1": "value1",
"metadata key2": "value2"
}
}
Updated about 2 months ago
* * *
Ask AI
---
# View Custom Rewards
Overview
[](https://docs.clevertap.com/docs/view-custom-rewards#overview)
=============================================================================
The _Custom Rewards_ section in the **Rewards** option allows you to manage and monitor both _Physical & Digital Rewards_ and _Self-Managed Wallets_.
Physical & Digital Rewards Tab
[](https://docs.clevertap.com/docs/view-custom-rewards#physical--digital-rewards-tab)
========================================================================================================================
The **Physical & Digital Rewards** tab helps you create and manage external digital or physical rewards such as gift cards, vouchers, or merchandise (for example, iPhones, cameras).
Clicking on this tab displays a list of all configured Physical & Digital Rewards. Each reward entry includes the following information:
* CT Reward ID
* Client Reward ID
* Reward Name
* Reward Description
* Promo Campaigns Linked
* Created By / Created Date
* Status (Active, Paused, Archived, Expired, Ended)

Physical & Digital Rewards Tab
Manage Physical & Digital Rewards
[](https://docs.clevertap.com/docs/view-custom-rewards#manage-physical--digital-rewards)
------------------------------------------------------------------------------------------------------------------------------
You can perform the following operations directly from the list view:
| Action | Availability | Description |
| --- | --- | --- |
| **Activate** | When status = _Paused_ | Resumes the reward for distribution in campaigns. |
| **Pause** | When status = _Active_ | Temporarily halts the reward from being distributed. |
| **End** | When status = _Active_ or _Paused_ | Stops the reward and marks it as ended. |
| **Archive** | When status = _Paused_, _Ended_, or _Expired_ | Moves the reward to the archived state; it cannot be reused in active campaigns. |
| **View JSON** | When status = _Active_ or _Paused_ | View reward details, including ctRewardID, rewardName, description, and creation metadata. |
Self-Managed Wallets Tab
[](https://docs.clevertap.com/docs/view-custom-rewards#self-managed-wallets-tab)
=============================================================================================================
The **Self-Managed Wallets** tab enables you to configure and manage wallet-based reward configurations. These wallets represent external reward systems, such as cashback or loyalty wallet credits hosted on your end.
Clicking on this tab displays wallet configurations in a card view format. Each card contains the following:
* Webhook Wallet ID
* CT Reward ID
* Wallet Name
* Created By
* Created On

Manage Self-Managed Wallets
[](https://docs.clevertap.com/docs/view-custom-rewards#manage-self-managed-wallets)
-------------------------------------------------------------------------------------------------------------------
You can perform the following operations to manage wallets directly from the tab:
| Action | Description | Description |
| --- | --- | --- |
| **Activate** | When status = _Paused_ | Resumes the wallet for credits distribution. |
| **Pause** | When status = _Active_ | Temporarily halts the wallet from credit distribution. |
| **End** | When status = _Active_ or _Paused_ | Stops the wallet and marks it as ended. |
| **Archive** | Deactivate the wallet if no longer needed. | Moves the wallet to the archived state; it cannot be reused in active campaigns. |
| **View JSON** | When status = _Active_ or _Paused_ | View wallet details, including ctRewardID, walletID, and walletName. |
> 📘
>
> ###
>
> Notes
>
> [](https://docs.clevertap.com/docs/view-custom-rewards#notes)
>
> To ensure smooth management and consistent behavior across all reward types, keep the following points in mind:
>
> * Rewards and wallets can be linked to multiple Promo campaigns.
> * Each reward and wallet credit is assigned a unique CleverTap Reward ID upon creation.
> * Rewards cannot be paused, ended, or archived while actively mapped to an ongoing campaign.
> * Inline validation ensures field accuracy and prevents duplication of reward or wallet IDs.
Updated about 2 months ago
* * *
Ask AI
---
# Product A/B Tests
Introduction
[](https://docs.clevertap.com/docs/product-ab-tests#introduction)
==================================================================================
A/B tests help compare users who get the regular app experience (Control Group) with one or more groups who get different experiences (groups A, B, C, etc.). It helps identify the more effective changes for your app.
A/B testing enables you to experiment with new features or changes in a select user group. This approach minimizes the risk of receiving adverse feedback from your entire user base in case of a mishap. You can monitor how well your experiments perform within a small set of users and then make improvements before releasing the modifications to everyone.
For example, you can test your app for a better Click-Through Rate (CTR). You can experiment by trying out different variants of CTA. Here, the button in one app variant reads as "Buy Now," and the same in another variant reads as "Hurry!".
You can run this test for a few weeks and identify the CTA that delivers a higher CTR. You can roll out these changes partially (say, 10 percent of the segment). If the results are satisfactory, you can declare the variant generating the highest CTR as a winner variant. You can then roll out the feature to all the users.
A/B Tests Dashboard
[](https://docs.clevertap.com/docs/product-ab-tests#ab-tests-dashboard)
===============================================================================================
The A/B Tests dashboard displays all your ongoing and previous A/B tests. It shows you whether the test is active or inactive and provides details such as its _Name_, _Status_, and _Created Time_, along with the names of the creators and the last person who edited the test.
You can locate your A/B tests by their Name or ID.

A/B Test Dashboard
Updated about 2 months ago
* * *
Ask AI
---
# A/B Test: Best Practices
Introduction
[](https://docs.clevertap.com/docs/ab-test-best-practices#introduction)
========================================================================================
This document provides key strategies and recommendations to optimize your A/B testing processes, ensuring accurate results and meaningful insights. This helps elevate your A/B testing efforts.
Best Practices
[](https://docs.clevertap.com/docs/ab-test-best-practices#best-practices)
============================================================================================
The following are the best practices to follow when planning for an A/B test:
###
Question, Hypothesize, then Test
[](https://docs.clevertap.com/docs/ab-test-best-practices#question-hypothesize-then-test)
Follow a structured approach in your A/B testing process. Begin by posing a question, then formulate a hypothesis, and proceed to conduct the test. In other words, start by defining your goal and understanding what you aim to achieve. Next, develop a hypothesis outlining your expected outcome. Finally, put your hypothesis to the test and assess its effectiveness.
For example, if your objective is to boost purchase rates, your hypothesis might suggest that a more prominent "purchase" button could increase sales. Experiment with different button colors or placements to determine which variation maximizes user lifetime value (LTV).
###
One Test at a Time
[](https://docs.clevertap.com/docs/ab-test-best-practices#one-test-at-a-time)
Prioritize testing one variable at a time, whether within a single test or across multiple experiments. This method ensures more accurate results, allowing you to gauge the impact of each alteration while keeping other factors constant.
Testing multiple changes simultaneously can complicate result interpretation. For instance, if you simultaneously modify the wording, color, and subject of an email, your subscriptions drop by 30% as a result. The challenge arises – **Which specific element or elements caused this significant drop?** Was it a combination of all changes or perhaps just one particular alteration?
To eliminate this ambiguity, conducting tests with isolated changes provides more reliable data, facilitating precise conclusions. Moreover, having a consistent user experience is essential for retaining users, so avoid subjecting them to too many changes at once. Be diligent with how many changes you expose users to. This helps build trust between your brand and your users.
###
Set it and Forget it
[](https://docs.clevertap.com/docs/ab-test-best-practices#set-it-and-forget-it)
Let your A/B test run for as long as necessary until you achieve statistical significance. This means waiting until you have enough data to determine the true impact of each variant confidently. Having reliable data ensures you can make marketing decisions based on the winning variant with 95% confidence that the trends will continue even after the test ends. Keep an eye on external factors that may affect the results, and if needed, repeat the test in different months to ensure consistency.
###
Do Not Make Changes Mid-Test
[](https://docs.clevertap.com/docs/ab-test-best-practices#do-not-make-changes-mid-test)
Once an A/B test is initiated, refrain from altering the test parameters. Modifying parameters mid-test can distort results, complicating the identification of how a variant influenced the metrics. Adhere to the original test setup and, if required, create a follow-up test after the current one concludes to assess any additional changes.
Updated about 2 months ago
* * *
Ask AI
---
# Troubleshooting & FAQs
FAQ
[](https://docs.clevertap.com/docs/troubleshooting-faqs-1#faq)
======================================================================
Find answers to the following common questions about Custom Rewards:
###
Q. Can I reuse a Client Reward ID once archived?
[](https://docs.clevertap.com/docs/troubleshooting-faqs-1#q-can-i-reuse-a-client-reward-id-once-archived)
Yes, IDs can be reused once the reward is archived or ended. Active rewards must have unique IDs.
###
Q. Can I personalize reward points in the payload?
[](https://docs.clevertap.com/docs/troubleshooting-faqs-1#q-can-i-personalize-reward-points-in-the-payload)
Yes. The payload includes a key called `credits` that carries the points or cashback value rewarded to the user.
###
Q. What happens if the client webhook endpoint is unavailable?
[](https://docs.clevertap.com/docs/troubleshooting-faqs-1#q-what-happens-if-the-client-webhook-endpoint-is-unavailable)
CleverTap retries twice with a 3-second wait before marking as failed.
###
Q. How are rewards tracked in system events?
[](https://docs.clevertap.com/docs/troubleshooting-faqs-1#q-how-are-rewards-tracked-in-system-events)
All Custom Rewards trigger a single system event named _Webhook Rewarded_. The event includes a property indicating the reward type (Physical & Digital Reward or Self-managed Wallet Credits).
###
Can I specify the reward quantity (for example, two movie tickets)?
[](https://docs.clevertap.com/docs/troubleshooting-faqs-1#can-i-specify-the-reward-quantity-for-example-two-movie-tickets)
Yes. Use the _Additional Parameters_ section when configuring the promo campaign. You can add a key-value pair such as `"quantity": "2"` in the setup to indicate multiple rewards (for example, two vouchers or two movie tickets).
Updated about 2 months ago
* * *
Ask AI
---
# A/B Test Results
A/B Test Results
[](https://docs.clevertap.com/docs/ab-test-results#ab-test-results)
========================================================================================
The A/B Test Results feature provides valuable insights from your experiments, aiding data-driven decision-making. It offers comprehensive analysis, intuitive visualization, statistical significance assessment, and variant distributed reporting. This helps users uncover insights leading to product enhancement, improved user engagement, and overall success of the A/B test.
It utilizes advanced filtration methods to ensure accurate data assessment. It includes only data captured during the user's participation in the test, excluding any data from instances where the user enters and leaves the AB test multiple times (unless the test is marked as '[Sticky](doc:create-ab-tests#sticky-target)
'). This ensures that all the available metric data available on the Results page is clean and based on user behavior.
You can view the A/B Test Results for a particular period by selecting the time range from the Calendar widget in the top right corner. This helps segment and analyze data based on when events or observations occurred for the defined timeframe. You can view results for a short interval, such as a day, a week, or a month, or a longer span, such as a year or multiple years. You define the timeframe to analyze your A/B Test as follows:
 Define the Time Frame using the Calendar Widget
You can further categorize your data based on platform attributes such as Operating system) and User Properties using the _Group by_ option (refer to the following image):
 Group by OS Name
This helps in getting a granular view of users, allowing you to make data-driven decisions across distinct operating systems or users with different properties.
Also, hovering over the Users icon adjacent to the _Results_ tab offers a high-level breakdown of actual users entering the A/B test across different Variants and the Control group (see the following image).
 Total users entering across the variants
Now, the available metrics in the A/B test can be categorized into Common and Goal metrics.
Common Metrics
[](https://docs.clevertap.com/docs/ab-test-results#common-metrics)
-------------------------------------------------------------------------------------
Common metrics are accessible for every A/B test, regardless of whether you have chosen specific Event-based Goals. The common metrics include:
* **Unique Users**: This refers to the count of individual users who have interacted with a website, application, or service during a specific period. Each user is counted only once, regardless of how often they visit or use the platform within that timeframe.
* **Returning Users**: This refers to the individuals who have visited or interacted with a website, application, or service more than once during a specific period. They are distinguished from Unique Users who have engaged with the platform on multiple occasions.
* **First-time Users**: This refers to the individuals who visit or interact with a website, application, or service for the first time during a specific period. These users are new to the platform and have not engaged with it before within the defined timeframe.
* **Sessions**: This refers to the individual visits or interactions a user has with a website, application, or service during a particular timeframe. A session starts when a user accesses the app and ends after a period of inactivity or when the user leaves the app.
Tracking sessions are a great way to measure engagement for certain apps, such as video or music streaming, news, etc. You must enable session tracking from the CleverTap dashboard to track user sessions. To enable session tracking, navigate to _Settings_ > _Session analytics_ and toggle ON the [session tracking](doc:session-analytics#session-dashboard)
.
 Common Metrics View
Listed below are some key session metrics, along with their formulas and definitions:
| Metric | Formula | Definition |
| --- | --- | --- |
| Returning Users | 100 x \[(Total Unique Users) - (Total First-time users)\] / (Total Unique Users) | The percentage of users returning to your application or website. |
| Total Sessions | Total occurrences of **"Session Concluded"** event | The total number of user sessions. |
| Total Session Length | Sum of values for the event property _length_ of the _Session Concluded_ event | Calculated using the event property _length_ of the _Session Concluded_ event. The total length of all sessions. |
| Average Session Length | (Total Session Length) / (Total Sessions ) | The average length of a session. |
| Average Session Length per User | (Total Session Length) / (Total Unique Users ) | The average length of a user session in your application/website. |
| Average Sessions per User | (Total Session ) / (Total Unique Users ) | The average number of sessions for a user. |
Goal metrics
[](https://docs.clevertap.com/docs/ab-test-results#goal-metrics)
---------------------------------------------------------------------------------
Goal metrics are specific to the event and properties selected in the A/B test Goals. You can find these from the _Metrics_ dropdown on the left.
 Goal Metrics
Listed below are some key goal metrics, along with their formulas and definitions:
| Metric | Formula | Definition |
| --- | --- | --- |
| Total occurrences | Total occurrences of | The total number of times the goal event was triggered. |
| Unique profile who triggered | Number of Users who triggered | Total number of users who triggered the goal event. |
| Percent of Users who triggered | Percent of users who triggered the =
100 x \[(Users Who Triggered X Event) / (Total Users)\] | The percentage of users in your app that triggered the goal event. |
| Average occurrences of per Unique User | (Total occurrences of / Total Unique Users) | The average number of times a user triggers this event. |
| Average occurrences of per Session | (Total occurrences of / Total Sessions) | The average number of times the goal event is triggered in a session. |
| Total sum of values | (Total sum of values) | Total sum of all aggregate event property values associated with the goal event. |
| Average of values | (Total sum of values / Total Event occurrences) | The average value of each occurrence of this event. |
| Average of values per unique user | (Total sum of values / Unique Users) | The average of values of the goal event per user. |
After you select the event metric of your choice from the dropdown, you can view its data in graphical and tabular format. Let us consider a sample test where an e-commerce business wants to analyze the sales. In this case, you add an event **Charged** as a Goal with aggregate property `value`. The following image shows the set of available metrics for the **Charged** event:

Graphical Data View of Charged Event

Tabular data view for the Charged Event
All Time Performance
[](https://docs.clevertap.com/docs/ab-test-results#all-time-performance)
-------------------------------------------------------------------------------------------------
For a limited set of metrics (_Percent of users who triggered_ the ), you can see the _All Time Performance_ section.
This feature calculates data throughout the entire duration of the A/B Test, irrespective of the time frame selected at the top of the page. Based on all the data, each variant is analyzed to identify if it is statistically significant, and an **indicator** is displayed next to the variants that helps:
* Validate the reliability of the results.
* Assess whether any observed differences between the control and variant groups are not merely attributable to random chance.
* Provides you confidence in the decision-making process.
> 📘
>
> ###
>
> Note
>
> [](https://docs.clevertap.com/docs/ab-test-results#note)
>
> CleverTap uses a two-tailed Welch's t-test with a default setting of 95% confidence interval to identify the statistically significant variant.

All Time Performance Section for a Limited Set of Metrics
Updated about 2 months ago
* * *
Ask AI
---
# Import
Overview
[](https://docs.clevertap.com/docs/import#overview)
================================================================
This section explains how to import data into CleverTap from external sources. Depending on your requirements, you can upload data in bulk, automate ingestion from backend systems, or import historical records to ensure continuity in reporting and engagement.
[API](https://docs.clevertap.com/docs/imports-via-api)
[CSV Upload](https://docs.clevertap.com/docs/csv-upload)
[SFTP](https://docs.clevertap.com/docs/imports-via-sftp)
[Data Warehouse](https://docs.clevertap.com/docs/data-warehouse-import)
Updated 8 days ago
* * *
Ask AI
---
# CSV Upload
With the CSV upload feature, you can create new [user profiles](doc:user-profiles)
in CleverTap in bulk by uploading a CSV file with a list of user profiles. You can also use this feature to add or update information for existing user profiles.
> 📘
>
> ###
>
> CSV Upload Permissions
>
> [](https://docs.clevertap.com/docs/csv-upload#csv-upload-permissions)
>
> Anyone with the [required permissions](doc:role-based-access-control)
> to upload the CSV file can use this feature.
CSV Upload Video Tutorial
[](https://docs.clevertap.com/docs/csv-upload#csv-upload-video-tutorial)
======================================================================================================
The following is a video tutorial that highlights the recent CSV Upload enhancements:
Upload User Profiles using a CSV File
[](https://docs.clevertap.com/docs/csv-upload#upload-user-profiles-using-a-csv-file)
==============================================================================================================================
To upload user profiles to the CleverTap dashboard using a CSV file:
1. [Upload user profiles](doc:csv-upload#upload-user-profiles)
.
2. [Map uploaded user profiles](doc:csv-upload#map-uploaded-user-profiles)
.
Upload User Profiles
[](https://docs.clevertap.com/docs/csv-upload#upload-user-profiles)
--------------------------------------------------------------------------------------------
To upload user profiles:
1. Log in to your CleverTap account and click _Settings_ > _Engage_ > _CSV Uploads_.
 CSV Uploads Page
2. Click **\+ Upload**. The **Upload** page appears.
 Upload User Profiles
3. Under **Upload user profiles**, drag and drop or browse the CSV file. For more information on the CSV file format, refer to [CSV File Format](doc:csv-upload#csv-file-format)
.
A preview of the uploaded user profiles appears on the right side.
 View a Preview of the Uploaded User Profiles 4. Enter a unique file name on the main screen for easy identification and click **Save & Upload**.
The _Data Export uploaded_ message appears. 5. (Optional) Click the **Preview** icon to view the uploaded user profiles.
 Preview of the Uploaded User Profiles
Once you upload the CSV file, it is essential to map the uploaded user profiles with the appropriate data types and user properties.
Map Uploaded User Profiles
[](https://docs.clevertap.com/docs/csv-upload#map-uploaded-user-profiles)
--------------------------------------------------------------------------------------------------------
You must map the CSV column names with the corresponding date types and user properties in the CleverTap system.
By default, CleverTap tries to map your file data. However, you can map your file data to the respective data type and user property.
 Map User Profiles
Click **Map** under the Upload user profiles page. It provides you with the following two methods to map the user profile with data type and user property:
* [Manually Map the File](doc:csv-upload#manually-map-the-file)
* [Upload the Mapped File](doc:csv-upload#upload-the-mapped-file)
###
Manually Map the File
[](https://docs.clevertap.com/docs/csv-upload#manually-map-the-file)
To manually map the file:
1. Select **Manually map file**.
 Manually Map User Profiles 2. From the table below, select the appropriate data type and user properties for each column in the file:
* **Data Types**: Select a data type from the dropdown list for the user profile values. For instance, _id\_name_ has the value _John Doe_ and is of the _Alphanumeric_ data type.
* **Alphanumeric**: A string value consisting of letters and numerals for data such as Phone Number, customer\_type, etc.
* **Number**: An integer value for data such as an Amount, Wallet Balance, etc.
* **True or False**: A boolean value. For example, True indicates if an email ID exists for users.
* **Date Formats**: A date value for data such as the Date of Birth of the user. For more information about date formats supported by CleverTap, refer to the [Date Format](doc:csv-upload#date-format)
section.
> 📘
>
> ###
>
> Guidelines for Mapping Data Types
>
> [](https://docs.clevertap.com/docs/csv-upload#guidelines-for-mapping-data-types)
>
> * The data type for _identity_ and _objectID_ is always alphanumeric and cannot be changed.
> * If the date format is _$D\_1695801332_, then the data type must be alphanumeric.
* **User Property**: Select the corresponding CleverTap user property from the drop-down list. For example, _id\_email_ corresponds to _Email_ in CleverTap.
> 📘
>
> ###
>
> Guidelines for Mapping User Properties
>
> [](https://docs.clevertap.com/docs/csv-upload#guidelines-for-mapping-user-properties)
>
> While mapping, if you do not find the relevant user property under the dropdown, select the **Same as column name** option. CleverTap will create a new user property for that specific column data.
###
Upload the Mapped File
[](https://docs.clevertap.com/docs/csv-upload#upload-the-mapped-file)
To upload a pre-mapped JSON manifest file:
1. Select **Upload mapped file**.
 Upload Pre-Mapped User Profiles
2. Drag and drop or browse the pre-mapped JSON manifest file.
The following is a sample JSON manifest file:
3. Click **Preview** to view the mapped file.
4. Click **Proces File**.
> 📘
>
> ###
>
> Guidelines for Uploading Mapped File
>
> [](https://docs.clevertap.com/docs/csv-upload#guidelines-for-uploading-mapped-file)
>
> JSON is a valid format.
If you have not mapped the files, the status appears as _Start mapping_. Mapping is necessary to process the CSV upload. After the CSV file is processed, the status for that upload changes to _Completed_. For more information about the statuses, refer to the [CSV Upload Details](doc:csv-upload#csv-upload-details)
section.
Once the file has been successfully processed, you will receive an email notification with the processed data file and a detailed error report if any problems occur.
 View the Status of the Newly-Uploaded File
Filter the Uploaded User Profiles
[](https://docs.clevertap.com/docs/csv-upload#filter-the-uploaded-user-profiles)
======================================================================================================================
To filter the uploaded user profiles:
1. Log in to your CleverTap account and click _Settings_ > _Engage_ > _CSV Uploads_.
2. Click the  icon.
The **Filter Profile Uploads** pane appears.
3. Select the required options from the **Status** drop-down list: **Select All**, **Processing**, **Completed**, **Rejected**, or **Start mapping**.
4. Click **Apply**.
 Filter Uploaded User Profiles by Status
5. You can also filter the uploads using the date range option.

Filter Uploaded User Profiles by Date Range
Key Points to Remember
[](https://docs.clevertap.com/docs/csv-upload#key-points-to-remember)
================================================================================================
CSV Upload Details
[](https://docs.clevertap.com/docs/csv-upload#csv-upload-details)
----------------------------------------------------------------------------------------
* If a new user profile is uploaded, a new user profile is created on the account.
* If an existing user profile is uploaded, the old user profile is updated with new values.
* If a new user profile property is added, a property is created on the user profile.
* You can upload multiple CSV files simultaneously, even when existing files are currently being processed.
* The phone number must be in the format \[country code\]\[phone number\] and is treated as an Alphanumeric. For example, +919869311111, where +91 is the country code for the India.
* After the upload is complete, the following information for the upload is displayed:
* **Name**: Displays the CSV import name.
* **Uploaded on**: Displays the date when the CSV file is uploaded.
* **Uploaded by**: Displays the email ID of the person who uploaded the file.
* **Status**: Displays the status of CSV File upload. The following are the possible upload statuses:
* **Completed**: Indicates that the CSV file has been successfully uploaded.
* **Processing**: Indicates that the CSV file is being processed.
* **Rejected**: Indicates that the CSV file was rejected due to multiple errors. Check your email to identify the error for rejection.
* **Start mapping**: Indicates that the mapping has not been done.
* **Errors**: Displays the count of rows that were not uploaded due to an error.
* **Processed**: Displays the count of records that were uploaded successfully.
CSV File Format
[](https://docs.clevertap.com/docs/csv-upload#csv-file-format)
----------------------------------------------------------------------------------
* The following is an example of a CSV file format:
| identity | id\_name | id\_email | id\_phone | id\_gender | Employment Status | Education status | Wallet Balance | DOB | MSG-sms | Payment Date |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 123456789 | John Doe | | +919900000000 | M | TRUE | Graduate | 1 | 1487576752 | FALSE | 09/10/23 10:15:02 |
| 14155551235 | Jane | | +919889000000 | M | FALSE | Graduate | 12 | 1487576752 | FALSE | 15/03/23 9:15:00 |
| 14155551234 | Lincoln | | +919778000000 | M | 0 | Graduate | 34 | 1487576752 | FALSE | 09/01/22 13:08:00 |
| \_234853412 | Mary | [\[email protected\]](https://docs.clevertap.com/cdn-cgi/l/email-protection#caa7abb8b38aa0a5a2a4aea5afe4a9a5a7) | +919667000000 | M | 1 | Graduate | 255 | 1487576752 | FALSE | 09/10/23 10:15:00 |
| [\[email protected\]](https://docs.clevertap.com/cdn-cgi/l/email-protection#385a575a78525750565c575d165b5755) | Bob | [\[email protected\]](https://docs.clevertap.com/cdn-cgi/l/email-protection#70121f12301a1f181e141f155e131f1d) | +919444000000 | M | 0 | Graduate | 45 | 1487576752 | FALSE | 08/01/21 10:15:00 |
| [\[email protected\]](https://docs.clevertap.com/cdn-cgi/l/email-protection#365752575b765c595e585259531855595b) | Adam | [\[email protected\]](https://docs.clevertap.com/cdn-cgi/l/email-protection#9bfafffaf6dbf1f4f3f5fff4feb5f8f4f6) | +919556000000 | M | 0 | Graduate | 24 | 1487576752 | FALSE | 09/06/20 10:15:00 |
* The upload will not be allowed if the file is not a CSV file or does not comply with CSV standards.
* [identity](doc:user-profiles)
is a mandatory column in the CSV file. However, if you want to make profile updates using the CleverTap ID, you can use the `objectId` in place of identity.
> 🚧
>
> ###
>
> Note
>
> [](https://docs.clevertap.com/docs/csv-upload#note)
>
> * Ensure that the `identity` key is always in lower case.
> * You can upload CSV files up to **1 GB** in size.
The following is the sample format for the CSV file using the `objectId`:
 Sample CSV File using `objectId`
Date Format
[](https://docs.clevertap.com/docs/csv-upload#date-format)
--------------------------------------------------------------------------
* CleverTap supports uploading date information in the following formats:
* dd/MM/yyyy HH:mm:ss
* MM/dd/yyyy HH:mm:ss
* yyyy/dd/MM HH:mm:ss
* yyyy/MM/dd HH:mm:ss
* dd MMM yyyy HH:mm:ss
* dd/MM/yyyy
* MM/dd/yyyy
* yyyy/dd/MM
* yyyy/MM/dd
* dd MMM yyyy
* Unix (EPOCH): A timestamp or a count of seconds. For example, 1695799434. It measures time by the number of seconds that have elapsed since 00:00:00 UTC on 1 January 1970. All other formats will be treated as a String.
* Time defaults to 12:00:00 if hh:mm:ss is not added.
* 24-hour date format is supported.
> 📘
>
> ###
>
> Note
>
> [](https://docs.clevertap.com/docs/csv-upload#note-1)
>
> We currently support uploading timestamps in 24-hour format and do not support AM/PM in timestamp. If the format is HH:mm:ss, use the 24-hour format (for example, 18:25:32). Do not use the 12-hour format (for example, 06:25:32 PM).
Operations for Profile Properties
[](https://docs.clevertap.com/docs/csv-upload#operations-for-profile-properties)
----------------------------------------------------------------------------------------------------------------------
You can use the following operations on user profile properties:
* $add: You can add specific values for the [multi-value profile properties](https://developer.clevertap.com/docs/concepts-user-profiles#manually-updating-multi-value-user-profile-properties)
. For example, you can add a particular item from the list of items that belong to a particular user profile.

Add a Value for User Property
* $remove: You can remove specific values from the multi-value user property. For example, you can remove a particular item from the list of items that belong to a particular user.

Remove Value for User Property
* $set - You can replace the current value with a new value. For example, you can replace the current value of a particular single-value or multi-value user property.

Set Value for User Property
* $delete - You can remove the property entirely. For example, you can completely remove the property `MyStuff` for user profile with identity `1904` and all the values in it.
 Delete a User Property
FAQ
[](https://docs.clevertap.com/docs/csv-upload#faq)
==========================================================
###
Q: What Happens if an Invalid Identity Value Is Set?
[](https://docs.clevertap.com/docs/csv-upload#q---what-happens-if-an-invalid-identity-value-is-set)
A: If you input an incorrect or invalid identity, it results in the below error, and the system flags the records in the file as error.
> ❗️
>
> ###
>
> Error Message
>
> [](https://docs.clevertap.com/docs/csv-upload#error-message)
>
> Identity value cannot be undefined or set at least one of identity / fbId / gpId / objectId under 1024 chars to identify the user.
Make sure not to use the following values as the identity:
* undefined
* null
* na
* n/a
* 0
* nil
* \-1
* infinity
* \-infinity
* inf
* \-inf
* nan
* \-nan
* empty
* xxxxxx
* none
###
Q. How to upload user user data via CSV?
[](https://docs.clevertap.com/docs/csv-upload#q-how-to-upload-user-user-data-via-csv)
A. Uploading your historical user data via CSV is quick and simple; however, note the following key pointers before uploading your user data via CSV:
* The identity field must be defined as _identity_ with a lowercase _i_ and not _Identity_.
* The _identity_ field is a mandatory column.
* Check that your CSV complies with the CSV standards. Otherwise, the upload will be denied.
* You can download the sample CSV file for a quick check from the _Settings_ section under _CSV uploads_.
Below is a sample CSV:

Updated 24 days ago
* * *
Ask AI
---
# SFTP
Overview
[](https://docs.clevertap.com/docs/imports-via-sftp#overview)
==========================================================================
You can import user and event data from third-party SFTP clients, such as BigQuery, HANA, Salesforce, and so on, to the CleverTap SFTP server. After establishing a connection with CleverTap SFTP, you can automatically import data to our dashboard at regular intervals. You can then use the power of our analytics, segmentation, and experiences to enhance engagement and retention.
> 📘
>
> ###
>
> File Upload Encryption
>
> [](https://docs.clevertap.com/docs/imports-via-sftp#file-upload-encryption)
>
> To upload encrypted file to CleverTap using SFTP, refer to [File Upload Encryption](doc:file-upload-encryption)
> .
Prerequisites
[](https://docs.clevertap.com/docs/imports-via-sftp#prerequisites)
====================================================================================
The following are the prerequisites for importing data via SFTP:
* You must have an SFTP client to import data into CleverTap's SFTP server.
* Ensure that your plan includes the SFTP feature.
Establish Connection with SFTP Server
[](https://docs.clevertap.com/docs/imports-via-sftp#establish-connection-with-sftp-server)
====================================================================================================================================
The CleverTap SFTP server needs to recognize the SFTP client to start receiving files. To establish this secured file transfer connection:
1. Go to _Settings_ > _Partner_ > _Import_ and click **SFTP** .

Import Data via SFTP
2. Select the _Saved Keys_ tab and click **\+ Add key**. On clicking, _Add new import key_ popup opens.

Add New Import Key
3. Enter the following details:
| Field | Description |
| --- | --- |
| Username | Prepopulated field that displays your CleverTap Account ID. |
| Name your import key | Enter the name for your import key. |
| Paste your SSH public key | Enter the SSH key pair generated and shared with Clevertap in the public key file. |
After our SFTP server receives the SSH public key, a user is created for you. After successful authentication, you can seamlessly start transferring data files. You can refer to the server URL at the bottom of the _Saved Keys_ tab for connecting to the SFTP URL.
Import Files via SFTP
[](https://docs.clevertap.com/docs/imports-via-sftp#import-files-via-sftp)
====================================================================================================
To import files, use any SFTP client and execute the following commands from the command prompt to upload your files:
1. `sftp -i ~/.ssh/id_rsa username@serverURL`
2. `put filename.csv`
3. `put file.manifest`
You receive an email notification for the following:
* When the file is picked up for processing.
* When it takes longer than expected to process the file, you receive an email notification for file processing every 2 hours till the time file is processed.
* Upon successful file upload and processing.
* When the import fails for some reason, you receive a failure email with a CSV file attachment containing failed records' details. You can download this CSV file and check it for errors.
> 📘
>
> ###
>
> Private Beta Release
>
> [](https://docs.clevertap.com/docs/imports-via-sftp#private-beta-release)
>
> The above feature of sending an email notification to users at different milestones is released in private Beta.
Moreover, you can start using this data in our engagement channels.
The following is an example of an error file. The last column in this file displays all the errors.
| time\_stamp | identity | cookie\_id | id\_name | id\_email | id\_phone | is\_married | age | Failure Description |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 1574668407 | [\[email protected\]](https://docs.clevertap.com/cdn-cgi/l/email-protection#b8d2d7d0d6dcd7ddf8dfd5d9d1d496dbd7d5) | dummy\_cookie-001 | JohnDoe-001 | [\[email protected\]](https://docs.clevertap.com/cdn-cgi/l/email-protection#aac0c5c2c4cec5cfeacbc8c984c9c5c7) | +918876543211 | Y | 21 | Phone number is not valid |
| 1574668408 | [\[email protected\]](https://docs.clevertap.com/cdn-cgi/l/email-protection#375d56595253585277505a565e5b1954585a) | dummy\_cookie-002 | JaneDoe-003 | [\[email protected\]](https://docs.clevertap.com/cdn-cgi/l/email-protection#e288838c87868d87a2838081cc818d8f) | +918876543212 | N | 22 | Phone number is not valid |
For more information about CSV and manifest files, refer to [Sample CSV Files for Upload](doc:imports-via-sftp#sample-csv-files-for-upload)
and [Sample Manifest File for Upload](doc:imports-via-sftp#sample-manifest-file-for-upload)
sections.
Sample CSV Files for Upload
[](https://docs.clevertap.com/docs/imports-via-sftp#sample-csv-files-for-upload)
================================================================================================================
You can upload profiles or events data to CleverTap with an SFTP client. All files (Events and Profiles) must be uploaded in CSV format.
> ❗️
>
> ###
>
> Order of File Upload
>
> [](https://docs.clevertap.com/docs/imports-via-sftp#order-of-file-upload)
>
> A manifest file upload must follow each CSV file upload to map your data upload with CleverTap properties. The data file processing will start only after the manifest file is uploaded.
Events CSV file
[](https://docs.clevertap.com/docs/imports-via-sftp#events-csv-file)
----------------------------------------------------------------------------------------
The events CSV file contains all the event details you want to send to CleverTap. The events file has the following fields:
| Column Header | Description |
| --- | --- |
| ts | * This field is optional.
* Supports the String data type.
* Accepts only the Epoch timestamp values.
* Denotes the timestamp when the event occurred.
* If this information is not present in the file, it captures the timestamp when CleverTap processed the record. |
| ObjectId/Identity/guid/fbid | * This field is mandatory.
* Uniquely identifies the user who performed the event. |
The following is an example of an events CSV file:
| event\_name | time\_stamp | identity | cookie\_id | item\_name | item\_price | item\_delivery\_date | status\_delivered |
| --- | --- | --- | --- | --- | --- | --- | --- |
| Purchased | 1578503667 | [\[email protected\]](https://docs.clevertap.com/cdn-cgi/l/email-protection#cfaeadac8fa8a2aea6a3e1aca0a2) | cookie\_123 | Awesome Ring - 10 | 123 | $D\_1589274432 | true |
| Purchased | 1578503667 | [\[email protected\]](https://docs.clevertap.com/cdn-cgi/l/email-protection#2e4f4c4d6e49434f4742004d4143) | cookie\_123 | Awesome Ring - 11 | 123 | $D\_1589274432 | false |
| Purchased | 1578503667 | [\[email protected\]](https://docs.clevertap.com/cdn-cgi/l/email-protection#80e1e2e3c0e7ede1e9ecaee3efed) | cookie\_123 | Awesome Ring - 12 | 123 | $D\_1589274432 | 1 |
| Purchased | 1578503667 | [\[email protected\]](https://docs.clevertap.com/cdn-cgi/l/email-protection#45242726052228242c296b262a28) | cookie\_123 | Awesome Ring - 13 | 123 | $D\_1589274432 | 0 |
> 📘
>
> ###
>
> Data File Timestamp
>
> [](https://docs.clevertap.com/docs/imports-via-sftp#data-file-timestamp)
>
> The data file's timestamp column(ts) must have an epoch format.
> If any other column has date-time values, mention these in the $D\_epoch format.
Profiles CSV file
[](https://docs.clevertap.com/docs/imports-via-sftp#profiles-csv-file)
--------------------------------------------------------------------------------------------
The profiles CSV file contains all the user profile details you want to send to CleverTap.
The Profiles file has the following fields:
| Column Header | Description |
| --- | --- |
| ObjectId/Identity/guid | * This field is mandatory.
* Uniquely identifies the user. |
| ts | * This field is optional.
* Indicates the timestamp of the file upload.
* If this information is not given in the file, it indicates the timestamp when CleverTap when CleverTap processed the file. |
The following is an example of a profile CSV file:
| time\_stamp | identity | cookie\_id | id\_name | id\_email | id\_phone | id\_phone.operation | is\_married | age | Playlist | Playlist.operation | MSG-SMS | MSG-DNDSMS |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 1574668407 | [\[email protected\]](https://docs.clevertap.com/cdn-cgi/l/email-protection#503a3f383e343f3510373d31393c7e333f3d) | dummy\_cookie-001 | JohnDoe-001 | [\[email protected\]](https://docs.clevertap.com/cdn-cgi/l/email-protection#fb919493959f949ebb9a9998d5989496) | +918876543211 | | true | 21 | Rock | $add | true | false |
| 1574668408 | [\[email protected\]](https://docs.clevertap.com/cdn-cgi/l/email-protection#4c262d22292823290c2b212d2520622f2321) | dummy\_cookie-002 | JaneDoe-002 | [\[email protected\]](https://docs.clevertap.com/cdn-cgi/l/email-protection#2f454e414a4b404a6f4e4d4c014c4042) | +918876543212 | | false | 22 | Pop | $remove | false | true |
| 1574668409 | [\[email protected\]](https://docs.clevertap.com/cdn-cgi/l/email-protection#016b6e696f736e6441666c60686d2f626e6c) | dummy\_cookie-003 | JohnRoe-003 | [\[email protected\]](https://docs.clevertap.com/cdn-cgi/l/email-protection#c6aca9aea8b4a9a386a7a4a5e8a5a9ab) | +918876543213 | $set | 1 | 25 | | | 1 | 0 |
| 1574668410 | [\[email protected\]](https://docs.clevertap.com/cdn-cgi/l/email-protection#294348474c5b464c694e44484045074a4644) | dummy\_cookie-004 | JaneRoe-004 | [\[email protected\]](https://docs.clevertap.com/cdn-cgi/l/email-protection#e58f848b80978a80a5848786cb868a88) | +918876543213 | $delete | 0 | 28 | | | 0 | 1 |
| | [\[email protected\]](https://docs.clevertap.com/cdn-cgi/l/email-protection#cca6ada2a9bea3a98caba1ada5a0e2afa3a1) | dummy\_cookie-005 | JaneRoe-005 | [\[email protected\]](https://docs.clevertap.com/cdn-cgi/l/email-protection#d1bbb0bfb4a3beb491b0b3b2ffb2bebc) | +918876543213 | | | 32 | | | | |
###
Operations for Profile Properties
[](https://docs.clevertap.com/docs/imports-via-sftp#operations-for-profile-properties)
You can use the following operations on profile properties:
* $add - This operation will add value to the property array. For example, you can add rock songs as Playlist values.
* $remove- This operation will remove the value from the property array. For example, you can remove Pop from the existing Playlist.
* $set - Use this operation to replace the current value. In our example, the phone number will be set as "+918876543213."
* $delete - This operation removes the property. For example, you can completely remove the property id\_phone for Jane Roe and all the values in it.
###
Communication Preferences for Profiles
[](https://docs.clevertap.com/docs/imports-via-sftp#communication-preferences-for-profiles)
The following are the communication preferences available:
* MSG-sms: This field in the file helps to know if the user wants to be notified via an SMS or not.
* MSG-email: This field in the file helps to know if the user wants to be notified via email or not.
* MSG-whatsapp: This field in the file helps to know if the user wants to be notified via WhatsApp channel or not.
* MSG-push: This field in the file helps to know if the user wants to be notified via a push notification or not.
* MSG-dndSMS: This field in the file helps to know if the user has enabled DND for SMS notifications.
* MSG-dndWhatsApp: This field in the file helps to know if the user has enabled DND for WhatsApp notifications.
* MSG-dndEmail: This field in the file helps to know if the user has enabled DND for email notifications.
> 📘
>
> ###
>
> Note
>
> [](https://docs.clevertap.com/docs/imports-via-sftp#note)
>
> To add or remove multiple values in a property, create a separate row for each value.
Sample Manifest File for Upload
[](https://docs.clevertap.com/docs/imports-via-sftp#sample-manifest-file-for-upload)
========================================================================================================================
The manifest file is a JSON file that maps the custom attributes in your CSV files with CleverTap properties. The format for the manifest file is `anyfilename.manifest`. Every manifest file must have a unique name. The following keys are mandatory in a manifest file:
| Expected keys | Description |
| --- | --- |
| type | The event/profile/(any other type of data that we may support in the future). |
| fileName | The name of the data file. |
| clientEmail | This is a mandatory field. We send the update mails to this email ID. |
| columns | This is an optional field.
* ctName - This is an optional field. The actual property name in CleverTap.
* dataType - This is an optional field. The supported dataTypes are STRING, INTEGER, FLOAT, BOOLEAN, and LONG. If a dataType is not defined, then it is considered STRING. |
> 📘
>
> ###
>
> Manifest Note
>
> [](https://docs.clevertap.com/docs/imports-via-sftp#manifest-note)
>
> If a column is not mapped to a CleverTap property name, the data is processed with the column name as the property name.
Manifest File for Events
[](https://docs.clevertap.com/docs/imports-via-sftp#manifest-file-for-events)
----------------------------------------------------------------------------------------------------------
Create a manifest file to map your custom events to CleverTap Events. The following is a sample manifest file for events:
JSON
{
"fileName": "events.csv",
"type": "event",
"columns": {
"event_name": {
"ctName": "evtName",
"dataType": "STRING"
},
"time_stamp": {
"ctName": "ts",
"dataType": "INTEGER"
},
"identity": {
"ctName": "identity",
"dataType": "STRING"
},
"cookie_id": {
"ctName": "objectId",
"dataType": "STRING"
},
"item_name": {
"ctName": "Name",
"dataType": "STRING"
},
"item_price": {
"ctName": "Price",
"dataType": "FLOAT"
},
"item_delivery_date": {
"ctName": "DeliveryDate",
"dataType": "STRING"
},
"status_delivered": {
"ctName": "DeliveryStatus",
"dataType": "BOOLEAN"
}
},
"clientEmail": "[email protected]"
}
> 📘
>
> ###
>
> Charged Event
>
> [](https://docs.clevertap.com/docs/imports-via-sftp#charged-event)
>
> In the case of SFTP import, CleverTap does not support importing items array for the charged event.
Manifest File for Profiles
[](https://docs.clevertap.com/docs/imports-via-sftp#manifest-file-for-profiles)
--------------------------------------------------------------------------------------------------------------
Create a manifest file to map the details of your user profiles to CleverTap Profiles. The following is a sample manifest file for profiles:
JSON
{
"fileName": "profiles.csv",
"type": "profile",
"columns": {
"time_stamp": {
"ctName": "ts",
"dataType": "INTEGER"
},
"identity": {
"ctName": "identity",
"dataType": "STRING"
},
"cookie_id": {
"ctName": "objectId",
"dataType": "STRING"
},
"id_name": {
"ctName": "Name",
"dataType": "STRING"
},
"id_email": {
"ctName": "Email",
"dataType": "STRING"
},
"id_phone": {
"ctName": "Phone",
"dataType": "STRING"
},
"is_married": {
"ctName": "Married",
"dataType": "BOOLEAN"
},
"age": {
"ctName": "Age",
"dataType": "INTEGER"
},
"MSG-SMS": {
"ctName": "MSG-sms",
"dataType": "BOOLEAN"
},
"MSG-DNDSMS": {
"ctName": "MSG-dndSMS",
"dataType": "BOOLEAN"
}
},
"clientEmail": "[email protected]"
}
Troubleshooting
[](https://docs.clevertap.com/docs/imports-via-sftp#troubleshooting)
========================================================================================
There may be instances where you see some errors during file upload. The following table lists the errors that you may encounter and the steps to resolve them:
| Error Message | Resolution |
| --- | --- |
| No data file found | The data file is not uploaded. Upload the data file again and create a new manifest file for it. |
| File couldn't be read | The file is not in the expected format. Upload the file again with the correct format, that is, CSV for data files and manifest file for mapping. |
| Internal infra error | Upload the file again followed by a new manifest file. |
| Incorrect details in manifest file | This error file is emailed to you. Check the manifest file for incorrect details. |
| Atleast one of identity / fbId / gpId / objectId is mandatory under 1024 chars to identify the user | Check that a minimum of one ID is present. |
| \[Internal error\] Error while importing data | This is an internal error. Try importing the data again. |
| Event name is mandatory | The event name is blank or the column name is not available. |
| Event name belongs to CleverTap restricted system events | Do not use the event names of the existing system events. |
| Cannot have more than 100 event properties | A maximum of 100 event properties is allowed. Check that the event properties do not exceed it. |
| Profile operation must be one of $add, $set, $remove, $delete | Add a valid profile operation. |
The status for each file is sent via email.
Receive Imports Notification
[](https://docs.clevertap.com/docs/imports-via-sftp#receive-imports-notification)
==================================================================================================================
The data files are picked up for ingestion in the order in which they are uploaded. You can configure a webhook to receive notifications for the following:
* When the file is picked up for processing.
* When it takes longer than expected to process the file, you receive an email notification for file processing every 2 hours till the time file is processed.
* Upon successful file upload and processing.
* When the import fails for some reason, you receive a failure email with a CSV file attachment containing failed records' details. You can download this CSV file and check it for errors.
To configure a webhook, click **Receive Notifications** and choose an already configured webhook from the list.

Receive Notifications for Data Import
View imports
[](https://docs.clevertap.com/docs/imports-via-sftp#view-imports)
==================================================================================
After a successful import, you can view your imported files on the CleverTap dashboard.
Click _Settings_ > _Import_ > _Activity log_ tab to check for your uploaded files. This tab displays your uploaded files and their status.
Supported Date Time Format
[](https://docs.clevertap.com/docs/imports-via-sftp#supported-date-time-format)
==============================================================================================================
CleverTap supports multiple Date Time formats, as shown in the following table:
| Format |
| --- |
| dd/MM/yyyy HH:mm:ss |
| MM/dd/yyyy HH:mm:ss |
| yyyy/dd/MM HH:mm:ss |
| yyyy/MM/dd HH:mm:ss |
| dd MMM yyyy HH:mm:ss |
| Unix |
> 📘
>
> ###
>
> Key Points to Remember
>
> [](https://docs.clevertap.com/docs/imports-via-sftp#key-points-to-remember)
>
> * CleverTap supports uploading more than one field of type DATE with different date formats
> * If the timestamp is missing in any of the fileds of type DATE, CleverTap adds the default timestamp of 00:00:01 to the date value included in the file when uploading it to the dashboard. For example, if the format defined in the manifest file for a particular DATE field is `dd/MM/yyyy HH:mm:ss` and the file includes the value as `14/04/2023`, then the CleverTap stores the value as `14/04/2023 00:00:01` to the dashboard.
FAQs
[](https://docs.clevertap.com/docs/imports-via-sftp#faqs)
==================================================================
**Q. What is the maximum file size for upload?**
A. You can upload a maximum of 5 GB for each data file.
**Q. How much time does it take to complete the file processing?**
A. It will take up to 2 hours to complete the processing for a maximum upload of a 5 GB data file.
**Q. Is segmentation possible on the uploaded data?**
A. Yes.
**Q. Is engagement possible from the uploaded data?**
A. Yes. You can use our engagement channels to engage with your users.
**Q. Do you support live campaigns on the uploaded data?**
A. Yes. However, the support is available only for Push, Email, and SMS engagement channels.
**Q. Can we do uploads at regular intervals?**
A. Yes. You can write a script to connect to CleverTap SFTP and transfer data daily when it is ready.
**Q. Can we upload any event or profile file without the manifest file?**
A. No. Every data file is recognized by a unique manifest file. Every manifest file should have a unique name.
**Q. Can we upload any event or profile file without the column headers in the CSV file?**
A. Column headers are mandatory for a file. Without the column headers, the file will go into an error state.
**Q. What are the mandatory columns in the event and profile data files?**
A. The column headers mandatory are ObjectId.
**Q. What are the reasons that cause invalid manifest errors in JSON files?**
A. The following are some of the reasons for invalid manifest errors when working with JSON files:
| Validation Errors | Description |
| --- | --- |
| **Syntax Errors** | Ensure you use the correct JSON syntax. Avoid any mismatch, such as missing or extra commas, improperly closed brackets, or missing quotes around keys or values. An email is not sent to the client if this error occurs. |
| **Invalid Data Types** | Ensure data types are in the following format: STRING, INTEGER, FLOAT, BOOLEAN, and LONG. A wrong or misspelled data type can lead to an invalid manifest error. For example, using int instead of INTEGER. An email is sent to the client if this error occurs. |
| **Invalid Client Email ID** | Ensure the client's email ID is valid. The client does not receive an error notification email if the email ID is invalid. |
| **Invalid Event Type** | Ensure you specify the event type in the manifest as either _EVENT_ or _PROFILE_. |
| **Invalid File Format** | Ensure the events file name is specified in the manifest and provided in _.csv_ format. |
| **Invalid Date Time Format** | Ensure the date time format is valid. For more information, refer to [Supported Date Time Format](doc:imports-via-sftp#supported-date-time-format)
. |
> 📘
>
> ###
>
> Note
>
> [](https://docs.clevertap.com/docs/imports-via-sftp#note-1)
>
> No email is sent for invalid JSON or invalid email in the manifest file.
For more information about JSON syntax in manifest files, refer to [Manifest File for Events](doc:imports-via-sftp#manifest-file-for-events)
and [Manifest File for Profiles](https://docs.clevertap.com/docs/imports-via-sftp#manifest-file-for-profiles)
.
Updated 22 days ago
* * *
Ask AI
---
# Product Experiences (Legacy) Setup
Create keys and segments for your app to enable product experiences.
Create Keys
[](https://docs.clevertap.com/docs/product-experiences-setup#create-keys)
=========================================================================================
These are the keys that you have defined in your app code. You can map these keys from the CleverTap dashboard and control the configuration of your app. Keys can be used for Product Config, Feature Flags, and A/B Tests.
To create keys:
1. Navigate to Product Experiences > Setup > Keys
2. Click +Key to create a new key.
> 📘
>
> ###
>
> Note
>
> [](https://docs.clevertap.com/docs/product-experiences-setup#note)
>
> The name of the key defined here must match the name of the key defined in the app. This name cannot be changed later. You can add up to 500 keys.
3. Add the Key definition.
Let us add some sample values:
You can now activate or deactivate the dark mode based on the Keys. The default value that the app is expecting for this key is `3`. These values are set in your app. Let us assume that the key value 3 means to activate the feature, and 4 means to deactivate the feature.

Add Key Details
4. Click Save. The `dark_mode` key is now listed on the Manage Keys page.
Edit/Archive Keys
[](https://docs.clevertap.com/docs/product-experiences-setup#editarchive-keys)
----------------------------------------------------------------------------------------------------
1. Navigate to Product Experiences > Setup > Keys. The Keys page appears.
2. Click the ellipsis menu to edit or archive a key. Only the default value and description can be edited after saving a key.
You can view all the archived keys by selecting the Archived Keys box at the bottom of the key's list. If a key is used in a product config or feature flag then it cannot be archived.
Create Segments
[](https://docs.clevertap.com/docs/product-experiences-setup#create-segments)
=================================================================================================
The segments are the target users who will receive app changes. These segments can be used for Product Config, Feature Flags, and A/B Tests.
To define the segments:
1. Navigate to Product Experiences > Setup > Segments
2. Click +Segment to create a new segment.
3. Name the segment.
4. Create a segment by users who performed and/or did not perform an event. You can also create segments for user properties such as demographics, geography, and so on. For our example, create a segment of iPhone users living in New York.
5. Save the segment.

Create Segments Who will Receive App Changes
Edit/Clone a Segment
[](https://docs.clevertap.com/docs/product-experiences-setup#editclone-a-segment)
----------------------------------------------------------------------------------------------------------
1. Navigate to Product Experiences > Setup > Segments. The Segments page appears.
2. Click the ellipsis menu to edit or clone a segment. For example, you may want to edit the city and create another user segment for Miami.
Create Goals
[](https://docs.clevertap.com/docs/product-experiences-setup#create-goals)
===========================================================================================
Goals are used to evaluate the performance of an A/B test. It is an event and when a user performs this event, it is considered a conversion.
Navigate to Product Experiences > Goals. Create a goal and save it. This goal is now available for selection in Product Experiences.

Create Goals for A/B Tests
Archive Goals
[](https://docs.clevertap.com/docs/product-experiences-setup#archive-goals)
---------------------------------------------------------------------------------------------
* Navigate to Product Experiences > Goals.
* Click the archive icon to archive a goal.

Archiving Goals for A/B Tests
You can view all the archived Goals by selecting the show archived goals box at the bottom of the goals list. If a goal is used in a product experience then it cannot be archived.
Mutually exclusive A/B tests
[](https://docs.clevertap.com/docs/product-experiences-setup#mutually-exclusive-ab-tests)
==========================================================================================================================
This is a global setting that is applicable only to A/B tests. You can choose to exclude your segment from all other experiments. It applies only to the new experiments that are created after this setting is enabled. For example, if it is set as disabled at a global level, you will have to enable it on each subsequent test. The users who qualify for this A/B test are unique and they are not shared across any other experiment.
1. Navigate to Product Experiences > Settings > Mutually exclusive A/B tests.
2. Turn on the toggle. These users will be included only in one A/B test at a time.

Enabling Mutually exclusive A/B tests
Video Tutorial
[](https://docs.clevertap.com/docs/product-experiences-setup#video-tutorial)
===============================================================================================
For further information, you can watch the following video on product configs and feature flags:
Updated about 2 months ago
* * *
Ask AI
---
# API
Overview
[](https://docs.clevertap.com/docs/imports-via-api#overview)
=========================================================================
The API section introduces the programmatic methods for sending data into CleverTap. This document provides an overview of the available ingestion APIs, enabling you to determine the correct approach for sending events and user profile information directly from your backend systems.
[Upload Events](https://developer.clevertap.com/docs/upload-events-api)
[Upload User Profiles](https://developer.clevertap.com/docs/upload-user-profiles-api)
Updated 24 days ago
* * *
Ask AI
---
# A/B Test: FAQs
FAQs
[](https://docs.clevertap.com/docs/ab-test-faqs#faqs)
==============================================================
Listed below are some FAQs that help you find answers to critical questions about A/B Tests.
###
Q. What role does the control variant play in an A/B test?
[](https://docs.clevertap.com/docs/ab-test-faqs#q-what-role-does-the-control-variant-play-in-an-ab-test)
The control variant functions as the benchmark used for comparison within an A/B test. It embodies the standard user experience, whether it pertains to a specific app interaction or message.
When testing a variable, the control variant aligns with the override values on the Remote Config Dashboard. If no override value has been set, it reverts to the default value defined in the code.
###
Q. Can a user participate in multiple tests simultaneously?
[](https://docs.clevertap.com/docs/ab-test-faqs#q-can-a-user-participate-in-multiple-tests-simultaneously)
Yes, if a user meets the targeting criteria for more than one test, they might be included in multiple tests at the same time.
###
Q. What happens when a user qualifies for multiple A/B Tests?
[](https://docs.clevertap.com/docs/ab-test-faqs#q-what-happens-when-a-user-qualifies-for-multiple-ab-tests)
When a user qualifies for multiple A/B tests that impact the same variable, CleverTap displays the experience from the test published first. To ensure that users see the experience of the newer test instead, perform either of the following steps:
Ensure that the targets for the two tests are mutually exclusive.
OR
Complete any other tests that influence the variable before creating a new test.
###
Q. How can I target an A/B test exclusively to new users?
[](https://docs.clevertap.com/docs/ab-test-faqs#q-how-can-i-target-an-ab-test-exclusively-to-new-users)
To target new users specifically, go to the _Targets_ section and select _Behavioral_ > _First-time users_. By default, the targeting is _Sticky_, meaning new users who see the A/B test continue to be a part of the test beyond their first session. If you prefer new users only to experience the A/B test during their initial session, clear the [_Sticky_](doc:create-ab-tests#sticky-target)
option to disable sticky targeting.
###
Q. What happens when a user logs in to two devices and is a part of an A/B test?
[](https://docs.clevertap.com/docs/ab-test-faqs#q-what-happens-when-a-user-logs-in-to-two-devices-and-is-a-part-of-an-ab-test)
As long as we have identified this as the same user but with a different device, the user will continue to be part of the A/B Test.
In case the A/B Test has device-level target rules, such as "OS = iOS" but the user has logged in from an Android device, then whether the user will remain in the test or exit depends on the [Sticky Target](doc:create-ab-tests#sticky-target)
configuration of the A/B Test.
###
Q. What happens to users in a variant if the percentage allocation changes?
[](https://docs.clevertap.com/docs/ab-test-faqs#q-what-happens-to-users-in-a-variant-if-the-percentage-allocation-changes)
Currently, modifying the percentage distribution for the variant is not allowed while the test is running.
###
Q. Is it possible for a user to encounter multiple distinct variants within one test?
[](https://docs.clevertap.com/docs/ab-test-faqs#q-is-it-possible-for-a-user-to-encounter-multiple-distinct-variants-within-one-test)
We use the User ID and A/B test ID as inputs for the logic determining the Variant in which a user will be placed. This ensures that users remain consistently assigned to the same Variant throughout the duration of a given A/B test, even if they exit and re-enter the test multiple times.
Updated about 2 months ago
* * *
Ask AI
---
# Partners
Overview
[](https://docs.clevertap.com/docs/export-partners#overview)
=========================================================================
The Partners section provides an overview of the integrations that allow you to export CleverTap data to leading analytics and customer data platforms. This page highlights the purpose of each partner so you can select the right destination for product analytics, customer data management, or multi-system distribution.
[Amplitude](https://docs.clevertap.com/docs/amplitude-export)
[mParticle](https://docs.clevertap.com/docs/mparticle-export)
[Mixpanel](https://docs.clevertap.com/docs/mixpanel-export)
[Segment](https://docs.clevertap.com/docs/segmentcom)
Updated 24 days ago
* * *
Ask AI
---
# Exports
Overview
[](https://docs.clevertap.com/docs/data-exports#overview)
======================================================================
The Exports section provides an overview of all available methods to retrieve data from CleverTap. This page introduces the supported export mechanisms so you can choose the correct approach for accessing events, user profiles, message reports, and partner destinations used in your analytics or data ecosystem.
[API](https://docs.clevertap.com/docs/export-via-api)
[Cloud Storage](https://docs.clevertap.com/docs/cloud-storage)
[Data Warehouse](https://docs.clevertap.com/docs/data-warehouse-exports)
[Partners](https://docs.clevertap.com/docs/export-partners)
Updated 24 days ago
* * *
Ask AI
---
# Product Experiences (Legacy)
> 📘
>
> ###
>
> Feature Availability
>
> [](https://docs.clevertap.com/docs/product-experiences#feature-availability)
>
> A new and enhanced version of [Product Experiences](https://docs.clevertap.com/docs/product-experiences-nextgen)
> is now available. New customers (CleverTap for Enterprise or CleverTap for Startups) who have not enabled the legacy functionalities can use this feature. The [methods](https://developer.clevertap.com/docs/may-2023#may-05)
> for the legacy Product Experiences feature have been deprecated and will be removed from the code. The existing users can continue to use the legacy Product Experiences till September 2024.
Overview
[](https://docs.clevertap.com/docs/product-experiences#overview)
-----------------------------------------------------------------------------
With _Product Experiences_, you can change the behavior and appearance of your app remotely without an update. This helps you to deliver in-app personalization experience to your app users and test their response. You can use _product config_ to modify app behavior and feature flags to add or remove features from your app without performing an app store deployment.
You can remotely configure your app with product config. The configuration can be anything, including the look and feel of the app and the workflow for users.
For example, you want to enable dark mode on your app; however, you want the following additional options:
* You want to test it first on iPhone users who live in New York.
* You must also be capable of disabling the feature if it needs more work.
You can create a product config for this improvement and test the response to your app. Before using product config, you must complete the necessary setup.
Set up
[](https://docs.clevertap.com/docs/product-experiences#set-up)
=========================================================================
To run a product config or a feature flag, you must create keys and segments for your app.
Create Keys
[](https://docs.clevertap.com/docs/product-experiences#create-keys)
-----------------------------------------------------------------------------------
These are the keys that you have defined in your app code. You can map these keys from the CleverTap dashboard and control the configuration of your app.
To create keys:
1. Navigate to _Product Experiences_ > _Setup_ > _Keys_
2. Click **+Key** to create a new key.
> 📘
>
> ###
>
> Note
>
> [](https://docs.clevertap.com/docs/product-experiences#note)
>
> The name of the key defined here must match the name of the key defined in the app. This name cannot be changed later. You can add up to 500 keys.
3. Add the _Key_ definition.
You can now activate or deactivate the dark mode based on the keys. The default value that the app is expecting for this key is `3`. These values are set in your app. Assume the key value 3 means activate the feature, and 4 means to deactivate the feature.

4. Click **Save**. The `dark_mode` key is now listed on the _Manage Keys_ page.
###
Edit/Archive Keys
[](https://docs.clevertap.com/docs/product-experiences#editarchive-keys)
To edit/archive keys:
1. Navigate to _Product Experiences_ > _Setup_ > _Keys_. The _Keys_ page displays.
2. Click the ellipsis menu to edit or archive a key. Only the default value and description can be edited after saving a key.
You can view all the archived keys by selecting the _Archived Keys_ box at the bottom of the key's list. If a key is used in a product config or feature flag then it cannot be archived.
Create Segments
[](https://docs.clevertap.com/docs/product-experiences#create-segments)
-------------------------------------------------------------------------------------------
The segments are the target users who will receive app changes.
To define the segments:
1. Navigate to _Product Experiences_ > _Setup_ > _Segments_
2. Click **+Segment** to create a new segment.
3. Name the segment.
4. Create a segment by users who performed and/or did not perform an event. You can also create segments for user properties such a demographics, geography, and so on. For our example, create a segment of iPhone users living in New York.
5. Save the segment.

Edit/Clone a Segment
[](https://docs.clevertap.com/docs/product-experiences#editclone-a-segment)
----------------------------------------------------------------------------------------------------
To edit/clone a segment:
1. Navigate to _Product Experiences_ > _Setup_ > _Segments_. The _Segments_ page displays.
2. Click the ellipsis menu to edit or clone a segment. For example, you may want to edit the city and create another user segment for Miami.
Product Config
[](https://docs.clevertap.com/docs/product-experiences#product-config)
=========================================================================================
Create Product Config
[](https://docs.clevertap.com/docs/product-experiences#create-product-config)
-------------------------------------------------------------------------------------------------------
You can have multiple members of your team create product config with multiple keys and segments. You can then group these keys.
To create a product config:
1. Navigate to _Product Experiences_ > _Product Config_. The _Product Config_ page displays.
2. Click the **+Product Config** button to create a new product config. The create a _Product Config_ page displays.
3. Enter the name and description for your product config. For our example, name the product config as _dark mode_.
4. Select the _Segments_ and _Keys_ for your product config group. The _keys_ are the keys that you have assigned in your app for each element or feature and the _segments_ are the group of users who will receive this feature.
For example, select the "iPhone users in New York" and "iPhone users in Miami" as _Segments_ and "Dark_Key" as the\_Product Config Key_. For more information on creating keys, refer to [Keys](https://docs.clevertap.com/docs/product-experiences#section-create-keys)
.
> 📘
>
> ###
>
> Note
>
> [](https://docs.clevertap.com/docs/product-experiences#note-1)
>
> A key can only be used in one product config.
5. Add the value and set the priority for your product config keys. Drag the  icon up or down to change segment priority.
6. Publish your product config or schedule it to be published at a later date.

Edit/Archive Product Config
[](https://docs.clevertap.com/docs/product-experiences#editarchive-product-config)
------------------------------------------------------------------------------------------------------------------
To edit a product config:
1. Navigate to _Product Experiences_ > _Product Config_. The _Product Config_ page displays.
2. Click the ellipsis menu to edit or archive a product config.
> 📘
>
> ###
>
> Note
>
> [](https://docs.clevertap.com/docs/product-experiences#note-2)
>
> Any changes to a product config are saved in a new version. You can always revert to an earlier version.
View Statistics
[](https://docs.clevertap.com/docs/product-experiences#view-statistics)
-------------------------------------------------------------------------------------------
The stats will show you the distribution and value of the key stats for your product config. To view stats for a product config:
To view product config stats:
1. Navigate to _Product Experiences_ > _Product Config_. The _Product Config_ page displays.
2. Click the product config from the list and scroll down to view the stats.
You can view the following information:
1. You can see a trend of the total number of keys delivered for all segments or a particular segment from the first chart.
2. In the second box, you can further break it down to get the count of each type of key value-wise.

Product Config Version
[](https://docs.clevertap.com/docs/product-experiences#product-config-version)
---------------------------------------------------------------------------------------------------------
A new version is created every time you edit a product config. If the current config is not working for some reason, you can always revert to an older version of the product config.
To revert to an older version:
1. Navigate to _Product Experiences_ > _Product Config_. The _Product Config_ page displays.
2. Click the ellipsis menu to edit a product config. The versions appear on the right side.
3. Click the required version number and publish. The selected version becomes active and the current version becomes inactive.

Feature Flags
[](https://docs.clevertap.com/docs/product-experiences#feature-flags)
=======================================================================================
You can have canary releases using feature flags. You can remotely turn on or turn off features on your app.
For example, you want to want to enable an automatic playlist of recommended videos on your app. This is a really great feature but it freezes the app screen for some versions of iOS. You want the following options:
* You must be able to target iPhone users.
* You want to test it on 20% of New York users and 30 % of Miami users before you roll it out to all users.
* You must also be capable of disabling the feature if it needs more work.
Feature flags can enable or disable a feature with a simple toggle. You can also test the feature on your users before you make it available to everyone. Your users will now have access to the feature and add to a better experience.
Create Feature Flags
[](https://docs.clevertap.com/docs/product-experiences#create-feature-flags)
-----------------------------------------------------------------------------------------------------
To create feature flags:
1. Navigate to _Product Experiences_ > _Feature Flags_. The _Feature Flags_ page displays.
2. Click the **+Feature Flag** button to create a new feature flag. The create a _Feature Flag_ page displays.
3. Enter the name and description for your feature flag. For example, create an _Auto Playlist Feature Flag_.
4. Select the _Segments_ and _Keys_ for your feature flag. The _keys_ are the keys that you have assigned in your app for each feature and the segments are the group of users who will receive this feature.
For example, select the "iPhone users in New York" and "iPhone users in Miami" segment. Select the key called _Auto Playlist_ key. For more information on creating keys, refer to [Keys](https://docs.clevertap.com/docs/product-config#section-create-keys)
.
> 📘
>
> ###
>
> Note
>
> [](https://docs.clevertap.com/docs/product-experiences#note-3)
>
> A feature flag can have only boolean values, that is, true or false. A key can only be used in one feature flag.
5. Under _Key value and priority_, add the key value for each segment.
6. Toggle the selected segment and define the percentage of users who will receive this change.

6. Publish your feature flag or schedule it to be published at a later date.

Edit/Archive Feature Flags
[](https://docs.clevertap.com/docs/product-experiences#editarchive-feature-flags)
----------------------------------------------------------------------------------------------------------------
> 📘
>
> ###
>
> Note
>
> [](https://docs.clevertap.com/docs/product-experiences#note-4)
>
> Any changes to a feature flag are saved in a new version. You can always revert to an earlier version.
View Statistics
[](https://docs.clevertap.com/docs/product-experiences#view-statistics-1)
---------------------------------------------------------------------------------------------
The stats will show you the distribution and value of the key stats for your feature flag. To view stats for a feature flag:
To view feature flag stats:
1. Navigate to _Product Experiences_ > _Feature Flags_. The _Feature Flag_ page displays.
2. Click the feature flag from the list and scroll down to view the stats.
You can view the following information:
1. You can see a trend of the total number of keys delivered for all segments or a particular segment from the first chart.
2. In the second box, you can further break it down to get a count of each type of key value-wise

Feature Flag Version
[](https://docs.clevertap.com/docs/product-experiences#feature-flag-version)
-----------------------------------------------------------------------------------------------------
A new version is created every time you edit a feature flag. If the current feature is not working for some reason, you can always revert to an older version of the feature flag:
1. Navigate to _Product Experiences_ > _Feature Flag_. The _Feature Flag_ page displays.
2. Click the ellipsis menu to edit a feature flag. The versions appear on the right side.
3. Click the required version number and publish it. The selected version becomes active and the current version becomes inactive.

Role-Based Access Control for Product Experiences
[](https://docs.clevertap.com/docs/product-experiences#role-based-access-control-for-product-experiences)
===============================================================================================================================================================
Role-based access control (RBAC) is supported for _Product Experiences_. If you have advanced RBAC enabled for your account, admins can customize permissions and access roles. There are three standard system roles: _Admin_, _Creator_, and _Member_.
If you do not have advanced RBAC, the _Admin_ role will have read and write access for all setups (keys, segments, goals, and settings), product config, feature flags, and A/B tests. _Creator_ will have read and write access to experiences and experiments. The creator will have only read access to setup (keys, segments, and goals), and the _Member_ role will have only read access for product config, feature flag, and A/B tests. Members will also have read access to set up.
For more information, refer to [Role-Based Access Control](doc:role-based-access-control-2)
.
Video Tutorial
[](https://docs.clevertap.com/docs/product-experiences#video-tutorial)
=========================================================================================
For further information, you can watch the following video on product configs and feature flags:
Updated about 2 months ago
* * *
Ask AI
---
# Analytics Partners
You can import your event and profile data from other platforms to CleverTap. This data can be used in CleverTap to run analytics, segments, campaigns, or journeys. You can also export event data from CleverTap to the partner dashboard.
* [Amplitude Import (Cohort)](https://docs.clevertap.com/docs/amplitude-cohort-import)
* [Amplitude Export](doc:amplitude-export)
* [Amplitude Event Streaming](https://docs.clevertap.com/docs/amplitude-event-streaming)
* [Mixpanel Import (Cohort)](doc:mixpanel-integration)
* [Mixpanel Export](doc:mixpanel-export)
* [PostHog](doc:posthog)
Updated about 2 months ago
* * *
Ask AI
---
# Amplitude
[Amplitude](https://amplitude.com/)
, an analytics and business intelligence platform, helps make informed decisions for targeting users. Integration CleverTap with Amplitude allows you to export and import your CleverTap event data to your Amplitude dashboard.
* [Amplitude Export](doc:amplitude-export)
* [Amplitude Import](doc:amplitude-cohort-import)
* [Amplitude Event Streaming](https://docs.clevertap.com/docs/amplitude-event-streaming)
Updated about 2 months ago
* * *
Ask AI
---
# AWS S3
Overview
[](https://docs.clevertap.com/docs/data-export-to-aws-s3#overview)
===============================================================================
The data export feature enables you to bulk export your CleverTap event data to your AWS S3 bucket. You can use this for analysis in BI tools or storage in your data warehouse for analysis in the future.
> 📘
>
> ###
>
> Feature Availability
>
> [](https://docs.clevertap.com/docs/data-export-to-aws-s3#feature-availability)
>
> This capability is a part of the _Enterprise_, _Advanced_, and _Cutting Edge_ plan. To activate this for your account, contact your Account Manager.
Setup
[](https://docs.clevertap.com/docs/data-export-to-aws-s3#setup)
=========================================================================
The following are the two major steps involved in enabling this feature for your account:
1. [Create an AWS S3 Bucket](doc:data-export-to-aws-s3#create-an-aws-s3-bucket)
.
2. Configure Buckets details on the CleverTap Dashboard using one of the following methods:
* [Using Access Key](doc:data-export-to-aws-s3#using-access-key)
* [Using IAM Policy](doc:data-export-to-aws-s3#using-iam-policy)
> 📘
>
> ###
>
> Data Export
>
> [](https://docs.clevertap.com/docs/data-export-to-aws-s3#data-export)
>
> Once you have set up both dashboards, you can configure export from the CleverTap dashboard. For more information, refer to the following:
>
> * [Data Exports](doc:data-exports)
> for Legacy Profile and Event Export flow
> * [Profile Exports](doc:profile-exports)
> for Enhanced Profile Export flow
Create an AWS S3 Bucket
[](https://docs.clevertap.com/docs/data-export-to-aws-s3#create-an-aws-s3-bucket)
-------------------------------------------------------------------------------------------------------------
To create an AWS S3 bucket:
1. Log in to your AWS account, then search for _S3_ in the AWS services box.
2. Select _S3_ from the search results.

Select S3 from AWS Account
Upon clicking, the _Bucket_ page is displayed.
3. Click **Create bucket**. On clicking, the _Create bucket_ page displays:

Click Create Bucket
4. Enter a bucket name, region, logging, versioning, and encryption preferences.

Configure S3 Bucket Settings and Click Create Bucket
> 📘
>
> ###
>
> Recommendation for Setup
>
> [](https://docs.clevertap.com/docs/data-export-to-aws-s3#recommendation-for-setup)
>
> For this integration, you need not modify the default settings; however, you must check your internal organization's policies to verify if you need to modify any of these settings.
Based on your CleverTap account settings, we host your data in Europe (EU), the United States (US), Singapore (SG), or India (IN). To identify the region of your account and the corresponding region that you must select when configuring the bucket settings, refer to the following table:
| CleverTap Dashboard URL | Region | AWS S3 Bucket Region |
| --- | --- | --- |
| [https://eu1.dashboard.clevertap.com/login.html](https://eu1.dashboard.clevertap.com/login.html#/) | EU | EU (Ireland) eu-west-1 |
| [https://in1.dashboard.clevertap.com/login.html](https://in1.dashboard.clevertap.com/login.html#/) | India | Asia Pacific (Mumbai) ap-south-1 |
| [https://us1.dashboard.clevertap.com/login.html](https://us1.dashboard.clevertap.com/login.html#/) | US | US West (Oregon) us-west-2 |
| [https://sg1.dashboard.clevertap.com/login.html](https://sg1.dashboard.clevertap.com/login.html#/) | Singapore | Asia Pacific (Singapore)
ap-southeast-1 |
| [https://mec1.dashboard.clevertap.com/login.html](https://mec1.dashboard.clevertap.com/login.html) | Middle East (UAE) | Middle East (UAE) me-central-1 |
| [https://aps3.dashboard.clevertap.com/login.html](https://aps3.dashboard.clevertap.com/login.html) | Indonesia | Asia Pacific (Jakarta) ap-southeast-3 |
> 📘
>
> ###
>
> Set Up AWS Bucket Region
>
> [](https://docs.clevertap.com/docs/data-export-to-aws-s3#set-up-aws-bucket-region)
>
> When setting up the AWS bucket region for your AWS account, ensure that the AWS bucket region matches your CleverTap account region. To identify the region of your CleverTap account, refer to the above table.
>
> Also, you can set up the CleverTap account region only once during registration.
5. Click **Create bucket**. On successful bucket creation, the following message displays in the snack bar at the top:

S3 Bucket Created Successfully
The bucket you just created now appears in your S3 console. We recommend you note down the name of your new bucket, as you will need it for the next step.
Configure S3 Bucket Details on CleverTap Dashboard
[](https://docs.clevertap.com/docs/data-export-to-aws-s3#configure-s3-bucket-details-on-clevertap-dashboard)
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
###
Using IAM Policy
[](https://docs.clevertap.com/docs/data-export-to-aws-s3#using-iam-policy)
The following are the two major steps to configure S3 bucket details on the CleverTap dashboard using IAM Policy
i. [Copy IAM Policy from the CleverTap dashboard](doc:data-export-to-aws-s3#copy-iam-policy-from-the-clevertap-dashboard)
ii. [Add IAM Policy to S3 Bucket from AWS console](doc:data-export-to-aws-s3#add-iam-policy-to-s3-bucket-on-aws-console)
####
Copy IAM Policy from the CleverTap Dashboard
[](https://docs.clevertap.com/docs/data-export-to-aws-s3#copy-iam-policy-from-the-clevertap-dashboard)
To copy the IAM policy from the CleverTap dashboard:
1. Navigate to _Settings_ > _Partners_ and click **View Details** against Amazon S3. The _Integrate analytics partner - Amazon S3_ window displays on the right side of the screen.

Click View Details against Amazon S3 from Partner Page
2. Click **\+ Amazon S3 Bucket** to create a new bucket.
3. Enter the _Bucket name_.
4. Select _IAM (Identity and Access Management) Policy_ option under _Configure with_ section.

Configure S3 Bucket with IAM Policy
5. Click the  icon to copy the policy to the clipboard and keep this window open for saving these details later.
####
Add IAM Policy to S3 Bucket on AWS Console
[](https://docs.clevertap.com/docs/data-export-to-aws-s3#add-iam-policy-to-s3-bucket-on-aws-console)
To add IAM policy to the S3 bucket:
1. Select the bucket from the Bucket page of the AWS console.
2. Select the _Permissions_ tab.
3. Click **Edit** under the _Bucket policy_ section and enter the policy that you copied in Step _4_ of [Copy IAM Policy from the CleverTap dashboard](doc:data-export-to-aws-s3#copy-iam-policy-from-the-clevertap-dashboard)
:

Edit S3 Bucket Policy
IAM Policy
{
"Version": "2012-10-17",
"Statement": [\
{\
"Effect": "Allow",\
"Principal": {\
"AWS": "arn:aws:iam::062484260092:root"\
},\
"Action": "s3:PutObject*",\
"Resource": "arn:aws:s3:::bucket-name/*"\
},\
{\
"Effect": "Allow",\
"Principal": {\
"AWS": "arn:aws:iam::062484260092:root"\
},\
"Action": "s3:PutObject*",\
"Resource": "arn:aws:s3:::bucket-name"\
}\
]
}
> 🚧
>
> ###
>
> IMPORTANT
>
> [](https://docs.clevertap.com/docs/data-export-to-aws-s3#important)
>
> Ensure that you replace all the occurrences of `bucket-name` in the above JSON payload with your actual bucket name.
4. Click **Save Changes** to save the policy.
5. Go back to the same window opened in _Step 4_ of [Copy IAM Policy From CleverTap Dashboard](doc:data-export-to-aws-s3#copy-iam-policy-from-the-clevertap-dashboard)
and click **Save Credentials**.
The Amazon S3 bucket is now configured on both the AWS S3 console and the CleverTap dashboard.
###
Using Access Key
[](https://docs.clevertap.com/docs/data-export-to-aws-s3#using-access-key)
The following are the two major steps to configure S3 bucket details on the CleverTap dashboard using Access Key:
i. [Create an API Key for Your S3 Bucket](doc:data-export-to-aws-s3#create-an-api-key-for-your-s3-bucket)
.
ii. [Add Your S3 Bucket Details to CleverTap](doc:data-export-to-aws-s3#add-your-s3-bucket-details-to-clevertap)
.
####
Create an API Key for Your S3 Bucket
[](https://docs.clevertap.com/docs/data-export-to-aws-s3#create-an-api-key-for-your-s3-bucket)
This section demonstrates the creation of an AWS API key with write access to the bucket we created in the above step. CleverTap uses this API key to export data to your S3 bucket.
1. Click on your account name on the top right of the AWS console.
2. Select _Security credentials_.

Select Security credentials
3. Select _Users_ from the left navigation and click **Add user**.

Add Users
On clicking, the _Add user_ page displays.
4. Enter the _User name_ and select the _Programmatic access_ checkbox.
5. Click **Next:Permissions**.

Select AWS Access Type and Click Next: Permissions
On clicking, _Set permissions_ page displays.
6. Click **Create group** under _Add user to group_ tab.

Add User to Group
On clicking, _Create group_ page displays.

Assign Policy to Group
7. Click **Create policy**. On clicking, _Create policy_ page opens in a new tab.
8. Select the **JSON** tab and then paste the JSON code given below in the box.
9. Replace `clevertap-example` in the JSON code with the name of the S3 bucket you created in the above step.
The permissions defined in this policy allow CleverTap to get information about your bucket and upload files to it.
> 📘
>
> ###
>
> AWS API Access Policies
>
> [](https://docs.clevertap.com/docs/data-export-to-aws-s3#aws-api-access-policies)
>
> _IP Whitelisting_ is not supported with S3 exports. For more information about AWS API access policies, refer to [this post](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_s3_rw-bucket-console.html)
> from the AWS blog.

Bucket Policy in JSON Format
JSON
{
"Version": "2012-10-17",
"Statement": [\
{\
"Effect": "Allow",\
"Action": [\
"s3:ListBucket"\
],\
"Resource": [\
"arn:aws:s3:::clevertap-example"\
]\
},\
{\
"Effect": "Allow",\
"Action": [\
"s3:PutObject"\
],\
"Resource": [\
"arn:aws:s3:::clevertap-example/*"\
]\
}\
]
}
10. Click **Next: Tags** and then click **Next: Review**. On clicking, the _Create policy_ page opens.
11. Enter the policy _Name_ and click **Create policy**.

Enter Policy Name and Click Create policy
On successful policy creation, the following message displays in the snack bar at the top:

Bucket Policy Created Successfully
12. Go back to the _Create group_ page (opened in _Step 6_), search for the policy you just created, and assign it to the new group by selecting the checkbox.
13. Click **Create group**. On clicking, the _Add user_ page displays.

Select Policy and Click Create Group
14. Click **Next: Tags** and then click **Next: Review**.

Click Next: Tags
15. Click **Create user**.

Click Create user
On successful user creation, the following page displays. You will see your _Access key ID_ and the _Secret access key_.

Copy or Download User Security Credentials
These credentials allow CleverTap to upload files to your S3 bucket. We recommend you note down these values as you will require them for the next step. Otherwise, you can also click **Download .csv** to save these details for future use.
####
Add Your S3 Bucket Details to CleverTap
[](https://docs.clevertap.com/docs/data-export-to-aws-s3#add-your-s3-bucket-details-to-clevertap)
To add your S3 bucket details to Clevertap, perform the following steps:
1. Go to _Settings_ > _Partners_ and click **View Details** against Amazon S3. The _Integrate analytics partner - Amazon S3_ window displays on the right side of the screen.

Click View Details against Amazon S3 from Partners Page
2. Click **\+ Amazon S3 Bucket** to create a new bucket. The _Integrate Amazon S3 Bucket_ window opens on the right side of the screen.
3. Enter the _Bucket nickname_ and _Bucket URL_.
4. Select the _User details_ option under _Configure with_ section.
5. Enter your _Access key ID_ and the _Secret access key_ obtained earlier and click **Save Credentials**.

Enter User Security Credentials and Click Save Credentials
FAQs
[](https://docs.clevertap.com/docs/data-export-to-aws-s3#faqs)
=======================================================================
###
What permission is required for CleverTap to export data to your AWS S3 bucket?
[](https://docs.clevertap.com/docs/data-export-to-aws-s3#what-permission-is-required-for-clevertap-to-export-data-to-your-aws-s3-bucket)
A. CleverTap needs write permission to be able to export data to your AWS S3 bucket, as shown in the following figure:

IAM Policy to Provide CleverTap with Write Access
###
What should I do if I already have an existing IAM policy for the AWS S3 bucket?
[](https://docs.clevertap.com/docs/data-export-to-aws-s3#what-should-i-do-if-i-already-have-an-existing-iam-policy-for-the-aws-s3-bucket)
Ensure that you modify the current IAM policy to provide CleverTap with write access to export data to your AWS S3 bucket.
Updated 23 days ago
* * *
Ask AI
---
# Amplitude Export
Overview
[](https://docs.clevertap.com/docs/amplitude-export#overview)
==========================================================================
[Amplitude](https://amplitude.com/)
, an analytics and business intelligence platform, helps make informed decisions for targeting users. Integration CleverTap with Amplitude allows you to export your CleverTap event data to your Amplitude dashboard. You can use this event data for further analysis.
Integrate Amplitude with CleverTap
[](https://docs.clevertap.com/docs/amplitude-export#integrate-amplitude-with-clevertap)
==============================================================================================================================
This process involves the following two steps:
1. [Find Amplitude Project Details](doc:amplitude-export#find-amplitude-project-details)
.
2. [Configure CleverTap Dashboard](doc:amplitude-export#configure-clevertap-dashboard)
.
Find Amplitude Project Details
[](https://docs.clevertap.com/docs/amplitude-export#find-amplitude-project-details)
----------------------------------------------------------------------------------------------------------------------
1. Log in to your Amplitude account.
2. Navigate to the _Settings_ page.
3. Navigate to _Org Settings_ > _Projects_.
4. Click on a project to find the _API Key_ under the _General_ tab.

Finding API Key
Configure CleverTap Dashboard
[](https://docs.clevertap.com/docs/amplitude-export#configure-clevertap-dashboard)
--------------------------------------------------------------------------------------------------------------------
To configure the CleverTap dashboard:
1. Navigate to _Settings_ > _Partners_ > _Partner List_ from the CleverTap dashboard. Select _Amplitude_ from the list.

Navigate to the Partner Page
2. A popup opens on the right side of the screen. Enter the following details and click **Integrate**:
| Field | Description |
| --- | --- |
| Partner Nickname | Enter the _Nickname_ for your integration. |
| API key | The unique code for Amplitude to verify your credentials. For more information about obtaining the key, refer to [Find Amplitude Details](doc:amplitude-export#find-amplitude-project-details)
. |
| Data Residency | The Data Residency is the physical/geographical storage location of data for each project.
* Select from the following available options:
* Europe (default)
* Standard |
| Device ID Mapping | This field is mapped to Amplitude's
`device_id`
field for identification when sending data from CleverTap to Amplitude. |
| User ID Mapping | This field is mapped to Amplitude's
`user_id`
field for identification when sending data from CleverTap to Amplitude. |

After successful integration, navigate to the the _Export_ tab on the _Partner List_ page.

Amplitude Export
Create New Export
[](https://docs.clevertap.com/docs/amplitude-export#create-new-export)
============================================================================================
This section lists steps to create a new export from the CleverTap dashboard.
To create a new export:
1. Navigate to **Settings** > **Partners** > **Exports** from the CleverTap dashboard.
2. Click **Create Export** and select **Amplitude**.

Create Export
The **Export to Amplitude** window displays.

Enter Export Details
3. Configure the following settings:
* **Partner Nickname**: Nickname for the partner. To edit the nickname, go to **Partner List**.
* **DATA TYPE & IDENTIFIER PRIORITY**: Select the events from the available options to export. For more information, refer to [Export Details](doc:amplitude-export#export-details)
.
* **FREQUENCY**: Select from one of the following options:
* **One time**: A single export for the selected export type. You can export data up to the last 60 days. You create an export for a specific day, date range, previous month, current month, and more.
* **Recurring**: Set up a recurring export that exports all the new events/user profiles captured in the last window. You can export as frequently as every 4 hours and up to once every 24 hours.
* **Date to export data**: The export starts at 12:00 a.m. on the specified date by default.
4. Click **Export**. The **Export to Amplitude** window closes, and the following message displays at the top of the _Exports_ page:

Amplitude Export Initiated
CleverTap processes the export, and you can now see the newly created export for Amplitude.

New Amplitude Export Displays on Export Page
The status for each export is displayed as **PENDING** as soon as the export is created. The status changes to **RUNNING** after the processing starts. In the case of **One time** export, the status changes to **DONE** when the export is complete.
Stop Export
[](https://docs.clevertap.com/docs/amplitude-export#stop-export)
================================================================================
You can also stop the export that you have created. Hover over the export. The **Stop** button appears. Click the **Stop**  button for the export request you want to stop.

Stop Amplitude Export
The **Stop export?** window appears. Click **Stop** to confirm your action.

You now return to the **Exports** page, and the _Amplitude data export stopped_ message displays at the top. The status of the export is displayed as **STOPPED**.

Amplitude Export Stopped
Edit an Export
[](https://docs.clevertap.com/docs/amplitude-export#edit-an-export)
======================================================================================
You might need to modify an export to meet specific business requirements or while waiting for the next run. This section describes editing a Live Data Streaming and Recurring export in the **RUNNING** and **PENDING** (awaiting next run) state.
> 📘
>
> ###
>
> Points to Remember
>
> [](https://docs.clevertap.com/docs/amplitude-export#points-to-remember)
>
> * In case of running exports, the new changes will apply to the next run.
> * You cannot edit a One-time export, regardless its status (RUNNING, PENDING, DONE, or STOPPED).
> * You cannot change the export from User Profile to Event and vice-versa.
> * You cannot modify exports marked as **DONE** or **STOPPED**.
> * Export changes for Live DataStreaming take 10-15 minutes to take effect.
To edit an export:
1. On the CleverTap dashboard, go to **Partners** > **Exports**.
2. Hover over the required export. The **View**, **Edit**, and the **Stop** buttons appear.

Click the Edit Export Icon
3. Click the **Edit** button. The **Export to Amplitude** section appears.

Edit the Export
4. Edit the export details and click **Update export**.
> 📘
>
> ###
>
> Modify Export Frequency
>
> [](https://docs.clevertap.com/docs/amplitude-export#modify-export-frequency)
>
> When you change the export frequency, the export cycle resets and begins at midnight (12:00 a.m.) on the specified date following the new schedule.
>
> For example, if the last export occurred at 4:00 p.m., the next export cycle will start at midnight (12:00 a.m.) and continue according to the new 12-hour schedule thereafter.
Filter Exports
[](https://docs.clevertap.com/docs/amplitude-export#filter-exports)
======================================================================================
This section describes the different ways you can filter exports.
Filter by Export Details
[](https://docs.clevertap.com/docs/amplitude-export#filter-by-export-details)
----------------------------------------------------------------------------------------------------------
To filter by export details:
1. Click the **Filter** button at the top right corner.
2. You can filter exports by **Partner**, **Type**, **Format**, **Status**, or **Frequency**.
3. To clear the filter, click **Reset all**.

Filter Exports
Filter Exports by Date Range
[](https://docs.clevertap.com/docs/amplitude-export#filter-exports-by-date-range)
------------------------------------------------------------------------------------------------------------------
You can also filter the exports based on the export date.
To filter exports by export date range:
1. Click the **Filter** button at the top right corner.
2. Click the **Exported on** button.
The **Calendar** widget appears.

Calendar Widget
1. Choose the custom date range and click **Apply**.
The exports are filtered accordingly.
Filter Exports by Pagination
[](https://docs.clevertap.com/docs/amplitude-export#filter-exports-by-pagination)
------------------------------------------------------------------------------------------------------------------
To choose how many export items you view per page:
1. Use the **Items per page** drop-down at the bottom of the **Exports** page.
2. Options include 10, 20, 30, or 40. By default, the **Exports** page shows 20 exports.
Export Details
[](https://docs.clevertap.com/docs/amplitude-export#export-details)
======================================================================================
Select from one of the following options to export events from CleverTap to the Amplitude dashboard:
* [All events](doc:amplitude-export#all-events)
* [Selected events](doc:amplitude-export#selected-events)
* [Engagement events](doc:amplitude-export#engagement-events)
All events
[](https://docs.clevertap.com/docs/amplitude-export#all-events)
------------------------------------------------------------------------------
Export data for all defined events, including System and Custom events.
Selected events
[](https://docs.clevertap.com/docs/amplitude-export#selected-events)
----------------------------------------------------------------------------------------
Select the specific events you want to export from CleverTap to the Amplitude dashboard.
Engagement Events
[](https://docs.clevertap.com/docs/amplitude-export#engagement-events)
--------------------------------------------------------------------------------------------
Select this option to export the following engagement events:
| CleverTap Event Name | Event Description |
| --- | --- |
| Notification Sent | The event is tracked when the notification is successfully sent from CleverTap to the communication channel you select for your campaign. |
| Notification Viewed | This event is tracked when a user views an email, in-app notification, or a web notification sent from CleverTap. |
| Notification Clicked | This event is tracked only when a user clicks on a notification sent via CleverTap. It is recorded when a user clicks on a mobile push, in-app, email, web popup, or web push message sent via the CleverTap dashboard or through the campaign API. |
| Push Impressions | This event is tracked when a Push notification sent from CleverTap is delivered on a user’s device. |
| Notification Replied | This event is tracked when a user replies to a WhatsApp message. |
| Push Unregistered | The event is raised when the user unregisters to receive Push Notifications. |
| Control Group | The event is raised when a campaign is activated with a Control group. |
| Channel Unsubscribed | The event is raised when a user unsubscribes to receive further communication through a channel. |
| Reachable By | * The debug event is raised when the user becomes reachable by a communication channel such as SMS, email, or mobile push, or when there are changes to the existing communication channel.
* Tracked for a profile when:
* Push token is added/changed.
* Email ID is added/changed.
* Phone number is added/changed. |
| Push Impressions | This event is tracked when a push notification sent from CleverTap is delivered on a user’s device. The funnels on the Push campaign statistics page reflect the count for this event. |
| Notification Delivered | This event is recorded when communication is delivered to the user's device |
| AB Experiment Rendered | This event is recorded when communication is delivered to the user who is part of an A/B experiment campaign |
| AB Experiment Stopped | This event is recorded when AB experiment is stopped. |
| AB Experiment Rolled Out | This event is recorded when AB experiment is started |
| Geocluster Entered | This event is recorded to mark when a device enters a geofence. |
| Geocluster Exited | This event is recorded to mark when a device exits a geofence. |
| Reply Sent | This event is recorded when an agent (CleverTap user) replies to a message from the end-user. |
| App Uninstalled | This event is recorded when a user uninstalls your application. |
| Webhook Delivered | This event is recorded when a Webhook campaign is delivered successfully |
| State Transitioned | This event is recorded for Lifecycle Optimizer when a user transitions from one stage to another. |
| UTM Visited | This event is tracked when a user clicks on a link from a marketing campaign that has a UTM parameter defined on it. |
FAQs
[](https://docs.clevertap.com/docs/amplitude-export#faqs)
==================================================================
###
Q. Do CleverTap data exports allow special characters?
[](https://docs.clevertap.com/docs/amplitude-export#q-do-clevertap-data-exports-allow-special-characters)
A. Yes, CleverTap data exports allow the following special characters:
* CleverTap's export system supports Unicode (UTF-8) character encoding. It facilitates the accurate representation of text in various languages and scripts. For example, Indian regional languages, Arabic, Korean, Russian, Japanese, Chinese, Spanish, Greek, Indonesian, etc.
* It replaces the following characters with a hyphen to avoid issues in output file generation:
* Whitespace
* Tab
* Slash
* null (\\0)
* Control characters are replaced with ?. For more information, refer to [Control Character](https://en.wikipedia.org/wiki/Control_character)
.
* Supports emoji characters; however, some emojis (UTF-16) may not render properly.
Updated about 2 months ago
* * *
Ask AI
---
# Weather API
Overview
[](https://docs.clevertap.com/docs/weather-api#overview)
=====================================================================
[WeatherAPI](https://www.weatherapi.com/)
provides real-time and forecasted weather data for any global location. By integrating WeatherAPI with CleverTap, you can:
* **Trigger contextual campaigns** based on local weather
* **Deliver personalized messages** such as umbrella offers on rainy days or sunscreen promos on sunny days
* **Drive higher engagement** through dynamic targeting powered by weather conditions
This document shows you how to configure WeatherAPI in CleverTap using [Linked Content](https://docs.clevertap.com/docs/linked-content)
and use it in a Push Notification campaign.
Prerequisites for Integration
[](https://docs.clevertap.com/docs/weather-api#prerequisites-for-integration)
===============================================================================================================
Before integrating WeatherAPI with CleverTap, check the following:
* An active WeatherAPI account
* Your WeatherAPI Key (from the WeatherAPI dashboard)
* Access to the CleverTap Dashboard with admin permissions
Integrate WeatherAPI with CleverTap
[](https://docs.clevertap.com/docs/weather-api#integrate-weatherapi-with-clevertap)
===========================================================================================================================
The integration involves the following three important steps:
1. [Generate WeatherAPI Key](doc:weather-api#generate-weatherapi-key)
2. [Configure Linked Content in CleverTap](doc:weather-api#configure-linked-content-in-clevertap)
3. [Configure Personalized CleverTap Campaign](doc:weather-api#configure-personalized-clevertap-campaign)
Generate WeatherAPI Key
[](https://docs.clevertap.com/docs/weather-api#generate-weatherapi-key)
---------------------------------------------------------------------------------------------------
An API key is required to authenticate requests to WeatherAPI. To retrieve the key, perform the following steps:
1. Log in to your [WeatherAPI dashboard](https://www.weatherapi.com/login.aspx)
.
2. Go to _My Account_ > _API Key_.
3. Copy the key. You’ll use this to configure Linked Content in CleverTap.

Weather API Key
Configure Linked Content in CleverTap
[](https://docs.clevertap.com/docs/weather-api#configure-linked-content-in-clevertap)
-------------------------------------------------------------------------------------------------------------------------------
Connect WeatherAPI with CleverTap to fetch weather data dynamically for each user.
1. Go to _Settings_ > _Setup_ > _Linked Content_ on the CleverTap dashboard.
2. Click **\+ Linked Content**.
3. Fill in the following values:
| Field | Value |
| --- | --- |
| Name | `Weather Lookup` |
| Method | `GET` |
| Destination URL | `https://api.weatherapi.com/v1/current.json?key=&q={{city}}` |
Replace `` with your actual WeatherAPI key. The `{{city}}` parameter will be dynamically mapped from each user's profile property.
4. Click **Test** to preview the API response. You should see an output in JSON, such as:
JSON
{
"location": {
"name": "Paris",
"country": "France"
},
"current": {
"condition": {
"text": "Sunny"
},
"temp_c": 25.0
}
}
5. Click **Autofill Objects with Response** to map the JSON fields.
6. Click **Test and Save** to complete the setup.

Configure Linked Content in CleverTap
Configure Personalized CleverTap Campaign
[](https://docs.clevertap.com/docs/weather-api#configure-personalized-clevertap-campaign)
---------------------------------------------------------------------------------------------------------------------------------------
Use the configured Linked Content inside a push notification campaign to dynamically personalize the message based on each user’s local weather. To do so, perform the following steps:
1. Go to _Campaigns_, click **\+ Campaign** and select _Push Notifications_ as a messaging channel.
2. Configure the _Who_, _When_, and _Where_ sections based on qualifying requirements.
3. In the _What_ section, click **Personalization** (top-right corner).
4. Select the link content configured in the previous step [Configure Linked Content in CleverTap](doc:weather-api#configure-linked-content-in-clevertap)
.
5. Map the `city` parameter in the Weather API to the appropriate user property in CleverTap (for example, `{{@Profile.city | default: 'Mumbai'}}`). and click **Apply**.

Personalization Setup
6. Personalize the _Title_ or _Message_ field using a Liquid snippet. Following is an example where the conditions defined in the Liquid snippet use the weather API to determine which message to send based on the current weather at the user's location.
Liquid
{% if Linked.WeatherLookup.current.condition.text == "Sunny" %}
🌞 Get 15% off on Sunscreens!
{% elsif Linked.WeatherLookup.current.condition.text == "Rain" %}
🌧️ Special deal on Umbrellas just for you!
{% else %}
🌤️ Enjoy shopping with us today!
{% endif %}
Messages can be customized further for weather types such as Cloudy, Storm, and so on. To learn more about Liquid syntax and available personalization tags, refer to [Liquid Tags in CleverTap](doc:personalize-message-all#liquid-tags)
.

7. Click **Preview and Test** to validate output against a test profile.
The following is a personalized notification sample based on the user’s local weather data, fetched dynamically using WeatherAPI.

Push Notification
8. After confirming accurate rendering, click **Publish** to launch the campaign.
Once live, the campaign will automatically personalize notifications based on each user’s real-time weather data.
Updated about 2 months ago
* * *
Ask AI
---
# Amplitude Event Streaming
Overview
[](https://docs.clevertap.com/docs/amplitude-event-streaming#overview)
===================================================================================
[Amplitude](https://amplitude.com/)
is an analytics and business intelligence platform that helps make informed decisions for targeting users. This integration allows you to import events from Amplitude into CleverTap to enhance engagement.
Key Benefits
[](https://docs.clevertap.com/docs/amplitude-event-streaming#key-benefits)
===========================================================================================
Event Streaming from Amplitude to CleverTap provides the following advantages:
* **Seamless Integration**: Allows you to easily integrate in just a few steps. Once the integration is complete, data flows seamlessly from Amplitude to CleverTap in near real-time.
* **Real-Time Insights**: Allows you to access real-time insights into user behavior. This includes tracking the pages users visit, the features they engage with, and how they interact with the app.
* **Personalized Experiences**: Allows you to craft personalized user experiences that are relevant and engaging. For example, you can send information about a user's location or language preference and use this data to tailor their messaging or content to specific needs.
* **Conversion Tracking**: Allows you to effectively measure the performance of the marketing campaigns and track user behavior throughout the funnel. For example, you can track the number of users who, after receiving a specific message from CleverTap, went on to make a purchase or complete another desired action.
Keys Points to Remember
[](https://docs.clevertap.com/docs/amplitude-event-streaming#keys-points-to-remember)
=================================================================================================================
Remember the following when you send events to CleverTap:
* Relevant limits for CleverTap events are:
* CleverTap does not impose any hard limits on quantity or velocity; however, requests sent too quickly return 429 responses. Amplitude handles these automatically.
* The requests must be smaller than 2MB.
* Amplitude sends selected event properties and user properties with the event.
Prerequisites
[](https://docs.clevertap.com/docs/amplitude-event-streaming#prerequisites)
=============================================================================================
* Ensure you enable this integration for every Amplitude project where you intend to utilize it.
* Ensure you have the CleverTap account.
Configure Amplitude for Event Streaming
[](https://docs.clevertap.com/docs/amplitude-event-streaming#configure-amplitude-for-event-streaming)
=================================================================================================================================================
To configure the Amplitude dashboard for Event Streaming:
1. In **Amplitude**, go to _Data_ > _Connections_ > _Catalog_.
2. Go to _Destinations_ > Event _Streaming_ and select **CleverTap**.

Select Event Streaming
3. Enter a name in the _Sync Name_ field and click **Create Sync**.

Enter a Sync Name
The _Destination Settings_ section appears.

Destination Settings
4. Enable the **Status** toggle.
5. Enter the CleverTap project details. You can get the details by navigating to _Settings_ > _Project_ from the dashboard:
* **[CleverTap Account Id](doc:amplitude-cohort-import#project-id)
**: Copy and paste the _Project ID_ from the CleverTap dashboard.
* **[CleverTap Passcode](doc:amplitude-cohort-import#passcode)
**: Copy and paste the _Passcode_ from the CleverTap dashboard.
* **[Region](doc:amplitude-cohort-import#region)
**: Enter one of the following regions: aps3, eu1, in1, sg1, mec1, or us1.
6. Under **Mappings**, from the **Amplitude Property** dropdown list, select an Amplitude user property that corresponds to your CleverTap identity.
7. Under **Send Events**, enable the **Events are sent to CleverTap** toggle. It allows you to stream events from Amplitude to CleverTap. It automatically forwards events to CleverTap when ingested in Amplitude. Events are not sent on a schedule or on demand using this integration.
8. In **Select and filter events**, choose only the events you want to send to CleverTap. CleverTap does not support [Transformed events](https://help.amplitude.com/hc/en-us/articles/5913315221915-Transformations-Retroactively-modify-your-event-data-structure#:~:text=Amplitude%20Data%27s%20transformations%20feature%20allows,them%20to%20all%20historical%20data.)
.
9. (Optional) Under **Send Users**, enable the **User updates are not sent to CleverTap** toggle to send over users and their properties in real-time whenever a user is created, or the user property is updated in Amplitude.
10. Click **Save**.
View Amplitude Events on the CleverTap Dashboard
[](https://docs.clevertap.com/docs/amplitude-event-streaming#view-amplitude-events-on-the-clevertap-dashboard)
===================================================================================================================================================================
Once the Amplitude events are streamed into CleverTap, they can be viewed on the CleverTap dashboard.
To view the Amplitude events on the CleverTap dashboard:
1. Go to _Analytics_ > _Events_.
2. Under the _System Events_ drop-down, select the desired event. For example, _Signup_.
3. Click **+Filter by**.
The _CT Source_ property value distinguishes events arriving from various sources into CleverTap. In this example, the CT Source value is set to _Amplitude_ for the _Signup_ event.

Filter Amplitude Events on CleverTap Dashboard
5. Click **View details**.
> 📘
>
> ###
>
> Supported Messaging Channels
>
> [](https://docs.clevertap.com/docs/amplitude-event-streaming#supported-messaging-channels)
>
> Amplitude events cannot be used in the following messaging channels:
>
> * In-App Messages
> * Web Popup
> * Web Exit Intent
> * App Inbox
> * Native Display
Updated about 2 months ago
* * *
Ask AI
---
# Generic Attribution Partner
Overview
[](https://docs.clevertap.com/docs/generic-attribution-partner#overview)
=====================================================================================
CleverTap partners with various attribution providers that help customers to know where their users are coming from and how they should engage with them. CleverTap allows attribution partners to push the following events:
* Organic attribution events
* Inorganic install attribution events, and
* Custom events
Acceptance Criteria
[](https://docs.clevertap.com/docs/generic-attribution-partner#acceptance-criteria)
===========================================================================================================
Any attribution partner can integrate with our open APIs, but they must perform the following steps to be visible on the CleverTap dashboard:
1. Perform the server-side integration at their end.
2. After integrating, reach out to us at [\[email protected\]](https://docs.clevertap.com/cdn-cgi/l/email-protection#177e796372706576637e78796457747b726172656376673974787a)
for the following:
* Share the name of customers interested in the integration
* Get yourself whitelisted on the CleverTap dashboard.
* Share details about the type of data to be sent to CleverTap: Organic install, Inorganic install, or Custom events.
3. [Create a document](https://docs.google.com/document/d/1FNLq4Wxf9kTwT3A_My4IveonnCiG0y5LWMUX8RklFZg/edit?usp=sharing)
and share it with CleverTap team in a .md format. Also, provide your company logo in the SVG format with a transparent background. The size of the logo must be _40 x 40 px_.
After CleverTap tests the integration, the partner is then listed on our _Settings_ > _Partners_ page.
Prerequisites for Integration
[](https://docs.clevertap.com/docs/generic-attribution-partner#prerequisites-for-integration)
===============================================================================================================================
The following are the prerequisites for integrating with CleverTap:
* Partner dashboard must accept the following authentication parameters: Project Id, Project Token, Project Passcode, and CleverTap Region.
* Client SDK must capture CleverTap identifiers.
* Ability to call different CleverTap endpoints based on the CleverTap credential configuration.
* Ability to differentiate between Organic and Inorganic install attribution events.
Integrate with CleverTap
[](https://docs.clevertap.com/docs/generic-attribution-partner#integrate-with-clevertap)
=====================================================================================================================
Workflow
[](https://docs.clevertap.com/docs/generic-attribution-partner#workflow)
-------------------------------------------------------------------------------------
This figure explains the exact process of how the information flows from the application to the CleverTap dashboard:

Get CleverTap ID
[](https://docs.clevertap.com/docs/generic-attribution-partner#get-clevertap-id)
-----------------------------------------------------------------------------------------------------
CleverTap uses the Device Identifier key-value parameter to attribute the partner attribution data to the right user. After integrating the CleverTap SDK, the value for the Device Identifier becomes available. If the `device_idetifier` is empty, CleverTap does not process the data.
###
For Android
[](https://docs.clevertap.com/docs/generic-attribution-partner#for-android)
Add the following code to your Android app code:
* **For SDK version 4.2.0 and above**
Java
cleverTapInstance.getCleverTapID(new OnInitCleverTapIDListener() {
@Override
public void onInitCleverTapID(final String cleverTapID) {
// Callback on main thread
;
}
});
* **For SDK version 4.1.1 and below**
Java
String attributionID = cleverTapInstance.getCleverTapAttributionIdentifier();
###
For iOS
[](https://docs.clevertap.com/docs/generic-attribution-partner#for-ios)
Add the following code to your iOS app code:
Java
[CleverTap autoIntegrate];
[[PartnerSDK sharedTracker] setCustomerUserID:[[CleverTap sharedInstance] profileGetCleverTapAttributionIdentifier]];
###
For React-Native
[](https://docs.clevertap.com/docs/generic-attribution-partner#for-react-native)
Add the following code to your React Native app code:
Java
CleverTap.profileGetCleverTapAttributionIdentifier((err, res) => {
const userId = res;
});
API Endpoint Format for Capturing Inorganic, Organic, and Custom Events
[](https://docs.clevertap.com/docs/generic-attribution-partner#api-endpoint-format-for-capturing-inorganic-organic-and-custom-events)
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
To push data from your server to CleverTap, use the following API endpoint format:
**API Endpoint Format**
Text
https://{REGION.}{ENDPOINT}/attribution?partner_name={PARTNERNAME}&event_type={TYPEOFDATA}×tamp={EPOCH VALUE}&utm_source={UTMSOURCE}&utm_medium={UTMMEDIUM}&utm_campaign={UTMCAMPAIGN}&device_identifier={CLEVERTAPID}&account_id={PROJECTID}&account_token={PROJECTTOKEN}&account_passcode={PASSCODE}&platform={Android/iOS}
The following table provides information about the API endpoint parameters:
| Parameter | Description | Mandatory |
| --- | --- | --- |
| Campaign Source (utm\_source) | Used to identify the source of your traffic. This could be a website name, search engine, newsletter name, or social network.
For example, utm\_source=google. | * For Organic and Inorganic Install: Yes
* For Custom Event: No |
| Campaign Medium (utm\_medium) | Used to identify the medium used to share and access your link. This could be email, social, cost per click (cpc), or any other such method.
For example, utm\_medium=cpc. | * For Organic and Inorganic Install: Yes
* For Custom Event: No |
| Campaign Name (utm\_campaign) | Used to identify a campaign or promotion tied to your link. This could be a product name, type of sale, contest name, etc.
For example, utm\_campaign=summer-sale. | * For Organic and Inorganic Install: Yes
* For Custom Event: No |
| Device Identifier | Helps to identify the device to which you must map the attribution data, | Yes |
| Event Type | Indicates the type of data received:
* Organic Install
* Inorganic Install
* Custom Event | Yes |
| Partner Name | * Indicates the name of the attribution partner.
* Partner Name. must be whitelisted. If the Partner Name is not whitelisted, CleverTap drops the request and sends out the error to the partner. | Yes |
| Account Id, Account Token, and Account Passcode | Helps validate customer account before capturing the data | Yes |
| Platform | Indicates the application platform. For example, Android, iOS, React Native, etc. | Yes |
| Timestamp | * Indicates the time when event occurred.
* Must be in EPOCH format.
* If you do not send the timestamp, CleverTap considers the processing time as the timestamp for that event. | No |
> 📘
>
> ###
>
> For CleverTap to accept the attribution data, it is mandatory to provide at least one of the following parameters: Campaign Source (utm\_source), Campaign Medium (utm\_medium), or Campaign Name (utm\_campaign).
>
> [](https://docs.clevertap.com/docs/generic-attribution-partner#for-clevertap-to-accept-the-attribution-data-it-is-mandatory-to-provide-at-least-one-of-the-following-parameters-campaign-source-utm_source-campaign-medium-utm_medium-or-campaign-name-utm_campaign)
> 📘
>
> ###
>
> Additional API Endpoint Parameter
>
> [](https://docs.clevertap.com/docs/generic-attribution-partner#additional-api-endpoint-parameter)
>
> Apart from the parameters listed in the above table, CleverTap processes the additional parameters without any validation.
* **API Endpoint for Organic Install**
The following is the sample API endpoint for the organic install event:
Text
https://api.clevertap.com/attribution?partner_name=airbridge&event_type=organic_install&utm_source=utm_google&utm_medium=gd&utm_campaign=adir&device_identifier=__android11235&account_id=W6W-797-865Z&account_token=aca-060&account_passcode=1f81b71b91d84885a898911ab8722f34&platform=android×tamp=1660717763
* **API Endpoint for Inorganic Install**
The following is the sample API endpoint for the inorganic install event:
Text
https://api.clevertap.com/attribution?partner_name=airbirdge&event_type=inorganic_install&utm_source=utm_google&utm_medium=gd&utm_campaign=adir&device_identifier=__android11235&account_id=W6W-797-865Z&account_token=aca-060&account_passcode=1f81b71b91d84885a898911ab8722f34&platform=android×tamp=1660717763
* **API Endpoint for Custom Event**
The following is the sample API endpoint for the custom event:
Text
https://api.clevertap.com/attribution?partner_name=airbirdge&event_type=Add_to_cart×tamp=1656317838&device_identifier=__g1234abc&items=shoes&price=12.00&account_id=W6W-797-865Z&account_token=aca-060&account_passcode=1f81b71b91d84885a898911ab8722f34&platform=android×tamp=1660717763
###
Region Mapping for API Endpoints
[](https://docs.clevertap.com/docs/generic-attribution-partner#region-mapping-for-api-endpoints)
This section provides a region-wise mapping of API endpoints.
| Region (Data Center) | API Endpoint | URL |
| --- | --- | --- |
| EU (Europe) This is the default data center. | `https://api.clevertap.com/` | `https://api.clevertap.com/attribution?partner_name=airbirdge&event_type=custom&device_identifier={CLEVERTAPID}×tamp=1656317838&platform=android&android_id=&city=Mumbai&match_type=gp_referrer` |
| IN (India) | `https://in1.api.clevertap.com/` | `https://in1.api.clevertap.com/attribution?partner_name=airbirdge&event_type=custom&device_identifier={CLEVERTAPID}×tamp=1656317838&platform=android&android_id=&city=Mumbai&match_type=gp_referrer` |
| US (U.S.A) | `https://us1.api.clevertap.com/` | `https://us1.api.clevertap.com/attribution?partner_name=airbirdge×tamp=1656317838&event_type=custom&device_identifier={CLEVERTAPID}&platform=android&android_id=&city=Mumbai&match_type=gp_referrer` |
| SG (Singapore) | `https://sg1.api.clevertap.com/` | `https://sg1.api.clevertap.com/attribution?partner_name=airbirdge&event_type=custom&device_identifier={CLEVERTAPID}×tamp=1656317838&platform=android&android_id=&city=Mumbai&match_type=gp_referrer` |
| SK (South Korea) | `https://sk1.api.clevertap.com/` | `https://sk1.api.clevertap.com/attribution?partner_name=airbirdge&event_type=custom×tamp=1656317838&device_identifier={CLEVERTAPID}&platform=android&android_id=&city=Mumbai&match_type=gp_referrer` |
| Indonesia | `https://aps3.api.clevertap.com` | `https://aps3.api.clevertap.com/attribution?partner_name=airbirdge&event_type=custom×tamp=1656317838&device_identifier={CLEVERTAPID}&platform=android&android_id=&city=Mumbai&match_type=gp_referrer` |
| Middle East (UAE) | `https://mec1.api.clevertap.com` | `https://mec1.api.clevertap.com/attribution?partner_name=airbirdge&event_type=custom×tamp=1656317838&device_identifier={CLEVERTAPID}&platform=android&android_id=&city=Mumbai&match_type=gp_referrer` |
Callback Error Codes
[](https://docs.clevertap.com/docs/generic-attribution-partner#callback-error-codes)
=============================================================================================================
The following table lists down the callback error codes:
| Error Code | Description |
| --- | --- |
| 200 | Ok - Success
Indicates that the data was successfully sent to CleverTap. |
| 401 | Authorization error |
| 400 | Bad request.
* Case 1: {Mandatory Field} is missing
* Case 2: Partner name not whitelisted. Connect with the product team to get it whitelisted. |
| 5XX | Service Unavailable. Please retry later. |
**Sample Response**
JSON
{
"status": "fail",
"error": "Invalid Account Info",
"code": 401
}
JSON
{
"status": "fail",
"error": "utm_source is missing",
"code": 400
}
FAQs
[](https://docs.clevertap.com/docs/generic-attribution-partner#faqs)
=============================================================================
####
Q. What attribution data is accepted by CleverTap?
[](https://docs.clevertap.com/docs/generic-attribution-partner#q-what-attribution-data-is-accepted-by-clevertap)
Ans: CleverTap accepts the following three types of data from our attribution partners:
* Inorganic Install Events
* Organic Install Events
* Custom Events
For more information about these events, refer to [Types of Data](doc:attribution#types-of-data)
. CleverTap accepts Inorganic install events from Attribution partners by default. Organic Install and Custom events must be enabled from the CleverTap dashboard by navigating to _Settings_ > _Partners_ page.
####
Q. Where can I find the CleverTap project details?
[](https://docs.clevertap.com/docs/generic-attribution-partner#q-where-can-i-find-the-clevertap-project-details)
Ans: CleverTap Project ID, Token, Passcode, and Region is available under _Settings_ > _Project_ on the CleverTap dashboard

####
Q. Is there any validation API for validating credentials?
[](https://docs.clevertap.com/docs/generic-attribution-partner#q-is-there-any-validation-api-for-validating-credentials)
Ans: No. Currently, CleverTap does not have an API for validating credentials. So, we recommend trimming the spaces before saving the credentials on the partner dashboard.
####
Q. Any recommendation for integrating with CleverTap?
[](https://docs.clevertap.com/docs/generic-attribution-partner#q-any-recommendation-for-integrating-with-clevertap)
Ans: Yes, we recommend that for Project ID, Token & Passcode, it should be a text input field accepting alphanumeric characters. For Region, we recommend a dropdown for input with the options EU, US, IN, SG & SK, defaulting to EU.
####
Q. Is batching supported for API?
[](https://docs.clevertap.com/docs/generic-attribution-partner#q-is-batching-supported-for-api)
Ans: No.
####
Q. What are the different errors that we can encounter when performing generic partner attribution integration?
[](https://docs.clevertap.com/docs/generic-attribution-partner#q-what-are-the-different-errors-that-we-can-encounter-when-performing-generic-partner-attribution-integration)
Ans: The following are the different errors that we can experience when performing this integration:
* **Inorganic Installs**: Retry with an exponential back-off in case of 500X errors.
* **Organic Install**: Retry with an exponential back-off in case of 500X errors.
* **Custom**: Retry with an exponential back-off in case of 500X errors.
* **Compulsory parameter missing or Empty**: It throws HTTP 400 and does not retry.
* **Authorization error**: It throws HTTP 403 and does not retry.
> 📘
>
> ###
>
> Error 500X for More than 10 Minutes
>
> [](https://docs.clevertap.com/docs/generic-attribution-partner#error-500x-for-more-than-10-minutes)
>
> Write to [\[email protected\]](https://docs.clevertap.com/cdn-cgi/l/email-protection#1a73746e7f7d687b6e737574695a79767f6c7f686e7b6a34797577)
> if you observe a 500X error for more than 10 minutes or 99.5% SLA ([CleverTap System Status](https://status.clevertap.com/)
> ).
####
Q. When does the response timeout?
[](https://docs.clevertap.com/docs/generic-attribution-partner#q-when-does-the-response-timeout)
Ans: 60 seconds.
####
Q. How can I confirm that CleverTap is recording attribution events?
[](https://docs.clevertap.com/docs/generic-attribution-partner#q-how-can-i-confirm-that-clevertap-is-recording-attribution-events)
Ans: For organic and inorganic events, CleverTap captures the data under the _UTM Visited_ event. You can filter data by _UTM Visited_ by navigating to _Analytics_ > _Events_ from the dashboard.

For Custom events, CleverTap captures the data by adding a prefix to the event name. For example, if the partner name is _attribution partner_ and the custom event is _Checkout_, we save it as _AP\_Checkout_.
Updated about 2 months ago
* * *
Ask AI
---
# Cloud Storage
* [Amazon EventBridge](doc:amazon-eventbridge)
* [AWS S3](doc:data-export-to-aws-s3)
* [Google Cloud Platform](doc:data-export-to-gcp)
* [Microsoft Azure](https://docs.clevertap.com/docs/microsoft-azure)
Updated 23 days ago
* * *
Ask AI
---
# Microsoft Azure
Overview
[](https://docs.clevertap.com/docs/microsoft-azure#overview)
=========================================================================
[Microsoft Azure](https://azure.microsoft.com/en-in/)
, a Microsoft cloud computing platform, offers access to, management of, and development of applications and services through global data centers. The Microsoft Azure data export feature provides the capability to bulk export your CleverTap event data to Azure Blob Storage. You can use this for analysis in BI tools or storage in your data warehouse for analysis in the future.
> 📘
>
> ###
>
> Feature Availability
>
> [](https://docs.clevertap.com/docs/microsoft-azure#feature-availability)
>
> This capability is a part of the _Enterprise_, _Advanced_, and _Cutting Edge_ plan. To activate this for your account, contact your Account Manager.
Setup
[](https://docs.clevertap.com/docs/microsoft-azure#setup)
===================================================================
The following are the two major steps involved in enabling this feature for your account:
1. [Create a Microsoft Azure Storage Account](doc:microsoft-azure#create-a-microsoft-azure-storage-account)
.
2. [Create a Blob Service Container](doc:microsoft-azure#create-a-blob-service-container)
.
3. [Generate a SAS Token](doc:microsoft-azure#generate-a-sas-token)
.
4. [Configure Microsoft Azure Blob Container details on the CleverTap Dashboard](doc:microsoft-azure#configure-microsoft-azure-blob-container-on-clevertap-dashboard)
.
> 📘
>
> ###
>
> Data Export
>
> [](https://docs.clevertap.com/docs/microsoft-azure#data-export)
>
> Once you have set up both dashboards, you can configure export from the CleverTap dashboard. For more information, refer to the following:
>
> * [Data Exports](doc:data-exports)
> for Legacy Profile and Event Export flow
> * [Profile Exports](doc:profile-exports)
> for Enhanced Profile Export flow
Create a Microsoft Azure Storage Account
[](https://docs.clevertap.com/docs/microsoft-azure#create-a-microsoft-azure-storage-account)
-----------------------------------------------------------------------------------------------------------------------------------------
To create a Microsoft Azure Storage Account:
1. Log in to your Microsoft Azure account and select _Storage Accounts_ from the left menu.
2. Click **\+ Create** to create a new storage account.

Select Storage Account from Left Manu
3. Enter the _Storage account name_, and do not modify the default settings.

Enter Storage Account Name
4. Click **Review** and click **Create**. The following screen displays once the storage account is created:

Storage Account Created Successfully
The storage account you created now appears under the _Storage accounts_ page.
Create a Blob Service Container
[](https://docs.clevertap.com/docs/microsoft-azure#create-a-blob-service-container)
-----------------------------------------------------------------------------------------------------------------------
To create a Blob Service Container:
1. Navigate to the _Blobs_ menu under the _Blob Service_ section of your storage account.
2. Create **\+ Container** to create a Blob Service Container within the storage account you created in the previous section.

Create a Blob Storage Container
3. Enter the _Name_ of your Blob Service Container, and do not modify the other default settings.
4. Click **Create**.

Generate a SAS Token
[](https://docs.clevertap.com/docs/microsoft-azure#generate-a-sas-token)
-------------------------------------------------------------------------------------------------
A Shared Access Signature (SAS) Token is a Uniform Resource Identifier (URI) that provides limited access to an Azure Storage container. It is used when you want to authorize access to storage account assets within a defined time frame while keeping your storage account key confidential. For more information about SAS, refer to [Delegate access by using a SAS Token](https://learn.microsoft.com/en-gb/rest/api/storageservices/delegate-access-with-shared-access-signature)
.
To generate a SAS Token:
1. Select the _Container_ and click the  icon.
2. Select _Generate SAS_ from the dropdown list. The _Generate SAS_ window opens on the right side of the screen.

Generate SAS Popup
3. Enter the following details:
| Field | Description |
| --- | --- |
| Signing method | Select **Account key** from the Signing method list. The Signing method provides secure delegated access to resources in your storage account. For more information, refer to [Types of shared access signatures](https://learn.microsoft.com/en-us/azure/storage/common/storage-sas-overview#account-sas)
. |
| Signing key | Select any one key from the following options:
* Key 1
* Key 2
. |
| Stored access policy | Select the _Stored access policy_ you want to define for your storage. When defining a policy, you need to define the following: start time, expiry time, and permissions for the signature. To export data from CleverTap to Microsoft Azure, you need Read and Write permissions for the container.
When defined on a container, it grants permissions to the container itself or to the blobs that it contains. For more information, refer to [Define a stored access policy](https://learn.microsoft.com/en-us/rest/api/storageservices/define-stored-access-policy)
. |
| Permissions | This is a mandatory field. Select the permission for the request made with the service SAS. To export data from CleverTap to Microsoft Azure, you need Read and Write permissions for the container. If you have already assigned the required permissions to your stored access policy, the same permissions will be assigned to the request made with the service SAS. For more information, refer to [Account SAS Permissions by Operation](https://learn.microsoft.com/en-gb/rest/api/storageservices/create-account-sas#account-sas-permissions-by-operation)
. |
| Start and expiry date/time | Indicates the start and end date/time during which the blob SAS is valid. CleverTap recommends setting the expiration time to the maximum duration available. This is because you cannot export any data to the container if the expiration date has passed. For more information, refer to [Configure a SAS Expiration Policy](https://learn.microsoft.com/en-us/azure/storage/common/sas-expiration-policy?tabs=azure-portal#how-to-configure-a-sas-expiration-policy)
. |
| Allowed IP address | CleverTap recommends not adding any IP address range in this field. It indicates that Microsoft will accept export requests only from the IP address or range of IP addresses defined under this field. If you still want to add the IP address(es), you must whitelist the IP addresses listed under [CleverTap IP Ranges](https://developer.clevertap.com/docs/clevertap-ip-ranges)
. |
| Allowed protocols | Allowing requests over HTTPS only is recommended. This field indicates the protocols permitted for a request made with the service SAS. |
4. Click **Generate SAS token and URL**.
Copy the generated SAS token and URL, as you cannot access it later.
Configure Microsoft Azure Blob Container on CleverTap Dashboard
[](https://docs.clevertap.com/docs/microsoft-azure#configure-microsoft-azure-blob-container-on-clevertap-dashboard)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
To add your Microsoft Azure Blob Container to Clevertap:
1. Navigate to _Settings_ > _Partners_ and click **Integrate** against Mircosoft Azure. The _Integrate analytics partner - Microsoft Azure_ window displays on the right side of the screen.

Integrate analytics partner - Microsoft Azure
2. Click **\+ Microsoft Azure** to create a new bucket. The _Integrate Microsoft Azure Bucket_ window opens on the right side of the screen.
3. Enter the _Bucket Nickname_.
4. Select the _Azure Blob Storage Endpoint_.
* Default: Enter the Blob Storage Account name.

Default Blob Storage Account on Microsoft Azure Portal
* Custom: Add a custom domain mapped to your Azure Blob Storage Endpoint. For more information about defining a custom endpoint, refer to [Map a Custom Domain](https://learn.microsoft.com/en-gb/azure/storage/blobs/storage-custom-domain-name?tabs=azure-portal#map-a-custom-domain)
.
2. Enter the container name that stores data on Azure and the SAS token we obtained in Step 4 of the Generate a SAS Token section.

Integrate Microsoft Azure Bucket
Updated 23 days ago
* * *
Ask AI
---
# Formsuite
Overview
[](https://docs.clevertap.com/docs/formsuite#overview)
===================================================================
[Formsuite](https://formsuite.co/)
is a no-code platform that helps businesses create and embed custom forms for lead capture, user onboarding, and survey collection. With built-in integrations, conditional fields, and dynamic styling, Formsuite simplifies data collection across digital touchpoints.
With the CleverTap and Formsuite integration, you can:
* Collect real-time user data from forms embedded in CleverTap campaigns
* Update CleverTap user profiles using Zapier workflows
* Trigger journeys based on new responses
* Personalize future campaigns with enriched profile data
This integration captures Formsuite submissions and automatically maps them to CleverTap user properties, enabling hyper-personalized engagement based on user responses.
Prerequisites for Integration
[](https://docs.clevertap.com/docs/formsuite#prerequisites-for-integration)
=============================================================================================================
Ensure the following before starting the integration:
* An active Formsuite account with access to form sharing.
* A valid CleverTap account with **Account ID** and **Passcode**.
* An active Zapier account to create workflows
Integrate Formsuite with CleverTap
[](https://docs.clevertap.com/docs/formsuite#integrate-formsuite-with-clevertap)
=======================================================================================================================
To integrate Formsuite with CleverTap, perform the following three major steps:
1. [Create and Embed a Formsuite Form](doc:formsuite#create-and-embed-formsuite-form)
2. [Create In-App Campaign in CleverTap](doc:formsuite#create-in-app-campaign-in-clevertap)
3. [Create Zap to Send Form Data to CleverTap](doc:formsuite#create-zap-to-send-form-data-to-clevertap)
Create and Embed Formsuite Form
[](https://docs.clevertap.com/docs/formsuite#create-and-embed-formsuite-form)
-----------------------------------------------------------------------------------------------------------------
Consider a scenario where a FinTech app wants to promote a new investment product by embedding a Formsuite form in an In-App campaign to capture name, email, and interest level. They can send these responses to CleverTap via Zapier. The users can then be segmented as follows: high-interest users receive a webinar invite, medium get product details, and low enter a nurture journey.
Now, build your form in Formsuite and prepare it for embedding in CleverTap. To do so, perform the following steps:
1. In your Formsuite dashboard, create a form with the following fields:
* Full Name (Text)
* Email Address (Email)
* Investment Interest (Dropdown: High, Medium, Low)

Create Form on Formshite dashboard
2. Click **Publish**, then go to the _Share_ tab and click **> Copy Code** to copy the form code.

Create and Embed FormSuite Form
Create In-App Campaign in CleverTap
[](https://docs.clevertap.com/docs/formsuite#create-in-app-campaign-in-clevertap)
-------------------------------------------------------------------------------------------------------------------------
Set up an In-App campaign in CleverTap to display your Formsuite form to users. To do so, perform the following steps:
1. Go to _Campaigns_ on the CleverTap dashboard, click **\+ Campaign** and select _In-App Messages_ from the list of messaging channels.

Create In-App Campaign
2. Configure the following campaign settings: qualification criteria, target segment, and delivery preferences.
3. In the _What_ section, select _Custom HTML Template_ and select the _Interstitial_ layout.
4. Paste the embed code in the HTML editor copied from _Step 2_ of [Create and Embed a Formsuite Form](doc:formsuite#create-and-embed-formsuite-form)

Set up an In-App campaign
5. Click **Preview & Test** to verify that the form renders correctly.
Create Zap to Send Form Data to CleverTap
[](https://docs.clevertap.com/docs/formsuite#create-zap-to-send-form-data-to-clevertap)
-------------------------------------------------------------------------------------------------------------------------------------
Use Zapier to automate sending form responses from FormSuite to CleverTap user profiles.
1. Go to your [Zapier Dashboard](https://zapier.com/app/home)
and click **\+ Create Zap**.

Create a Zap on Zapier Dashboard
2. Set Formsuite as the trigger app as follows:
1. Select the Trigger Event as _New Response_.
2. Connect your Formsuite account by adding your Formsuite credentials.
3. Select the form and test the trigger.

Set Trigger
3. Set CleverTap as the action app as follows:
1. Select the Action Event as _Create/Update User Profile_.

Set CleverTap as the Action
2. Connect CleverTap using the CleverTap Account ID and Passcode. To find CleverTap project details, refer to [Create Account Passcode](https://developer.clevertap.com/docs/authentication#create-account-passcode)
.

Connect CleverTap
4. Configure the Action by mapping the Formsuite data fields to CleverTap fields. For example:
| CleverTap Field | Formsuite Field |
| --- | --- |
| Identity | Formsuite user ID / Email ID or any unique identity field corresponding to the user |
| Object ID | Unique identifier for the user |
| Creation Date | Date of the user’s creation in your system |
| Profile Properties | JSON object of user properties (e.g., `{ "name": "John Doe", "email": "[[email protected]](https://docs.clevertap.com/cdn-cgi/l/email-protection) ", "role": "Investor", "investment_interest": "High" }`) |
> 🚧
>
> ###
>
> Mapping Identity and Object ID
>
> [](https://docs.clevertap.com/docs/formsuite#mapping-identity-and-object-id)
>
> You can keep the Identity field blank if you provide an Object ID, and vice versa.

5. Click **Test & Review** to validate data mapping.
You can verify if the correct user profile was updated with the correct data from the _Find People_ > _Profile Preview_ page on the CleverTap dashboard.

Verify Data in CleverTap
Once verified, your integration is live and ready to capture and sync Formsuite responses in real time.
Updated about 2 months ago
* * *
Ask AI
---
# HubSpot
Overview
[](https://docs.clevertap.com/docs/hubspot-via-zapier#overview)
============================================================================
[HubSpot](https://www.hubspot.com/products/crm)
, a leading CRM platform, helps businesses manage customer relationships, automate workflows, and analyze performance to drive growth and improve customer engagement.
Using Zapier to integrate HubSpot with CleverTap, you can do the following:
* **Automate Lead Sync**: When a new contact is added in HubSpot, [create a user profile](doc:hubspot-via-zapier#createupdate-user-profiles)
in CleverTap with details such as name, email, and phone number to trigger personalized engagement campaigns.
* **Keep Profile Data Updated**: When contact details (such as email or phone number) change in HubSpot, [update the user profile](doc:hubspot-via-zapier#createupdate-user-profiles)
in CleverTap to ensure accurate segmentation and targeting in engagement campaigns.
* **Track Contact Lifecycle Events**: When a contact performs a key action in HubSpot (for example, completes a deal or fills out a form), [upload an event](doc:hubspot-via-zapier#upload-event)
in CleverTap with details such as event name, action type, and contact information. Use this event data to trigger relevant engagement campaigns or add contacts to tailored audiences for retargeting.
Prerequisites for Integration
[](https://docs.clevertap.com/docs/hubspot-via-zapier#prerequisites-for-integration)
======================================================================================================================
The following are the prerequisites for HubSpot:
* Ensure you have access to your HubSpot account.
* Ensure you have access to an active Zapier account to create the CleverTap app.
* Ensure you have a CleverTap account with valid **Account ID**, **Passcode**, and **Region**.
Integrate HubSpot with CleverTap using Zapier
[](https://docs.clevertap.com/docs/hubspot-via-zapier#integrate-hubspot-with-clevertap-using-zapier)
======================================================================================================================================================
The integration process involves the following two major steps:
1. [Create a Passcode on the CleverTap Dashboard](doc:hubspot-via-zapier#create-a-passcode-on-the-clevertap-dashboard)
.
2. [Create/Update User Information](doc:hubspot-via-zapier#createupdate-user-profiles)
. OR
[Upload Event](doc:hubspot-via-zapier#upload-event)
.
Create a Passcode on CleverTap Dashboard
[](https://docs.clevertap.com/docs/hubspot-via-zapier#create-a-passcode-on-clevertap-dashboard)
--------------------------------------------------------------------------------------------------------------------------------------------
CleverTap uses a header-based authentication model to authenticate requests to the API. Every CleverTap API call must include Account ID and Passcode as the request headers. To create a passcode, refer to [Create Account Passcode](https://developer.clevertap.com/docs/authentication#create-account-passcode)
.
Create/Update User Profiles
[](https://docs.clevertap.com/docs/hubspot-via-zapier#createupdate-user-profiles)
-----------------------------------------------------------------------------------------------------------------
Consider an example where you want to automatically sync HubSpot contacts with CleverTap to trigger personalized engagement campaigns. This automation ensures that new HubSpot users are added to CleverTap while existing user profiles are updated when details change in HubSpot. To do so, perform the following steps:
1. Log in to the [Zapier dashboard](https://zapier.com/app/home)
and click **\+ Create Zap**. Zapier can connect different applications. In this case, it will be HubSpot.

Create a Zap on Zapier Dashboard
2. **Set up a Trigger**. To do so, perform the following steps:
1. Select _HubSpot_ from the _App_ section. This starts the Zap when a trigger event takes place in HubSpot.
2. Select _Trigger Event_ from the dropdown list and then select _New Contact_ for this use case.
3. Select _Account_ and sign in using your HubSpot account credentials. You can also connect a new account if your account does not appear in the dropdown.
4. Click **Continue**. From the _Configure_ section, default properties will be already defined. You can add _Additional properties_ from the dropdown. For more information about the properties provided by HubSpot, refer to [Properties](https://developers.hubspot.com/docs/guides/api/crm/properties)
.
5. Click **Continue**.

Set Up Trigger Event
3. Click **Test Trigger**. This ensures that the right account is connected and the trigger is set up correctly.
4. Select any one record, and click **Continue with selected record**.
5. Select the Action that the zap must perform after the trigger event occurs. To do so, perform the following steps:
1. Select _CleverTap_ from the _App_ dropdown.
2. Select _Create/Update User Profile_ from the _Action event_ dropdown. This implies that whenever a new lead is generated, a new user profile is created, or an existing user profile is updated with the new information.
3. Select _Account_ to connect the CleverTap account. The Zapier window opens. Enter all the required details to connect to the CleverTap account. Enter the same passcode you obtained during the [Create a Passcode on CleverTap Dashboard](doc:hubspot-via-zapier#create-a-passcode-on-the-clevertap-dashboard)
step.
4. Click **Continue** after successfully connecting your account.

Select Action for Zap
6. **Configure the Action**. Map HubSpot data fields to CleverTap fields as follows:
| **CleverTap Field** | **Description** |
| --- | --- |
| **Identity** | HubSpot user ID field, email ID, or any unique identity field corresponding to the user. |
| **Creation Date** | Date of the user creation in HubSpot. |
| **Profile Properties** | Include user properties in JSON format (for example, name, email, role, and other custom properties). |
> 🚧
>
> ###
>
> Mapping Identity and Object ID
>
> [](https://docs.clevertap.com/docs/hubspot-via-zapier#mapping-identity-and-object-id)
>
> You can keep the Identity field blank if you provide an Object ID, and vice versa.

Configure the Action
7. Click **Continue** and click **Test Step** to test the zap after mapping the files.
8. Click **Publish**.
After publishing this zap, a new user is created, or an existing user is updated on the CleverTap dashboard every time a trigger occurs. CleverTap uses the _Identity_ field to identify if it is a new user or an existing user. You can verify this by checking your CleverTap dashboard to confirm the user profile has been created or updated.

Verify user in CleverTap
Upload Event
[](https://docs.clevertap.com/docs/hubspot-via-zapier#upload-event)
------------------------------------------------------------------------------------
Consider an example where you want to track user interactions, such as new contact added, in HubSpot and sync it with CleverTap for better engagement. This automation ensures that user actions recorded in HubSpot are seamlessly uploaded to CleverTap, enabling more precise tracking and personalized engagement strategies. To do so, perform the following steps:
1. Log in to the [Zapier dashboard](https://zapier.com/app/home)
and click **\+ Create Zap**.
2. **Set up a Trigger**. For this example, perform the following steps:
1. Select _HubSpot_ from the _App_ section. This starts the Zap when a trigger event takes place in HubSpot.
2. Select _Trigger Event_ from the dropdown list and select _New Deal_ in this case.
3. Select _Account_ and **Sign in** with your HubSpot account credentials. If your account does not appear in the dropdown, you can also connect a new account.
4. Click **Continue**. Under the _Configure_ section, default properties are already defined. You can add _Additional properties_ from the dropdown. For more information about the properties provided by HubSpot, refer to [Properties](https://developers.hubspot.com/docs/guides/api/crm/properties)
.
5. Click **Continue**.

Set Up Trigger Event
3. Click **Test Trigger**. This ensures that the right account is connected and the trigger is set up correctly.
4. Click **Continue with selected records**.
5. **Select the Action the zap must perform** after the trigger event occurs. To do so, perform the following steps:
1. Select _CleverTap_ from the _App_ dropdown.
2. Select _Upload Event_ from the _Action event_ dropdown. This implies that whenever a new event is generated, an existing user profile is updated with the new information.
3. Select _Account_ to connect the CleverTap account. For more information about how to do this, refer to _step 5 (iii)_ under [Create or Update User Profiles](doc:hubspot-via-zapier#create-a-passcode-on-the-clevertap-dashboard)
.
4. Click **Continue** after successfully connecting your account.

Select Action for Zap
6. **Configure the Action**. Map HubSpot data fields to CleverTap fields as follows:
| **CleverTap Field** | **Description** |
| --- | --- |
| **User ID** | HubSpot user ID field, email ID, or any unique identity field corresponding to the user. |
| **Creation Date** | Event creation date. |
| **Event Name** | Select a predefined event or create a custom event. You can also map the event name using the HubSpot data fields. |
| **Event Properties** | Include metadata in JSON format (for example, event type, priority, event properties). |
> 🚧
>
> ###
>
> Mapping Identity and Object ID
>
> [](https://docs.clevertap.com/docs/hubspot-via-zapier#mapping-identity-and-object-id-1)
>
> You can keep the Identity field blank if you provide an Object ID, and vice versa.

Configure the Action
7. Click **Continue**. Click **Test Step** to test the zap after mapping the files.
8. Click **Publish**.
After publishing this zap, an event is uploaded to the CleverTap dashboard every time a trigger occurs.
CleverTap uses the _Identity_ field to identify if it is a new user or an existing user.
You can verify this by checking your CleverTap dashboard to confirm if the event has been logged.

Verify Events in CleverTap
Updated about 2 months ago
* * *
Ask AI
---
# LeadSquared Import
Overview
[](https://docs.clevertap.com/docs/leadsquared-import#overview)
============================================================================
[LeadSquared](https://www.leadsquared.com/)
lets you export lead data into CleverTap, enabling automated journey triggers and enriched user profiles.
> 🚧
>
> ###
>
> Support for Integration
>
> [](https://docs.clevertap.com/docs/leadsquared-import#support-for-integration)
>
> This integration is managed and continuously improved by LeadSquared. The CleverTap and LeadSquared integration has undergone stringent testing to ensure seamless functionality. For any questions or issues, contact [LeadSquared](https://docs.clevertap.com/cdn-cgi/l/email-protection#d9aaaca9a9b6abad99b5bcb8bdaaa8acb8abbcbdf7bab6b4)
> for support and resolution.
Import Lead Data from LeadSquared to CleverTap
[](https://docs.clevertap.com/docs/leadsquared-import#import-lead-data-from-leadsquared-to-clevertap)
========================================================================================================================================================
To automate pushing lead data from LeadSquared into CleverTap. To do so, follow these steps:
1. [Install the Push Data to CleverTap Connector](doc:leadsquared-import#install-the-push-data-to-clevertap-connector)
2. [Generate a Webhook URL in LeadSquared](doc:leadsquared-import#generate-a-webhook-url-in-leadsquared)
3. [Create Automation in LeadSquared](doc:leadsquared-import#create-automation-in-leadsquared)
Install the Push Data to CleverTap Connector
[](https://docs.clevertap.com/docs/leadsquared-import#install-the-push-data-to-clevertap-connector)
----------------------------------------------------------------------------------------------------------------------------------------------------
Install the Push Data to CleverTap connector to send lead data from LeadSquared. To do so, follow these steps:
1. Go to _Apps_ > _Apps Marketplace_ in LeadSquared.
2. Search for _Push Data to CleverTap_ and click **Install**.
3. Click **Configure** and set access:
* By user roles or advanced user-level logic.

User-level settings
4. Click **Save Details**.
Generate a Webhook URL in LeadSquared
[](https://docs.clevertap.com/docs/leadsquared-import#generate-a-webhook-url-in-leadsquared)
--------------------------------------------------------------------------------------------------------------------------------------
Generate a webhook URL in LeadSquared to send lead data to CleverTap during automated workflows. To do so, follow these steps:
1. Go to _Apps_ > _Push Data to CleverTap_.

Push Data to CleverTap
2. Configure basic settings:
| Property | Description |
| --- | --- |
| CleverTap Account ID | Locate the Project ID under _Settings_ > _Project_ from the CleverTap dashboard. |
| CleverTap Passcode | Locate the Passcode under _Settings_ > _Project_ from the CleverTap dashboard. For more information, refer to [Account Passcode](https://developer.clevertap.com/docs/authentication#create-account-passcode)
. |
| Lead Source | Origin of leads (for example, email campaign). |
| Unique Search Criteria | Key identifier for de-duplication. |
| Default Country Code | Default country prefix for phone numbers. |
| User to Notify on Failure | Contact for sync issues. |
| Enable Notification | Enable email alerts. |
3. Click **Save & Next**.
4. On the **Mapping** screen:
* Review and update default mappings.
* Set defaults where necessary.
* Mark key fields and add custom ones if required.
5. Click **Save & Next**.
6. Copy the generated webhook URL.
> 📘
>
> ###
>
> Note
>
> [](https://docs.clevertap.com/docs/leadsquared-import#note)
>
> Sync behavior is set to "_Do Nothing_" by default. It is recommended not to change it.
7. Go to _More Actions_ > _Enable Sync Job_ to start data flow.
Create Automation in LeadSquared
[](https://docs.clevertap.com/docs/leadsquared-import#create-automation-in-leadsquared)
----------------------------------------------------------------------------------------------------------------------------
Set up automation workflows in LeadSquared to sync leads with CleverTap based on triggers. To do so, follow these steps:
1. Go to _Workflow_ > _Automation_.
2. Create a new automation and set a trigger (for example, _New Lead_).
3. Add a _Webhook_ action and enter the following details:
| Field | Description |
| --- | --- |
| Name | For example, "CleverTap Lead Verification" |
| URL | Paste the URL copied in _Step 6_ of [Generate a Webhook URL in LeadSquared](doc:leadsquared-import#generate-a-webhook-url-in-leadsquared)
. (remove `https://` if instructed) |
| Content Type | `application/json` |
| Save Response | Optional |
| Notify on Failure | Select the user to notify |
| Retry Count | Set the number of retry attempts |

Create Automation in LeadSquared
4. Click **Save** and **Publish**.
Once published, the automation will ensure that lead data is pushed from LeadSquared to CleverTap based on the configured trigger.
Updated about 2 months ago
* * *
Ask AI
---
# Swipe Pages
Overview
[](https://docs.clevertap.com/docs/swipe-pages#overview)
=====================================================================
[Swipe Pages](https://swipepages.com/)
is a no-code landing page builder that helps create high-converting, mobile-optimized pages using a drag-and-drop interface. You can integrate Swipe Pages with CleverTap using Zapier to capture lead data from landing page forms and create or update user profiles in CleverTap.
With the CleverTap and Swipe Pages integration, you can:
* Automatically create or update user profiles in CleverTap from Swipe Pages form submissions.
* Trigger welcome emails or onboarding campaigns when a user signs up.
* Add users to specific journeys, such as event reminders or product interest flows.
* Segment users based on form inputs (for example, topic of interest) and send personalized follow-ups.
Prerequisites for Integration
[](https://docs.clevertap.com/docs/swipe-pages#prerequisites-for-integration)
===============================================================================================================
The following are the prerequisites for integrating Swipe Pages with CleverTap via Zapier:
* A Swipe Pages account with access to create landing pages and generate API keys.
* An active Zapier account.
* A CleverTap account with **Account ID** and **Passcode**.
Integrate Swipe Pages with CleverTap
[](https://docs.clevertap.com/docs/swipe-pages#integrate-swipe-pages-with-clevertap)
=============================================================================================================================
The integration process involves the following three major steps:
1. [Create Passcode on CleverTap Dashboard](doc:swipe-pages#create-passcode-on-clevertap-dashboard)
2. [Create Landing Page in Swipe Pages](doc:swipe-pages#create-landing-page-in-swipe-pages)
3. [Configure Zapier in Swipe Pages](doc:swipe-pages#configure-zapier-in-swipe-pages)
Create Passcode on CleverTap Dashboard
[](https://docs.clevertap.com/docs/swipe-pages#create-passcode-on-clevertap-dashboard)
---------------------------------------------------------------------------------------------------------------------------------
CleverTap uses a header-based authentication model to authenticate requests to the API. Every CleverTap API request must include the Account ID and Passcode as the request headers. To create a passcode, refer to [Create Account Passcode](https://developer.clevertap.com/docs/authentication#create-account-passcode)
.
Create Landing Page in Swipe Pages
[](https://docs.clevertap.com/docs/swipe-pages#create-landing-page-in-swipe-pages)
-------------------------------------------------------------------------------------------------------------------------
To create a landing page in Swipe Pages where form submissions will be collected. To do so, perform the following steps:
1. Log in to your [Swipe Pages](https://app.swipepages.com/signup)
dashboard.
2. Go to _Integrations_ > _Landing Pages_ from the left panel.
3. Click **Create New Page** to create your landing pages. Refer to [Creating a new landing page in Swipe Pages](https://docs.swipepages.com/en/articles/4761649-creating-a-new-landing-page)
.

Create a Landing Page in Swipe Pages
Configure Zapier in Swipe Pages
[](https://docs.clevertap.com/docs/swipe-pages#configure-zapier-in-swipe-pages)
-------------------------------------------------------------------------------------------------------------------
Zapier acts as the automation bridge between Swipe Pages and CleverTap. To enable this connection, you must configure Zapier within Swipe Pages. To do so, perform the following steps:
1. Go to _Integrations_ from the left panel on the Swipe Page dashboard
2. Click on **Zapier** and click **Create a New Zap**.

Configure Zapier in Swipe Pages
3. To create the connection, you will be provided with a Swipe Pages API key here.
4. Copy it and keep it safe.
Now that Zapier is configured in Swipe Pages, proceed further to set up the Zapier workflow with [Swipe Pages as the trigger](doc:swipe-pages#set-up-swipe-pages-trigger)
and [CleverTap as the action](doc:swipe-pages#set-up-clevertap-action)
.
###
Set Up Swipe Pages Trigger
[](https://docs.clevertap.com/docs/swipe-pages#set-up-swipe-pages-trigger)
A trigger determines when your Zap will run. In this case, the trigger is a form submission on your Swipe Pages landing page. To set up swipe pages as a trigger, perform the following steps:
1. Set the **Trigger App** as _Swipe Pages_.
2. Select the _Trigger Event_. In this case, select _New Form Submission_ from the dropdown. This ensures the Zap is triggered every time a user submits a form on your Swipe Pages.

Set Up Swipe Pages Trigger
3. Connect your Swipe Pages account using the previously generated **API Key** from _step 4_ of [Configure Zapier in Swipe Pages](doc:swipe-pages#configure-zapier-in-swipe-pages)
.
4. Select the specific form whose submissions you want to capture.

Select Record
> 📘
>
> ####
>
> Note
>
> [](https://docs.clevertap.com/docs/swipe-pages#note)
>
> Submit a test form on Swipe Pages to fetch sample data during setup.
###
Set Up CleverTap Action
[](https://docs.clevertap.com/docs/swipe-pages#set-up-clevertap-action)
Once the trigger is defined, you need to configure what happens in CleverTap. This is done by setting up an action in Zapier. To set up CleverTap as an action, perform the following steps:
1. From the _Action App_, select _CleverTap_.

CleverTap Action
2. Select one of the following **Action Events**:
* _Create/Update User Profile_
* _Upload Event_

Select Action for Zap
3. Connect your CleverTap account by entering **Account ID**, **Passcode**, and **Region** of your CleverTap account. For detailed steps, refer to [Create a Passcode on the CleverTap Dashboard](doc:swipe-page#create-passcode-on-clevertap-dashboard)
.

Connect your CleverTap account
4. Map Swipe Pages data to CleverTap fields:
| **CleverTap Field** | **Description** |
| --- | --- |
| Identity / Object ID | Unique identifier (email, phone, or internal user ID) |
| Creation Date | (Optional) Timestamp of form submission |
| Profile Properties | JSON object of additional attributes (for example, `name`, `email`) |
| Event Name | (If uploading event) for example, `submitted_landing_form` |
| Event Properties | JSON of contextual details (for example, `page`, `campaign`) |
> 🚧
>
> ####
>
> Map Identity and Object ID
>
> [](https://docs.clevertap.com/docs/swipe-pages#map-identity-and-object-id)
>
> You can keep the Identity field blank if you provide an Object ID, and vice versa.

Configure the Action
5. Click **Test & Review** to validate the setup.
6. Check your CleverTap dashboard for the test event.

Verify Events in CleverTap
7. Click **Publish** to activate the Zap.
Verify Integration Results
[](https://docs.clevertap.com/docs/swipe-pages#verify-integration-results)
=========================================================================================================
After publishing the Zap:
* If you selected _Upload Event_, CleverTap logs a new event each time a form is submitted on your Swipe Pages site. Events appear in the _Events_ section of the CleverTap dashboard.
* If you selected _Upload/Update User Profile_, CleverTap uses the `Identity` field to determine whether to create or update a user profile.
This automation enables you to seamlessly capture form data into CleverTap, allowing for personalized engagement without manual intervention on the CleverTap dashboard.
FAQs
[](https://docs.clevertap.com/docs/swipe-pages#faqs)
=============================================================
###
What happens if I do not map the required fields?
[](https://docs.clevertap.com/docs/swipe-pages#what-happens-if-i-do-not-map-the-required-fields)
Not mapping required fields may result in incomplete data being transferred or failure to update user profiles and events correctly.
Updated about 1 month ago
* * *
Ask AI
---
# Pipedrive
Overview
[](https://docs.clevertap.com/docs/pipedrive-via-zapier#overview)
==============================================================================
[Pipedrive](https://www.pipedrive.com/)
is a sales CRM and pipeline management tool that helps businesses track and manage leads efficiently. It enables sales teams to capture and store lead details, track deal progress, and automate workflows.
By integrating Pipedrive with CleverTap via Zapier, businesses can automatically transfer lead information, update user profiles in real-time, and trigger personalized engagement campaigns based on sales activities.
The following are some of the use cases that the CleverTap Pipedrive integration can address:
* **Automatically Sync New Leads**: When a new deal is added to Pipedrive, [create a user profile](doc:pipedrive-via-zapier#createupdate-user-profiles)
in CleverTap with details such as name, email, phone number, and deal information.
* **Update User Profiles with Deal Progress**: When a deal moves to a new stage in Pipedrive, [update the user profile](doc:pipedrive-via-zapier#createupdate-user-profiles)
in CleverTap with the latest status and insights.
* **Trigger Personalized Campaigns**: When a deal reaches a specific stage, [upload an event](doc:pipedrive-via-zapier#upload-event)
in CleverTap with event details like deal value, expected close date and pipeline stage to trigger automated engagement workflows.
Prerequisites for Integration
[](https://docs.clevertap.com/docs/pipedrive-via-zapier#prerequisites-for-integration)
========================================================================================================================
The following are the prerequisites for Pipedrive:
* Ensure you have access to your Pipedrive account.
* Ensure you have an active Zapier account to create the CleverTap app.
* Ensure you have a CleverTap account with valid **Account ID**, **Passcode**, and **Region**.
Integrate Pipedrive with CleverTap using Zapier
[](https://docs.clevertap.com/docs/pipedrive-via-zapier#integrate-pipedrive-with-clevertap-using-zapier)
============================================================================================================================================================
The integration process involves the following two major steps:
1. [Create a Passcode on the CleverTap Dashboard](doc:pipedrive-via-zapier#create-a-passcode-on-the-clevertap-dashboard)
.
2. [Create/Update User Information](doc:pipedrive-via-zapier#createupdate-user-profiles)
. OR
[Upload Event](doc:pipedrive-via-zapier#upload-event)
Create a Passcode on the CleverTap Dashboard
[](https://docs.clevertap.com/docs/pipedrive-via-zapier#create-a-passcode-on-the-clevertap-dashboard)
------------------------------------------------------------------------------------------------------------------------------------------------------
CleverTap uses a header-based authentication model to authenticate requests to the API. Every CleverTap API call must include Account ID and Passcode as request headers. To create a passcode, refer to [Create Account Passcode](https://developer.clevertap.com/docs/authentication#create-account-passcode)
.
Create/Update User Profiles
[](https://docs.clevertap.com/docs/pipedrive-via-zapier#createupdate-user-profiles)
-------------------------------------------------------------------------------------------------------------------
Consider an example where you want to automatically sync new deals created in Pipedrive with CleverTap to trigger personalized engagement campaigns. This automation ensures that new deals in Pipedrive are added to CleverTap while existing deals are updated when details change. To do so, perform the following steps:
1. Log in to the [Zapier dashboard](https://zapier.com/app/home)
and click **\+ Create Zap**.

Create a Zap on Zapier Dashboard
2. **Set up a Trigger**. To do so, perform the following steps:
1. Select _Pipedrive_ from the _App_ section. This starts the Zap when a trigger occurs on Pipedrive.
2. Select _Trigger Event_ from the dropdown list and then select _New Deal_ for this use case.
3. Select _Account_ and sign in using your Pipedrive account credentials. You can also connect a new account if your account does not appear in the dropdown.
4. Click **Continue**.

Set up a Trigger
3. Click **Test Trigger**. This ensures that the right account is connected and the trigger is set up correctly.
4. After testing the trigger, you will see details of pulled records similar to the image below.

Selected Record
5. Select any one record, and click **Continue with selected record**.
6. **Select the Action** that the zap must perform after the trigger event occurs. To do so, perform the following steps:
1. Select _CleverTap_ from the _App_ dropdown.
2. Select _Create/Update User Profile_ from the Action event dropdown. This implies that whenever a new deal is generated, a new user profile is created, or an existing user profile is updated with the new information.
3. Select Account to connect the CleverTap account. The Zapier window opens. Enter all the required details to connect to the CleverTap account. Enter the same passcode you obtained during the [Create a Passcode on CleverTap Dashboard](doc:pipedrive-via-zapier#create-a-passcode-on-the-clevertap-dashboard)
step.
4. Click **Continue** after successfully connecting your account.

Select the Action for Zap
7. **Configure the Action**. Map Pipedrive data fields to CleverTap fields as follows:
| **CleverTap Field** | **Description** |
| --- | --- |
| **Identity** | Pipedrive user ID field, email ID, or any unique identity field corresponding to the user. |
| **Creation Date** | Date of the user creation in Pipedrive. |
| **Profile Properties** | Include user properties in JSON format (for example, name, email, role, and other custom properties). |
> 🚧
>
> ###
>
> Mapping Identity and Object ID
>
> [](https://docs.clevertap.com/docs/pipedrive-via-zapier#mapping-identity-and-object-id)
>
> You can keep the Identity field blank if you provide an Object ID, and vice versa.

Configure the Action
8. Click **Continue** and click **Test Step** to test the zap after mapping the files.
9. Click **Publish**.
After publishing this zap, a new user is created, or an existing user is updated on the CleverTap dashboard every time a trigger occurs. CleverTap uses the _Identity_ field to identify if it is a new user or an existing user. You can verify this by checking your CleverTap dashboard to confirm the user profile has been created or updated.

Verify user in CleverTap
Upload Event
[](https://docs.clevertap.com/docs/pipedrive-via-zapier#upload-event)
--------------------------------------------------------------------------------------
Consider an example where you want to track key deal activities in CleverTap. This automation ensures that sales actions taken in Pipedrive are recorded in CleverTap, enabling better tracking and personalized engagement strategies. To do so, perform the following steps:
1. Log in to the [Zapier dashboard](https://zapier.com/app/home)
and click **\+ Create Zap**.
2. **Set up a Trigger**. For this example, perform the following steps:
1. Select _Pipedrive_ as the App. This starts the Zap when a trigger event takes place in Pipedrive.
2. Select _Trigger Event_ from the dropdown list and select _Updated Deal Stage_ in this case.
3. Select _Account_ and sign in using your Pipedrive account credentials. You can also connect a new account if your account does not appear in the dropdown.
4. Click **Continue**.

Set up a Trigger
3. Click **Test Trigger**. This ensures that the right account is connected and the trigger is set up correctly.
4. After testing the trigger, you will see details of pulled records similar to the image under step 4 of [Create/Update User Profiles](doc:pipedrive-via-zapier#createupdate-user-profiles)
. Select any one record, and click **Continue with selected record**.
5. **Select the Action** the zap must perform after the trigger event occurs. To do so, perform the following steps:
1. Select _CleverTap_ from the _App_ dropdown.
2. Select _Upload Event_ from the _Action event_ dropdown. This implies that whenever a new event is generated, an existing user profile is updated with the new information.
3. Select _Account_ to connect the CleverTap account. For more information about how to do this, refer to _step 6 (iii)_ under [Create or Update User Profiles](doc:pipedrive-via-zapier#createupdate-user-profiles)
.
4. Click **Continue** after successfully connecting your account.

Select the Action
6. **Configure the Action**. Map Pipedrive data fields to CleverTap fields as follows:
| **CleverTap Field** | **Pipedrive Field** |
| --- | --- |
| **User ID** | Pipedrive user ID field, email ID, or any unique identity field corresponding to the user. |
| **Creation Date** | Event creation date. |
| **Event Name** | Select a predefined event or create a custom event. You can also map the event name using the Pipedrive data fields. |
| **Event Properties** | Include metadata in JSON format (for example, event type, priority, event properties). |
> 🚧
>
> ###
>
> Mapping Identity and Object ID
>
> [](https://docs.clevertap.com/docs/pipedrive-via-zapier#mapping-identity-and-object-id-1)
>
> You can keep the Identity field blank if you provide an Object ID, and vice versa.

Configure the Action
7. Click **Continue**. Click **Test Step** to test the zap after mapping the files.
8. Click **Publish**.
After publishing this zap, an event is uploaded to the CleverTap dashboard every time a trigger occurs.
CleverTap uses the Identity field to identify if it is a new user or an existing user. You can verify this by checking your CleverTap dashboard to confirm if the event has been logged.

Verify Events in CleverTap
FAQs
[](https://docs.clevertap.com/docs/pipedrive-via-zapier#faqs)
======================================================================
###
What happens if I do not map the required fields?
[](https://docs.clevertap.com/docs/pipedrive-via-zapier#what-happens-if-i-do-not-map-the-required-fields)
Not mapping required fields may result in incomplete data transfer or failure to update user profiles and events correctly.
Updated about 2 months ago
* * *
Ask AI
---
# HighTouch
Overview
[](https://docs.clevertap.com/docs/hightouch#overview)
===================================================================
[HighTouch](https://hightouch.com/)
, a modern data integration platform, enables you to sync customer, product, or proprietary data from your warehouse to any app you choose. The CleverTap and HighTouch integration allows seamless syncing of customer data from your data warehouse to CleverTap. This ensures data consistency and helps deliver superior customer experiences.
With this integration, you can:
* Sync user data from your data warehouse into CleverTap to create targeted, personalized campaigns.
* Sync customer events from HighTouch to CleverTap, ensuring your events are always up-to-date and consistent.
* Enhance user engagement by integrating data from other touchpoints, helping you deliver richer, more relevant experiences.
Prerequisites for Integration
[](https://docs.clevertap.com/docs/hightouch#prerequisites-for-integration)
=============================================================================================================
The following are the prerequisites for integration with HighTouch:
* Ensure you have access to your HighTouch account.
* Ensure you have a CleverTap account with valid **Account ID**, **Passcode**, and **Region**.
> 🚧
>
> ###
>
> Support For Integration
>
> [](https://docs.clevertap.com/docs/hightouch#support-for-integration)
>
> This integration is managed and continuously improved by HighTouch. The CleverTap and HighTouch integration has undergone stringent testing to ensure seamless functionality. For any questions or issues, contact [HighTouch](https://docs.clevertap.com/cdn-cgi/l/email-protection#c5b6b0b5b5aab7b185adaca2adb1aab0a6adebacaa)
> for support and resolution.
Integrate HighTouch with CleverTap
[](https://docs.clevertap.com/docs/hightouch#integrate-hightouch-with-clevertap)
=======================================================================================================================
The integration process involves the following three steps:
1. [Set Up CleverTap As Destination](doc:hightouch#set-up-clevertap-as-destination)
.
2. [Create a Model to Sync Data with CleverTap](doc:hightouch#create-a-model-for-data-synchronization)
.
3. [Synchronize Data with CleverTap](doc:hightouch#synchronize-data-with-clevertap)
.
Set Up CleverTap As Destination
[](https://docs.clevertap.com/docs/hightouch#set-up-clevertap-as-destination)
-----------------------------------------------------------------------------------------------------------------
Configure CleverTap to HighTouch for data transfer and enable data flow between them.
1. Go to _Integrations_ > _Destination_ on the HighTouch dashboard.
2. Select **Add destination**, search for _CleverTap_ and select it as your _Destination_.
3. Enter the following details:
| Field | Description |
| --- | --- |
| Account ID | Locate the Project ID under _Settings_ > _Project_. from the CleverTap |
| Account Passcode | Locate the Passcode under _Settings_ > _Project_ from the CleverTap dashboard. For more information, refer to [Account Passcode](https://developer.clevertap.com/docs/authentication#create-account-passcode)
. |
| Region | Locate _Region_ for the API endpoint you want to select under Settings > Project. To find the API endpoint for your region, refer to, refer to [API endpoints based on your data center region](https://developer.clevertap.com/docs/idc#api)
. |
4. Test the connection, assign a name to this _Destination_, and click **Finish** to save the configuration.

Create Destination
Create a Model for Data Synchronization
[](https://docs.clevertap.com/docs/hightouch#create-a-model-for-data-synchronization)
---------------------------------------------------------------------------------------------------------------------------------
Create a model to define how data is prepared and structured before syncing it to CleverTap as the destination. To do so:
1. Go to _Activations_ > _Models_ and click **Add Model**.
2. Select the required Data Source and define and finalize the model. For more information, refer to [Creating Models](https://hightouch.com/docs/models/creating-models)
.

Add Model
Synchronize Data with CleverTap
[](https://docs.clevertap.com/docs/hightouch#synchronize-data-with-clevertap)
-----------------------------------------------------------------------------------------------------------------
With your model and destination ready, you can sync data to CleverTap. For example, in an e-commerce use case, you can configure and synchronize transaction data, such as the _Charged_ event. This ensures accurate data flow and improves user engagement.
###
Sync Data
[](https://docs.clevertap.com/docs/hightouch#sync-data)
1. **Set Up the Sync**
1. Go to _Activations_ > _Models_ from the HighTouch dashboard and locate the model you created.
2. Click **Add Sync**.

Add Sync
2. **Select CleverTap and Data Type**
1. Select _CleverTap_ as your sync destination.
2. Choose the type of data to sync:
| Sync Option | Description | Examples |
| --- | --- | --- |
| **Objects** | Sync user profiles with personal and behavioural attributes. | Name, Email, Phone Number |
| **Events** | Record user actions such as purchases or app interactions as events. | Transaction events such as Charged events. |
| **Segments** | Maintain user groups dynamically for campaigns or targeting. | Excluded or targeted audiences. |

Configure Sync to CleverTap
3. **Map Data Fields**
1. Match fields from your source to CleverTap:
* `transaction_id` → `txnId`
* `amount` → `amount`
* `currency` → `currency`
* `items` → `items` (e.g., `[{"name": "Product 1", "price": 50.25, "quantity": 1}]`)
2. Add custom fields such as `payment_method` for more insights.
3. Match your primary key (for example, `user_id`) with CleverTap’s Global Object ID. Enable profile creation for unmatched users.

Mapping Fields
4. **Test the Sync**. Run a test to ensure:
* Correct mapping of user profiles and data fields.
* Proper formatting for complex fields such as `items`.
* No errors during sync.

Testing Sync
5. **Verify Data in CleverTap**. Log in to the CleverTap dashboard and verify the following:
* Synced events under **Events** (for example, Charged).
* Accurate mapping of fields such as `txnId`, `amount`, and `items`.
* Events linked to the correct user profiles.

Verify in CleverTap
Troubleshooting and Best Practices
[](https://docs.clevertap.com/docs/hightouch#troubleshooting-and-best-practices)
=======================================================================================================================
Here are the best practices to ensure smooth integration and optimize the performance of your CleverTap and HighTouch integration:
* Double-check credentials for both HighTouch and CleverTap connections.
* Ensure accurate field mapping to avoid data inconsistencies.
* Always test sync configurations before executing live syncs.
Updated about 2 months ago
* * *
Ask AI
---
# Salesforce CRM
Overview
[](https://docs.clevertap.com/docs/salesforce-via-zapier#overview)
===============================================================================
[Salesforce](https://www.salesforce.com/)
is a leading CRM platform that helps businesses manage customer relationships, track sales activities, and automate workflows. By integrating Salesforce with CleverTap via Zapier, businesses can automatically sync customer data, track engagement, and trigger personalized campaigns based on sales interactions.
The following are some of the use cases that the CleverTap-Salesforce integration can address:
* **Automatically Sync Salesforce Contacts**: When a new contact is added to Salesforce, [create a user profile](doc:salesforce-via-zapier#createupdate-user-profiles)
in CleverTap with details such as name, email, phone number, and lead status.
* **Update User Profiles with Sales Activities**: When a lead progresses to a new stage in the sales pipeline (For example, from Prospect to Qualified Lead or Negotiation to Closed-Won) in Salesforce, [update the user profile](doc:salesforce-via-zapier#createupdate-user-profiles)
in CleverTap with the latest insights.
* **Trigger Personalized Campaigns**: When a deal is closed in Salesforce, [upload an event](doc:salesforce-via-zapier#upload-event)
in CleverTap with event details such as deal value, close date, and salesperson information to trigger automated engagement workflows.
Prerequisites for Integration
[](https://docs.clevertap.com/docs/salesforce-via-zapier#prerequisites-for-integration)
=========================================================================================================================
The following are the prerequisites for Salesforce:
* Ensure you have admin access to your Salesforce account.
* Ensure you have an active Zapier account to create the CleverTap app.
* Ensure you have a CleverTap account with valid **Account ID**, **Passcode**, and **Region**.
Integrate Salesforce with CleverTap using Zapier
[](https://docs.clevertap.com/docs/salesforce-via-zapier#integrate-salesforce-with-clevertap-using-zapier)
===============================================================================================================================================================
The integration process involves the following two major steps:
1. [Create Passcode on CleverTap Dashboard](doc:salesforce-via-zapier#create-a-passcode-on-the-clevertap-dashboard)
.
2. [Create/Update User Profiles](doc:salesforce-via-zapier#createupdate-user-profiles)
.
OR
[Upload Event](doc:salesforce-via-zapier#upload-event)
.
Create Passcode on CleverTap Dashboard
[](https://docs.clevertap.com/docs/salesforce-via-zapier#create-passcode-on-clevertap-dashboard)
-------------------------------------------------------------------------------------------------------------------------------------------
CleverTap uses a header-based authentication model to authenticate requests to the API. Every CleverTap API call must include Account ID and Passcode as request headers. To create a passcode, refer to [Create Account Passcode](https://developer.clevertap.com/docs/authentication#create-account-passcode)
.
Create/Update User Profiles
[](https://docs.clevertap.com/docs/salesforce-via-zapier#createupdate-user-profiles)
--------------------------------------------------------------------------------------------------------------------
Consider an example where you want to automatically sync new Salesforce contacts with CleverTap to trigger personalized engagement campaigns. This automation ensures that new contacts in Salesforce are added to CleverTap while existing profiles are updated when details change. To do so, perform the following steps:
1. Log into the [Zapier Dashboard](https://zapier.com/app/home)
and click **\+ Create Zap**.

Create a Zap on Zapier Dashboard
2. **Set up a Trigger**. To do so, perform the following steps:
1. Select _Salesforce_ from the _App_ dropdown. This starts the Zap when a trigger occurs on Salesforce.
2. Select _Trigger Event_ from the dropdown list and then select _New contacts_ for this use case.
3. Select _Account_ and sign in using your Salesforce account credentials. You can also connect a new account if your account does not appear in the dropdown.
4. Click **Continue**.

Set up a Trigger
3. Click **Test Trigger**. This ensures that the right account is connected and the trigger is set up correctly.
4. Select relevant Salesforce objects to monitor and click **Continue**.
5. **Select the Action** that the zap must perform after the trigger occurs. To do so, perform the following steps:
1. Select _CleverTap_ from the _App_ dropdown.
2. Select _Create/Update User Profile_ from the _Action event_ dropdown. This implies that whenever a new contact is added in Salesforce, a new user profile is created, or an existing user profile is updated with the new information.
3. Select _Account_ to connect the CleverTap account. The Zapier window opens. Enter all the required details to connect to the CleverTap account. Enter the same passcode you obtained during the [Create a Passcode on CleverTap Dashboard](doc:salesforce-via-zapier#create-a-passcode-on-the-clevertap-dashboard)
step.
4. Click **Continue** after successfully connecting your account.

Select Action for Zap
6. **Configure the Action**. Map Salesforce data fields to CleverTap fields as follows:
| **CleverTap Field** | **Salesforce Field** |
| --- | --- |
| **Identity** | Salesforce user ID field, email ID, or any unique identity field corresponding to the user. |
| **Creation Date** | Date of the user creation in Salesforce. |
| **Profile Properties** | Include user properties in JSON format (such as name, email, role, and other custom properties). |
> 🚧
>
> ###
>
> Mapping Identity and Object ID
>
> [](https://docs.clevertap.com/docs/salesforce-via-zapier#mapping-identity-and-object-id)
>
> You can keep the Identity field blank if you provide an Object ID, and vice versa.

Configure the Action
7. Click **Continue** and click **Test Step** to test the zap after mapping the files.
8. Click **Publish**.
After publishing this zap, a new user is created, or an existing user is updated on the CleverTap dashboard every time a trigger occurs. CleverTap uses the _Identity_ field to identify if it is a new user or an existing user. You can verify this by checking your CleverTap dashboard to confirm the user profile has been created or updated.

Verify user in CleverTap
Upload Event
[](https://docs.clevertap.com/docs/salesforce-via-zapier#upload-event)
---------------------------------------------------------------------------------------
Consider an example where you want to track key sales activities or the status of sales records in CleverTap, this automation helps by seamlessly syncing sales interactions from Salesforce to CleverTap. This enables real-time tracking, better visibility into customer touchpoints, and the ability to trigger personalized engagement strategies based on sales progress. To do so, perform the following steps:
1. Log into the [Zapier Dashboard](https://zapier.com/app/home)
and click **\+ Create Zap**.
2. **Set up a Trigger**. For this example, perform the following steps:
1. Select _Salesforce_ as the _App_. This starts the Zap when a trigger event takes place in Salesforce.
2. Select _Trigger Event_ from the dropdown list and select _Updated Record_ in this case.
3. Select _Account_ and sign in using your Salesforce account credentials. You can also connect a new account if your account does not appear in the dropdown.
4. Click **Continue**.

Set up a Trigger
3. Click **Test Trigger**. This ensures that the right account is connected and the trigger is set up correctly.
4. Click **Continue**.
5. **Select the Action** that the zap must perform after the trigger event occurs. To do so, perform the following steps:
1. Select _CleverTap_ from the _App_ dropdown.
2. Select _Upload Event_ from the _Action event_ dropdown. This implies that whenever a record is updated, an existing user profile is updated with the new information.
3. Select _Account_ to connect the CleverTap account. For more information about how to do this, refer to _step 5 (iii)_ under [Create or Update User Profiles](doc:salesforce-via-zapier#createupdate-user-profiles)
.
4. Click **Continue** after successfully connecting your account.

Select Action for Zap
6. **Configure the Action**. Map Salesforce data fields to CleverTap fields as follows:
| **CleverTap Field** | **Salesforce Field** |
| --- | --- |
| **User ID** | Salesforce user ID field, email ID, or any unique identity field corresponding to the user. |
| **Creation Date** | Event creation date. |
| **Event Name** | You can select a predefined event or create a custom event. You can also map the event name using the Salesforce data fields. |
| **Event Properties** | Include metadata in JSON format (for example, event type, priority, event properties). |
> 🚧
>
> ###
>
> Mapping Identity and Object ID
>
> [](https://docs.clevertap.com/docs/salesforce-via-zapier#mapping-identity-and-object-id-1)
>
> You can keep the Identity field blank if you provide an Object ID, and vice versa.

Configure the Action
7. Click **Continue**. Click **Test Step** to test the zap after mapping the files.
8. Click **Publish**.
After publishing this zap, an event is uploaded to the CleverTap dashboard every time a trigger occurs.
CleverTap uses the _Identity_ field to identify if it is a new user or an existing user. You can verify this by checking your CleverTap dashboard to confirm if the event has been logged.

Verify Events in CleverTap
FAQs
[](https://docs.clevertap.com/docs/salesforce-via-zapier#faqs)
=======================================================================
###
What happens if I do not map the required fields?
[](https://docs.clevertap.com/docs/salesforce-via-zapier#what-happens-if-i-do-not-map-the-required-fields)
Not mapping required fields may result in incomplete data transfer or failure to update user profiles and events correctly.
Updated about 2 months ago
* * *
Ask AI
---
# Treasure Data
Overview
[](https://docs.clevertap.com/docs/treasuredata-cdp#overview)
==========================================================================
> 📘
>
> ###
>
> Public Beta
>
> [](https://docs.clevertap.com/docs/treasuredata-cdp#public-beta)
>
> This feature is released in Public Beta. For more information about this feature or any queries, contact [Treasure Data Support](https://docs.clevertap.com/cdn-cgi/l/email-protection#93e0e6e3e3fce1e7d3e7e1f6f2e0e6e1f6bef7f2e7f2bdf0fcfe)
> .
[Treasure Data](https://www.treasuredata.com/)
, a Customer Data Platform (CDP), streamlines data transfer between systems. It enables businesses to consolidate data from one source and push it to multiple destinations, such as CleverTap, without requiring manual integration of each system.
The CleverTap and Treasure Data integration allows seamless data synchronization, enabling businesses to efficiently manage customer profiles and enhance targeted marketing efforts across platforms. If you have any issues with this integration, write to [Treasure Data support](https://support.treasuredata.com/hc/en-us/requests)
.
> 📘
>
> ###
>
> Cloud Mode Integration
>
> [](https://docs.clevertap.com/docs/treasuredata-cdp#cloud-mode-integration)
>
> This integration uses Cloud-mode integration, which facilitates efficient data synchronization between Treasure Data and CleverTap. If you require a Device-mode integration for more granular control or specific use cases, contact Treasure Data.
Integrate Treasure Data with CleverTap
[](https://docs.clevertap.com/docs/treasuredata-cdp#integrate-treasure-data-with-clevertap)
======================================================================================================================================
The integration process involves the following steps:
1. [Configure CleverTap Project on Treasure Data](doc:treasuredata-cdp#configure-clevertap-project-on-treasure-data)
.
2. [Configure a Query Result for Import](doc:treasure-data#configure-a-query-result-for-import)
. OR
[Activate a Segment from Audience Studio](doc:treasure-data#activate-a-segment-from-audience-studio)
.
Configure CleverTap Project on Treasure Data
[](https://docs.clevertap.com/docs/treasuredata-cdp#configure-clevertap-project-on-treasure-data)
--------------------------------------------------------------------------------------------------------------------------------------------------
To configure CleverTap on Treasure Data:
1. Open _TD Console_ and log in to your Treasure Data account.
2. Select _Integrations Hub_ from the top navigation menu.
3. Click **Catalog** to view available integrations from the _Integrations Hub_.
4. Search and select _CleverTap_ from the list.

Configure CleverTap Project On Treasure Data Dashboard
5. Click **Create Authentication** and enter the required credential information as follows:
| Field | Description |
| --- | --- |
| Account ID | Access the CleverTap dashboard and locate the Project ID under _Settings_ > _Project_. |
| Account Passcode | Access the CleverTap dashboard and locate the Passcode under _Settings_ > _Project_. For more information, refer to [Account Passcode](https://developer.clevertap.com/docs/authentication#create-account-passcode)
. |
| Region | Access the CleverTap dashboard and locate _Region_ for the API endpoint you want to select under _Settings_ > _Project_. To find the API endpoint for your region, refer to [API endpoints based on your data center region](https://developer.clevertap.com/docs/idc#api)
. |
6. Click **Continue**. You are prompted to enter a name for the authentication setup.
7. Enter a _Name_ for the _Authentication_ and click **Done**.
Once the setup is complete, save any changes and verify that the integration is successfully set up. For more information, refer to the [Treasure Data document](https://docs.treasuredata.com/articles/int/clevertap-export-integration/a/h2__1933218993)
.
Configure a Query Result for Import
[](https://docs.clevertap.com/docs/treasuredata-cdp#configure-a-query-result-for-import)
--------------------------------------------------------------------------------------------------------------------------------
This section provides information about steps to import user profiles, events, and segments from Treasure Data to CleverTap. This involves running a data query and setting options for the format and destination of the results. This process enables users to easily transfer and share data with other systems or tools.
The following are the steps to import data from the Treasure Data:
1. Go to _Data Workbench_ > _Queries_.
2. Select **New Query** and define your SQL query.
3. Click **Export Results** to configure the data import and enter the required details.

Connector Configuration Parameters
| Parameter | Description |
| --- | --- |
| Target Data Entity | Indicates the CleverTap Import Target Data Entity. Supported Values:
* User Profiles: Upload the data related to user profiles.
* User Events: Upload the data related to user events.
* User Audiences - Custom List: Upload custom list segment.
For more information about each Target Data Entity, refer to [Detailed Guide for Each Target Data Entity](https://docs.treasuredata.com/articles/#!int/clevertap-export-integration/a/h2_771907757)
. |
| Thread Count Number | Indicates the number of concurrent requests to the CleverTap server. The minimum is 1, the maximum is 10, and the default is 5. This parameter only applies to Target Data Entity: User Profiles and User Events. |
| Skip on Invalid Record? | Select if the job must skip the invalid record and continue to handle the next record. Otherwise, the job will stop if it encounters an invalid record. |
4. Select or create a [CleverTap authentication](doc:treasure-data#set-up-clevertap-on-treasure-data)
and click **Done**.
For more information about each Target Data Entity, refer to [Detailed Guide for Each Target Data Entity](https://docs.treasuredata.com/articles/#!int/clevertap-export-integration/a/h2_771907757)
.
Activate a Segment from Audience Studio
[](https://docs.clevertap.com/docs/treasuredata-cdp#activate-a-segment-from-audience-studio)
----------------------------------------------------------------------------------------------------------------------------------------
You can also import segment data to CleverTap by creating an activation in the Audience Studio.
1. Go to _Audience Studio_ and select a _parent segment_.
2. Right-click the target segment and select _Create Activation_.
3. Enter and configure an activation name based on the above configuration parameters from the _Details_ section.
4. Customize the activation output from the _Output Mapping_ section.

Customize Activation Output from Output Mapping section
* Attribute Columns
* Toggle ON the **Export All Columns** to import all columns without making any changes.
* Click **\+ Add Columns** to add specific columns for the import. The _Output Column Name_ pre-populates with the same _Source_ column name. You can update the _Output Column Name_. Continue to select **\+ Add Columns** to add new columns for your activation output.
* String Builder
Add string to create strings for export. Select from the following values:
* String: Choose any value; use text to create a custom value.
* Timestamp: The date and time of the export.
* Segment Id: The segment ID number.
* Segment Name: The segment name.
* Audience Id: The parent segment number.
5. Set a _Schedule_. Define your schedule and include optional email notifications.

Define Schedule to Activate a Segment
5. Click **Create** to finalize the activation.
You are now ready to import data into the CleverTap dashboard.
Updated about 2 months ago
* * *
Ask AI
---
# Litmus
Overview
[](https://docs.clevertap.com/docs/litmus#overview)
================================================================
[Litmus](https://www.litmus.com/)
is a powerful personalization platform that helps marketers create dynamic, real-time content for emails, In-app messages, and push notifications. With Litmus, you can generate personalized visuals such as countdown timers, sentiment trackers, and user-specific images that render upon message open, driving deeper engagement and urgency.
CleverTap and Litmus integration enables you to deliver high-impact, personalized messaging experiences that drive conversions. With this integration, marketers can:
* Create dynamic content in Litmus using real-time personalization.
* Embed personalized images into CleverTap campaigns using HTML or image URLs.
* Tailor content at send time with CleverTap Liquid tags for user-specific personalization.
Prerequisites for Integration
[](https://docs.clevertap.com/docs/litmus#prerequisites-for-integration)
==========================================================================================================
The following are the prerequisites for Litmus:
* Ensure you have access to your Litmus account with access to the Personalize module.
* Ensure you have a CleverTap account.
> 🚧
>
> ###
>
> Support for Integration
>
> [](https://docs.clevertap.com/docs/litmus#support-for-integration)
>
> This integration is managed and continuously improved by Litmus. The CleverTap and Litmus integration has undergone stringent testing to ensure seamless functionality. For any questions or issues, contact [Litmus](https://help.litmus.com/)
> for support and resolution.
Integrate Litmus with CleverTap
[](https://docs.clevertap.com/docs/litmus#integrate-litmus-with-clevertap)
==============================================================================================================
Using content created with Litmus, you can deliver real-time personalized visuals in your CleverTap campaigns. For example, you can use Litmus to generate a dynamic countdown timer or personalized image and embed it directly into your Email, In-App, or Push Notification campaign.
Consider a small example where you want to create an email campaign promoting a 48-hour flash sale. You can achieve this by adding a countdown timer to the campaign. The timer creates urgency by showing exactly how much time is left before the offer expires, encouraging users to take immediate action.
To implement this, perform the following two major steps:
1. [Create Personalized Content in Litmus](doc:litmus#create-personalized-content-in-litmus)
.
2. [Configure Litmus in CleverTap campaigns](doc:litmus#configure-litmus-in-clevertap-campaigns)
.
Create Personalized Content in Litmus
[](https://docs.clevertap.com/docs/litmus#create-personalized-content-in-litmus)
--------------------------------------------------------------------------------------------------------------------------
1. Click **Create New** and select _Personalized Content_ from the [Litmus](https://litmus.com/sessions/new)
dashboard to create dynamic content.
2. Select an image type such as:
* **Countdown Timer**: Select this option to include a live countdown to create urgency for events or offers. For example, use it in a flash sale email showing _“Only 2 hours left!"_
* **Personalized Image**: Select this option to include user-specific details such as name, location, or plan type within an image. For example, in a subscription renewal campaign, show an image that reads:
“John, your Pro Plan benefits in New York expire in 3 days!”
The personalized details—John, Pro Plan, and New York—are rendered directly in the image, making the message feel tailor-made and more likely to catch the user's eye in a crowded inbox.
* **Sentiment Tracker**: Select this option to show real-time emotional feedback (such as a smiley-to-sad scale) based on campaign engagement. For example, add it to post-purchase emails to gather satisfaction ratings.
* **Scratch-off**: Select this option to create an interactive reveal experience, ideal for surprise discounts or offers. For example, use it in a festive campaign where users scratch to reveal a 20% coupon.
For this example, we are selecting the _Personalized Image_ option.
3. Upload your own image or select from existing image templates. For our example, we are selecting an already existing template for customization.

Personalized Image
4. Design your image by using the following customization options:
* **Add Text**: To place custom text on the image.
* **Add Dynamic Text**: To assign a label (for example, first name).
5. Adjust styling and alignment as needed.
6. Save and generate HTML code. To do so, perform the following steps:
1. Click **Next: Preview your personalized image** to test the content with sample values.
2. Provide a _First Name_ and an _Email_ where the saved file details will be sent.
3. Click **Next: Save and Get HTML**
4. Click **Copy HTML** to copy the HTML and use it in CleverTap campaigns.

Save and generate HTML code
Configure Litmus in CleverTap campaigns
[](https://docs.clevertap.com/docs/litmus#configure-litmus-in-clevertap-campaigns)
------------------------------------------------------------------------------------------------------------------------------
The [personalized content configured in Litmus](doc:litmus#create-personalized-content-in-litmus)
can be used in any CleverTap campaign that supports HTML or image URLs. While this guide includes an example for an [email campaign](doc:litmus#configure-personalized-email-campaign-in-clevertap)
, you can also use Litmus content in [Push Notification](doc:create-message-push)
, [In-App campaigns](doc:create-message-in-app)
, and other CleverTap messaging channels that support dynamic visuals.
Configure Personalized Email Campaign in CleverTap
[](https://docs.clevertap.com/docs/litmus#configure-personalized-email-campaign-in-clevertap)
----------------------------------------------------------------------------------------------------------------------------------------------------
Set up and personalize your email campaigns in CleverTap to engage users effectively. To do so, follow these steps:
1. Go to the _Campaigns_, click **\+ Campaign**, and select _Email_ from the list of messaging channels.
2. Configure the campaign as per your requirements and click **Go to Editor** under the _What_ section.
3. Select a _Basic Template_, _Pre-used Template_, or a _Saved Template_.
4. Switch to **Source** mode in the email editor to edit the HTML code of the email body.
5. Paste the copied **Litmus HTML snippet** inside the `` section in CleverTap Email editor Source.

Insert the HTML Code Snippet
6. Replace the `MERGE_TAG` with the appropriate [CleverTap Liquid Tag](doc:personalize-message-all#liquid-tags)
for personalization.
Set default values to ensure a fallback is displayed when specific data is not available (for example, `{{Profile.name | default: "NULL"}}` will display "NULL" if the name field is empty). Refer to [Litmus Merge Tags](https://help.litmus.com/article/136-using-merge-tags)
for more details.
7. Send a test email to verify personalization and ensure the Litmus integration functions correctly.

Test Email
8. Publish the email campaign once verification is complete. Users will receive personalized emails based on the configured Liquid Tags and settings.
By combining Litmus's dynamic content capabilities with CleverTap’s advanced segmentation and messaging, you can create timely, relevant interactions that resonate with every user. For more information on using personalization in CleverTap, refer to [CleverTap Liquid Tags](doc:personalize-message-all#liquid-tags)
.
Updated about 2 months ago
* * *
Ask AI
---
# Crash Analytics Partners
This integration allows you to log crash events for your application. CleverTap offers integration with [Apteligent](doc:apteligent)
to provide detailed iOS crash reporting and provide a better app experience.
Updated about 2 months ago
* * *
Ask AI
---
# Zoho Form
Overview
[](https://docs.clevertap.com/docs/zoho-form-via-zapier#overview)
==============================================================================
[Zoho Forms](https://www.zoho.com/)
is an online form builder that enables businesses to collect structured data for lead generation, feedback, event registrations, and more.
Using Zapier to integrate Zoho Form with CleverTap, you can do the following:
* **Keep CRM Data Synchronized**: When a new lead submits a Zoho Form, [create a user profile](doc:zoho-form-via-zapier#createupdate-user-profiles)
in CleverTap with details such as name, email, phone number, and so on.
* **Remove Converted Users from Re-Engagement Campaigns**: When a user converts through a Zoho Form (for example, completes a feedback), [update the user profile](doc:zoho-form-via-zapier#createupdate-user-profiles)
in CleverTap (example, mark the profile as Converted).
* **Track Lead Source**: When a new lead submits a Zoho Form, [upload an event](doc:zoho-form-via-zapier#upload-event)
in CleverTap with details such as event name, lead source, campaign name, and lead contact information. You can then use the event data to add the lead to a Zoho Form for tailored retargeting ads.
Prerequisites for Integration
[](https://docs.clevertap.com/docs/zoho-form-via-zapier#prerequisites-for-integration)
========================================================================================================================
The following are the prerequisites for Zoho:
* Ensure you have access to your Zoho account.
* Ensure you have access to an active Zapier account to create the CleverTap app.
* Ensure you have access to the CleverTap dashboard.
Integrate Zoho with CleverTap
[](https://docs.clevertap.com/docs/zoho-form-via-zapier#integrate-zoho-with-clevertap)
========================================================================================================================
The integration process involves the following two major steps:
1. [Create a Passcode on the CleverTap Dashboard](doc:zoho-form-via-zapier#create-a-passcode-on-the-clevertap-dashboard)
.
2. [Create/Update User Information](doc:zoho-form-via-zapier#createupdate-user-profiles)
. OR
[Upload Event](doc:zoho-form-via-zapier#upload-event)
Create a Passcode on the CleverTap Dashboard
[](https://docs.clevertap.com/docs/zoho-form-via-zapier#create-a-passcode-on-the-clevertap-dashboard)
------------------------------------------------------------------------------------------------------------------------------------------------------
CleverTap uses a header-based authentication model to authenticate requests to the API. Every CleverTap API call must include Account ID and Passcode as the request headers. To create a passcode, refer to [Create Account Passcode](https://developer.clevertap.com/docs/authentication#create-account-passcode)
.
Create/Update User Profiles
[](https://docs.clevertap.com/docs/zoho-form-via-zapier#createupdate-user-profiles)
-------------------------------------------------------------------------------------------------------------------
Consider an example where you want to automatically sync leads from Zoho with CleverTap to trigger personalized engagement campaigns. This automation ensures that new leads from Zoho are added to CleverTap while existing leads are updated when details change. To do so, perform the following steps:
1. Log in to the [Zapier dashboard](https://zapier.com/app/home)
and click **\+ Create Zap**. Zapier can connect different applications, such as Zoho.

Create a Zap on Zapier Dashboard
2. **Set up a Trigger**. To do so, perform the following steps:
1. Select _Zoho Forms_ from the _App_ section. This starts the Zap when a trigger event occurs on Zoho Forms.
2. Select _Trigger Event_ from the dropdown list and then select _New Form Entry_ for this use case.
3. Select _Account_ and sign in using your Zoho Forms account credentials. You can also connect a new account if your account does not appear in the dropdown.
4. Click **Continue**. From the _Configure_ section, fill in the mandatory detail.
5. Click **Continue**.

Set Up Trigger Event
3. Click **Test Trigger**. This ensures that the right account is connected and the trigger is set up correctly.
4. Click **Continue**.
5. **Select the Action the zap must perform after the trigger event occurs.** To do so, perform the following steps:
1. Select _CleverTap_ from the _App_ event dropdown.
2. Select _Create/Update User Profile_ from the _Action event_ dropdown. This implies that whenever a new lead is generated, a new user profile is created, or an existing user profile is updated with the new information.
3. Select _Account_ to connect the CleverTap account. The Zapier window opens.
4. Enter all the required details to connect to the CleverTap account. Enter the same passcode you obtained in the [Create a Passcode on CleverTap Dashboard](doc:zoho-form-via-zapier#create-a-passcode-on-the-clevertap-dashboard)
step.
5. Click **Continue** after successfully connecting your account.

Select Action for Zap
6. **Configure the Action**. Map Zoho Form data fields to CleverTap fields as follows:
| **CleverTap Field** | **Zoho Form** |
| --- | --- |
| **Identity** | Zoho Form user ID field, email ID, or any unique identity field corresponding to the user. |
| **Creation Date** | Date of the user’s creation in Zoho Form. |
| **Profile Properties** | Include user properties in JSON format (such as name, email, role, and other custom properties). |
> 🚧
>
> ###
>
> Mapping Identity and Object ID
>
> [](https://docs.clevertap.com/docs/zoho-form-via-zapier#mapping-identity-and-object-id)
>
> You can keep the Identity field blank if you provide an Object ID, and vice versa.

Configure the Action
7. Click **Continue** and click **Test Step** to test the zap after mapping the files.
8. Click **Publish**.
After publishing this zap, a new user is created, or an existing user is updated on the CleverTap dashboard every time a trigger occurs. CleverTap uses the _Identity_ field to identify if it is a new user or an existing user. You can verify this by checking your CleverTap dashboard to confirm the user profile has been created or updated.

Verify user in CleverTap
Upload Event
[](https://docs.clevertap.com/docs/zoho-form-via-zapier#upload-event)
--------------------------------------------------------------------------------------
Consider an example where you want to upload an event to CleverTap with details such as event name, lead source, campaign name, and lead contact information. Every time a new lead submits a Zoho form. This automation ensures that user actions or events tracked in Zoho form are automatically recorded in CleverTap, enabling better tracking and personalized engagement strategies. To do so, perform the following steps:
1. Log in to the [Zapier dashboard](https://zapier.com/app/home)
and click **\+ Create Zap**.
2. **Set up a Trigger**. For this example, perform the following steps:
1. Select _Zoho Forms_ from the _App_ section. This starts the Zap when a trigger event occurs on Zoho Forms.
2. Select _Trigger Event_ from the dropdown list and then select _New Form Entry_ for this use case.
3. Select _Account_ and sign in using your Zoho Forms account credentials. You can also connect a new account if your account does not appear in the dropdown.
4. Click **Continue**. From the _Configure_ section, fill in the mandatory detail.
5. Click **Continue**.

Set Up Trigger Event
3. Click **Test Trigger**. This ensures that the right account is connected and the trigger is set up correctly.
4. Click **Continue**.
5. Select the Action that the zap must perform after the trigger event occurs. To do so, perform the following steps:
1. Select _CleverTap_ from the _App_ event dropdown.
2. Select _Upload Event_ from the Action _event_ dropdown. This implies that whenever a new event is generated, a new user profile is created, and an existing user profile is updated with the new information.
3. Select _Account_ to connect the CleverTap account. For more information about how to do this, refer to _step 5 (iii)_ under [Create or Update User Profiles](doc:zoho-form-via-zapier#createupdate-user-profiles)
.
4. Click **Continue** after successfully connecting your account.

Select Action for Zap
6. **Configure the Action**. Map Zoho Form data fields to CleverTap fields as follows:
| **CleverTap Field** | **Zoho Form** |
| --- | --- |
| **User ID** | Zoho Form user ID field, email ID, or any unique identity field corresponding to the user. |
| **Creation Date** | Event creation date. |
| **Event Name** | Select a predefined event or create a custom event. You can also map the event name using the Zoho Form data fields. |
| **Event Properties** | Include metadata in JSON format (for example, event type, priority, event properties). |
> 🚧
>
> ###
>
> Mapping Identity and Object ID
>
> [](https://docs.clevertap.com/docs/zoho-form-via-zapier#mapping-identity-and-object-id-1)
>
> You can keep the Identity field blank if you provide an Object ID, and vice versa.

Configure the Action
7. Click **Continue**. Click **Test Step** to test the zap after mapping the files.
8. Click **Publish**.
After publishing this zap, an event is uploaded to the CleverTap dashboard every time a trigger occurs. CleverTap uses the _Identity_ field to identify if it is a new user or an existing user.
You can verify this by checking your CleverTap dashboard to confirm if the event has been logged.

Verify Events in CleverTap
FAQs
[](https://docs.clevertap.com/docs/zoho-form-via-zapier#faqs)
======================================================================
###
What happens if I do not map the required fields?
[](https://docs.clevertap.com/docs/zoho-form-via-zapier#what-happens-if-i-do-not-map-the-required-fields)
Not mapping required fields may result in incomplete data being transferred or failure to update user profiles and events correctly.
Updated about 2 months ago
* * *
Ask AI
---
# Omnissa Intelligence (Apteligent)
Overview
[](https://docs.clevertap.com/docs/omnissa-intelligence-apteligent#overview)
=========================================================================================
[Omnissa Intelligence (Apteligent)](http://www.apteligent.com/)
, a mobile application platform, helps build better and faster applications by providing application performance insights. The CleverTap and Omnissa Intelligence (Apteligent) integration sends crash events to CleverTap. This information helps you with the following:
* Create audiences of application users to engage through in-app and push messages. For example, apologize for a crash instance and let the users know that a fix is on its way.
* Detect if the application is having an outage and stop sending push notifications.
How does it work?
[](https://docs.clevertap.com/docs/omnissa-intelligence-apteligent#how-does-it-work)
==========================================================================================================
The Omnissa Intelligence (Apteligent) SDK creates a notification that is triggered when the SDK detects a crash. This notification is fired when an iOS user loads the app after a crash. The notification contains the following information:
* Crash Name: The name of the crash (i.e., NSRangeException).
* Crash Reason: More details on why the crash occurred (i.e., "\*\*\* -\[\_\_NSArrayM objectAtIndex:\]: index 18446744073709551615 beyond bounds for empty array")
* Crash Date: The date and time when the crash occurred.
Integrate Omnissa Intelligence (Apteligent) with CleverTap
[](https://docs.clevertap.com/docs/omnissa-intelligence-apteligent#integrate-omnissa-intelligence-apteligent-with-clevertap)
===========================================================================================================================================================================================
This process involves the following two major steps:
1. Register an Observer
To register an observer, add the following lines of code:
Objective-C
[[NSNotificationCenter defaultCenter] addObserver:self\
selector:@selector(crashDidOccur:)\
name:@"CRCrashNotification"\
object:nil];
> 📘
>
> ###
>
> Note
>
> [](https://docs.clevertap.com/docs/omnissa-intelligence-apteligent#note)
>
> Ensure that you add this code before you initialize Omnissa Intelligence (Apteligent) SDK.
2. Send an Event Upon Notification
Log the crash event and update the CleverTap user attributes with data from Omnissa Intelligence (Apteligent) crash reporting analytics after receiving the notification.
To do so, add the following lines of code:
Objective-C
- (void) crashDidOccur:(NSNotification*)notification {
NSDictionary *crashInfo = notification.userInfo;
NSString *crashName = crashInfo[@"crashName"]];
NSString *crashReason = crashInfo[@"crashReason"];
NSDate *crashDate = crashInfo[@"crashDate"];
// CleverTap
[[CleverTap sharedInstance] recordEvent:@"ApteligentCrashEvent" withParameters:crashInfo];
}
Updated about 2 months ago
* * *
Ask AI
---
# mParticle
Overview
[](https://docs.clevertap.com/docs/mparticle-2#overview)
=====================================================================
[mParticle](https://www.mparticle.com/)
is a customer data platform that manages data quality and enhances customer interactions. Integrating CleverTap with mParticle enables seamless data exchange for enriched insights and analysis.
* [mParticle Import (Audience)](doc:mparticle-import-audience)
* [mParticle Export](doc:mparticle-export)
* [mParticle Integrations](https://developer.clevertap.com/docs/mparticle)
Updated about 2 months ago
* * *
Ask AI
---
# Customer Data Platform
CleverTap integrates with the following Customer Data Platforms, so you can send your user data to any system:
* [Boltic](doc:boltic)
* [Census](doc:census)
* [HighTouch](doc:hightouch)
* [mParticle Export](doc:mparticle-export)
* [mParticle Import (Audience)](doc:mparticle-import-audience)
* [Nexla](doc:nexla)
* [RudderStack](https://developer.clevertap.com/docs/rudderstack)
* [Segment Export](doc:segmentcom)
* [Treasure Data](doc:treasuredata-cdp)
Updated 23 days ago
* * *
Ask AI
---
# Census
Overview
[](https://docs.clevertap.com/docs/census#overview)
================================================================
[Census](https://www.getcensus.com/)
is a Reverse ETL platform that makes it easy to connect your data warehouse to sales, marketing, and other customer-facing tools that drive your business.
With CleverTap and Census integration, you can:
* Import user data from Census into CleverTap to create personalized campaigns.
* Import customer events into CleverTap to keep them updated with data from the Census.
* Enhance customer experiences by integrating data from other interactions, such as website visits or app usage.
This powerful combination boosts customer engagement and drives impactful marketing and business results.
> 🚧
>
> ###
>
> Support For Integration
>
> [](https://docs.clevertap.com/docs/census#support-for-integration)
>
> This integration is managed and continuously improved by Census. The CleverTap and Census integration has undergone stringent testing to ensure seamless functionality. For any questions or issues, contact [Census](https://docs.clevertap.com/cdn-cgi/l/email-protection#cab9bfbabaa5b8be8aadafbea9afa4b9bfb9e4a9a5a7)
> for support and resolution.
Prerequisites for Integration
[](https://docs.clevertap.com/docs/census#prerequisites-for-integration)
==========================================================================================================
The following are the prerequisites:
* Ensure you have a Census account.
* Ensure you have a CleverTap account with valid **Account ID**, **Passcode**, and **Region**.
Integrate Census with CleverTap
[](https://docs.clevertap.com/docs/census#integrate-census-with-clevertap)
==============================================================================================================
This process involves the following two major steps:
1. [Add CleverTap as a Destination on Census](doc:census#add-clevertap-as-a-destination-on-census)
.
2. [Connect Data Source in Census](doc:census#connect-data-source-in-census)
.
Add CleverTap as a Destination on Census
[](https://docs.clevertap.com/docs/census#add-clevertap-as-a-destination-on-census)
--------------------------------------------------------------------------------------------------------------------------------
To add CleverTap as a destination in Census:
1. Go to _Connections_ from your Census dashboard and click **\+ New Destination**.
2. Search for _CleverTap_ and select it.
3. Enter the following details:
| Field | Description |
| --- | --- |
| Account ID | Locate the Project ID under _Settings_ > _Project_ from the CleverTap dashboard. |
| Account Passcode | Locate the Passcode under _Settings_ > _Project_ from the CleverTap dashboard. For more information, refer to [Account Passcode](https://developer.clevertap.com/docs/authentication#create-account-passcode)
. |
| Region | Locate _Region_ for the API endpoint you want to select under _Settings_ > _Project_. To find the API endpoint for your region, refer to [API endpoints based on your data center region](https://developer.clevertap.com/docs/idc#api)
. |
4. (Optional) Click **Test** to test the connection and verify your entered credentials.
5. Click **Finish** to add CleverTap as a destination once the connection is verified.

Add New Destination
Connect Data Source in Census
[](https://docs.clevertap.com/docs/census#connect-data-source-in-census)
----------------------------------------------------------------------------------------------------------
Set up your preferred data source in Census to sync and manage data efficiently. To do so:
1. **Add a Data Source**:
1. Go to the _Sources_ section from the Census dashboard and click **\+ New Source**.
2. Select your preferred data source (For example, Google Sheets, databases, or data warehouses).
3. Follow the on-screen prompts to configure the connection and provide the required credentials, authentication tokens, or endpoint URLs as needed, based on the source.

Add New Source
2. **Test the Connection**: After completing the setup, click **Test** to verify the details and ensure the source is successfully connected.
For detailed instructions, refer to [Census](https://docs.getcensus.com/sources/overview)
.
Send Data from Census to CleverTap
[](https://docs.clevertap.com/docs/census#send-data-from-census-to-clevertap)
====================================================================================================================
Import customer data, including user profiles and events, from your data sources into CleverTap to enhance targeting and engagement.
> 🚧
>
> ###
>
> IMPORTANT
>
> [](https://docs.clevertap.com/docs/census#important)
>
> If your data source, such as Google Sheets, does not update in real-time, the information sent from Census to CleverTap might not capture the latest user actions or events. For instance, if a user updates their profile or makes a purchase but the Google Sheet has not synced yet, CleverTap receives outdated data until the sheet is refreshed. To maintain up-to-date information, consider syncing the data more frequently or switching to a real-time data source.
Send Profiles to CleverTap
[](https://docs.clevertap.com/docs/census#send-profiles-to-clevertap)
----------------------------------------------------------------------------------------------------
To import user profiles from your data warehouse into CleverTap:
1. Go to _Syncs_ and **\+ Create a new Sync** from your Census Dashboard.
2. Under _Select a Source_, choose a connection and its source.
3. Select the schema and the table you want to sync.
4. Select _CleverTap_ as a _Connection_ from the _Select a Destination_ dropdown and select _Profile_ under the _Object_ dropdown.
For more detailed instructions, refer to the [Census Documentation on CleverTap Integration](https://docs.getcensus.com/destinations/available-destinations/clevertap)
.

Select a Destination
5. Select a _Sync Behavior_. CleverTap supports _Update or Create_.

Sync Behavior.
6. _Select a Sync Key_ defines the key identifier for matching data in CleverTap. Census uses this key to determine which data to sync during each run. The column and field must have the same unique value.
For example, use `user_id` as the primary identity key (mapped to _User Identity_ in CleverTap).

Sync Key
7. Under **Set Up CleverTap Field Mappings**, select _Specific Columns_ properties or _Sync All Columns_ properties.
* _Specific Columns_: Specify exactly which columns apply to the destination.
* _Sync All Columns_: Sync all columns from the source to the destination. Any new columns will be automatically added.
Map source columns to CleverTap profile fields (for example, `username ➔ Name`, `email ➔ Email`). When you add a mapping, Census automatically matches some of the standard properties in CleverTap. You can also opt to create new properties inside CleverTap.

Set Up CleverTap Field Mappings
8. **Confirm Sync Details**: After configuring the sync, confirm your sync details and click **Create Sync** to set up the new sync.
9. **Set Sync Trigger**: Configure either a manual (One-Time Sync) or automatic (Periodic Sync) trigger for the sync.
* _One-Time Sync_: To trigger an immediate sync, select **Run Sync Now**. This initiates an instant, one-time data sync.
* _Periodic Sync_: To schedule regular updates, select _Sync Trigger_ and define the schedule to run sync automatically. This ensures that data between Census and CleverTap remains up-to-date, with profiles and events continuously updated.

Set Sync Trigger
Go to the _Segments_ page from the CleverTap to confirm the synced profile data.

Segments
Send Events to CleverTap
[](https://docs.clevertap.com/docs/census#send-events-to-clevertap)
------------------------------------------------------------------------------------------------
To send events from your data warehouse to CleverTap:
1. Go to _Syncs_ and click **\+ Create a new Sync** on your Census Dashboard.
2. Under _Select a Source_, choose a connection and its source.
3. Select the schema and the table you want to sync.
4. _Select a Destination_:
1. Under _Select a Destination_, choose _CleverTap_ as a connection.
2. Under _Object_, select _Event_.
For detailed instructions, refer to the [Census Documentation on CleverTap Integration](https://docs.getcensus.com/destinations/available-destinations/clevertap)
.

Select a Destination
5. _Select a Sync Behavior_. The sync behavior determines how changes are handled between the source and CleverTap. If you select **Send**, an event is created on CleverTap every time new records are detected in the source system.

Sync Behavior
6. _Select a Sync Key_. The Sync Key is a column that identifies unique records in the source, such as `user_id`. When a new sync key is detected, an event is raised on Clevertap.

Sync Key
7. Under _Set Up CleverTap Field Mappings_, select whether you want to sync specific or all properties.
When you add a mapping, Census automatically matches standard properties in CleverTap. You can also create new properties in CleverTap if needed. Syncing **Event Name** (Action) and **User Identity** (Customer ID) is mandatory.
* **Configure Event Syncing**: Use `user_id` or another unique identifier to link events to user profiles. Map source columns to CleverTap event fields, such as: `transaction_value ➔ Transaction Value` or `currency ➔ Currency`
* **Map Columns** : Map the source columns (for example, `user_email`) to corresponding fields in CleverTap. This ensures the correct data is sent to the proper fields.
* **Assign Data Type**: Ensure each field is assigned the correct data type (for example, String, Number, Date, Boolean) for proper data processing.
The following example shows the mapping for the _Charged_ event
* `transaction_value ➔ Transaction Value`
* `currency ➔ Currency`
* `product_category ➔ Product Category`
* `discount_applied ➔ Discount Applied`

Set Up Field Mapping
8. **Confirm Sync Details**: After configuring the sync, confirm your sync details and click **Create Sync** to set up the new sync.
9. **Set Sync Trigger**: Configure either a manual (One-Time Sync) or automatic (Periodic Sync) trigger for the sync.
* _One-Time Sync_: To trigger an immediate sync, select **Run Sync Now**. This initiates an instant, one-time data sync.
* _Periodic Sync_: To schedule regular updates, select _Sync Trigger_ and define the schedule to run sync automatically. This ensures that data between Census and CleverTap remains up-to-date, with profiles and events being updated continuously.

Sync Trigger
You can verify the synced event data by navigating to _User Profiles_ or _Event Analytics_ from the CleverTap dashboard.

User Profiles CleverTap Dashboard
FAQs
[](https://docs.clevertap.com/docs/census#faqs)
========================================================
###
What types of data can I sync to CleverTap from Census?
[](https://docs.clevertap.com/docs/census#what-types-of-data-can-i-sync-to-clevertap-from-census)
You can sync user profiles and event data from different data sources supported by Census, including data warehouses, Google Sheets, and databases.
###
How frequently can I sync data?
[](https://docs.clevertap.com/docs/census#how-frequently-can-i-sync-data)
Syncs can be scheduled periodically or triggered on demand based on the business requirements.
###
What happens if I map a field incorrectly?
[](https://docs.clevertap.com/docs/census#what-happens-if-i-map-a-field-incorrectly)
Incorrect mapping can lead to inaccurate data being updated in CleverTap. You can modify the field mapping in Census to resolve the issue and re-sync.
###
Can I sync historical data?
[](https://docs.clevertap.com/docs/census#can-i-sync-historical-data)
You can configure Census to include historical data during the initial sync.
###
Who should I contact for support?
[](https://docs.clevertap.com/docs/census#who-should-i-contact-for-support)
For any issues or queries, contact Census at [\[email protected\]](https://docs.clevertap.com/cdn-cgi/l/email-protection#7f0c0a0f0f100d0b3f181a0b1c1a110c0a0c511c1012)
.
Updated about 2 months ago
* * *
Ask AI
---
# Boltic
Overview
[](https://docs.clevertap.com/docs/boltic#overview)
================================================================
[Boltic](https://boltic.io/)
, a powerful platform for AI-driven workflows and automation, allows you to seamlessly connect various tools and services for efficient data synchronization and automation.
Boltic offers two seamless ways to integrate with CleverTap, allowing you to push user profiles and events (custom and predefined) efficiently. You can choose between:
* [API-based Integration (using Webhooks and API calls)](doc:boltic#method-1-api-based-integration)
for real-time, event-driven automation.
* [Data Hub Stream integration](doc:boltic#method-2-data-hub-stream-integration)
for direct, scalable data synchronization from multiple sources.
Boltic helps centralize user data, automate workflows, and enhance engagement campaigns in CleverTap. Common use cases include:
* **Subscription Management**: Send payment and subscription events (for example, renewals, cancellations, and so on) to CleverTap to drive targeted messaging.
* **Lifecycle Marketing**: Send key lifecycle events (for example, Signup, Login, Purchase, and so on) to CleverTap to trigger automated engagement workflows.
* **E-Commerce Feedback**: Send events to CleverTap after closing a support ticket, enabling feedback collection and engagement.
Prerequisites for Integration
[](https://docs.clevertap.com/docs/boltic#prerequisites-for-integration)
==========================================================================================================
The following are the prerequisites for Boltic:
* For [API-based Integration](doc:boltic#method-1-api-based-integration)
:
* Boltic account with Webhook and API action permissions.
* CleverTap account with valid **Account ID**, **Passcode**, and **Region**.
* For [Data Hub Stream Integration](doc:boltic#method-2-data-hub-stream-integration)
:
* A Boltic account with access to Data Hub.
* A CleverTap account with appropriate permissions to receive streamed data.
Integrate Boltic with CleverTap
[](https://docs.clevertap.com/docs/boltic#integrate-boltic-with-clevertap)
==============================================================================================================
Boltic offers two methods to integrate with CleverTap, allowing you to push user profiles and event data seamlessly:
* [Method 1: API-based Integration](doc:boltic#method-1-api-based-integration)
* [Method 2: Data Hub Stream Integration](doc:boltic#method-2-data-hub-stream-integration)
Method 1: API-based Integration
[](https://docs.clevertap.com/docs/boltic#method-1-api-based-integration)
-------------------------------------------------------------------------------------------------------------
With this method, you can directly transfer event and user profile data using Webhooks and API calls. To set up this integration, perform the following steps:
1. [Create Passcode on the CleverTap Dashboard](doc:boltic#create-passcode-on-clevertap-dashboard)
2. [Send Data to CleverTap (Using Webhooks & API Actions)](doc:boltic##send-data-to-clevertap-using-webhooks--api-actions)
###
Create Passcode on CleverTap Dashboard
[](https://docs.clevertap.com/docs/boltic#create-passcode-on-clevertap-dashboard)
CleverTap uses a header-based authentication model to authenticate requests to the API. Every CleverTap API call must include the Account ID and Passcode as the request headers. To create a passcode, refer to [Create Account Passcode](https://developer.clevertap.com/docs/authentication#create-account-passcode)
.
###
Send Data to CleverTap (Using Webhooks & API Actions)
[](https://docs.clevertap.com/docs/boltic#send-data-to-clevertap-using-webhooks--api-actions)
Boltic allows you to send user profiles and event data to CleverTap using triggers such as Webhooks, Fynd, Slack, Calendly, and Webflow. These triggers help automate data flow based on predefined conditions.
For example, you want to automate user engagement with CleverTap to run an E-commerce mobile app and want to:
* **Track New User Sign-ups**: Every time new users register, their profile details (such as name, email, and phone number) should be updated in CleverTap to personalize their experience.
* **Capture Purchase Events**: When a user makes a purchase, the event data (such as product ID, price, and currency) should be sent to CleverTap to trigger relevant engagement campaigns such as order confirmations, loyalty rewards, or cross-sell recommendations.
For this specific use case, we will use the Webhook trigger to send real-time data updates to CleverTap, tracking new user sign-ups (user profiles) and capturing purchase data (event data). To do so, follow these steps:
1. Go to _Workflows_ on the Boltic dashboard and click **\+ Create Workflow** and assign it a unique name.
2. **Set Up a Trigger** to initiate actions when specific criteria are met, streamlining automation processes:
1. Select _Webhook_ from the _Trigger_ dropdown.
2. Click **Webhook** for configuration (refer to the following GIF):
1. Select the appropriate authentication type from the dropdown.
2. Enter a test payload in JSON format per the use case. The following are sample JSON payloads for pushing data.
* Sample Payload for Sending User Profile Data (Track New User Sign-ups)
json
//for pushing user profile
{
"payload": {
"name": "John D",
"user_id": "1717"
}
}
* Sample Payload for Sending Event Data (Capture Purchase Events)
json
//for pushing events
{
"payload": {
"user_id": "1717",
"event_name": "Product Purchased",
"properties": {
"amount": 499.99,
"currency": "USD",
"product_id": "98765"
}
}
}
3. Click **Save** to test and save the trigger.

4. **Select the API Action** to send the events or user profiles to CleverTap from Boltic whenever the trigger event occurs. Follow these steps:
1. Drag the **API** block from the _Helpers_ panel on the left and drop it below the **Webhook** block in the workflow.
2. Click **API** for configuration:
1. Set the _HTTP Method_ to _POST_ to send the events and user profiles to CleverTap.
2. Enter the following _CleverTap API endpoint URL_, where you need to replace `` with the region of your CleverTap account. To know the region of your account, refer to [API Quick Start Guide](https://developer.clevertap.com/docs/api-quickstart-guide)
:
https://.api.clevertap.com/1/upload

5. Configure _Headers_ to connect the CleverTap Account. To do so, perform the following steps:
1. Enter the required details in the headers to connect the CleverTap account. Use the same passcode obtained during the [Create a Passcode on CleverTap Dashboard](doc:boltic#create-a-passcode-on-the-clevertap-dashboard)
step.
2. Add the following key-value pairs in the headers:
| **Header Key** | **Description** |
| --- | --- |
| **Content-Type** | `application/json` |
| **X-CleverTap-Account-Id** | Your CleverTap Account ID |
| **X-CleverTap-Passcode** | Your CleverTap Passcode |

6. **Configure the Request Body**. Based on your use case, you can send user profiles or events (custom/predefined). Use the following payload structure in the API body:
Sending User Profiles
{
"d": [\
{\
"identity": "{{payload.user_id}}",\
"type": "profile",\
"profileData": {\
"Name": "{{payload.name}}",\
"Email": "{{payload.email}}"\
}\
}\
]
}
Send Events
{
"d": [\
{\
"objectId": "{{payload.user_id}}",\
"type": "event",\
"evtName": "{{payload.event_name}}",\
"evtData": {\
"Product ID": "{{payload.properties.product_id}}",\
"Amount": "{{payload.properties.amount}}",\
"Currency": "{{payload.properties.currency}}"\
}\
}\
]
}
7. Click **Save** to save the API configuration.

8. Click **Test** to verify the workflow. Check the inputs, outputs, and logs to verify:
* Successful API requests.
* Data reflecting accurately in CleverTap.

9. Click **Publish** to activate the workflow after testing is successful.
After publishing the workflow for updating user profiles or uploading events, a new user is created, an existing user is updated, or an event is uploaded to the CleverTap dashboard every time a trigger occurs. CleverTap uses the _Identity_ field to determine whether the action applies to a new or existing user.
Method 2: Data Hub Stream Integration
[](https://docs.clevertap.com/docs/boltic#method-2-data-hub-stream-integration)
-------------------------------------------------------------------------------------------------------------------------
This method leverages Boltic Data Hub to automate event and user profile data flow from various sources to CleverTap.
To integrate using this method, perform the following steps:
1. [Create and Configure Data Stream](doc:boltic#create-and-configure-data-stream)
2. [Install and Verify the Data Flow](doc:boltic#install-and-verify-the-data-flow)
###
Create and Configure Data Stream
[](https://docs.clevertap.com/docs/boltic#create-and-configure-data-stream)
Setting up a data stream in Boltic allows you to collect, process, and forward data to CleverTap. This method is ideal for handling large-scale event flows without manual intervention. To do so, follow these steps:
1. Go to your Boltic Dashboard and select _Data Hub_ > _Streams_ from the left navigation panel.
2. Click **\+ Create Stream** to start setting up a new data stream.

3. Select the data source you want to connect from the _Select source_ dropdown to create for stream.
4. If the source is not yet configured, click **Add Source** and follow the setup instructions.

5. For this case, use the _Javascript_ Source Integration.

###
Install and Verify Data Flow
[](https://docs.clevertap.com/docs/boltic#install-and-verify-data-flow)
Once your stream is configured, the next step is to install the stream snippet at the source and verify that data is successfully flowing to CleverTap. This ensures a seamless integration with real-time event tracking. To do so, follow these steps:
1. From the _Destination_ dropdown, select _CleverTap_.
2. If CleverTap is not yet configured, click **Add Destination** and enter your CleverTap account details.

3. Click **Test and Save** to validate the configuration.
4. After selecting the Source and Destination, click **Create Stream**. The newly created stream will now be visible in the Streams list in Boltic.

5. Open the stream you created and scroll down to find the _Install the stream snippet on your website_ for your selected source.
6. Follow the installation instructions carefully, as steps vary depending on the source type.

Once the stream snippet is installed, real-time event data flows from the source to CleverTap.

7. To ensure the data is successfully reflected in CleverTap, go to the CleverTap Dashboard and check if the events and user profiles are updating as expected.

This alternative integration method offers an automated and scalable way to sync user data and events between Boltic and CleverTap, enabling enhanced tracking and engagement workflows.
FAQs
[](https://docs.clevertap.com/docs/boltic#faqs)
========================================================
###
What are the key differences between API-based integration and Data Hub Stream integration?
[](https://docs.clevertap.com/docs/boltic#what-are-the-key-differences-between-api-based-integration-and-data-hub-stream-integration)
| Integration Type | Best For | Pros | Con |
| --- | --- | --- | --- |
| **API-based (Webhooks & API Actions)** | Real-time event-driven automation | Provides instant updates and requires a simple setup | Requires API familiarity and may need rate-limiting |
| **Data Hub Stream Integration** | Bulk data synchronization from multiple sources | Scales well for large datasets and does not require API calls | It may introduce slight latency and require a more complex initial setup |
Choosing the right method:
* Use **[API-based integration](doc:boltic#method-1-api-based-integration)
** for real-time updates.
* Use **[Data Hub Stream integration](doc:boltic#method-2-data-hub-stream-integration)
** for large-scale data synchronization.
###
Why is data not appearing in CleverTap?
[](https://docs.clevertap.com/docs/boltic#why-is-data-not-appearing-in-clevertap)
Check the following if the data is not appearing in CleverTap:
* Ensure the **CleverTap API keys (Account ID and Passcode)** are correct.
* Verify that the **endpoint URL** is correct for API-based integration (`https://.api.clevertap.com/1/upload`).
* Confirm that the **source is correctly configured** in Boltic for Data Hub Stream integration.
* Activate the **workflow** after testing.
Updated about 2 months ago
* * *
Ask AI
---
# mParticle Export
Overview
[](https://docs.clevertap.com/docs/mparticle-export#overview)
==========================================================================
[mParticle](https://www.mparticle.com/)
is a customer data platform that manages data quality and drives better customer interactions. Integrating CleverTap with mParticle allows you to export your CleverTap event data to your mParticle dashboard. You can use this event data for further analysis.
Integrate mParticle with CleverTap
[](https://docs.clevertap.com/docs/mparticle-export#integrate-mparticle-with-clevertap)
==============================================================================================================================
This process involves the following two steps:
1. [Find mParticle Project Details](doc:mparticle-export#find-mparticle-project-details)
.
2. [Configure CleverTap Dashboard](doc:mparticle-export#configure-clevertap-dashboard)
.
Find mParticle Project Details
[](https://docs.clevertap.com/docs/mparticle-export#find-mparticle-project-details)
----------------------------------------------------------------------------------------------------------------------
To find your project details:
1. Log in to your mParticle account.
2. Navigate to _Setup_ > _Inputs_ > _Feeds_.
3. Click **Add Feed Input** and select _CleverTap_ from the dropdown list. The _Input: Feed Configuration_ popup opens.

Click Add Feed Input
4. Enter the _Configuration Name_ and turn **ON** the _Feed Status_ toggle.

Enter Configuration Name and Toggle ON Feed Status
5. Click **Save**. The _Server to Server Key_ and _Server to Server Secret_ are displayed.

Copy Project Details
5. Copy the project details. You will need them when configuring the CleverTap dashboard.
Configure CleverTap Dashboard
[](https://docs.clevertap.com/docs/mparticle-export#configure-clevertap-dashboard)
--------------------------------------------------------------------------------------------------------------------
To configure the CleverTap dashboard:
1. Log in to your CleverTap account and navigate to the _Settings_ > _Partners_ > _Partner List_ page. Select _mParticle_ from the list.

Navigating to the Partners Page
2. A popup opens on the right side of the screen. Enter the following details and click **Integrate**.
| Field | Description |
| --- | --- |
| Partner Nickname | Enter the _Nickname_ for your integration. |
| API key and API secret | These are the unique codes passed to mParticle to verify your credentials. For more information about obtaining the key, refer to [Find mParticle Project Details](doc:mparticle-export#find-mparticle-project-details)
. |
| Customer ID Mapping | This is used as an identifier when sending event data to mParticle. |

Enter mParticle Project Details to Integrate
After successful integration, navigate to the the _Export_ tab on the _Partner List_ page.

Create Export
Create New Export
[](https://docs.clevertap.com/docs/mparticle-export#create-new-export)
============================================================================================
To create a new export:
1. Navigate to **Settings** > **Partners** > **Exports** from the CleverTap dashboard.
2. Click **Create Export** and select **mParticle**.

Create Export
The **Export to mParticle** pop-up displays.

Enter Export Details
3. Configure the following settings:
* **Partner Nickname**: Nickname for the partner. To edit the nickname, go to **Partner List**.
* **DATA TYPE & IDENTIFIER PRIORITY**: Select the type of data that you want to export from the available options. For more information, refer to [Export Details](doc:mparticle-export#export-details)
.
* **FREQUENCY**: Select from one of the following options:
* **One time**: A single export for the selected export type. You can export data up to the last 60 days. You create an export for a specific day, date range, previous month, current month, and more.
* **Recurring**: Set up a recurring frequency to export all the new events/user properties captured in the last window. You can export event data as frequently as every 4 hours and up to once every 24 hours. You can export user properties only once every 24 hours.
* **Date to export data**: The export starts at 12:00 a.m. on the specified date by default.
4. Click **Export**. The popup closes, and the following message displays at the top of the **Exports** page:

mParticle Export Initiated
CleverTap processes the export, and you can now see the newly created export for mParticle.

New mParticle Export Displays on Exports Page
The status for each export is displayed as **PENDING** as soon as the export is created. The status changes to **RUNNING** after the processing starts. It changes to **DONE** when the export is complete.
Stop Export
[](https://docs.clevertap.com/docs/mparticle-export#stop-export)
================================================================================
You can also stop the export that you have created. Hover over the export. Click the **Stop**  button for the export request you want to stop.

Stop mParticle Export
The **Stop export?** window appears. Click **Stop** to confirm your action.

You are navigated back to the **Exports** page, and the _mParticle data export stopped_ message displays at the top. The status for the data export now displays as **STOPPED**.

mParticle Export Stopped
Edit an Export
[](https://docs.clevertap.com/docs/mparticle-export#edit-an-export)
======================================================================================
You might need to modify an export to meet specific business requirements or while waiting for the next run. This section describes editing a Recurring export in the **RUNNING** and **PENDING** (awaiting next run) state.
> 📘
>
> ###
>
> Points to Remember
>
> [](https://docs.clevertap.com/docs/mparticle-export#points-to-remember)
>
> * In the case of running exports, the new changes will apply to the next run.
> * You cannot edit a One-time export, regardless its status (RUNNING, PENDING, DONE, or STOPPED).
> * You cannot change the export from User Profile to Event and vice-versa.
> * You cannot modify exports marked as **DONE** or **STOPPED**.
To edit an export:
1. On the CleverTap dashboard, go to **Partners** > **Exports**.
2. Hover over the required export. The **View**, **Edit**, and the **Stop** buttons appear.

Click the Edit Export Icon
3. Click the **Edit** button. The **Export to mPartcile** section appears.

Edit the Export
4. Edit the export details and click **Update export**.
Filter Exports
[](https://docs.clevertap.com/docs/mparticle-export#filter-exports)
======================================================================================
This section describes the different ways you can filter exports.
Filter by Export Details
[](https://docs.clevertap.com/docs/mparticle-export#filter-by-export-details)
----------------------------------------------------------------------------------------------------------
To filter by export details:
1. Click the **Filter** button at the top right corner.
2. You can filter exports by **Partner**, **Type**, **Format**, **Status**, or **Frequency**.
3. To clear the filter, click **Reset all**.

Filter Exports
Filter Exports by Date Range
[](https://docs.clevertap.com/docs/mparticle-export#filter-exports-by-date-range)
------------------------------------------------------------------------------------------------------------------
You can also filter the exports based on the export date.
To filter exports by export date range:
1. Click the **Filter** button at the top right corner.
2. Click the **Exported on** button.
The **Calendar** widget appears.

Calendar Widget
1. Choose the custom date range and click **Apply**.
The exports are filtered accordingly.
Filter Exports by Pagination
[](https://docs.clevertap.com/docs/mparticle-export#filter-exports-by-pagination)
------------------------------------------------------------------------------------------------------------------
To choose how many export items you view per page:
1. Use the **Items per page** drop-down at the bottom of the **Exports** page.
2. Options include 10, 20, 30, or 40. By default, the **Exports** page shows 20 exports.
Export Details
[](https://docs.clevertap.com/docs/mparticle-export#export-details)
======================================================================================
Select from one of the following options to export events from CleverTap to the mParticle dashboard:
* [All system events](doc:mparticle-export#all-events)
* [Selected events](doc:mparticle-export#selected-events)
* [Engagement events](doc:mparticle-export#engagement-events)
* [User properties](doc:mparticle-export#user-properties)
All System Events
[](https://docs.clevertap.com/docs/mparticle-export#all-system-events)
--------------------------------------------------------------------------------------------
When you select this option, the following defined system events are exported:
| CleverTap Event Name | Event Description |
| --- | --- |
| Notification Sent | The event is tracked when the notification is successfully sent from CleverTap to the communication channel you select for your campaign. |
| Notification Viewed | This event is tracked when a user views an email, in-app notification, or a web notification sent from CleverTap. |
| Notification Clicked | This event is tracked only when a user clicks on a notification sent via CleverTap.Recorded when a user clicks on a mobile push, in-app, email, web-popup, or web push message sent via the CleverTap dashboard or through the campaign API. |
| Push Impressions | This event is tracked when a Push notification sent from CleverTap is delivered on a user’s device. |
| Notification Replied | This event is recorded when a user replies to a WhatsApp message. |
| Control Group | The event raised when a campaign is activated with a Control group. |
| Channel Unsubscribed | The event raised when a user Unsubscribes to receive further communication through a channel |
| Push Impressions | This event is tracked when a push notification sent from CleverTap is delivered on a user’s device. The funnels on the Push campaign statistics page reflect the count for this event. |
| AB Experiment Stopped | This event is recorded when AB experiment is stopped. |
| AB Experiment Rolled Out | This event is recorded when AB experiment is started |
| AB Experiment Disqualified | This event is raised when the device is disqualified. |
| Geocluster Entered | This event is recorded to mark when a device enters a geofence. |
| Geocluster Exited | This event is recorded to mark when a device exits a geofence. |
| Reply Sent | This event is recorded when an agent (CleverTap user) replies to a message from the end-user. |
| App Version Changed | This event is raised when a user’s current app version is different from the user’s previous app version. |
| App Launched | This event is recorded every time a user launches your application. |
| App Installed | The event is raised when the user launches the app for the first time. |
| App Uninstalled | This event is recorded when a user uninstalls your application. |
| UTM Visited | This event is tracked when a user clicks on a link from a marketing campaign that has a UTM parameter defined on it. |
For more information about these events, refer to [Events](doc:events)
.
Selected Events
[](https://docs.clevertap.com/docs/mparticle-export#selected-events)
----------------------------------------------------------------------------------------
With this option, you can select the specific system events (from those listed in the above table) that you want to export from CleverTap to the mParticle dashboard.
Engagement Events
[](https://docs.clevertap.com/docs/mparticle-export#engagement-events)
--------------------------------------------------------------------------------------------
When you select this option, the following engagement events are exported:
* Notification Sent
* Notification Viewed
* Notification Clicked
* Push Impressions
* Notification Replied
* Control Group
* Channel Unsubscribed
* Push Impressions
* Notification Delivered
* AB Experiment Rendered
* AB Experiment Stopped
* AB Experiment Rolled Out
* Geocluster Entered
* Geocluster Exited
* Reply Sent
* App Uninstalled
* Webhook Delivered
* State Transitioned
* UTM Visited
For more information about these events, refer to [Events](doc:events)
.
User Properties
[](https://docs.clevertap.com/docs/mparticle-export#user-properties)
----------------------------------------------------------------------------------------
When you select this option, the following user profile attributes are exported:
| Field | Description |
| --- | --- |
| Name | Indicates the name of the user. |
| Gender | Indicates the gender of the user. |
| DOB | Indicates the date of birth of the user. |
| All communication preference | Flags that determine the communication preference of the user. |
> 📘
>
> ###
>
> Availability of Feature
>
> [](https://docs.clevertap.com/docs/mparticle-export#availability-of-feature)
>
> If you are a CleverTap for Enterprises user, contact your sales account manager to activate this feature at your end. In the case of CleverTap for Startups, it is available as a paid add-on.
FAQs
[](https://docs.clevertap.com/docs/mparticle-export#faqs)
==================================================================
###
Q. Do CleverTap data exports allow special characters?
[](https://docs.clevertap.com/docs/mparticle-export#q-do-clevertap-data-exports-allow-special-characters)
A. Yes, CleverTap data exports allow the following special characters:
* CleverTap's export system supports Unicode (UTF-8) character encoding. It facilitates the accurate representation of text in various languages and scripts. For example, Indian regional languages, Arabic, Korean, Russian, Japanese, Chinese, Spanish, Greek, Indonesian, etc.
* It replaces the following characters with a hyphen to avoid issues in output file generation:
* Whitespace
* Tab
* Slash
* null (\\0)
* Control characters are replaced with ?. For more information, refer to [Control Character](https://en.wikipedia.org/wiki/Control_character)
.
* Supports emoji characters; however, some emojis (UTF-16) may not render properly.
Updated about 2 months ago
* * *
Ask AI
---
# Nexla
Overview
[](https://docs.clevertap.com/docs/nexla#overview)
===============================================================
[Nexla](https://www.nexla.com/)
is a unified data operations platform that enables teams to connect, transform, and monitor ready-to-use data across any system. Designed for analytics and AI workflows, Nexla simplifies complex data integrations using no-code and low-code tools.
With the CleverTap and Nexla integration, you can:
* Export campaign interaction events from CleverTap to data warehouses using _Data Warehouse Exports_ or _Webhook campaigns_.
* Transform and forward enriched data from Nexla to CleverTap using _Amazon S3_, _SFTP Imports_, or _Nexla’s REST API_.
This integration enables real-time, high-quality data flow between CleverTap and your enterprise data stack, powering personalized engagement and advanced analytics.
Prerequisites for Integration
[](https://docs.clevertap.com/docs/nexla#prerequisites-for-integration)
=========================================================================================================
Ensure the following before starting the integration:
* An active Nexla account.
* Automated _Data Warehouse Exports_ or _Webhook campaigns_ configured in CleverTap.
* Access to your _BigQuery_ , or _Amazon S3_ account.
Integrating Nexla with CleverTap
[](https://docs.clevertap.com/docs/nexla#integrating-nexla-with-clevertap)
===============================================================================================================
To integrate Nexla with CleverTap, perform the following five major steps:
1. [Export Data from CleverTap](doc:nexla#export-data-from-clevertap-to-your-data-warehouse)
2. [Add Data Source in Nexla](doc:nexla#add-data-source-in-nexla)
3. (Optional) [Send Webhook Data from CleverTap to Nexla](doc:nexla#optional-send-webhook-data-from-clevertap-to-nexla)
4. [Transform Data in Nexla](doc:nexla#transform-data-in-nexla)
5. [Import Data Back into CleverTap](doc:nexla#import-data-back-into-clevertap)
Export Data from CleverTap to Your Data Warehouse
[](https://docs.clevertap.com/docs/nexla#export-data-from-clevertap-to-your-data-warehouse)
-------------------------------------------------------------------------------------------------------------------------------------------------
Use Data Warehouse Exports in CleverTap to send campaign interaction data to supported destinations such as:
* [BigQuery](https://docs.clevertap.com/docs/bigquery)
* [Amazon S3](https://docs.clevertap.com/docs/data-export-to-aws-s3)

Create Export
Once configured, Nexla can pull this data directly from the connected source.
Add Data Source in Nexla
[](https://docs.clevertap.com/docs/nexla#add-data-source-in-nexla)
-----------------------------------------------------------------------------------------------
To configure your data source, perform the following steps:
1. Log in to the Nexla dashboard.
2. Add the appropriate warehouse (such as BigQuery or Amazon S3). For more information, refer to [Add a Data Source in Nexla](https://docs.nexla.com/user-guides/data-sources/add-data-source)
.
3. Authenticate using your access credentials.
Once connected, Nexla begins ingesting the exported CleverTap data.
(Optional) Send Webhook Data from CleverTap to Nexla
[](https://docs.clevertap.com/docs/nexla#optional-send-webhook-data-from-clevertap-to-nexla)
-----------------------------------------------------------------------------------------------------------------------------------------------------
You can optionally use Webhook campaigns in CleverTap to push event data to Nexla in real time. You can do so by creating a connector webhook campaign with Nexla’s webhook URL as the endpoint.
Use this approach if you want immediate data delivery without waiting for exports.
To configure Webhooks, refer to [Send Webhooks from CleverTap](doc:create-message-webhook)
and [Nexla Webhook Reference](https://docs.nexla.com/user-guides/connectors/webhook)
.
Transform Data in Nexla
[](https://docs.clevertap.com/docs/nexla#transform-data-in-nexla)
---------------------------------------------------------------------------------------------
To apply custom logic or formatting before sending data to CleverTap, perform the following steps:
1. Locate the dataset in Nexla and click **Transform**.
2. Use the _Transform Builder_ to:
* Rename fields
* Apply conditions or filters
* Add computed fields or enrichments
3. Click **Save** to transform the dataset.
For more information, refer to [Using the Transform Builder](https://docs.nexla.com/dev-guides/modifying-data/transforms/transforms)
.
Import Data Back into CleverTap
[](https://docs.clevertap.com/docs/nexla#import-data-back-into-clevertap)
-------------------------------------------------------------------------------------------------------------
You can send data from Nexla into CleverTap using one of the following options:
* [Nexla REST API Destination](doc:nexla#nexla-rest-api-destination)
* [Using SFTP Imports](doc:nexla#using-sftp-imports)
###
Nexla REST API Destination
[](https://docs.clevertap.com/docs/nexla#nexla-rest-api-destination)
* Configure [Nexla](https://docs.nexla.com/user-guides/connectors/rest-api/rest-api-generic#3-data-destination)
to use [CleverTap’s Upload Users or Events API](https://developer.clevertap.com/docs/api-overview)
.
* Format the JSON payload to match the API requirements.
* Ensure the following headers are set:
HTTP
X-CleverTap-Account-Id:
X-CleverTap-Passcode:
Content-Type: application/json

Edit Credentials
> ⚠️
>
> ####
>
> Note
>
> [](https://docs.clevertap.com/docs/nexla#note)
>
> Select _Skip Credential Validation_ to set up header values manually using your CleverTap credentials.
###
Using SFTP Imports
[](https://docs.clevertap.com/docs/nexla#using-sftp-imports)
Export the transformed dataset from Nexla to a supported destination (for example, SFTP). Configure CleverTap to import the data using the native import capability. For more information, refer to [SFTP Import](https://developer.clevertap.com/docs/imports-via-sftp)
.

SFTP Imports
Verify Integration
[](https://docs.clevertap.com/docs/nexla#verify-integration)
===================================================================================
Once your data flow is set up:
* Nexla monitors source and destination schema changes.
* Errors are flagged and visible in the Nexla dashboard.
* Any edits to the flow (such as sources, transformations, and destinations) are reflected automatically.
This enables a fully automated, scalable, and error-resilient integration between Nexla and CleverTap.
Updated 23 days ago
* * *
Ask AI
---
# Poplar
Overview
[](https://docs.clevertap.com/docs/poplar#overview)
================================================================
[Poplar](https://heypoplar.com/)
is a performance-driven direct mail platform that enables businesses to send physical mailers to customers at any stage of the customer journey. With Poplar and CleverTap, you can trigger direct mail campaigns based on user activity, segmentation, or lifecycle stage.
The Poplar CleverTap integration allows you to:
* Send personalized direct mailers from within CleverTap campaigns
* Automate physical mail delivery as part of omnichannel journeys
* Enrich customer engagement with offline touchpoints triggered by real-time events
Prerequisites for Integration
[](https://docs.clevertap.com/docs/poplar#prerequisites-for-integration)
==========================================================================================================
Ensure you have the following:
* Access to your Poplar dashboard and Poplar API key.
* Access to your CleverTap dashboard with permissions to configure webhooks and campaigns
Integrate Poplar with CleverTap
[](https://docs.clevertap.com/docs/poplar#integrate-poplar-with-clevertap)
==============================================================================================================
The integration process involves the following two major steps:
1. [Set up Webhook in CleverTap](doc:poplar#set-up-webhook-in-clevertap)
2. [Configure Webhook Campaign in CleverTap](doc:poplar#configure-webhook-campaign-in-clevertap)
Set up Webhook in CleverTap
[](https://docs.clevertap.com/docs/poplar#set-up-webhook-in-clevertap)
------------------------------------------------------------------------------------------------------
To begin the integration, you'll first create a webhook in CleverTap. This webhook sends recipient and campaign-specific data to Poplar whenever the campaign is triggered. It ensures real-time delivery of personalized mailers to users based on their behavior and profile attributes.
To do so, follow these steps:
1. Go to _Settings_ > _Channels_ > _Webhook_.
2. Click **\+ Add Webhook** and enter the following:
| Field | Value |
| --- | --- |
| Name | Poplar |
| HTTP Method | `POST` |
| Endpoint URL | `https://api.heypoplar.com/v1/mailing` |
| Authorization | `Bearer ` |
| Content-Type | `application/json` |
3. Click **Save** to create the webhook.
Configure Webhook Campaign in CleverTap
[](https://docs.clevertap.com/docs/poplar#configure-webhook-campaign-in-clevertap)
------------------------------------------------------------------------------------------------------------------------------
Once the webhook is set up, the next step is to use it within a campaign. This campaign will send the recipient’s information and trigger mail delivery via Poplar’s API when users meet specific conditions.
To trigger the direct mailer using CleverTap:
1. Go to _Campaigns_ > _\+ Campaign_ > _Webhook_.
2. Select the Webhook configured in [Create a Webhook in CleverTap](doc:poplar#create-a-webhook-in-clevertap)
3. In the _What_ section, under the _Webhook Content_ section, select the _Content Format_ as JSON and click the **Custom body** option.
4. Paste the following JSON payload:
JSON
{
"campaign_id": "{{ Profile.campaign_id | default: "-" }}",
"recipient": {
"city": "Thane",
"email": "{{ Profile.Email | default: "-" }}",
"state": "Maharashtra",
"address_1": "Rutu Towers",
"address_2": "Thane",
"first_name": "{{ Profile.name | default: "-" }}",
"last_name": "test",
"postal_code": "400607"
},
"merge_tags": {
"promo-code": ""
},
"creative_id": ""
}
Use the personalization toolbar (`{`, `{{`, or `@`) to insert dynamic user profile values.
5. Click **Preview and Test** to validate the integration.

Preview and Test
6. In the Poplar dashboard:
* Navigate to the campaign used in your payload
* Go to the **History** section
* Confirm if the test data is reflected

Verify the data on Poplar
7. Once confirmed, click **Publish** in CleverTap.

By connecting Poplar with CleverTap, you can create impactful, timely direct mail campaigns as part of your user engagement strategy.
Updated about 2 months ago
* * *
Ask AI
---
# B.Layer
Overview
[](https://docs.clevertap.com/docs/blayer#overview)
================================================================
[B.Layer](https://blayer.phiture.com/)
is Phiture’s no-code In-App message builder that enables CRM teams to design and launch custom, on-brand In-App messages quickly and without developer support. With the CleverTap and B.Layer integration, you can use B.Layer’s intuitive visual builder to craft responsive, high-conversion In-App messages and seamlessly launch them via CleverTap campaigns.
You can use B.Layer to build the following:
* Personalized product recommendation sliders
* Multi-step onboarding or survey flows
* Countdown banners for limited-time offers
Prerequisites for Integration
[](https://docs.clevertap.com/docs/blayer#prerequisites-for-integration)
==========================================================================================================
The following are the prerequisites for B.Layer and CleverTap integration:
* Ensure you have access to your B.Layer account.
* Ensure you have a CleverTap account with access to campaign creation.
> 🚧
>
> ###
>
> Support for Integration
>
> [](https://docs.clevertap.com/docs/blayer#support-for-integration)
>
> This integration is managed and continuously improved by B.Layer. The CleverTap and B.Layer integration has undergone stringent testing to ensure seamless functionality. For any questions or issues, contact [B.Layer](https://intercom.help/blayer/en/)
> for support and resolution.
Integrate CleverTap with B.Layer
[](https://docs.clevertap.com/docs/blayer#integrate-clevertap-with-blayer)
===============================================================================================================
To set up the CleverTap integration with your B.Layer account, perform the following steps:
1. [Create In-App Messages in B.Layer](doc:blayer#create-in-app-messages-in-blayer)
.
2. [Configure In-App Campaign in CleverTap](doc:blayer#configure-in-app-campaign)
.
Create In-App Messages in B.Layer
[](https://docs.clevertap.com/docs/blayer#create-in-app-messages-in-blayer)
-----------------------------------------------------------------------------------------------------------------
Add your brand assets before designing the In-App message to ensure your messages reflect your brand identity. To do so, perform the following steps:
1. Log in to your [B.Layer account](https://app.blayer.phiture.com/users/sign_in)
and go to Brand Assets from the left menu ().
2. Set your primary/secondary brand colors and fonts.

Configure Brand Assets in B.Layer
3. Design and create a customized In-App message in B.Layer. To do so, follow these steps:
1. Go to the In-App Message section in B.Layer.
2. Select a template layout, for example, the Single In-App Message template. Refer to the [Create a Single In-App Message](https://intercom.help/blayer/en/articles/7836328-create-a-single-in-app-message)
on b.layer for more information.
3. Drag and drop components such as **Image**, **Text**, and **Buttons** from the Layout section.
4. Click **Add Block** to insert new elements. Use the layout panel to style each component.
Preview your design on the canvas to ensure responsiveness.

Design In-App Message
4. Click the  icon, and select _Copy HTML_ to copy the HTML code for your In-App message. You can now use this HTML snippet in the CleverTap [In-App campaign](doc:blayer#configure-in-app-campaign)
.

Copy HTML Snippet Generated by B.Layer
Configure In-App Campaign in CleverTap
[](https://docs.clevertap.com/docs/blayer#configure-in-app-campaign-in-clevertap)
----------------------------------------------------------------------------------------------------------------------------
Set up and personalize your In-App campaigns in CleverTap to engage users effectively. To do so, perform the following steps:
1. Go to _Campaigns_ from the CleverTap dashboard.
2. Click **\+ Campaign** and select _In-App Messages_ from the dropdown.
3. Click **Go to Editor** under the _What_ section.
4. Select the template of your choice. For this example, we are using _Custom HTML Templates_.
> 📘
>
> ###
>
> Include Javascript
>
> [](https://docs.clevertap.com/docs/blayer#include-javascript)
>
> Ensure you select the _Include JavaScript_ checkbox.

Custom HTML Templates
5. Delete the default code and paste the HTML snippet copied from B.Layer in _Step 4_ of [Create In-App Messages in B.Layer](doc:blayer#create-in-app-messages-in-blayer)
.

Insert HTML Code Snippet
6. Add personalization to your In-App message by typing `{{`, `{`, or clicking `@` inside the HTML editor.
You can personalize elements such as the message body, button label, or title using [CleverTap Liquid Tags](doc:liquid-tags)
.

Personalize Email Campaign
7. Click **Save** and **Publish** to send your In-App campaign.
Once published, your campaign will display the In-App message created in B.Layer to targeted users based on your segmentation and scheduling settings.
You can also use the same B.Layer design in an Email campaign using the Rich HTML template. For detailed instructions, refer to [CleverTap Email Campaigns](doc:create-message-email)
.
Updated about 2 months ago
* * *
Ask AI
---
# Contentful
Overview
[](https://docs.clevertap.com/docs/contentful#overview)
====================================================================
[Contentful](https://www.contentful.com/)
is a powerful headless Content Management System (CMS) that enables marketers to manage and deliver content across websites, mobile apps, and more. Unlike traditional CMSs, Contentful separates content from presentation, enabling flexible and reusable content modeling.
The CleverTap and Contentful integration empowers teams to:
* Pull structured content directly from Contentful using Linked Content APIs.
* Personalize content dynamically using Liquid tags in CleverTap campaigns.
* Deliver tailored messages across channels such as Email, Push Notification, and In-App.
Prerequisites for Integration
[](https://docs.clevertap.com/docs/contentful#prerequisites-for-integration)
==============================================================================================================
The following are required to complete the integration:
* A Contentful account with access to the Content Delivery API.
* Your Contentful **Space ID**, **Environment ID**, and **API token**.
* A CleverTap account with Linked Content enabled.
Integrate Contentful with CleverTap
[](https://docs.clevertap.com/docs/contentful#integrate-contentful-with-clevertap)
==========================================================================================================================
The integration process involves the following three major steps:
1. [Find Contentful API Credentials](doc:contentful#find-contentful-api-credentials)
2. [Configure Linked Content in CleverTap](doc:contentful#configure-linked-content-in-clevertap)
3. [Create Personalized Campaign Using Linked Content](doc:contentful#create-personalized-campaign-using-linked-content)
Find Contentful API Credentials
[](https://docs.clevertap.com/docs/contentful#find-contentful-api-credentials)
------------------------------------------------------------------------------------------------------------------
Access your Contentful API credentials to connect your content with CleverTap securely. To do so, perform the following steps:
1. Go to _Settings_ > _API keys_ in your [Contentful dashboard](https://app.contentful.com/)
.
2. If you don’t already have a key, click **\+ Add API key**.
3. Enter a name, select the appropriate environment (for example, `master`), and click **Save**.
4. Copy your **Space ID** and **Content Delivery API Access Token**.
5. Make note of your **Environment ID** (usually `master`, unless customized).

Find Contentful API Credentials
These credentials will be required to [Configure Linked Content in CleverTap](doc:contentful#configure-linked-content-in-clevertap)
.
Configure Linked Content in CleverTap
[](https://docs.clevertap.com/docs/contentful#configure-linked-content-in-clevertap)
------------------------------------------------------------------------------------------------------------------------------
To display the personalized images in CleverTap campaigns, you must configure Linked Content. To do so, follow these steps:
1. Go to _Settings > Setup > Linked Content_ in CleverTap.
2. Click **\+ Add Linked Content**.
3. Fill in the following:
| Field | Value |
| --- | --- |
| Name | Provide a name for the Linked Content. For example, Contentful API. |
| Method | Set the HTTP method to `GET` |
| Endpoint URL | Enter the following endpoint URL: `https://cdn.contentful.com/spaces/{space_id}/environments/{env_id}/entries`
Replace `{space_id}` and `{env_id}` with your actual Contentful credentials. |
| Headers | `Bearer ` |
4. Click **Test Linked Content**.
5. Click **Auto-Fill Objects with Response** to automatically handle responses and populate objects.

Configure Linked Content in CleverTap
6. Click **Test & save changes** to complete the setup.
You can now use this Contentful-generated linked content in various CleverTap campaigns.
Create Personalized Campaign Using Linked Content
[](https://docs.clevertap.com/docs/contentful#create-personalized-campaign-using-linked-content)
------------------------------------------------------------------------------------------------------------------------------------------------------
With Contentful connected to CleverTap via Linked Content, you can now add personalized content to your CleverTap campaigns. For this example, let us create a short, personalized Push Notification for promotional advertisement. To do so, perform the following steps:
1. Go to _Campaigns_ from the CleverTap dashboard and click **\+ Campaign**.
2. Select _Push Notifications_ from the _Messaging Channels_ list.
3. Configure all the campaign settings and then go to the _What_ section:
1. Click **Personalization**.
2. Select the _Linked Content_ configured under [Configure Linked Content in CleverTap](doc:contentful#configure-linked-content-in-clevertap)
and click **Apply**.

Personalize Push Notification Using Linked Content
4. Type `{`, `{{`, or `@` to view available personalization options. For more information about how to personalize a message using Linked Content, refer to [CleverTap Liquid Tags](doc:personalize-message-all)
.

Create Personalized Message Using Linked Content
For this example, we will use the `items` object from the above-linked content options and use the `id` and `text` keys from the JSON response to retrieve the personalized message generated by Contentful.
The following is the sample response generated by Contentful Linked Content:
JSON
{
"total": 1,
"items": [\
{\
"sys": {\
"id": "2DhLXpWYk9n5emtCA7GqfE",\
"type": "Entry",\
"createdAt": "2025-04-14T04:47:00.629Z",\
"updatedAt": "2025-04-14T04:47:00.629Z",\
"space": {\
"sys": {\
"type": "Link",\
"linkType": "Space",\
"id": "alu97stg42ry"\
}\
},\
"environment": {\
"sys": {\
"id": "master",\
"type": "Link",\
"linkType": "Environment"\
}\
}\
}\
}\
]
}
Use the following Liquid Tag to fetch the personalized text:
Liquid Tag Syntax
{{ Linked[" Testing ContentFul"].items[0].fields.pageTitle | default: "NULL" }}
{{ Linked[" Testing ContentFul"].items[0].fields.pageDescription | default: "NULL" }}
5. Click **Preview & Test** to see if the campaign correctly renders personalized content or default fallback values.

Preview and Test
6. From the Media subsection, use the following syntax to insert the Contentful image URL from the auto-mapped asset:
Liquid
{{ Linked[" Testing ContentFul"].Asset[0].fields.file.url | default:"fallback_image" }}
7. Click **Publish** to launch the campaign. Verify if everything works as intended, users will receive a push notification like the one below.

Push Notification Using Contentful API
By integrating Contentful with CleverTap, you can automate the creation of hyper-personalized content across different CleverTap campaigns.
Whether you are creating [Push Notifications](doc:create-message-push)
, [Email](doc:create-message-email)
, [In-App messages](doc:create-message-in-app)
, or [Web Pop-ups](doc:create-message-web-popup)
, Contentful empowers you to deliver highly relevant, personalized messaging at scale.
Updated about 2 months ago
* * *
Ask AI
---
# Inkit
Overview
[](https://docs.clevertap.com/docs/inkit#overview)
===============================================================
[Inkit](https://www.inkit.com/)
enables you to reach and communicate with customers through automated and personalized direct mail campaigns. It allows rendering of paperless documents at scale and validating customer mailing addresses with precision.
With the CleverTap Inkit integration, you can:
* Send personalized Inkit mailers (postcards, letters) to users or segments from CleverTap.
* Trigger document generation based on scheduled campaigns or qualifying user events.
* Deliver paperless communication through automated workflows.
Prerequisites for Integration
[](https://docs.clevertap.com/docs/inkit#prerequisites-for-integration)
=========================================================================================================
The following are the prerequisites for this integration:
* You must have an Inkit [Account](https://app.inkit.io/)
, an [API token](https://docs.inkit.com/docs/authentication#how-to-find-the-api-key-or-token-in-the-app)
, and a [Template ID](https://docs.inkit.com/docs/inkit-postcards-api#api-token-and-template-id)
to send requests from CleverTap using webhook.
* You must have an account with CleverTap.
Integrate Inkit with CleverTap
[](https://docs.clevertap.com/docs/inkit#integrate-inkit-with-clevertap)
===========================================================================================================
The integration process involves the following three major steps:
1. [Create a Template in Inkit](doc:inkit#create-a-template-in-inkit)
2. [Create Webhook in CleverTap](doc:inkit#create-webhook-in-clevertap)
3. [Create Webhook Campaign in CleverTap](doc:inkit#create-webhook-campaign-in-clevertap)
Create a Template in Inkit
[](https://docs.clevertap.com/docs/inkit#create-a-template-in-inkit)
---------------------------------------------------------------------------------------------------
Create a reusable document template in Inkit that will be triggered from CleverTap. To do so, perform the following steps:
1. Log in to the Inkit platform.
2. Create or select a template you want to use in your CleverTap campaign.
3. Copy the **Template ID** from the URL. For example, in the URL:
< https://app.inkit.io/#/templates/design/ >
Refer to the [Inkit API documentation](https://docs.inkit.com/docs/api-endpoints)
for guidance on template usage.
Create Webhook in CleverTap
[](https://docs.clevertap.com/docs/inkit#create-webhook-in-clevertap)
-----------------------------------------------------------------------------------------------------
Connect CleverTap with Inkit by setting up a webhook that sends user-specific data to Inkit's API. To do so, perform the following steps:
1. Go to _Settings_ > _Channels_ > _Webhook_ in the CleverTap dashboard.
2. Click **\+ Webhook** to add a new webhook.
3. Enter the following configuration:
| Field | Value |
| --- | --- |
| Name | Enter the nickname for your webhook to identify it uniquely. For example:`Inkit` |
| HTTP Method | Select `POST` |
| Endpoint URL | Paste the URL `https://api.inkit.com/v1/generate` |
| Content-Type | `application/json` |
| Headers | `X-Inkit-API-Token: ` |
You can check out the [Inkit API documentation](https://docs.inkit.com/docs/api-endpoints)
to learn about various endpoints, their uses, and the steps to set them up.
4. Click **Save** to register the webhook.
Create Webhook Campaign in CleverTap
[](https://docs.clevertap.com/docs/inkit#create-webhook-campaign-in-clevertap)
-----------------------------------------------------------------------------------------------------------------------
Trigger Inkit document generation based on user activity by configuring a Webhook Campaign in CleverTap. To do so, perform the following steps:
1. Go to _Campaigns_ > _\+ Campaign_ > _Webhook_.
2. Select the Webhook configured in [Create Webhook in CleverTap](doc:inkit#create-webhook-in-clevertap)
.
3. In the _What_ section, under the Webhook Content section, select the Content Format as `JSON` and click the **Custom body** option.

Webhook Content
4. Paste the following JSON payload:
JSON
{
"merge_parameters": {
"Name": "{{ Profile.name | default: "test" }}",
"email": "{{ Profile.Email | default: "-" }}",
"phone number": "{{ Profile.Phone | default: "-" }}"
},
"template_id": "",
"description": "test"
}
Use the personalization toolbar `{`, `{{`, or `@` to dynamically populate user attributes. For more information about all the different types of payload Inkit supports for various use cases, refer to this doc [here](https://docs.inkit.com/reference/post_v1-generate-1)
.
5. Click **Preview and Test** to validate the setup.

Preview and Test
6. Check the Inkit dashboard to confirm that the data has been received and processed under the _History_ section.

Verify the data on Inkit
7. Once validated, click **Publish** in CleverTap.
By integrating Inkit with CleverTap, you can seamlessly extend your engagement strategy beyond digital channels, automating timely, personalised direct mail campaigns that resonate with your users at scale.
Updated about 2 months ago
* * *
Ask AI
---
# Jasper AI
Overview
[](https://docs.clevertap.com/docs/jasper-ai#overview)
===================================================================
[Jasper.ai](https://www.jasper.ai/)
is a Generative AI platform that helps marketers create high-quality, personalized content at scale. The Jasper CleverTap integration allows you to automate the creation of personalized campaign content using Jasper’s Generative AI. By linking Jasper’s API with the CleverTap Linked Content feature, marketers can dynamically generate user-specific messages for push notifications, emails, and more, all in real time. This helps improve engagement, reduce manual effort, and drive better campaign performance.
Prerequisites for Integration
[](https://docs.clevertap.com/docs/jasper-ai#prerequisites-for-integration)
=============================================================================================================
The following are the prerequisites for integrating Jasper.ai with CleverTap:
* Ensure you have a valid Jasper.ai API token (available for Business/Enterprise plans).
* Ensure you have a CleverTap account.
> 🚧
>
> ###
>
> Support for Integration
>
> [](https://docs.clevertap.com/docs/jasper-ai#support-for-integration)
>
> This integration is managed and continuously improved by Jasper.ai. The CleverTap and Jasper.ai integration has undergone stringent testing to ensure seamless functionality. For any questions or issues, contact [Jasper.ai](https://www.jasper.ai/contact-support)
> for support and resolution.
Integrating Jasper.ai with CleverTap
[](https://docs.clevertap.com/docs/jasper-ai#integrating-jasperai-with-clevertap)
==========================================================================================================================
You can dynamically personalize CleverTap campaigns using content generated by Jasper.ai via CleverTap's [Linked Content APIs](doc:linked-content)
. For example, generate a personalized push notification using Jasper.ai and seamlessly include it in your CleverTap campaign.
To do so, perform the following two major steps:
1. [Configure Linked Content API in CleverTap](doc:jasper-ai#configure-linked-content-api-in-clevertap)
.
2. [Create a Personalized Campaign Using Linked Content](doc:jasper-ai#create-personalized-campaign-using-linked-content)
.
Configure Linked Content API in CleverTap
[](https://docs.clevertap.com/docs/jasper-ai#configure-linked-content-api-in-clevertap)
-------------------------------------------------------------------------------------------------------------------------------------
To set up Linked Content API in CleverTap, perform the following steps:
1. Go to _Settings_ > _Setup_ > _Linked Content_.
2. Click **\+ Linked Content** to create a new entry.

Configure Linked Content
3. Enter the following details:
| **Field** | **Details** |
| --- | --- |
| **Name** | Provide a name for the Linked Content. |
| **HTTP Method** | Set the HTTP method to `POST`. |
| **Endpoint URL** | Enter the following endpoint URL: `https://api.jasper.ai/v1/command` |
4. Leave URL Parameters blank and add the following under _Headers_:
| **Header** | **Details** |
| --- | --- |
| `X-API-Key` | Jasper API token. [Generate a new Access Token](https://developers.jasper.ai/docs/authentication)
from Jasper.ai dashboard. _(Only available on Enterprise/Business plan)_ |
| `content-type` | `application/json` |
| `accept` | `application/json` |
5. Paste the following JSON payload under _Body_:
JSON
{
"inputs": {
"command": "Write a personalized short and simple push notification message for Christmas holiday discounts including the name of the person to whom it is sent as well. Make sure to only include the message in the response and nothing else and no details",
"context": "push notification is being sent to {{Profile.name | default: \"shreyans\"}}",
"toneId": ""
},
"options": {
"outputCount": 1,
"outputLanguage": "English",
"inputLanguage": "English",
"languageFormality": "default",
"completionType": "performance"
}
}
The `{{Profile.name | default: "shreyans"}}` tag dynamically personalizes the content using the recipient name. For more information, refer to [Personalize Message](doc:personalize-messages-push)
. To customize the tone of the generated content, use the appropriate tone ID. For more information about toneId, refer to [Retrieve all Tones](https://developers.jasper.ai/reference/getalltones)
.
6. Click **Test Linked Content** to verify the response fetched successfully from the linked content. Then, click **Auto-Fill Objects with Response** to automatically handle responses and populate objects.

Test Linked Content and AutoFill Objects with Response
7. Click **Test & save changes** to complete the setup.
You can now use this Jasper-generated linked content in various CleverTap campaigns.
Create Personalized Campaign Using Linked Content
[](https://docs.clevertap.com/docs/jasper-ai#create-personalized-campaign-using-linked-content)
-----------------------------------------------------------------------------------------------------------------------------------------------------
With Jasper.ai connected to CleverTap via Linked Content, you can now add personalized content to your CleverTap campaigns. For this example, let us create a short, personalized push notification for Christmas holiday discounts. To do so, perform the following steps:
1. Go to _Campaigns_ from the CleverTap dashboard and click **\+ Campaign**.
2. Select _Push Notification_ from the _Messaging Channels_ list.
3. Configure all the campaign settings and then go to the _What_ section:
1. Click **Personalization**.
2. Select the _Linked Content_ configured under [Configure Linked Content API in CleverTap](doc:jasper-ai#configure-linked-content-api-in-clevertap)
and click **Apply**.

Personalization
4. Type `{`, `{{`, or `@` to view available personalization options. For more information about how to personalize a message using [Linked Content](doc:linked-content)
.

Create Personalized Message Using Linked Content
For this example, we will use the `data` object from the above-linked content options and use the `id` and `text` keys from the JSON response to retrieve the personalized message generated by Jasper.
The following is the sample response generated by Jasper Linked Content:
JSON
{
"requestId": "f255e62e-1c66-4ab6-b619-d55743c70b19",
"resource": "content",
"data": [\
{\
"id": "txt_58a9cb3595cc426eabfda0125a529246",\
"text": "\"Christmas Discounts Await You, Anu!\""\
}\
]
}
Use the following Liquid tag to fetch the personalized text:
{{ Linked["JASPER TEST"].data[0].text | default: "NULL" }}
5. Click **Preview & Test** to see if the campaign pushes the default values you configured.

Preview & Test
6. Click **Publish** to launch the campaign. Verify if everything works as intended, users will receive a push notification like the one below.

Push notification
By integrating Jasper.ai with CleverTap, you can automate the creation of hyper-personalized content across various campaign types.
Whether you are creating [push notifications](doc:create-message-push)
, [email subject lines](doc:create-message-email)
, [In-app messages](doc:create-message-in-app)
, or [web pop-ups](doc:create-message-web-popup)
, Jasper.ai empowers you to deliver highly relevant, personalized messaging at scale.
Updated about 2 months ago
* * *
Ask AI
---
# Blitzllama
Overview
[](https://docs.clevertap.com/docs/blitzllama#overview)
====================================================================
[Blitzllama](https://blitzllama.com/)
helps you gather targeted user feedback through micro-surveys. By integrating with CleverTap, you can push defined user cohorts from CleverTap into Blitzllama, enabling precise targeting and richer user insights.
With this integration, you can:
* Import CleverTap user segments via one-time, scheduled, or recurring campaigns.
* Use these cohorts in Blitzllama to trigger micro-surveys to the right users.
Prerequisites for Integration
[](https://docs.clevertap.com/docs/blitzllama#prerequisites-for-integration)
==============================================================================================================
Ensure the following before starting the integration:
* Ensure you have access to your CleverTap account.
* Ensure you have a Blitzllama account.
* Ensure you have Blitzllama API access.
> 🚧
>
> ###
>
> Support for Integration
>
> [](https://docs.clevertap.com/docs/blitzllama#support-for-integration)
>
> This integration is managed and continuously improved by Blitzllama. The CleverTap and Blitzllama integration has undergone stringent testing to ensure seamless functionality. For any questions or issues, contact [Blitzllama](https://docs.clevertap.com/cdn-cgi/l/email-protection#93e7f6f0fbd3f1fffae7e9fffff2fef2bdf0fcfe)
> for support and resolution.
Integrate Blitzllama with CleverTap
[](https://docs.clevertap.com/docs/blitzllama#integrate-blitzllama-with-clevertap)
==========================================================================================================================
To integrate Blitzllama with CleverTap, perform the following three major steps:
1. [Find Blitzllama Details](doc:blitzllama#find-blitzllama-details)
.
2. [Set Up Webhook in CleverTap](doc:blitzllama#set-up-webhook-in-clevertap)
.
3. [Create Webhook Campaign in CleverTap](doc:blitzllama#create-webhook-campaign-in-clevertap)
.
Find Blitzllama Details
[](https://docs.clevertap.com/docs/blitzllama#find-blitzllama-details)
--------------------------------------------------------------------------------------------------
Access your Blitzllama destination and API key for integration. To do so, perform the following steps:
1. Go to the _Connections_ tab in the Blitzllama dashboard.
2. Select _CleverTap_ to find the _Destination URL_ and _API key_.
3. Copy the _Destination URL_ and _API key_ and save this information.

Get Destination URL
Set Up Webhook in CleverTap
[](https://docs.clevertap.com/docs/blitzllama#set-up-webhook-in-clevertap)
----------------------------------------------------------------------------------------------------------
Configure the Webhook channel in CleverTap to communicate with Blitzllama. To do so, perform the following steps:
1. Go to _Settings_ > _Channels_ > _Webhooks_ from the CleverTap dashboard.
2. Click **\+ Add Webhook** and provide a meaningful name for the webhook.
3. Set the _HTTP Method_ to `POST` and paste the _Destination URL_ copied in _step 3_ of [Find Blitzllama Details](https://docs.clevertap.com/docs/blitzllama)
.
4. Add the following key-value pair under _Headers_:
| Key | Value |
| --- | --- |
| `X-api-key` | Paste the _API key_ copied from _step 3_ of [Find Blitzllama Details](https://docs.clevertap.com/docs/blitzllama)
. |

Create Webhook
5. Click **Save** to create the webhook.
After saving the webhook, CleverTap is now ready to send user profile data directly to Blitzllama.
Create Webhook Campaign in CleverTap
[](https://docs.clevertap.com/docs/blitzllama#create-webhook-campaign-in-clevertap)
----------------------------------------------------------------------------------------------------------------------------
Create a Webhook campaign in CleverTap to send user data to Blitzllama. To do so, follow these steps to configure and publish the campaign:
1. Go to _Campaigns_ on the CleverTap dashboard, click **\+ Campaign** and select _Webhook_ from the list of messaging channels.
2. Configure the following campaign settings: target audience, schedule, and other basic settings.
3. Perform the following steps under the _What_ section:
1. Select the webhook created in [Set Up Webhook in CleverTap](doc:blitzllama#set-up-webhook-in-clevertap)
.
2. Set Content Format to `JSON`.
3. Select _Profile variables & custom key value pairs_, to define which user fields you want to send to Blitzllama, such as Name, Email, Phone, Created Date, and so on.

Webhook Content
> 🚧
>
> ###
>
> Note
>
> [](https://docs.clevertap.com/docs/blitzllama#note)
>
> You cannot preview or test this campaign before publishing. Ignore test errors. Once published, the sync works as expected.
4. Click **Publish**. Syncing may take up to 30 minutes.
Once synced, you can view and manage cohorts under the _User & Cohorts_ > _View details_ in the Blitzllama dashboard.
Clicking **View details** shows the list of users received from CleverTap. You can use these cohorts to target micro-surveys directly within Blitzllama’s survey configuration workflow.

User & Cohorts
Updated about 2 months ago
* * *
Ask AI
---
# Delighted
Overview
[](https://docs.clevertap.com/docs/delighted#overview)
===================================================================
[Delighted](https://delighted.com/)
is a customer feedback platform that helps you gather real-time, actionable feedback through email, web, or SMS surveys.
By integrating CleverTap with Delighted, you can:
* Automatically trigger Delighted surveys when specific events are captured in CleverTap.
* Pass user profile information to Delighted to personalize survey delivery.
* Add users to Delighted Autopilot based on their interactions within your app or website.
This integration allows you to send a survey to the user with pre-filled location and wallet balance data, giving you targeted, context-rich feedback. For example, a retail app wants to trigger a Delighted survey immediately after a successful purchase. Here,
* Event trigger: For example, Charged
* Survey type: NPS or CSAT
* Expected output: personalized survey sent, feedback returned to the dashboard
Prerequisites for Integration
[](https://docs.clevertap.com/docs/delighted#prerequisites-for-integration)
=============================================================================================================
Before setting up the integration, ensure you have the following:
* Delighted Private API Key (available in your Delighted account settings).
* Access to your CleverTap dashboard with permissions to configure webhooks and campaigns.
> 🚧
>
> ###
>
> Support for Integration
>
> [](https://docs.clevertap.com/docs/delighted#support-for-integration)
>
> This integration is managed and continuously improved by Delighted. The CleverTap and Delighted integration has undergone stringent testing to ensure seamless functionality. For any questions or issues, contact [Delighted](https://help.delighted.com/)
> for support and resolution.
Integrate Delighted with CleverTap
[](https://docs.clevertap.com/docs/delighted#integrate-delighted-with-clevertap)
=======================================================================================================================
To integrate Delighted with CleverTap, perform the following two major steps:
1. [Set Up Webhook in CleverTap](doc:delighted#set-up-webhook-in-clevertap)
2. [Create Webhook Campaign in CleverTap](doc:delighted#create-webhook-campaign-in-clevertap)
These steps enable you to automate survey triggers based on user behavior and enrich your feedback data using user profile properties stored in CleverTap.
Set Up Webhook in CleverTap
[](https://docs.clevertap.com/docs/delighted#set-up-webhook-in-clevertap)
---------------------------------------------------------------------------------------------------------
> ⚠️
>
> ###
>
> Enable Webhooks
>
> [](https://docs.clevertap.com/docs/delighted#enable-webhooks)
>
> If Webhooks are not enabled for your account, contact [CleverTap Support](https://docs.clevertap.com/cdn-cgi/l/email-protection#e794929797889593a7848b82918295938697c984888a)
> .
1. Go to _Settings_ > _Channels_ > _Webhooks_ from the CleverTap dashboard.
2. Click **\+ Add Webhook** and provide a meaningful name for the webhook.
3. Set the _HTTP Method_ to `POST` and enter the following _Endpoint URL_. For more information, refer to [Delighted API](https://delighted.com/docs/api)
.
JSON
https://api.delighted.com/v1/people.json
4. Add the following key-value pair under _Headers_:
JSON
Content-Type: application/json
5. Select _Basic Authentication_ for Authentication and enter the following:
* Username: Your Delighted _Private API Key_
* Password: Use a hyphen (`-`)

Create Webhook
6. Click **Save** to configure the Webhook in CleverTap.
Create Webhook Campaign in CleverTap
[](https://docs.clevertap.com/docs/delighted#create-webhook-campaign-in-clevertap)
---------------------------------------------------------------------------------------------------------------------------
> 🚧
>
> ###
>
> Prepare Delighted Survey in Advance
>
> [](https://docs.clevertap.com/docs/delighted#prepare-delighted-survey-in-advance)
>
> Ensure your Delighted survey is created and ready to receive user data via API.
1. Go to _Campaigns_ on the CleverTap dashboard, click **\+ Campaign** and select _Webhook_ from the list of messaging channels.
2. Configure the following campaign settings: target audience, schedule, and other basic settings.
3. Perform the following steps under the _What_ section:
1. Select the webhook created in the previous step.
2. Set Content Format to `JSON`.
3. Select _Custom Body_.

Webhook Content
4. Enter the payload under the _Custom Body_ section using [Liquid Tags](doc:personalize-message-all#liquid-tags)
:
JSON
{
"email": "{{ Profile.Email | default: '[email protected]' }}",
"properties": {
"Purchase Experience": "Mobile App",
"State": "{{ Profile.State | default: '-' }}",
"City": "{{ Profile.City | default: '-' }}",
"Wallet": "{{ Profile.wallet_balance | default: '0' }}"
}
}
5. Click the variable selector (`@`, `{`, or `{{`) in the editor to personalize the campaign. You can dynamically reference user profile properties using [Liquid Tags](doc:personalize-message-all#liquid-tags)
.
6. Click **Preview and Test** to validate the webhook request.

Preview and Test
7. Click **Publish** to the campaign to your targeted users. Once a user qualifies for the campaign conditions:
* Your Delighted Dashboard will reflect the data with the user properties corresponding to the users we sent as a request payload.

Delighted Dashboard
* Delighted uses this information to trigger a personalized survey via email.

Survey via Email
* Survey responses and associated user properties are visible on your Delighted dashboard.

Survey responses
Integrating Delighted with CleverTap empowers your team to collect timely, contextual feedback at critical milestones in the user journey. By automatically triggering personalized surveys based on In-App behavior, you can close the loop between customer actions and sentiment.
Updated about 2 months ago
* * *
Ask AI
---
# Typeform
Overview
[](https://docs.clevertap.com/docs/typeform#overview)
==================================================================
[Typeform](https://www.typeform.com/)
is a powerful platform that helps you create interactive, conversational surveys that users actually want to complete. Whether you are collecting feedback, measuring NPS, or qualifying leads. Typeform makes it easy to capture high-quality responses.
With CleverTap’s Typeform integration, you can now embed surveys directly into your Email, In-App, and Web Pop-up campaigns.
This integration empowers you to:
* Gather real-time feedback at key moments in the user journey
* Automatically update user profiles based on survey responses
* Trigger personalized campaigns based on how users respond
Prerequisites for Integration
[](https://docs.clevertap.com/docs/typeform#prerequisites-for-integration)
============================================================================================================
The following are the prerequisites for integrating Typeform with CleverTap:
* Ensure you have access to your Typeform account.
* Ensure you have a CleverTap account.
Integrate Typeform with CleverTap
[](https://docs.clevertap.com/docs/typeform#integrate-typeform-with-clevertap)
====================================================================================================================
Use Typeform surveys to collect actionable feedback from your users within CleverTap campaigns. This integration allows you to configure Email, In-App Message, and Web Pop-up campaigns with embedded Typeform surveys to drive engagement and capture insights.
To do so, perform the following two major steps:
1. [Set Up Typeform Survey](doc:typeform#set-up-typeform-survey)
.
2. [Configure Typeform in CleverTap Campaigns](doc:typeform#configure-typeform-in-clevertap-campaigns)
.
> 📘
>
> ###
>
> Important
>
> [](https://docs.clevertap.com/docs/typeform#important)
>
> Always publish your survey on Typeform before attempting to embed it in a campaign.
Set Up Typeform Survey
[](https://docs.clevertap.com/docs/typeform#set-up-typeform-survey)
----------------------------------------------------------------------------------------------
Configure and publish your Typeform survey before embedding it into any campaign. This ensures that the survey is accessible and ready to be rendered across different channels.
Follow these steps to prepare your survey:
1. Log in to your [Typeform](https://www.typeform.com/)
account.
2. Create a new survey or open an existing one.
3. Click the **Share** tab.
4. Select one of the following:
* **Embed in an Email**: Click **Start Embedding** to generate an HTML snippet.
* **Standard URL**: Copy the survey URL (for In-App or Web Pop-up).

Create a new survey
> 📘
>
> ###
>
> Note
>
> [](https://docs.clevertap.com/docs/typeform#note)
>
> Append query parameters to pass user identifiers for better targeting.
Configure Typeform in CleverTap Campaigns
[](https://docs.clevertap.com/docs/typeform#configure-typeform-in-clevertap-campaigns)
------------------------------------------------------------------------------------------------------------------------------------
Configure Typeform in CleverTap Campaigns to effectively embed the survey across different campaign types to collect user responses. You can configure the following campaign types to include your Typeform survey:
* [Email Campaign](doc:typeform#configure-an-email-campaign)
: Embed the survey in emails to reach users directly in their inbox.
* [In-App Message Campaign](doc:typeform#configure-in-app-campaign)
: Display the survey within your app at key moments.
* [Web Pop-up Campaign](https://docs.clevertap.com/docs/typeform)
: Surface the survey as a pop-up on your website.
###
Configure an Email Campaign
[](https://docs.clevertap.com/docs/typeform#configure-an-email-campaign)
Set up and personalize your email campaigns in CleverTap to engage users effectively. To do so, follow these steps:
1. Go to the _Campaigns_ page, click **\+ Campaign**, and select _Email_ from the list of messaging channels.
2. Click **Go to Editor** under the _What_ section.
* Select a **Basic Template, Pre-used Template, or a Saved Template**.
* Switch to **Source** mode in the email editor to edit the HTML code of the email body.
3. Paste the copied **Typeform HTML snippet** (from step 4 of [Set Up Typeform Survey](doc:typeform#set-up-typeform-survey)
) inside the `` section in CleverTap Email editor Source.

Insert the HTML Code Snippet
4. Preview and test your email campaign to ensure the survey is embedded correctly.

Preview and Test
5. Publish the email campaign once testing is complete. The embedded Typeform survey will be delivered as part of the personalized email to your users.
Configure In-App Campaign
[](https://docs.clevertap.com/docs/typeform#configure-in-app-campaign)
----------------------------------------------------------------------------------------------------
Before creating an In-App campaign, ensure your app is configured with the [CleverTap SDK](https://developer.clevertap.com/docs/clevertap-sdks)
and has [Push Notifications](https://docs.clevertap.com/docs/setup-push-notification)
enabled. This ensures seamless delivery and functionality of In-App messages.
Set up and personalize your In-App campaigns in CleverTap to engage users effectively. To do so, follow these steps:
1. Go to **Campaigns** in the CleverTap dashboard. Click on **\+ Campaign** and select **In-App Messages** from the dropdown menu.
2. Click **Go to Editor** under the _What_ section.
3. Select any template from the available options. For this example, we will use **Custom HTML Templates**.

Custom HTML Templates
4. Paste the **Typform HTML snippet** (from step 4 of [Set Up Typeform Survey](doc:typeform#set-up-typeform-survey)
) inside the `` tag of the custom HTML.
5. Replace YOUR\_SURVEY\_URL with your Typeform survey URL, available in the Share section of your Typeform account. Adjust the width and height values as needed for optimal display.
HTML