Documentation
NAV Navbar
Android SDK

Installing Android SDK

Using Maven

<dependency>
    <groupId>com.wootric</groupId>
    <artifactId>wootric-sdk-android</artifactId>
    <version>2.21.1</version>
</dependency>

If you use Maven, you can include this library as a dependency.

Using Gradle

compile 'com.wootric:wootric-sdk-android:*'

Add the following to your app’s build.gradle file, inside the dependencies section.

Presenting the survey

WootricSDK task is to present a fully functional survey view with just a few lines of code.

Step 1. Add permissions

<uses-permission android:name="android.permission.INTERNET" />

Add the internet permissions to the AndroidManifest.xml file.

Step 2. Add ProGuard rules

-keepattributes *Annotation*, Signature

##== Wootric ==
-keep class com.wootric.** { *; }

##== Retrofit ==
-keep class retrofit.** { *; }
-keepclassmembernames interface * {
    @retrofit.http.* <methods>;
}

Add the following to your ProGuard rules file.

Step 3. Initialize Wootric

import com.wootric.androidsdk.Wootric;

// Inside your method
Wootric wootric = Wootric.init(this, <YOUR_CLIENT_ID>, <YOUR_ACCOUNT_TOKEN>);

// TODO: Required to uniquely identify a user. Email is recommended but this can be any unique identifier.
wootric.setEndUserEmail("nps@example.com");
// TODO: The current logged in user's sign-up date as a Unix timestamp.
wootric.setEndUserCreatedAt(1234567890);

// Use only for testing
wootric.setSurveyImmediately(true);

wootric.survey();

First import the SDK into your Activity of choosing. Then configure the SDK with your client ID and account token.

Sign in at wootric.com if you haven’t already. If you just signed up on the Wootric homepage, you will be taken directly to an installation page. If you’re a returning visitor, click on the “Settings" button near the top right of the page. Navigate to the Wootric Installation Guide and you will see a unique account_token for you to use.

The client_id can also be found on your Settings page, on the API section.

To display the survey just use wootric.survey();. If the user is eligible (this check is built in the method) the SDK will show the survey.

Step 4. Customize the Survey

Comment out the line wootric.setSurveyImmediately(true) when you are ready for production. Alternatively, leave the line in the code for testing purposes or to survey the customer upon every visit to a view.

import com.wootric.androidsdk.Wootric;
import com.wootric.androidsdk.objects.WootricCustomThankYou;

Wootric wootric = Wootric.init(this, "your_client_id", "NPS­-xxxxxxxx");
wootric.setEndUserEmail("nps@example.com");
wootric.setEndUserCreatedAt(1234567890);

// Use only for testing
wootric.setSurveyImmediately(true);

// Customization
WootricCustomThankYou customThankYou = new WootricCustomThankYou();
customThankYou.setText("Merci!");

wootric.setProductName("Wootric");
wootric.setCustomThankYou(customThankYou);
wootric.setLanguageCode("fr");

wootric.survey();

This is an important step! Customize your survey with the name of your product or company. As needed, make changes to our trusted survey and sampling defaults. This values can modified from your app.

Wootric Wootric

Step 5. View your Responses Live!

That’s it! Once the WootricSDK is installed, eligible users will immediately start being surveyed. Depending on the traffic of your app, you could start to see responses within a few minutes. Responses will come in to your Wootric dash in real time.

No data yet?

Checkout the Demo dashboard with dummy data.

Wootric

I’d like to do some testing first. How do I ensure that the survey shows up on demand?

You can easily install Wootric in your development environment for testing. The SDK is already set up to show the survey immediately for testing purposes only.

Additional notes on WootricSDK placement:

For apps with registered users:

If your app has registered users, we recommend that you show the survey only on views that your logged in users will access to allow unique user identification.

For ecommerce apps:

If your app has a checkout flow, we recommend that you show the survey on views that won’t interrupt checkout. The most commonly used location is the transaction completion page.

SDK Reference

setEndUserEmail

wootric.setEndUserEmail(<END_USER_EMAIL>);

While end user email is not required it is HIGHLY recommended to set it if possible.

setEndUserExternalId

wootric.setEndUserExternalId(<END_USER_EXTERNAL_ID>);

Set an external ID for the end user. This value is optional.

setSurveyImmediately

wootric.setSurveyImmediately(<BOOL>);

If setSurveyImmediately is set to true and user wasn’t surveyed yet - eligibility check will return true and survey will be displayed.

setEndUserCreatedAt

wootric.setEndUserCreatedAt(<UNIX Timestamp>);

When creating a new end user for survey, it will set the external creation date (so for example, date, when end user was created in your Android application). This value is also used in eligibility check, to determine if end user should be surveyed.

setFirstSurveyDelay

wootric.setFirstSurveyDelay(<NUMBER_OF_DAYS>);

If not set, defaults to value from admin panel. Used to check if end user was created/last seen earlier than ago and therefore if survey is required.

setProperties

wootric.setProperties(properties);

End user properties can be provided as a HashMap<String, String> object.

setShowOptOut

wootric.setShowOptOut(<BOOL>);

If setShowOptOut is set to true then opt out link will be seen.

showDisclaimer

wootric.showDisclaimer(String disclaimerText, Uri disclaimerLinkURL, String disclaimerLinkText)

When disclaimerText, link and linkText are set, the survey will display the text and link at the bottom of the survey.

shouldSkipFollowupScreenForPromoters

wootric.shouldSkipFollowupScreenForPromoters(<BOOL>);

With this option enabled, promoters (score 9-10) will be taken directly to third (social share) screen, skipping the second (feedback) one.

skipFeebackScreen

wootric.skipFeebackScreen(<BOOL>);

With this option enabled, the open feedback screen will be skipped and go directly to the third screen (thank you message).

Custom language, audience text and product name configuration:


wootric.setLanguageCode(<LANGUAGE_CODE>);
wootric.setRecommendTarget(<CUSTOM_AUDIENCE>);
wootric.setProductName(<CUSTOM_PRODUCT_NAME>);

Please refer to our docs for available languages.

setProductName sets the product name for the end user. This will change the default question. e.g. How likely are you to recommend productName to a friend or co-worker? setRecommendTarget will substitute “friend or co-worker”. It also takes precedence over values set in admin panel.

Custom messages

WootricCustomMessage customMessage = new WootricCustomMessage();
customMessage.setFollowupQuestion("custom followup");
customMessage.setDetractorFollowupQuestion("custom detractor");
customMessage.setPassiveFollowupQuestion("custom passive");
customMessage.setPromoterFollowupQuestion("custom promoter");
customMessage.setPlaceholderText("custom placeholder");
customMessage.setDetractorPlaceholderText("custom detractor placeholder");
customMessage.setPassivePlaceholderText("custom passive placeholder");
customMessage.setPromoterPlaceholderText("custom promoter placeholder");

wootric.setCustomMessage(customMessage);

Wootric provides designated class for providing custom messages -WootricCustomMessages

Custom thank you

WootricCustomThankYou customThankYou = new WootricCustomThankYou();
customThankYou.setText("Thank you!!");
customThankYou.setDetractorText("Detractor thank you");
customThankYou.setPassiveText("Passive thank you");
customThankYou.setPromoterText("Promoter thank you");
customThankYou.setLinkText("Thank you link text");
customThankYou.setDetractorLinkText("Detractor link text");
customThankYou.setPassiveLinkText("Passive link text");
customThankYou.setPromoterLinkText("Promoter link text");
customThankYou.setLinkUri(Uri.parse("http://wootric.com/thank_you"));
customThankYou.setDetractorLinkUri(Uri.parse("http://wootric.com/detractor_thank_you"));
customThankYou.setPassiveLinkUri(Uri.parse("http://wootric.com/passive_thank_you"));
customThankYou.setPromoterLinkUri(Uri.parse("http://wootric.com/promoter_thank_you"));
customThankYou.setScoreInUrl(true);
customThankYou.setCommentInUrl(true);
wootric.setCustomThankYou(customThankYou);

Wootric provides designated class for providing custom thank you -WootricCustomThankYou

Color customization (smartphones only)

// Changes background color and text buttons color for the survey
wootric.setSurveyColor(R.color.survey_color);

// Changes score selector color and comment highlight color
wootric.setScoreColor(R.color.score_color);

// Changes Thank You button color on the final view
wootric.setThankYouButtonBackgroundColor(R.color.thank_you_color);

// Changes Facebook and Twitter buttons colors
wootric.setSocialSharingColor(R.color.social_color);

Colors can be customized for the smartphone’s version.

Targeted Sampling

Wootric wootric = Wootric.init(this, CLIENT_ID, ACCOUNT_TOKEN);
wootric.setEndUserEmail("nps@example.com");
wootric.setEndUserCreatedAt(1234567890);

HashMap<String, String> properties = new HashMap();
properties.put("Example_string", "pro_plan");
properties.put("Example_value", "12");
wootric.setProperties(properties);

wootric.survey("On Purchase Event");

You can trigger surveys based on an end-user’s property, an event that you might be tracking in your app or a combination of both. You must configure the rules that trigger these surveys inside Wootric Settings Panel.

To set the properties for the end user you can pass a HashMap to the setProperties method.

To trigger a survey with an event you ned to use survey(event:).

For more information on how to configure Targeted Sampling, visit How do I setup targeted sampling for in-app surveys?

Survey Callbacks

The WootricSurveyCallback can be used to be informed of when the SDK will or already perform certain actions. To use the Listener, first a class needs to conform to the protocol and assign that class to the WootricSDK.

Imagine you have an Activity/FragmentActivity MainActivity.java. You can specify that this class implements the WootricSurveyCallback and it will be the one where the methods specified by the protocol are implemented.


// Implements WootricSurveyCallback
public class MainActivity extends FragmentActivity implements WootricSurveyCallback {


// Set the SDK's Callback class
wootric.setSurveyCallback(this);

// Implement protocol methods
@Override
public void onSurveyWillShow(){

}

@Override
public void onSurveyDidShow(){

}

@Override
public void onSurveyWillHide(){

}

@Override
public void onSurveyDidHide(HashMap values){

}

onSurveyWillShow

Called by the WootricSDK when the survey is about to appear.

onSurveyDidShow

Called by the WootricSDK when the survey has already appeared.

onSurveyWillHide

Called by the WootricSDK when the survey is about to be dismissed.

onSurveyDidHide

Called by the WootricSDK when the survey has disappeared. This method receives a values HashMap with the score and the text provided by the end user. If the end user dismissed the survey, it returns a score of -1.

Samples

Rate application on the Play Store


import com.wootric.androidsdk.Wootric;
import com.wootric.androidsdk.objects.WootricCustomThankYou;

...

Wootric wootric = Wootric.init(this, CLIENT_ID, ACCOUNT_TOKEN);

wootric.setEndUserEmail("nps@example.com");

// Uncomment for testing
// NOTE: do not use in production
// wootric.setSurveyImmediately(true);

// Will skip the Feedback view for Promoters
wootric.shouldSkipFollowupScreenForPromoters(true);

WootricCustomThankYou customThankYou = new WootricCustomThankYou();
Uri uri = Uri.parse("market://details?id=com.yourcompany.appid");
customThankYou.setPromoterLinkText("Rate our app!");
customThankYou.setPromoterLinkUri(uri);

wootric.setCustomThankYou(customThankYou);
wootric.survey();

You can set the last button to go to the Play Store so users can rate your app.

Wootric

Set End User Properties

import com.wootric.androidsdk.Wootric;
import com.wootric.androidsdk.objects.WootricCustomThankYou;
import java.util.HashMap;

...

Wootric wootric = Wootric.init(this, CLIENT_ID, ACCOUNT_TOKEN);

wootric.setEndUserEmail("nps@example.com");

// Uncomment for testing
// NOTE: do not use in production
// wootric.setSurveyImmediately(true);

// Set end user's properties
HashMap<String, String> properties = new HashMap<String, String>();
properties.put("company", "Wootric");
properties.put("type", "awesome");
properties.put("os", "Android");
// Integer representing the date (Unix timestamp format) of the user's last order with the key suffixed with "_date"
properties.put("last_order_date", "1479316287");
// Integer representing the user's total purchases with the key suffixed with "_amount"
properties.put("total_purchase_amount", "10");
wootric.setProperties(properties);

wootric.survey();

Setting end user properties will help you segment and filter results.

Wootric currently supports Integers, Strings, and Unix formatted dates as values.

Integers must be suffixed with _amount and dates must be in Unix timestamp format and suffixed with _date.

Keys cannot contain characters such as ‘$’, ‘.’ or the NULL character. Values cannot be nested hashes or arrays.

Properties

Troubleshooting

Survey not showing up?

Check that client ID and account token are correct. Account token should have a “NPS-xxxxxxxx” format

Does the SDK work with Amazon devices?

Yes, the SDK has been tested with Amazon devices.

I’m using setSurveyImmediately but getting User not eligible

Check that Wootric Mobile Switch is enabled on your Acount Settings

Wootric

Segment Integration

Wootric provides an integration for Segment. The library can be found on our Github.

This library is distributed as Android library project so it can be included by referencing it as a library project.

Install with Maven

<dependency>
    <groupId>com.wootric</groupId>
    <artifactId>analytics-integration-wootric</artifactId>
    <version>0.1.4</version>
</dependency>

If you use Maven, you can include this library as a dependency.

Install with Gradle

compile 'com.wootric:analytics-integration-wootric:0.1.4'

dependencies {
  repositories {
    mavenCentral()
    maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' }
  }

  compile 'com.segment.analytics.android:analytics:4.1.4-SNAPSHOT'
}

It is assumed that Segment’s android analytics is available. The latest version can be added as dependency this way.

Intialize Analytics

import com.segment.analytics.Analytics;
import com.wootric.analytics.android.integrations.wootric.WootricIntegration;

public class MainApplication extends Application {

    Analytics analytics;

    @Override
    public void onCreate() {
        super.onCreate();

        analytics = new Analytics.Builder(this, "write_key")
                .use(WootricIntegration.FACTORY)
                .build();
    }

    public Analytics getAnalytics() {
        return analytics;
    }
}

Analytics object should be initialized in the Application class, specifying that the WootricIntegration should be user.

Wootric object


import com.segment.analytics.Analytics;
import com.wootric.analytics.android.integrations.wootric.WootricIntegration;
import com.wootric.androidsdk.Wootric;

public class MainActivity extends Activity {
    @Override
    protected void onResume() {
        super.onResume();

        Analytics analytics = ((MainApplication) getApplication()).getAnalytics();
        analytics.onIntegrationReady(WootricIntegration.FACTORY.key(), new Analytics.Callback<Wootric>() {
            @Override
            public void onReady(Wootric wootric) {
                // Set all aptional configuration here like:
                // wootric.setSurveyImmediately(true);
                // wootric.setLanguageCode("PL");
                wootric.survey();
            }
        });
    }
}

In your Activity of choosing the Wootric object can be used to set all optional configurations and call survey() method.

mParticle Integration

Wootric provides an integration for mParticle.

Instructions on how to setup the mParticle Android SDK can be found on mParticle’s Github.