
## Get customer's events
---
This method retrieves events for an authenticated customer.
  
This method requires customer authentication.
**Method name:**  
Client.getEvents(clientEventsQuery)
  
**Declaration:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-928">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-928-0" data-tab-group="tabgrp-928" data-tab-active="true">Java</button><button class="tab-button" data-tab-id="tabgrp-928-1" data-tab-group="tabgrp-928">Kotlin</button></div>

<div class="tab-panel" data-tab-id="tabgrp-928-0" data-tab-group="tabgrp-928" data-tab-active="true">

```Java
public static IDataApiCall<List<ClientEventData>> getEvents(ClientEventsQuery clientEventsQuery)
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-928-1" data-tab-group="tabgrp-928">

```Kotlin
fun getEvents(clientEventsQuery:ClientEventsQuery):IDataApiCall<List<ClientEventData>>
```

</div>
</div>


**Parameters:**  
| Parameter | Type | Mandatory | Default | Description |
| --- | --- | --- | --- | --- |
| **clientEventsQuery** | ClientEventsQuery | yes | - | Object to create clientEvent query |

**Return Value:**  
[IDataApiCall](/developers/mobile-sdk/method-reference/android/public-interfaces#idataapicall)<List<[ClientEventData](/developers/mobile-sdk/class-reference/android/client#clienteventdata)>> object to execute the request.

**Example:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-929">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-929-0" data-tab-group="tabgrp-929" data-tab-active="true">Java</button><button class="tab-button" data-tab-id="tabgrp-929-1" data-tab-group="tabgrp-929">Kotlin</button></div>

<div class="tab-panel" data-tab-id="tabgrp-929-0" data-tab-group="tabgrp-929" data-tab-active="true">

```Java
private IDataApiCall<List<ClientEventData>> getEventClientsCall;
    if (getEventClientsCall != null) getEventClientsCall.cancel();
    getEventClientsCall = Client.getEvents(clientEventsQuery);
    getEventClientsCall.execute(({ this.onSuccess() }), ({ this.onFailure() });
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-929-1" data-tab-group="tabgrp-929">

```Kotlin
private val getEventClientsCall:IDataApiCall<List<ClientEventData>>
  if (getEventClientsCall != null) getEventClientsCall.cancel()
  getEventClientsCall = Client.getEvents(clientEventsQuery)
  getEventClientsCall.execute(({ this.onSuccess() }), ({ this.onFailure() })
```

</div>
</div>
 

## Set custom identifier for events
---
This method sets a custom identifier in the parameters of every event.

You can pass a custom identifier to match your customers in our database.
**Method name:**  
Tracker.setCustomIdentifier(customIdentifier)
  
**Declaration:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-930">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-930-0" data-tab-group="tabgrp-930" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-930-1" data-tab-group="tabgrp-930">kotlin</button></div>

<div class="tab-panel" data-tab-id="tabgrp-930-0" data-tab-group="tabgrp-930" data-tab-active="true">

```java
public static void setCustomIdentifier(String customIdentifier)
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-930-1" data-tab-group="tabgrp-930">

```kotlin
fun setCustomIdentifier(customIdentifier:String)
```

</div>
</div>


**Parameters:**  
| Parameter | Type | Mandatory | Default | Description |
| --- | --- | --- | --- | --- |
| **customIdentifier** | String | yes | - | Client's custom identifier |

**Return Value:**  
Void type method.
**Example:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-931">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-931-0" data-tab-group="tabgrp-931" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-931-1" data-tab-group="tabgrp-931">kotlin</button></div>

<div class="tab-panel" data-tab-id="tabgrp-931-0" data-tab-group="tabgrp-931" data-tab-active="true">

```java
Tracker.setCustomIdentifier(customIdentifier)
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-931-1" data-tab-group="tabgrp-931">

```kotlin
Tracker.setCustomIdentifier(customIdentifier)
```

</div>
</div>


## Set custom email for events
---
This method sets a custom email in the parameters of every event.

You can pass a custom email to match your customers in our database.
**Method name:**  
Tracker.setCustomEmail(customEmail)
  
**Declaration:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-932">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-932-0" data-tab-group="tabgrp-932" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-932-1" data-tab-group="tabgrp-932">kotlin</button></div>

<div class="tab-panel" data-tab-id="tabgrp-932-0" data-tab-group="tabgrp-932" data-tab-active="true">

```java
public static void setCustomEmail(String customEmail)
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-932-1" data-tab-group="tabgrp-932">

```kotlin
fun setCustomEmail(customEmail:String)
```

</div>
</div>


**Parameters:**  
| Parameter | Type | Mandatory | Default | Description |
| --- | --- | --- | --- | --- |
| **customEmail** | String | yes | - | Customer's email |

**Return Value:**  
Void type method.

**Example:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-933">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-933-0" data-tab-group="tabgrp-933" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-933-1" data-tab-group="tabgrp-933">kotlin</button></div>

<div class="tab-panel" data-tab-id="tabgrp-933-0" data-tab-group="tabgrp-933" data-tab-active="true">

```java
private void setCustomEmail(String customEmail) {
    Tracker.setCustomEmail(customEmail);
}
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-933-1" data-tab-group="tabgrp-933">

```kotlin
private fun setCustomEmail(customEmail:String) {
  Tracker.setCustomEmail(customEmail)
}
```

</div>
</div>


## Send event
---
This method sends an event.


<div class="admonition admonition-warning"><div class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5"><path stroke-linecap="round" stroke-linejoin="round" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L4.082 16.5c-.77.833.192 2.5 1.732 2.5z" /></svg></div><div class="admonition-body"><div class="admonition-content">

DO NOT send `transaction.charge` events as custom events.<br>
Transactions must be tracked with these endpoints:
- [`/v4/transactions`](https://hub.synerise.com/api-reference/data-management#tag/Events/operation/CreateATransaction) (single transaction)
- [`/v4/transactions/batch`](https://hub.synerise.com/api-reference/data-management#tag/Events/operation/BatchAddOrUpdateTransactions) (multiple transactions)

</div></div></div>

  

<div class="admonition admonition-note"><div class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5"><path stroke-linecap="round" stroke-linejoin="round" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /></svg></div><div class="admonition-body"><div class="admonition-content">

- The tracker caches and enqueues all your events locally, so they all will be sent eventually.
- The API key must have the `API_BATCH_EVENTS_CREATE` permission from the **Events** group.

</div></div></div>

It also supports Android O's [Background Execution Limits](https://developer.android.com/about/versions/oreo/background.html).
  
**Method name:**  
Tracker.send(event)
  
**Declaration:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-934">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-934-0" data-tab-group="tabgrp-934" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-934-1" data-tab-group="tabgrp-934">kotlin</button></div>

<div class="tab-panel" data-tab-id="tabgrp-934-0" data-tab-group="tabgrp-934" data-tab-active="true">

```java
public static void send(Event event)
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-934-1" data-tab-group="tabgrp-934">

```kotlin
fun send(event:Event)
```

</div>
</div>


**Parameters:**  
| Parameter | Type | Mandatory | Default | Description |
| --- | --- | --- | --- | --- |
| **event** | Event | yes | - | Event object (e.g. `CustomEvent()` instance). |


**Return Value:**  
Void type method.

**Example:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-935">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-935-0" data-tab-group="tabgrp-935" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-935-1" data-tab-group="tabgrp-935">kotlin</button></div>

<div class="tab-panel" data-tab-id="tabgrp-935-0" data-tab-group="tabgrp-935" data-tab-active="true">

```java
Tracker.send(new CustomEvent("my.action", "label"));
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-935-1" data-tab-group="tabgrp-935">

```kotlin
Tracker.send(CustomEvent("my.action", "label"))
```

</div>
</div>


## Flush events from Tracker
---
This method forces sending the events from the queue to the server.


<div class="admonition admonition-note"><div class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5"><path stroke-linecap="round" stroke-linejoin="round" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /></svg></div><div class="admonition-body"><div class="admonition-content">

The API key must have the `API_BATCH_EVENTS_CREATE` permission from the **Events** group.

</div></div></div>

**Method name:**  
Tracker.flush()
  
**Declaration:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-936">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-936-0" data-tab-group="tabgrp-936" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-936-1" data-tab-group="tabgrp-936">kotlin</button></div>

<div class="tab-panel" data-tab-id="tabgrp-936-0" data-tab-group="tabgrp-936" data-tab-active="true">

```java
public static void flush()
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-936-1" data-tab-group="tabgrp-936">

```kotlin
fun flush()
```

</div>
</div>


**Parameters:**  
No parameters required.

**Return Value:**  
Void type method.

**Example:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-937">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-937-0" data-tab-group="tabgrp-937" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-937-1" data-tab-group="tabgrp-937">kotlin</button></div>

<div class="tab-panel" data-tab-id="tabgrp-937-0" data-tab-group="tabgrp-937" data-tab-active="true">

```java
Tracker.flush();
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-937-1" data-tab-group="tabgrp-937">

```kotlin
Tracker.flush();
```

</div>
</div>
 
