SDK Configuration

Helpshift provides several config options which can be used to customize behaviour of the SDK. These options are boolean flags which can be passed with the Helpshift APIs such as showConversation, showFAQs etc.

Applicable to SDK version 4.0.0 and above

Install time configurations

unityGameObject

Flag
unityGameObject
Values
Non-empty String

The unityGameObject option is used to tell the Helpshift SDK which Game object to send the Unity messages to. Callbacks such as didReceiveInAppNotificationCount and didReceiveNotificationCount will be called on the object specified via this option.

For example

using Helpshift;
.
.
.
private HelpshiftSdk help;
this.help = HelpshiftSdk.getInstance();
var configMap = new Dictionary<string, string>();
configMap.Add("unityGameObject", "Cube");
help.install("apiKey","domainName","appId", configMap);

This option will only work with the Helpshift's install API

customContactUsFlows

Available in version 2.3.0 and above. User can be directed to dynamic form only if no open issues exist.

Flag
customContactUsFlows
Values
Non-empty array of flow dictionaries. Refer Guided Issue Filing to know more about creating flow dictionaries.
Default
There is no default value for this configuration.

The customContactUsFlows option can be used to override the default behaviour of Contact Us button. Instead of taking user to new issue screen, you can show dynamic form as the action of button tap. The example shown below launches faqs screen with customContactUsFlows sdk configuration that consists of a conversation flow, faqs list flow, single faq section flow, single faq flow and a nested flow that takes user to associated dynamic form. As user taps Contact Us button in faqs list screen, instead of launching the default conversation view the app launches a dynamic form with aforementioned flows.

using Helpshift;
.
.
.

public void onCustomContactUsClick() {

    Dictionary<string, object> conversationFlow = new Dictionary<string, object>();
    conversationFlow.Add(HelpshiftSdk.HsFlowType, HelpshiftSdk.HsFlowTypeConversation);
    conversationFlow.Add(HelpshiftSdk.HsFlowTitle, "Converse");
    Dictionary<string, object> conversationConfig = new Dictionary<string, object>()
    conversationConfig.Add("conversationPrefillText" , "This is from dynamic");
    conversationFlow.Add(HelpshiftSdk.HsFlowConfig, conversationConfig);

    Dictionary<string, object> faqsFlow = new Dictionary<string, object>();
    faqsFlow.Add(HelpshiftSdk.HsFlowType, HelpshiftSdk.HsFlowTypeFaqs);
    faqsFlow.Add(HelpshiftSdk.HsFlowTitle, "FAQs");

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

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

    Dictionary<string, object> nestedFlow = new Dictionary<string, object>();
    nestedFlow.Add(HelpshiftSdk.HsFlowType, HelpshiftSdk.HsFlowTypeNested);
    nestedFlow.Add(HelpshiftSdk.HsFlowTitle, "Next form");
    nestedFlow.Add(HelpshiftSdk.HsFlowData, new Dictionary<string, object>[] {conversationFlow, faqsFlow, faqSectionFlow, faqFlow});

    Dictionary<string, object>[] flows =  new Dictionary<string, object>[] {
    conversationFlow,
    faqsFlow,
    faqSectionFlow,
    faqFlow,
    nestedFlow
    };

    Dictionary<string, object> faqConfig = new Dictionary<string, object>();
    faqConfig.Add(HelpshiftSdk.HsCustomContactUsFlows, flows);
    _support.showFAQs (faqConfig);
}

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:

using Helpshift;
.
.
.
private HelpshiftSdk help;
this.help = HelpshiftSdk.getInstance();
Dictionary<string, string> configMap = new Dictionary<string, string>();
configMap.Add("enableInAppNotification", "yes");
help.install("apiKey","domainName","appId", configMap);

enableDefaultFallbackLanguage

Available from SDK version 1.3.0 and above

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

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

Example:

using Helpshift;
.
.
.
private HelpshiftSdk help;
this.help = HelpshiftSdk.getInstance();
Dictionary<string, object> configMap = new Dictionary<string, object>();
configMap.Add("enableDefaultFallbackLanguage", "yes");
help.install("apiKey","domainName","appId", configMap);

disableEntryExitAnimations

Applicable to version 2.1.1 and above.

Flag
disableEntryExitAnimations
Values
"yes" / "no"
Default
"no"

If you want to disable animations shown by the Helpshift SDK while entering and exit the Helpshift screens, please set this config option to yes. Default value is no, ie., Helpshift SDK will show animations if this value is not set.

API options

enableContactUs

Flag
enableContactUs
Values
CONTACT_US_ALWAYS/CONTACT_US_NEVER/CONTACT_US_AFTER_VIEWING_FAQS/CONTACT_US_AFTER_MARKING_ANSWER_UNHELPFUL
Default
CONTACT_US_ALWAYS

The enableContactUs flag controls the visibility of Contact Us button -

CONTACT_US_ALWAYS
show in the navigation bar, search, and after marking an FAQ unhelpful. "yes" for SDK versions below 4.5.0
CONTACT_US_AFTER_VIEWING_FAQS
show only while searching, on FAQ screen and after marking an FAQ unhelpful.
CONTACT_US_NEVER
do not show "Contact Us" button anywhere in the SDK. "no" for SDK versions below 4.5.0
CONTACT_US_AFTER_MARKING_ANSWER_UNHELPFUL
do not show "Contact Us" button until the user specifically marks an FAQ as unhelpful.

To override the default value you can pass the arguments in the options dictionary. Example:

using Helpshift;
.
.
.
private HelpshiftSdk help;
this.help = HelpshiftSdk.getInstance();
Dictionary<string, string> configMap = new Dictionary<string, string>();
configMap.Add("enableContactUs", CONTACT_US_AFTER_VIEWING_FAQS);
help.showFAQs(configMap);

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

AFTER_VIEWING_FAQS is applicable to Plugin version 4.5.0 and above

By using this option, you encourage users to read and search FAQs first instead of directly filing new tickets. This facilitates ticket avoidance.

gotoConversationAfterContactUs

Flag
gotoConversationAfterContactUs
Values
"yes" / "no"
Default
"no"

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:

using Helpshift;
.
.
.
private HelpshiftSdk help;
this.help = HelpshiftSdk.getInstance();
Dictionary<string, string> configMap = new Dictionary<string, string>();
configMap.Add("gotoConversationAfterContactUs", "yes");
help.showConversation(configMap);

For showFAQs, showFAQSection and showSingleFAQ, setting gotoConversationAfterContactUs makes sense only if enableContactUs is yes.

presentFullScreenOniPad

Applicable to SDK version 4.2.0 and above

Flag
presentFullScreenOniPad
Values
"yes" / "no"
Default
"no"

The presentFullScreenOniPad flag will determine whether to present support views in UIModalPresentationFullScreen or UIModalPresentationFormSheet modal presentation style in iPad.

The default value is "no", which means support views will be presented as UIModalPresentationFormSheet by default. When the value is set to "yes", support views will be presented in UIModalPresentationFullScreen.

This flag only takes effect on iPad.

requireEmail

Applicable to SDK version 4.6.0 and above

Flag
requireEmail
Values
"yes" / "no"
Default
"no"

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.

For example:

using Helpshift;
.
.
.
private HelpshiftSdk help;
this.help = HelpshiftSdk.getInstance();
Dictionary<string, object> configMap = new Dictionary<string, object>();
configMap.Add("requireEmail", "no");
help.showFAQs(configMap);

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

Applicable to SDK version 4.7.0 and above

Flag
hideNameAndEmail
Values
"yes" / "no"
Default
"no"

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.

For example:

using Helpshift;
.
.
.
private HelpshiftSdk help;
this.help = HelpshiftSdk.getInstance();
Dictionary<string, object> configMap = new Dictionary<string, object>();
configMap.Add("hideNameAndEmail", "yes");
help.showFAQs(configMap);

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

conversationPrefillText

Applicable to SDK version 4.7.0 and above

Flag
conversationPrefillText
Values
Non-empty string

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:

using Helpshift;
.
.
.
private HelpshiftSdk help;
this.help = HelpshiftSdk.getInstance();
string preFillString = exceptionData;
Dictionary<string, object> configMap = new Dictionary<string, object>();
configMap.Add("conversationPrefillText", preFillString);
help.showConversation(configMap);

The conversationPrefillText option takes effect only for the showConversation API

enableFullPrivacy

Applicable to SDK version 4.9.1 and above

Flag
enableFullPrivacy
Values
"yes" / "no"
Default
"no"

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:

using Helpshift;
.
.
.
private HelpshiftSdk help;
this.help = HelpshiftSdk.getInstance();
Dictionary<string, object> configMap = new Dictionary<string, object>();
configMap.Add("enableFullPrivacy", "yes");
help.showConversation(configMap);

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

showSearchOnNewConversation

Applicable to SDK version 4.9.1 and above

Flag
showSearchOnNewConversation
Values
"yes" / "no"
Default
"no"

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

using Helpshift;
.
.
.
private HelpshiftSdk help;
this.help = HelpshiftSdk.getInstance();
Dictionary<string, object> configMap = new Dictionary<string, object>();
configMap.Add("showSearchOnNewConversation", "yes");
help.showConversation(configMap);

The showSearchOnNewConversation option takes effect only for the showConversation API.

showConversationResolutionQuestion

Applicable to version 1.3.0 and above.

For application version 1.2.0 and below the conversation resolution question for user confirmation will be shown by default. This default behaviour has changed for version 1.3.0 and above, where the conversation resolution question for user confirmation is not shown.

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

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

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

Example :

using Helpshift;
.
.
.
private HelpshiftSdk help;
this.help = HelpshiftSdk.getInstance();
Dictionary<string, object> configMap = new Dictionary<string, object>();
configMap.Add("showConversationResolutionQuestion", "yes");
help.showConversation(configMap);

Configuration Summary

Option / 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