code: public void userCompletedAction(String action, HashMap<String, String> metadata) {
          JSONObject actionCompletedPayload = new JSONObject();
          try {
              JSONArray canonicalIDList = new JSONArray();
              canonicalIDList.put(canonicalIdentifier_);
              actionCompletedPayload.put(canonicalIdentifier_, convertToJson());
              if (metadata != null) {
                  for (String key : metadata.keySet()) {
                      actionCompletedPayload.put(key, metadata.get(key));
                  }
              }
              if (Branch.getInstance() != null) {
                  Branch.getInstance().userCompletedAction(action, actionCompletedPayload);
              }
          } catch (JSONException ignore) {
          }
      }
docs: <p>
  Method to report user actions happened on this BUO. Use this method to report the user actions for analytics purpose.
  </p>
  
  @param action   A {@link String }with value of user action name.  See {@link BranchEvent} for Branch defined user events.
  @param metadata A HashMap containing any additional metadata need to add to this user event
  NOTE : please consider using {@link #userCompletedAction(BRANCH_STANDARD_EVENT, HashMap)} instead