Android SDK API Reference

The Capillary iOS SDK APIs provide you with the capability to perform various actions, including customer registrations, customer logins, and more. These APIs can also be used for reporting to track events such as customer registrations, customer logins, and more.

There are 2 types of events:

  1. Standard events - These events are configured in the SDK and cannot be removed. With Capillary SDK, you can record user-specific information such as their username, first name, last name, email, mobile number, and other custom information, along with system information, in the events. This information can then be used to run campaigns based on user segregation at different levels.
  2. Behavioural events - The events resource also allows you to create behavioural events to track any other important user interactions for your business. For example, events such as forgot password, cart abandonment etc. These events can be further defined by event attributes such as price, quantity, and category. These events need to be configured in your org settings.
    For behavioural events, you need to do configuration in the Hydraconfig and organisation settings.

Sending standard events to SDK

The SDK offers four event-tracking APIs for recording for reporting user action events. These APIs enable you to recognize visitors, monitor events, generate events dynamically, and track the activities of users, including any properties that describe their actions. This information can be used to gain insights into user behaviour and create campaigns based on user segmentation at different levels. For example, with the user event data, you can send welcome messages to customers through e-mail or offer different offers based on user age, gender etc.

The SDK has below standrad event tracking APIs:

  1. Sign In
  2. Sign Up
  3. User Update
  4. Sign Out

Each user in the app should have a unique identifier (cuid) associated with their account. Provide this identifier whenever a user signs up or signs in. This enables cross-device and cross-platform tracking, leading to improved behavioural and demographic data quality.

Sign In

This API can be used to sign in a user to the platform and report when a user signs in.

fun pushUserSignin(  
   cuid: String,  
   firstName: String? = null,  
   lastName: String? = null,  
   email: String? = null,  
   phone: String? = null,  
   customData: Map\<String, Any>? = null  
)
public void pushUserSignin(String cuid, String firstName, String lastName, String email, String phone, Map<String, Object> customData) {
    // Function body
}
ParameterTypeDescriptionOptional/Mandatory
cuidStringIdentifier for the user, either phone/email/externalIdMandatory
firstNameStringFirst name of the userOptional
lastNameStringLast name of the userOptional
emailStringEmail address of the userOptional
phoneStringPhone number of the userOptional
customDataMapMap of custom attributes for the userOptional

Example:

  1. User push sign-in event to SDK with optional details.
    hydraAPI?.pushUserSignin(  
       "9000090000",  
       "Henry",  
       "Williams",  
       "[email protected]",  
       "9000090000",  
       mapOf("Age" to "25","Gender" to "Male"))
    
    if (hydraAPI != null) {
        hydraAPI.pushUserSignin(
            "9000090000",
            "Henry",
            "Williams",
            "[email protected]",
            "9000090000",
            Map.of("Age", "25", "Gender", "Male")
        );
    }
    
  2. User push sign-in event to SDK without optional details.
    hydraAPI?.pushUserSignin(  
       "9000090000",  
       "",  
       "",  
       "",  
       "",  
       emptyMap()  
    )
    
    if (hydraAPI != null) {
        hydraAPI.pushUserSignin(
            "9000090000",
            "",
            "",
            "",
            "",
            Collections.emptyMap()
        );
    }
    

Sign up

This API can be used to register a user to the platform and report when a user registers.

fun pushUserSignup(  
   cuid: String,  
   firstName: String,  
   lastName: String,  
   email: String,  
   phone: String,  
   customData: Map\<String, Any>?,
   subscriptions: List<Any>?
)
public void pushUserSignup(String cuid, String firstName, String lastName, String email, String phone, Map<String, Object> customData) {
    // Function body
}
ParameterTypeDescriptionOptional/Mandatory
cuidStringphone/email/externalIdMandatory
firstNameStringUser first nameMandatory
lastNameStringUser last NameMandatory
emailStringUser email addressMandatory
phoneStringUser mobile numberMandatory
customDataMapThe attribute map which needs to be set for the user.Optional
subscriptionsListList of subscriptions which include channel, accountId, priority, type and sourcename.Optional

Example:

  1. User push sign-up event to SDK with all optional details

    hydraAPI?.pushUserSignup(  
       "9000090000",  
       "Henry",  
       "Williams",  
       "[email protected]",  
       "9000090000",  
       mapOf("Age" to "25","Gender" to "Male")
    
    if (hydraAPI != null) {
        hydraAPI.pushUserSignup(
            "9000090000",
            "Henry",
            "Williams",
            "[email protected]",
            "9000090000",
            Map.of("Age", "25", "Gender", "Male")
        );
    }
    
    
  2. User push sign-up event to SDK without optional details

    hydraAPI?.pushUserSignup(  
       "9000090000",  
       "",  
       "",  
       "",  
       "",  
       emptyMap()  
    )
    
    if (hydraAPI != null) {
        hydraAPI.pushUserSignup(
            "9000090000",
            "",
            "",
            "",
            "",
            Collections.emptyMap()
        );
    }
    

User update

This API can be used to update a user's profile and report when a user has updated their profile.

fun pushUserUpdate(  
   cuid: String,  
   firstName: String? = null,  
   lastName: String? = null,  
   email: String? = null,  
   phone: String? = null,  
   customData: Map\<String, Any>? = null  
)
if (hydraAPI != null) {
    hydraAPI.pushUserSignup(
        "9000090000",
        "",
        "",
        "",
        "",
        Collections.emptyMap()
    );
}
ParameterTypeDescriptionOptional/Mandatory
cuidStringphone/email/externalIdMandatory
firstNameStringUser first NameOptional
lastNameStringUser Last NameOptional
emailStringUser Email addressOptional
phoneStringUser mobile numberOptional
customDataMapThe attribute map which needs to be set for the userOptional

Example:

  1. User push update event to SDK with optional details
    hydraAPI?.pushUserUpdate(  
       "9000090000",  
       "Henry",  
       "Williams",  
       "[email protected]",  
       "9000090000",  
       mapOf("Age" to "25","Gender" to "Male")  
    )
    
    if (hydraAPI != null) {
        hydraAPI.pushUserUpdate(
            "9000090000",
            "Henry",
            "Williams",
            "[email protected]",
            "9000090000",
            Map.of("Age", "25", "Gender", "Male")
        );
    }
    
  2. User push update event to SDK without optional details
    hydraAPI?.pushUserUpdate(  
       "9000090000",  
       "",  
       "",  
       "",  
       "",  
       emptyMap()  
    )
    
    if (hydraAPI != null) {
        hydraAPI.pushUserUpdate(
            "9000090000",
            "Henry",
            "Williams",
            "[email protected]",
            "9000090000",
            Map.of("Age", "25", "Gender", "Male")
        );
    }
    

Sign out

This API can be used to sign out a user and report when a user has signed out.

To log sign-out events, only the cuid is required. You can use the cuid to erase all previously logged user information such as firstName, mobile, etc.

API function:

fun pushUserSignOut(  
 cuid: String  
)
public void pushUserSignOut(String cuid) {
    // Function body
}
ParameterTypeDescriptionOptional/Mandatory
cuidStringphone/email/externalIdMandatory

Example:

hydraAPI?.pushUserSignOut(  
   "9000090000",  
)
if (hydraAPI != null) {
    hydraAPI.pushUserSignOut("9000090000");
}

Pass user preferences

This API allows the application to track user preferences by passing settings in a User Preference object with the necessary information.

API function:

fun passUserPreferences(cuid: String,   userPreference: UserPreferences)

**Example:**
hydraAPI?.passUserPreferences(  
   "9000090000", UserPreferences(promOpted, transOpted)  
)
public void passUserPreferences(String cuid, UserPreferences userPreference) {
    // Function body
}

Sending behavioural events to SDK

These events can be used to track user actions throughout the application. These events are valid only if the SDK receives the SignIn or SignUp events. Events are Invalid if they are called after a SignOut event. In order to track these events, users have to pass event names (NotNull or NonEmpty) and attributes (optional).

Creating behavioural events

You need to create the desired behavioural events in the org settings.

  1. Navigate to Organisation settings > Master Data Management > Data Model > Behavioural events and create desired behaviour events. For more information, see Set behavioural events.

📘

These events enable tracking user actions within the application and are only valid if the user has signed in or signed up with Capillary SDK.

Adding behavioural events in Hydraconfig

The events that you created in the org settings need to be configured in the HydraConfig to send the events to the SDK.

API function:

fun pushEvent(  
   eventName: String,  
   attributes: Map\<String, Any>? = null  
)
public void pushEvent(String eventName, Map<String, Object> attributes) {
    // Function body
}
ParameterTypeDescriptionMandatory/Optional
event_nameStringEvent nameMandatory
attributesMapThe attribute map which needs to be set for the eventOptional

Example:

  1. Review events to the SDK

    HydraAPI.getDefaultInstance(context = this)!!.pushEvent(
        "productReviewedMapp",
        mapOf(
            "event_name" to "productReviewedMapp",
            "customerId" to AppSharedPreferences.getInstance()
                .getStringSharedPreference(Constants.Pref.MOBILE_NUMBER, "null"),
            "customerReview"  to review,
            "productName" to productName
        )
    )
    
    HydraAPI.getDefaultInstance(this).pushEvent(
        "productReviewedMapp",
        new HashMap<String, Object>() {{
            put("event_name", "productReviewedMapp");
            put("customerId", AppSharedPreferences.getInstance()
                .getStringSharedPreference(Constants.Pref.MOBILE_NUMBER, "null"));
            put("customerReview", review);
            put("productName", productName);
        }}
    );
    
  2. Remove from cart event to SDK

    HydraAPI.getDefaultInstance(this@CartPageActivity)?.pushEvent(
        "removedFromCart",
        mapOf(
            "price" to clickedItem.amount,
            "skuCode" to clickedItem.sku,
            "quantity" to clickedItem.qty,
            "customerId" to AppSharedPreferences.getInstance().getStringSharedPreference(Constants.Pref.MOBILE_NUMBER,"null"),
            "event_name" to "removedFromCart"
        )
    )
    
    HydraAPI.getDefaultInstance(this).pushEvent(
        "removedFromCart",
        new HashMap<String, Object>() {{
            put("price", clickedItem.getAmount());
            put("skuCode", clickedItem.getSku());
            put("quantity", clickedItem.getQty());
            put("customerId", AppSharedPreferences.getInstance().getStringSharedPreference(Constants.Pref.MOBILE_NUMBER, "null"));
            put("event_name", "removedFromCart");
        }}
    );
    
  3. Page/Activity events to SDK

    hydraAPI?.pushEvent("Page/Activity successfully opened")
    
  4. Click events with some attributes to SDK

    hydraAPI?.pushEvent("button Click",  
    mapOf("Username" to "Henry", "Age" to "25", "Gender" to "Male")  
    )
    
    if (hydraAPI != null) {
        hydraAPI.pushEvent("Page/Activity successfully opened");
    }
    
  5. Customer cart details to SDK

    hydraAPI.pushEvent("add to cart",  
    mapOf("Book" to "Rich Dad Poor Dad", "Phone" to "Realme 10", "Earphones" to "Sony Earbuds")  
    )
    
    hydraAPI.pushEvent(
        "add to cart",
        Map.of("Book", "Rich Dad Poor Dad", "Phone", "Realme 10", "Earphones", "Sony Earbuds")
    );
    

Enable console log

Use this API to initialise Hydra’s console logger if the SDK initialises after app startup.

API function:

HydraAPI.initializeConsoleLogger(LogType.Debug)
Parameter (parameters marked with * are mandatory)TypeDescription
logLevel*LogTypeLog level

What’s Next