Skip to content
This repository has been archived by the owner before Nov 9, 2022. It is now read-only.


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

💬 Flutter Freshchat

A Flutter plugin for integrating Freshchat in your mobile app.



Add this to your AndroidManifest.xml

        android:resource="@xml/freshchat_file_provider_paths" />

If you have migrated to AndroidX your might need change the provider attribute android:name to this:

<provider android:name="androidx.core.content.FileProvider">

Add this to your Strings.xml located inside android/src/res/values

<string name="freshchat_file_provider_authority">com.example.demoapp.provider</string>

Firebase Cloud Messaging support

  1. Add dependency in <app-name>/android/app/build.gradle
dependencies {
  implementation "com.github.freshdesk:freshchat-android:3.3.0"
  1. Create (Java, not Kotlin) class to your app in the same directory as your MainActivity class

import com.freshchat.consumer.sdk.Freshchat;
import io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService;

public class FreshchatMessagingService extends FlutterFirebaseMessagingService {

    public void onNewToken(String token) {

    public void onMessageReceived(final RemoteMessage remoteMessage) {
        if (Freshchat.isFreshchatNotification(remoteMessage)) {
            Freshchat.handleFcmMessage(this, remoteMessage);
  1. In AndroidManifest.xml add
<service android:name=".FreshchatMessagingService">
    <action android:name="" />
  1. In your Application class change




  1. Add this to info.plist

    Starting with iOS 10, Apple requires developers to declare access to privacy-sensitive controls ahead of time.

<string>To Enable access to Photo Library</string>
<string>To take Images from Camera</string>
  1. If you encounter non-modular header error during project build
error: include of non-modular header inside framework module 'flutter_freshchat.FlutterFreshchatPlugin'
  • Manually in xcode update the FreshchatSDK.h to be in the flutter_freshchat target and public.


You may have to do this each time your switch or rebuild the xcode project from flutter.


To use this plugin, add flutter_freshchat as a dependency in your pubspec.yaml file.

import 'package:flutter_freshchat/flutter_freshchat.dart';

Initialize the Freshchat app with appID, appKey & domain which you could get from here: Where to find App ID and App Key

It has following [FreshchatConfig] properties:

  • domain Each Freshchat cluster falls in to one of this domains:

  • cameraEnabled property is used to either enable or disable camera within freshchat conversation widget. It default value is set to true.

  • gallerySelectionEnabled property is used to either enable or disable gallery within freshchat conversation widget. It default value is set to true.

  • teamMemberInfoVisible property is used to show team member info within freshchat conversation widget. It default value is set to true.

  • responseExpectationEnabled property is used to show exceptions that occur within freshchat conversation widget. It default value is set to true.

  • showNotificationBanner property is used enabled or disable in-app notification banner. It default value is set to true. (NOTE: IOS only).

  • notificationSoundEnabled property is used enabled or disable in-app notification sound. It default value is set to true. (NOTE: IOS only).

await FlutterFreshchat.init(
  appKey: 'YOUR_APP_KEY_HERE',
  domain: ''

Update the user info by setting by creating a FreshchatUser object

FreshchatUser user = FreshchatUser.initial(); = "";
user.firstName = "john";
user.lastName = "doe";
user.phoneCountryCode = "+91"; = "0123456789";

await FlutterFreshchat.updateUserInfo(user: user);

// Custom properties can be set by creating a Map<String, String>
Map<String, String> customProperties = Map<String, String>();
customProperties["loggedIn"] = "true";

await FlutterFreshchat.updateUserInfo(user: user, customProperties: customProperties);

Identify the user user by usin email address or any way you uniquely identify the user. externalID is required and returns a restoreID you can save it and use to restore the chats

await FlutterFreshchat.identifyUser(externalID: 'USER_UNIQUE_ID', restoreID: 'USER_RESTORE_ID');

Show conversation opens a conversation screen and also list all the other conversation if a list obejct is supplied to it. You can also pass a title for the chat screen.

await FlutterFreshchat.showConversations(tags: const [], title: 'CHAT_SCREEN_TITLE');

Send message directly within the app without opening the Freshchat interface. tag is optional.

await FlutterFreshchat.send(message: 'YOUR_MESSAGE_HERE', tag: 'YOUR_TAG_HERE');

ShowFAQs opens a FAQ screen in a grid like format as default you can change the default setting by changing this paramters.
showFaqCategoriesAsGrid = true
showContactUsOnAppBar = true
showContactUsOnFaqScreens = false
showContactUsOnFaqNotHelpful = false

await FlutterFreshchat.showFAQs();

Gets the unseen message count from freshchat you can use this to show a counter.

int count = await FlutterFreshchat.getUnreadMsgCount();

Reset user data at logout or when deemed appropriate based on user action in the app.

await FlutterFreshchat.resetUser();


Find the example wiring in the Flutter_Freshchat example application.

API details

See the flutter_freshchat.dart for more API details

Issues and feedback

Please file issues to send feedback or report a bug. Thank you!