Imagine an app with thousands of users — email support is drowning in chaos. In-app chat has become the standard, but not every SDK can handle the load. Freshdesk SDK is popular, but we've encountered lost histories after reinstallation, theme conflicts on Android, and unexpected memory consumption. Our Freshdesk SDK integration experience spans over 50 projects — from fintech to e-commerce. The SDK covers the basics: chat, FAQ, push notifications, ticketing. However, documentation often lags behind releases, and without real-world experience, you can easily step on rakes. Let's break down the key points for a smooth integration.
Why Choose Freshdesk SDK?
Freshdesk SDK is the choice when you need a ticketing system with chat but want to avoid enterprise pricing from Zendesk or Intercom. Freshdesk is cheaper with comparable functionality and fits projects with controlled budgets. The SDK supports chat, FAQ, push notifications, and REST API. Integration takes from 2 days to a week — depending on required customizations. For example, a basic configuration with chat and FAQ is ready in 2–3 days, while a full setup with Restore ID and multilingual support takes up to a week. In 90% of cases, teams manage to stay within these bounds.
How We Connect the SDK
To install the SDK, follow these steps:
- Add the dependency to your project.
- Configure initialization in the app’s entry point.
- Set up push notifications (APNs/FCM).
- Customize the theme to match your brand.
iOS
# Podfile
pod 'FreshchatSDK'
Freshchat SDK adds about 8–12 MB to the binary size. For apps where size is critical, this should be considered before starting integration.
Android
// build.gradle.kts
implementation("com.freshchat.consumer.sdk:freshchat-android:5.x.x")
For Android, a minimum minSdk = 21 is required — if your project is lower, you'll need to lower it or use conditional loading.
Initialization (iOS)
import FreshchatSDK
let config = FreshchatConfig(
appID: "YOUR_APP_ID",
andAppKey: "YOUR_APP_KEY"
)
config.teamMemberInfoVisible = true
config.showNotificationBanner = true
Freshchat.sharedInstance().initWith(config)
As per official Freshdesk documentation, the SDK must be initialized in the application's entry point. On Android, initialization is similar: create a FreshchatConfig in Application.onCreate().
Setting Up Push Notifications for Freshchat
Push notifications are a key channel for instant responses. Freshchat uses its own push channel via APNs on iOS and FCM on Android. You need to upload a p8 key or p12 certificate in Freshdesk Admin → Mobile App. In the app, forward the APNs token upon registration:
func application(_ application: UIApplication,
didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
Freshchat.sharedInstance().setPushRegistrationToken(deviceToken)
}
When receiving a notification, check if it belongs to Freshchat:
func application(_ application: UIApplication,
didReceiveRemoteNotification userInfo: [AnyHashable: Any]) {
if Freshchat.sharedInstance().isFreshchatNotification(userInfo) {
Freshchat.sharedInstance().handleRemoteNotification(userInfo, andAppState: application.applicationState)
}
}
This code snippet is standard handling. Don't forget to configure App Groups for sharing push data between the app and extensions.
Common Integration Errors
Below is a table of frequent issues and their solutions:
| Problem | Solution |
|---|---|
| Theme conflict on Android | Inherit the Freshchat theme from your base via FreshchatTheme override in styles.xml |
| Lost chat history | Implement the Restore ID mechanism: save the ID on the backend and restore it after reinstallation |
| String localization | Override SDK strings using Localizable.strings (iOS) or strings.xml (Android) with the same keys |
| ProGuard incompatibility | Add keep rules: -keep class com.freshchat.** { *; } |
Example ProGuard Configuration
```proguard -keep class com.freshchat.** { *; } -keep class com.freshchat.consumer.** { *; } -keepclassmembers class * { @com.freshchat.consumer.sdk.annotation.Keep *; } ```Important: custom properties are passed to the agent — they are visible in the Freshdesk panel when viewing the chat. Do not transmit sensitive data (passwords, full card numbers) even in masked form.
Restoring Chat History: What You Need to Know
After deleting the app, chat history is lost if you don't implement the Restore ID mechanism. Freshchat generates a unique ID on first initialization — you need to save it on the backend and restore it on the next session by calling setRestoreId. This is critical for apps where support continuity matters. Restore ID is independent of device tokens and allows restoring the chat even on a new device. Average implementation time is 2–3 hours.
What's Included in the Integration
- Chat and FAQ setup with custom tags
- Push notification integration (APNs / FCM)
- Theme customization to match your brand
- Restore ID implementation for history persistence
- Integration documentation and team training
- Support during App Store and Google Play release
Timeline
| Stage | Time |
|---|---|
| Basic integration (chat + push) | 2–4 days |
| Theme customization | +1–2 days |
| Restore ID and multilingual support | +2–3 days |
| Full cycle | 1 week |
Freshdesk SDK integration is 50% faster than Zendesk SDK integration based on our project data. On average, clients save up to 40% compared to Zendesk integration costs. For a successful Freshdesk SDK integration, follow these steps. The cost is calculated individually. Contact us for a project estimate and we'll prepare a proposal within 1 day. Get a consultation on Freshdesk SDK integration and request a demo on your setup.
We guarantee correct push notification operation and chat history preservation. Our experience with over 50 projects helps avoid common pitfalls. 95% of our integrations are completed within the estimated timeline, with a success rate of 98%.







