# clevertap/clevertap-android-sdk architecture

> Architecture diagram of the GitHub repository clevertap/clevertap-android-sdk, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/clevertap/clevertap-android-sdk
- Repository: https://github.com/clevertap/clevertap-android-sdk

## Overview

CleverTap’s Android SDK lets an app initialize account-scoped instances, record and validate user activity, and support customer-engagement features such as in-app messages, push notifications, inbox, and feature flags. The graph highlights those product stages and shared persistence. Major capabilities are included from the README and source tree; wiring for unsampled subsystems is intentionally shown only where documented or clear from their entry points.

Main entry points: [`clevertap-core/src/main/java/com/clevertap/android/sdk/CleverTapAPI.java`](https://github.com/clevertap/clevertap-android-sdk/blob/master/clevertap-core/src/main/java/com/clevertap/android/sdk/CleverTapAPI.java) (CleverTap API), [`clevertap-core/src/main/java/com/clevertap/android/sdk/AnalyticsManager.java`](https://github.com/clevertap/clevertap-android-sdk/blob/master/clevertap-core/src/main/java/com/clevertap/android/sdk/AnalyticsManager.java) (Analytics manager), [`clevertap-core/src/main/java/com/clevertap/android/sdk/events/EventQueueManager.kt`](https://github.com/clevertap/clevertap-android-sdk/blob/master/clevertap-core/src/main/java/com/clevertap/android/sdk/events/EventQueueManager.kt) (Event queues), [`clevertap-core/src/main/java/com/clevertap/android/sdk/inapp/InAppController.kt`](https://github.com/clevertap/clevertap-android-sdk/blob/master/clevertap-core/src/main/java/com/clevertap/android/sdk/inapp/InAppController.kt) (In-app controller)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_analytics["Analytics"]
  node_api["CleverTap API<br/>[CleverTapAPI.java]"]
  node_analytics_mgr["Analytics manager"]
  node_validation["Event validation"]
  node_events["Event queues"]
  node_session["Session manager"]
end

subgraph group_engagement["In-App Engagement"]
  node_inapp["In-app controller<br/>[InAppController.kt]"]
  node_inapp_ui["In-app display"]
  node_pip["Picture-in-picture<br/>[PIPManager.kt]"]
  node_templates["Custom templates"]
  node_flags["Feature flags"]
end

subgraph group_messaging["Messaging"]
  node_push["Push handling"]
  node_inbox["Inbox"]
end

subgraph group_platform["Platform Integrations"]
  node_lifecycle["App lifecycle"]
  node_hms["Huawei messaging"]
  node_geofence["Geofencing"]
end

subgraph group_state["SDK State"]
  node_db[("SDK database<br/>[DBManager.kt]")]
  node_prefs[("Preferences<br/>[StorageHelper.kt]")]
end

node_app(("Host app"))
node_backend(("CleverTap platform"))
node_fcm(("Firebase messaging"))

node_app -->|"initializes"| node_api
node_app -->|"registers lifecycle"| node_lifecycle
node_api -->|"records activity"| node_analytics_mgr
node_analytics_mgr -->|"validates data"| node_validation
node_analytics_mgr -->|"queues events"| node_events
node_events -->|"persists queue"| node_db
node_events -->|"flushes events"| node_backend
node_lifecycle -->|"tracks sessions"| node_session
node_api -->|"offers engagement"| node_inapp
node_inapp -->|"displays messages"| node_inapp_ui
node_inapp -->|"uses templates"| node_templates
node_inapp_ui -.->|"supports PiP"| node_pip
node_fcm -.->|"delivers messages"| node_push
node_hms -.->|"creates notifications"| node_push
node_api -->|"exposes inbox"| node_inbox
node_api -->|"exposes flags"| node_flags
node_api -.->|"supports geofencing"| node_geofence
node_analytics_mgr -->|"stores SDK state"| node_prefs

click node_api "https://github.com/clevertap/clevertap-android-sdk/blob/master/clevertap-core/src/main/java/com/clevertap/android/sdk/CleverTapAPI.java"
click node_analytics_mgr "https://github.com/clevertap/clevertap-android-sdk/blob/master/clevertap-core/src/main/java/com/clevertap/android/sdk/AnalyticsManager.java"
click node_validation "https://github.com/clevertap/clevertap-android-sdk/blob/master/clevertap-core/src/main/java/com/clevertap/android/sdk/validation/pipeline/ValidationPipelineProvider.kt"
click node_events "https://github.com/clevertap/clevertap-android-sdk/blob/master/clevertap-core/src/main/java/com/clevertap/android/sdk/events/EventQueueManager.kt"
click node_lifecycle "https://github.com/clevertap/clevertap-android-sdk/blob/master/clevertap-core/src/main/java/com/clevertap/android/sdk/ActivityLifecycleCallback.java"
click node_session "https://github.com/clevertap/clevertap-android-sdk/blob/master/clevertap-core/src/main/java/com/clevertap/android/sdk/SessionManager.java"
click node_inapp "https://github.com/clevertap/clevertap-android-sdk/blob/master/clevertap-core/src/main/java/com/clevertap/android/sdk/inapp/InAppController.kt"
click node_inapp_ui "https://github.com/clevertap/clevertap-android-sdk/blob/master/clevertap-core/src/main/java/com/clevertap/android/sdk/inapp/fragment/CTInAppBaseFragment.kt"
click node_pip "https://github.com/clevertap/clevertap-android-sdk/blob/master/clevertap-core/src/main/java/com/clevertap/android/sdk/inapp/pipsdk/PIPManager.kt"
click node_templates "https://github.com/clevertap/clevertap-android-sdk/blob/master/clevertap-core/src/main/java/com/clevertap/android/sdk/inapp/customtemplates/TemplatesManager.kt"
click node_push "https://github.com/clevertap/clevertap-android-sdk/blob/master/clevertap-core/src/main/java/com/clevertap/android/sdk/pushnotification/CTNotificationIntentService.java"
click node_hms "https://github.com/clevertap/clevertap-android-sdk/blob/master/clevertap-hms/src/main/java/com/clevertap/android/hms/CTHmsMessageService.java"
click node_inbox "https://github.com/clevertap/clevertap-android-sdk/blob/master/clevertap-core/src/main/java/com/clevertap/android/sdk/inbox/CTInboxActivity.java"
click node_flags "https://github.com/clevertap/clevertap-android-sdk/blob/master/clevertap-core/src/main/java/com/clevertap/android/sdk/featureFlags/CTFeatureFlagsController.java"
click node_geofence "https://github.com/clevertap/clevertap-android-sdk/blob/master/clevertap-geofence/src/main/java/com/clevertap/android/geofence/GeofenceStorageHelper.java"
click node_db "https://github.com/clevertap/clevertap-android-sdk/blob/master/clevertap-core/src/main/java/com/clevertap/android/sdk/db/DBManager.kt"
click node_prefs "https://github.com/clevertap/clevertap-android-sdk/blob/master/clevertap-core/src/main/java/com/clevertap/android/sdk/StorageHelper.kt"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_api,node_analytics_mgr,node_validation,node_events,node_session toneBlue
class node_inapp,node_inapp_ui,node_pip,node_templates,node_flags toneAmber
class node_push,node_inbox toneMint
class node_lifecycle,node_hms,node_geofence toneRose
class node_db,node_prefs,node_app,node_backend,node_fcm toneIndigo
```

## Components

### Analytics

- [CleverTap API](https://github.com/clevertap/clevertap-android-sdk/blob/master/clevertap-core/src/main/java/com/clevertap/android/sdk/CleverTapAPI.java): `clevertap-core/src/main/java/com/clevertap/android/sdk/CleverTapAPI.java`
- [Analytics manager](https://github.com/clevertap/clevertap-android-sdk/blob/master/clevertap-core/src/main/java/com/clevertap/android/sdk/AnalyticsManager.java): `clevertap-core/src/main/java/com/clevertap/android/sdk/AnalyticsManager.java`
- [Event validation](https://github.com/clevertap/clevertap-android-sdk/blob/master/clevertap-core/src/main/java/com/clevertap/android/sdk/validation/pipeline/ValidationPipelineProvider.kt): `clevertap-core/src/main/java/com/clevertap/android/sdk/validation/pipeline/ValidationPipelineProvider.kt`
- [Event queues](https://github.com/clevertap/clevertap-android-sdk/blob/master/clevertap-core/src/main/java/com/clevertap/android/sdk/events/EventQueueManager.kt): `clevertap-core/src/main/java/com/clevertap/android/sdk/events/EventQueueManager.kt`
- [Session manager](https://github.com/clevertap/clevertap-android-sdk/blob/master/clevertap-core/src/main/java/com/clevertap/android/sdk/SessionManager.java): `clevertap-core/src/main/java/com/clevertap/android/sdk/SessionManager.java`

### In-App Engagement

- [In-app controller](https://github.com/clevertap/clevertap-android-sdk/blob/master/clevertap-core/src/main/java/com/clevertap/android/sdk/inapp/InAppController.kt): `clevertap-core/src/main/java/com/clevertap/android/sdk/inapp/InAppController.kt`
- [In-app display](https://github.com/clevertap/clevertap-android-sdk/blob/master/clevertap-core/src/main/java/com/clevertap/android/sdk/inapp/fragment/CTInAppBaseFragment.kt): `clevertap-core/src/main/java/com/clevertap/android/sdk/inapp/fragment/CTInAppBaseFragment.kt`
- [Picture-in-picture](https://github.com/clevertap/clevertap-android-sdk/blob/master/clevertap-core/src/main/java/com/clevertap/android/sdk/inapp/pipsdk/PIPManager.kt): `clevertap-core/src/main/java/com/clevertap/android/sdk/inapp/pipsdk/PIPManager.kt`
- [Custom templates](https://github.com/clevertap/clevertap-android-sdk/blob/master/clevertap-core/src/main/java/com/clevertap/android/sdk/inapp/customtemplates/TemplatesManager.kt): `clevertap-core/src/main/java/com/clevertap/android/sdk/inapp/customtemplates/TemplatesManager.kt`
- [Feature flags](https://github.com/clevertap/clevertap-android-sdk/blob/master/clevertap-core/src/main/java/com/clevertap/android/sdk/featureFlags/CTFeatureFlagsController.java): `clevertap-core/src/main/java/com/clevertap/android/sdk/featureFlags/CTFeatureFlagsController.java`

### Messaging

- [Push handling](https://github.com/clevertap/clevertap-android-sdk/blob/master/clevertap-core/src/main/java/com/clevertap/android/sdk/pushnotification/CTNotificationIntentService.java): `clevertap-core/src/main/java/com/clevertap/android/sdk/pushnotification/CTNotificationIntentService.java`
- [Inbox](https://github.com/clevertap/clevertap-android-sdk/blob/master/clevertap-core/src/main/java/com/clevertap/android/sdk/inbox/CTInboxActivity.java): `clevertap-core/src/main/java/com/clevertap/android/sdk/inbox/CTInboxActivity.java`

### Platform Integrations

- [App lifecycle](https://github.com/clevertap/clevertap-android-sdk/blob/master/clevertap-core/src/main/java/com/clevertap/android/sdk/ActivityLifecycleCallback.java): `clevertap-core/src/main/java/com/clevertap/android/sdk/ActivityLifecycleCallback.java`
- [Huawei messaging](https://github.com/clevertap/clevertap-android-sdk/blob/master/clevertap-hms/src/main/java/com/clevertap/android/hms/CTHmsMessageService.java): `clevertap-hms/src/main/java/com/clevertap/android/hms/CTHmsMessageService.java`
- [Geofencing](https://github.com/clevertap/clevertap-android-sdk/blob/master/clevertap-geofence/src/main/java/com/clevertap/android/geofence/GeofenceStorageHelper.java): `clevertap-geofence/src/main/java/com/clevertap/android/geofence/GeofenceStorageHelper.java`

### SDK State

- [SDK database](https://github.com/clevertap/clevertap-android-sdk/blob/master/clevertap-core/src/main/java/com/clevertap/android/sdk/db/DBManager.kt): `clevertap-core/src/main/java/com/clevertap/android/sdk/db/DBManager.kt`
- [Preferences](https://github.com/clevertap/clevertap-android-sdk/blob/master/clevertap-core/src/main/java/com/clevertap/android/sdk/StorageHelper.kt): `clevertap-core/src/main/java/com/clevertap/android/sdk/StorageHelper.kt`

### Other components

- **Host app**
- **CleverTap platform**
- **Firebase messaging**

## Connections

- Host app → CleverTap API: initializes
- Host app → App lifecycle: registers lifecycle
- CleverTap API → Analytics manager: records activity
- Analytics manager → Event validation: validates data
- Analytics manager → Event queues: queues events
- Event queues → SDK database: persists queue
- Event queues → CleverTap platform: flushes events
- App lifecycle → Session manager: tracks sessions
- CleverTap API → In-app controller: offers engagement
- In-app controller → In-app display: displays messages
- In-app controller → Custom templates: uses templates
- In-app display → Picture-in-picture: supports PiP
- Firebase messaging → Push handling: delivers messages
- Huawei messaging → Push handling: creates notifications
- CleverTap API → Inbox: exposes inbox
- CleverTap API → Feature flags: exposes flags
- CleverTap API → Geofencing: supports geofencing
- Analytics manager → Preferences: stores SDK state
