SDK Configuration

Helpshift provides several config options which can be used to customize behaviour of the SDK.

Install time configurations

enableInAppNotification

If you do not want the in-app notification support provided by the Helpshift SDK, you can set the flag to no. The default value of this flag is yes i.e., in app notification will be enabled.

Flag
enableInAppNotification
Values
"yes" / "no"
Default
"no"

Example:

Dictionary<string, object> config = new Dictionary<string, object>();
config.Add("enableInAppNotification", "yes");
HelpshiftCore.Initialize(HelpshiftApiProviderType.HelpshiftApiProviderTypeAll);
HelpshiftApi.HelpshiftCore.Install("<YOUR_API_KEY>",
                                   "<YOUR_COMPANY>.helpshift.com",
                                   "<YOUR_APP_ID>",
                                   config);

enableDefaultFallbackLanguage

Flag
enableDefaultFallbackLanguage
values
"yes"/ "no"
default
"no"

You can enable or disable the SDK default fallback language when showing FAQs using this flag. When set to "no", the Helpshift SDK will not fallback to the default language that is English, when showing FAQs.

Example:

Dictionary<string, object> config = new Dictionary<string, object>();
config.Add("enableDefaultFallbackLanguage", "no");

HelpshiftCore.Initialize(HelpshiftApiProviderType.HelpshiftApiProviderTypeAll);
HelpshiftApi.HelpshiftCore.Install("YOUR_API_KEY",
                                    "<YOUR_HELPSHIFT_DOMAIN>.helpshift.com",
                                    "YOUR_APP_ID",
                                    config);

enableLogging

Option
enableLogging
Values
"yes" / "no"
Default
"yes"

Upon setting enableLogging to true, Helpshift SDK logs will be generated in the console. This will be useful for debugging the SDK during integration.

Example :

Dictionary<string, object> config = new Dictionary<string, object>();
config.Add("enableLogging", "yes");

HelpshiftCore.Initialize(HelpshiftApiProviderType.HelpshiftApiProviderTypeAll);
HelpshiftApi.HelpshiftCore.Install("YOUR_API_KEY",
                                   "<YOUR_HELPSHIFT_DOMAIN>.helpshift.com",
                                   "YOUR_APP_ID",
                                   config);

enableInboxPolling

Flag
enableInboxPolling
Values
"yes" / "no"
Default
"yes"

Controls whether or not the application should poll for Campaign messages in addition to relying on push notifications. If your application does not use this option, the SDK will use both push notifications and polling to receive Campaign messages. If you want to use only push notifications for Campaigns, set this option to no.

Example :

Dictionary<string, object> config = new Dictionary<string, object>();
config.Add("enableInboxPolling", "yes");

HelpshiftCore.Initialize(HelpshiftApiProviderType.HelpshiftApiProviderTypeAll);
HelpshiftApi.HelpshiftCore.Install("YOUR_API_KEY",
                                   "<YOUR_HELPSHIFT_DOMAIN>.helpshift.com",
                                   "YOUR_APP_ID",
                                   config);

API options

enableContactUs

Option:
enableContactUs
Values:
"always" / "after_viewing_faqs" / "never"
Default:
"always"
Supported by:
showFAQs, showFAQSection, showSingleFAQ

The enableContactUs flag controls the visibility of Contact Us button -

"always"
show in the navigation bar, search, and after marking an FAQ unhelpful. "yes" for SDK versions below 4.5.0
"after_viewing_faqs"
show only while searching, and after marking an FAQ unhelpful.
"never"
do not show "Contact Us" button anywhere in the SDK. "no" for SDK versions below 4.5.0

Example:

Dictionary<string, object> config = new Dictionary<string, object>();
config.Add("enableContactUs", "always");
Helpshift.ShowFAQs(uiViewController, config);

This flag has no effect for the ShowConversation API call, since there is no Contact Us button in the conversation screen.

gotoConversationAfterContactUs

Option
gotoConversationAfterContactUs
Values
"yes" / "no"
Default
"no"
Supported by
ShowFAQs, ShowFAQSection, ShowSingleFAQ, ShowConversation

The gotoConversationAfterContactUs flag will determine whether the user lands up in the conversation screen after starting a new conversation via "Contact Us". This only makes sense if the enableContactUs flag takes on the default value.

Example:

Dictionary<string, object> config = new Dictionary<string, object>();
config.Add("gotoConversationAfterContactUs", "yes");
HelpshiftApi.HelpshiftSupport.ShowConversation(uiViewController, config);

For ShowFAQs, ShowFAQSection and ShowSingleFAQ, setting gotoConversationAfterContactUs makes sense only if enableContactUs is yes.

requireEmail

Option
requireEmail
Values
"yes" / "no"
Default
"no"
Supported by
ShowFAQs, ShowFAQSection, ShowSingleFAQ, ShowConversation

The requireEmail flag will determine whether email is required or optional for starting a new conversation.

When the flag is set to yes customer's email will be required. If set to no email will be optional.

Dictionary<string, object> config = new Dictionary<string, object>();
config.Add("requireEmail", "yes");
HelpshiftApi.HelpshiftSupport.ShowConversation(uiViewController, config);

If "New Issue Forwarding" is ON or if "Allow anonymous issues" is ON in the agent dashboard, then this flag will be ignored.

Once requireEmail flag is set, the SDK will use that value for all new conversations until it is changed again.

hideNameAndEmail

Option
hideNameAndEmail
Values
"yes" / "no"
Default
"no"
Supported by
ShowFAQs, ShowFAQSection, ShowSingleFAQ, ShowConversation

The hideNameAndEmail flag will hide the name and email fields when the user starts a new conversation.

When the flag is set to yes the name and email fields will be hidden. If set to no the default behaviour will resume.

If "New Issue Forwarding" is ON then this flag will be ignored when name and email are not available to the SDK. You can use the setNameAndEmail API, to supply the SDK with name and email in this case.

If "Allow anonymous issues" is ON, under app settings in the agent dashboard, then this flag will be ignored.

Also, if the requireEmail flag is set to no and email is not available to the SDK, then hideNameAndEmail flag will be ignored.

Dictionary<string, object> config = new Dictionary<string, object>();
config.Add("hideNameAndEmail", "yes");
HelpshiftApi.HelpshiftSupport.ShowConversation(uiViewController, config);

Once hideNameAndEmail flag is set, the SDK will use that value for all new conversations until it is changed again.

conversationPrefillText

Option
conversationPrefillText
Values
Non-empty string
Default
Empty string
Supported by
ShowConversation

The conversationPrefillText API option will prefill a new conversation description, with the supplied string. This is useful where you might want your users to send you diagnostic information in the conversation description, for example if the app hits an exception, etc.

Example:

string preFillString = "Pre fill text";
Dictionary<string, object> config = new Dictionary<string, object>();
config.Add("conversationPrefillText", preFillString);
HelpshiftApi.HelpshiftSupport.ShowConversation(uiViewController, config);

The conversationPrefillText option takes effect only for the showConversation API

enableFullPrivacy

Option
enableFullPrivacy
Values
"yes" / "no"
Default
"no"
Supported by
ShowFAQs, ShowFAQSection, ShowSingleFAQ, ShowConversation

In scenarios where the user attaches objectionable content in the screenshots, it becomes a huge COPPA concern. The enableFullPrivacy flag will help solve this problem.

If this flag is set to yes, it enables full privacy controls for the SDK. The user can be disabled from attaching screenshots and sending personally identifiable information in meta-data. This helps developers ensure full COPPA compliance.

To send personally identifiable information through custom meta-data, the information must be added inside a dictionary with a "private-data" key. If this flag is set to yes, this data will be removed when the user starts a new conversation.

Example:

Dictionary<string, object> config = new Dictionary<string, object>();
config.Add("enableFullPrivacy", "yes");
HelpshiftApi.HelpshiftSupport.ShowFAQs(uiViewController, config);

Once enableFullPrivacy flag is set, the SDK will use that value for all further sessions until it is changed again.

showSearchOnNewConversation

Option
showSearchOnNewConversation
Values
"yes" / "no"
Default
"no"
Supported by
ShowFAQs, ShowFAQSection, ShowSingleFAQ, ShowConversation

If showSearchOnNewConversation flag is set to yes, the user will be taken to a view which shows the search results relevant to the conversation text that he has entered upon clicking the 'Send' button. This is to avoid tickets which are already answered in the FAQs. The user will still be able to start a new conversation with the same text. He can also go through one of the FAQs and find a solution to his query, and exit the session without submitting a ticket.

Default value is no, ie., this feature will not be enabled unless you explicitly pass yes for this flag.

For example

Dictionary<string, object> config = new Dictionary<string, object>();
config.Add("showSearchOnNewConversation", "yes");
HelpshiftApi.HelpshiftSupport.ShowConversation(uiViewController, config);

The showSearchOnNewConversation option takes effect only for the showConversation API.

showConversationResolutionQuestion

Flag
showConversationResolutionQuestion
Values
"yes" / "no"
Default
"yes"

By default the Helpshift SDK will show the conversation resolution question to the user, to confirm if the conversation was resolved. If you want to disable the conversation resolution question, set showConversationResolutionQuestion to false, On resolving the conversation from the admin dashboard will now take the user directly to the "Start a new conversation" state..

Default value is yes, ie., this feature will not be disabled unless you explicitly pass no for this flag.

Example :

Dictionary<string, object> configMap = new Dictionary<string, object>();
configMap.Add("showConversationResolutionQuestion", "yes");
HelpshiftApi.HelpshiftSupport.ShowConversation(uiViewController, configMap);

customContactUsFlows

Flag
customContactUsFlows
Values
List of Flows. See the example below to create flows.
Default
There is no default value for this configuration.

This configuration allows you to override the Contact Us buttons inside the Helpshift SDK and show Guided Issue Filing when a user taps on the Contact Us buttons.

Example :

Let’s say you want the users to see a particular FAQ section, a single FAQ and 2 different Contact Us flows with different prefill texts when they tap the Contact Us buttons within the Helpshift SDK. In this case, you would configure the showHelp button (a button which triggers Helpshift SDK) in the following way :

public void showHelp() {

Dictionary<string, object> faqSectionFlow = new Dictionary<string, object>();
faqSectionFlow.Add(HelpshiftApi.HelpshiftSupport.HsFlowType, HelpshiftApi.HelpshiftSupport.HsFlowTypeFaqSection);
faqSectionFlow.Add(HelpshiftApi.HelpshiftSupport.HsFlowTitle, "FAQ section");
faqSectionFlow.Add(HelpshiftApi.HelpshiftSupport.HsFlowData, "1509");

Dictionary<string, object> faqFlow = new Dictionary<string, object>();
faqFlow.Add(HelpshiftApi.HelpshiftSupport.HsFlowType, HelpshiftApi.HelpshiftSupport.HsFlowTypeSingleFaq);
faqFlow.Add(HelpshiftApi.HelpshiftSupport.HsFlowTitle, "FAQ");
faqFlow.Add(HelpshiftApi.HelpshiftSupport.HsFlowData, "2998");

Dictionary<string, object> showConversationFlow1 = new Dictionary<string, object>();
showConversationFlow1.Add(HelpshiftApi.HelpshiftSupport.HsFlowType, HelpshiftApi.HelpshiftSupport.HsFlowTypeConversation);
showConversationFlow1.Add(HelpshiftApi.HelpshiftSupport.HsFlowTitle, "Converse 1");

Dictionary<string, object> conversationConfig1 = new Dictionary<string, object>() { {"conversationPrefillText" , "Contact Us about our app"} };

showConversationFlow1.Add(HelpshiftApi.HelpshiftSupport.HsFlowConfig, conversationConfig1);

Dictionary<string, object> showConversationFlow2 = new Dictionary<string, object>();
showConversationFlow2.Add(HelpshiftApi.HelpshiftSupport.HsFlowType, HelpshiftApi.HelpshiftSupport.HsFlowTypeConversation);
showConversationFlow2.Add(HelpshiftApi.HelpshiftSupport.HsFlowTitle, "Converse 2");

Dictionary<string, object> conversationConfig2 = new Dictionary<string, object>() { {"conversationPrefillText" , "Contact Us about in-app purchases"} };

showConversationFlow2.Add(HelpshiftApi.HelpshiftSupport.HsFlowConfig, conversationConfig2);

Dictionary<string, object>[] flows =  new Dictionary<string, object>[] {
faqSectionFlow,
faqFlow,
showConversationFlow1,
showConversationFlow2
};

Dictionary<string, object> faqConfig = new Dictionary<string, object>();

faqConfig.Add(HelpshiftApi.HelpshiftSupport.HsCustomContactUsFlows, flows);
HelpshiftApi.HelpshiftSupport.ShowFAQs (uiViewController, faqConfig);
}

Anytime the Helpshift SDK is presented via showHelp with this configuration, the Contact Us buttons in the SDK will redirect to Guided Issue Filing with the flows provided in the customContactUsOptions list.

Once a particular flow is selected, the subsequent Contact Us buttons will redirect to nested customContactUsFlow if configured else to default contact us screen.

Custom flows can be nested by passing another custom flows configuration while creating a flow.

Example :

Let’s say you want to configure singleFAQFlow in the above example to show showConversationFlow1 and showConversationFlow2 through the Contact Us buttons inside it. In this case, you would configure the showHelp button (a button which triggers Helpshift SDK) in the following way :

public void showHelp() {

Dictionary<string, object> showConversationFlow1 = new Dictionary<string, object>();
showConversationFlow1.Add(HelpshiftApi.HelpshiftSupport.HsFlowType, HelpshiftApi.HelpshiftSupport.HsFlowTypeConversation);
showConversationFlow1.Add(HelpshiftApi.HelpshiftSupport.HsFlowTitle, "Converse 1");
Dictionary<string, object> conversationConfig1 = new Dictionary<string, object>() { {"conversationPrefillText" , "Contact Us about our app"} };
showConversationFlow1.Add(HelpshiftApi.HelpshiftSupport.HsFlowConfig, conversationConfig1);

Dictionary<string, object> showConversationFlow2 = new Dictionary<string, object>();
showConversationFlow2.Add(HelpshiftApi.HelpshiftSupport.HsFlowType, HelpshiftApi.HelpshiftSupport.HsFlowTypeConversation);
showConversationFlow2.Add(HelpshiftApi.HelpshiftSupport.HsFlowTitle, "Converse 2");
Dictionary<string, object> conversationConfig2 = new Dictionary<string, object>() { {"conversationPrefillText" , "Contact Us about in-app purchases"} };
showConversationFlow2.Add(HelpshiftApi.HelpshiftSupport.HsFlowConfig, conversationConfig2);

Dictionary<string, object> faqFlow = new Dictionary<string, object>();
faqFlow.Add(HelpshiftApi.HelpshiftSupport.HsFlowType, HelpshiftApi.HelpshiftSupport.HsFlowTypeSingleFaq);
faqFlow.Add(HelpshiftApi.HelpshiftSupport.HsFlowTitle, "FAQ");
faqFlow.Add(HelpshiftApi.HelpshiftSupport.HsFlowData, "2998");
faqFlow.Add((HelpshiftApi.HelpshiftSupport.HsCustomContactUsFlows,, new Dictionary<string, object>[] {showConversationFlow1, showConversationFlow2});

HelpshiftApi.HelpshiftSupport.showFAQs (uiViewController, faqFlow);

}

With this configuration, the Contact Us buttons in singleFAQFlow View will redirect to Guided Issue Filing with showConversationFlow1 and showConversationFlow2.

showConversationInfoScreen

Applicable to version 2.3.1 and above.

Flag
showConversationInfoScreen
Values
"yes"/"no"
Default
"no"

The showConversationInfoScreen flag will determine if users can see the Conversation info screen for an ongoing Conversation. If set to yes, the Conversation info icon will be shown in the active Conversation screen. Clicking on it will show the Conversation info screen.

Example :

Dictionary<string, object> config = new Dictionary<string, object>();
config.Add("showConversationInfoScreen", "yes");
HelpshiftApi.HelpshiftSupport.ShowConversation(activity, config);

Configuration Summary

Configuration / API showFAQs showFAQSection showSingleFAQ showConversation
enableContactUs Supported Supported Supported Not Supported
gotoConversationAfterContactUs Supported Supported Supported Supported
presentFullScreenOniPad Supported Supported Supported Supported
requireEmail Supported Supported Supported Supported
hideNameAndEmail Supported Supported Supported Supported
conversationPrefillText No effect No effect No effect Supported
enableFullPrivacy Supported Supported Supported Supported
showSearchOnNewConversation Supported Supported No effect Supported
showConversationResolutionQuestion Supported Supported Supported Supported
customContactUsFlows Supported Supported Supported Not Supported
showConversationInfoScreen Supported Supported Supported Supported