As you continue to work with the CleverTap platform, you will eventually reach a point where you have to do two things:
- bringing data in—so CleverTap knows who your customers are, their history, segments and habits, or
- sending data out—so the rest of your marketing stack stays in sync.
This guide is your quick guide to both sides of that journey, outlining the simplest ways to import what you need and export what you want.
1 · Exporting Data from CleverTap
Method | Best for | Highlights |
Outbound Webhooks | Real‑time pushes to third‑party systems | Data push method; supports live and PBS qualification; event-triggered payloads with retry logic |
Get Events & Get Profiles APIs | Pulling historical data or syncing to a data warehouse | Data pull method; cursor-based batch export; supports CQL-based filtering |
Amazon S3 / Azure / GCP Exports | Scheduled batch exports to cloud storage | File-based dumps of events and user profiles every 4+ hours; segmentation is done post-export |
EventBridge | If EventBus mechanism already running | EventBus similar to Webhooks; integrates directly with AWS EventBridge |
1. A CleverTap Webhook
A CleverTap webhook is an HTTP request that sends user data to a third-party system based on specific campaign triggers or segment conditions.
Webhooks allow you to stream user-level data in real time for live actions or push data periodically as part of scheduled or one-time campaigns.
Depending on your goal, you can trigger webhooks using:
Category | Trigger Type | Example | Ideal For |
Live – based on actions | Single Action / Multiple Actions | User launched the app, or launched the app and viewed a notification | Supports real-time data streaming with event properties included |
Live – inaction within time | Inaction + time gap | User added to cart but didn’t purchase within 24 hrs | Real-time trigger; commonly used for nudges and follow-ups |
Scheduled – based on past behavior | Past Actions / Inactions | User launched the app but didn’t open a notification last week | PBS (Past Behavior Segment); data pushed once or on schedule |
Scheduled – based on time conditions | Date-time property | Ten days since a user’s last purchase | Triggered by time-bound user attributes |
Scheduled – based on static user lists | CSV upload / custom segment | Imported list of users from a CRM | Ideal for one-time campaigns or backfills |
Segmented – using user properties | Demographics / location | Users in Canada who purchased an item | Can be applied in both real-time and scheduled modes |
Setting up a Webhook Template
- Dashboard path: Settings → Channels → Webhooks → + Add Webhook

- Configure webhook template by choosing HTTP method: POST, GET, PUT, or DELETE.
- Enter Name & Destination URL – use a tool like requestcatcher.com for dry‑runs.
Webhook authorization on CleverTap ensures that only verified sources can send data through your Webhooks. It uses one of the following methods:
- No authentication: Authenticate users by adding credentials such as a password or token via the Headers tab.
- Basic Authorization: Authenticate using a username and password in the request headers to verify the sender’s identity.
- OAuth 2.0: Authenticate requests by obtaining an access token from CleverTap and adding the token to the request headers to ensure that only authorized systems can send data.
- Save – CleverTap pings the URL with a test payload; a 200 response locks the template.
For a more detailed understanding of using a partner tool for set up, look at our in-depth documentation.
Creating an Export Webhook Campaign
Now that we’ve set up an endpoint for the webhook, we can create a webhook campaign to export the data.
- Campaigns → + Campaign → Webhooks.
- Qualification criteria:
- Live actions/inactions (e.g., “Charged” event) for real‑time export, or
- Past behavior for backfills.
- Audience filters: slice by user property (e.g., Country = “US”) or event property.
- Select the webhook template you created earlier.
Compose payload:
json
CopyEdit
{
“key_values”: {
“source”: “billing-service”,
“batch”: “{{CampaignID}}”
},
“profiles”: {{Profiles}}
}
- Choose JSON or plain text; you can personalize with Liquid tags or @Personalization variables.
- Schedule: run immediately, at a fixed time, or with a delay (seconds → days).
- Publish.
Handling Responses & Retries
Scenario | CleverTap behaviour | Your receiver should… |
HTTP 200 response code within 5 s | Marks delivery Successful | Return 200 (or any 2xx) as fast as possible |
Timeout or ≥ 300 code | Retry 2 times (exponential back‑off) | Respond quickly; queue heavy work internally |
All retries fail | Stats show “Webhook Dispatch Failed” | Alert & inspect logs |
6. Best‑Practice Checklist
Area | Recommendation |
Security | Prefer OAuth 2.0; use HTTPS; verify CleverTap’s User-Agent or add an HMAC header. |
Schema evolution | Version your receiver; ignore unknown keys to stay forward‑compatible. |
Throttling | Campaign > 100k users? Use Targeting Cap or split by segment to avoid rate‑limiting downstream APIs. |
Monitoring | Build Grafana alerts on webhook 4xx/5xx rates; cross‑check CleverTap “Webhook Stats”. |
GDPR/PII | Mask or hash emails/phones in transit if your data policy requires it. |
1.2 Cursor‑based Exports with Get Events & Get Profiles API
It is a self‑serve, on‑demand way to pull bulk data from CleverTap—perfect for a one‑time historical back‑fill or a nightly warehouse sync. You can choose and configure what you need in the export and use the API to retrieve it.. Common outputs are:
- Get Events API – raw event stream
- Get Profiles API – full user attributes
- CleverTap Query Language (CQL) – optional SQL‑style filter you can attach to either call
Everything travels in batches of up to 5 000 rows. To collect them all, you pivot through a cursor token that CleverTap hands back on the first call.
At‑a‑glance
What you export | Endpoint | Typical use |
Events only | /1/events.json | Funnel, retention, or revenue modelling in BI tools |
User profiles only | /1/profiles.json | CRM enrichment, audience uploads |
Both, pre‑filtered with CQL | Same endpoints, but include a queryblock | “Only users in Egypt who spent >$50 last week” |
How the cursor dance works
- Kick off – Send a small JSON telling CleverTap the date window (and a CQL filter if you wish).
- Receive a cursor – Think of it as a pickup token for box #1.
- Loop – Re‑call the API with that cursor; CleverTap gives you another 5 000 rows plus the next cursor. Keep looping until the cursor field disappears.
One‑time setup
- Copy your Account ID & Passcode from Settings → API Credentials.
- Write a tiny script (Bash, Python, Airflow—whatever you use) that follows the 3‑step dance above.
- Point the output to your warehouse’s staging area (Snowflake, BigQuery, Redshift, etc.).
That’s it. No CleverTap dashboard clicks required.
Day‑to‑day operations
- Scheduling – Drop the script into your scheduler (cron, Airflow, GitHub Actions).
- Monitoring – Alert if a batch file is missing or smaller than expected; CleverTap itself does not email on cursor errors.
- Segmentation – Because API supports CQL runs which export doesn’t support, you can keep files lean and avoid post‑processing heavy joins.
Good‑to‑know limits & tips
- Batch size max = 5 000 rows; larger asks are silently trimmed.
- API rate Limits =15 concurrent requests
- Payload format – Responses are returned in JSON and can be gzip-compressed if requested via headers..
- Retries – If CleverTap says “Request still in progress, retry later”, wait ~60 seconds and hit the same cursor again.
- Profiles extras – Add app=true if you also need device info in every profile blob.
- Security – Always call the HTTPS domain for your region (in1.api…, eu1.api…, etc.).
1.3 Method 3 · Partner Exports (AWS, Google, Azure)
Think of Partner Exports as a scheduled “bulk dump” from CleverTap straight into your own cloud account.
Unlike Webhooks (real‑time) or the Get Events API (script‑driven), these connectors:
- move both events and user‑profiles in batches
- can refresh as often as every 4 hours (or as rarely as once per day)
- hand you everything you asked for—you filter or segment the data after it lands in your storage
Below is a non‑technical snapshot of each partner connector and the common setup flow.
Partner | Where the data lands | Typical uses | Quick highlights |
Amazon S3 | Your S3 bucket | Feed Redshift/Glue, keep a cold archive | Choose JSON, CSV, XML or Parquet; filenames chunk at 100 MB; IAM write‑only policy required. |
Amazon EventBridge | EventBridge bus → any AWS target (Lambda, Kinesis, Step Functions) | Pipe CleverTap activity into real‑time AWS workflows | Near‑instant events; you still configure it under “Exports” with a 4‑hour minimum schedule to ensure durability. |
Google Cloud Platform | Dataset in your GCP project | BI & SQL‑style analysis in minutes | CleverTap creates the tables (events, profiles); each run appends the latest 4‑hour slice. |
Microsoft Azure | Azure Blob / Data Lake Gen 2 | Feed Synapse, Data Factory, or Power BI | Same 4‑hour cadence, same file‑format choices as S3. |
Amplitude | Amplitude dashboard | Product and behavioral analytics; cohort tracking | Export CleverTap events into Amplitude; supports one-time or recurring exports |
Mixpanel | Mixpanel dashboard | Product analytics, funnel tracking, retention analysis | Exports CleverTap events to Mixpanel; supports one-time or recurring exports |
mParticle | mParticle dashboard | Customer data platform integration; cross-channel data unification | Exports CleverTap events to mParticle; supports one-time or recurring exports |
Set-up

- Go to: Settings → Partners → Exports → + New Export
- Pick a partner (S3, GCP, or Azure, Mixpanel, mParticle, Amplitude).
- Paste your cloud details
- Bucket name / Project ID / Storage account
- Credentials with write permission only (CleverTap never needs read/delete).
- Choose what to send
- All events or Select events
- All user profiles (full + incremental after day 1).
- Set the frequency (every 4 hours, 8 hours, 12 hours, or 24 hours).
- Pick a file format (JSON, CSV, XML, or Parquet).
- Create export – CleverTap pushes the first full batch; you’ll see a green “Running” badge when it succeeds.
Heads‑up on first run
The initial export is a full back‑fill (can be large). From the second run onward you only receive the changes since the last window, saving storage and processing time.
Day‑to‑day operations
- Identity priority: Decide whether “Identity”, “Email”, or “Phone” should populate the identity column if you export profiles.
- Edits & stop: Hover over the export → Edit to tweak frequency or stop it altogether.
Things to remember
- Minimum refresh = 4 hours – these connectors are not meant for real‑time dashboards.
- Segment later: Because the export is bulk, you’ll filter by event type, user cohort, or date after ingesting the files into your warehouse or lake.
- Cost awareness: You pay only your own cloud‑storage and egress costs; CleverTap doesn’t charge per‑GB for exports.
- Security first: Always give CleverTap a dedicated service account/bucket path with write access only, rotate keys at least twice a year, and use encryption at rest.
2 · Importing Data into CleverTap
Importing Data into CleverTap – the 4 Practical Paths
Method | Best for | Refresh style | Stand‑out points |
SFTP Upload | Massive back‑fills or weekly “data drops” from a data team | Push the file, CleverTap sweeps for the data | Up to 5 GB per file; JSON or CSV; manifest maps columns; resumable if network flakes. |
Upload APIs(/1/upload/events.json& /1/upload/profiles.json) | App/server code that wants to log events or update profiles in real‑time | Your script / server can upload events in real-time | Up to 1 000 records per call, epoch timestamps, same headers for both events & profiles. |
CSV Upload (UI) | Just for profile upload. Quick, manual edits by a marketer—“fix these 200 user attributes” | Drag‑and‑drop in the dashboard | Up to 1 GB per file, in‑browser mapping & preview, status email on completion. |
1 · SFTP Upload (events or profiles)
- Generate an SSH key and register it under Settings → Import → SFTP.
- Connect to imports.clevertap.com (port 22).
- Drop two files for every job:
- Data file – events_YYYYMMDD_hhmm.csv.gz or profiles_…
- Manifest file – YAML that maps each column to a CT property.
- CleverTap auto‑picks the pair, processes within ≈ 2 h, and emails a success/fail report.
- View history under Settings → Import → Activity Log.
Pro tip: Ooredoo Tunisia pipes nightly Telescope data this way—extract → gzip → sftp → sleep.
2 · Upload APIs (real‑time from your code)
- Endpoint: POST https://<region>.api.clevertap.com/1/upload
- Headers: X-CleverTap-Account-Id, X-CleverTap-Passcode, Content-Type: application/json.
- Body: top‑level “d”: [ … ] array; each object is either an “event” or “profile” update.
- Limits: 1 000 objects / 4 MB per request; ~30 req/sec typical throttle.
- Dry run: add ?dryRun=1 to validate without ingesting.
4 · CSV Upload (Only for profile uploads)
- Path: Settings → Engage → CSV Uploads → +Upload.
- Map columns in‑browser (identity, phone, any custom property).
- Preview the diff, then Save & Upload; status and any error rows land in your inbox.
- Multiple files can process in parallel; 1 GB max per upload.
Which one should I use?
If you need… | Go with… |
Huge historical loads or regular batch drops from data engineering | SFTP Upload |
Server‑side event logging or real‑time profile tweaks | Upload APIs |
A one‑off manual fix by the marketing team | CSV Upload |
In a nutshell: pick the file‑based SFTP or CSV routes for bulk jobs, fire the Upload APIs straight from your code for streaming updates.
Conclusion
When data can move smoothly both into and out of CleverTap, the platform can do what it does best—unify customer insights, power intelligent segmentation, and drive timely, personalized engagement across every channel you choose. Pick the import method that keeps profiles and events fresh, tap the export option that keeps your other systems aligned, and let the continuous flow of information turn every campaign, analysis, and experiment into a data-driven win.
We hope you found this guide useful and for any further questions, please contact your support team.
Agnishwar Banerjee 
Leads content and digital marketing.Expert in SaaS sales, marketing and GTM strategies.
Free Customer Engagement Guides
Join our newsletter for actionable tips and proven strategies to grow your business and engage your customers.
