
## 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-875">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-875-0" data-tab-group="tabgrp-875" data-tab-active="true">Java</button><button class="tab-button" data-tab-id="tabgrp-875-1" data-tab-group="tabgrp-875">Kotlin</button></div>

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

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

</div>

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

```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-876">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-876-0" data-tab-group="tabgrp-876" data-tab-active="true">Java</button><button class="tab-button" data-tab-id="tabgrp-876-1" data-tab-group="tabgrp-876">Kotlin</button></div>

<div class="tab-panel" data-tab-id="tabgrp-876-0" data-tab-group="tabgrp-876" 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-876-1" data-tab-group="tabgrp-876">

```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-877">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-877-0" data-tab-group="tabgrp-877" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-877-1" data-tab-group="tabgrp-877">kotlin</button></div>

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

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

</div>

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

```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-878">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-878-0" data-tab-group="tabgrp-878" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-878-1" data-tab-group="tabgrp-878">kotlin</button></div>

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

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

</div>

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

```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-879">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-879-0" data-tab-group="tabgrp-879" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-879-1" data-tab-group="tabgrp-879">kotlin</button></div>

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

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

</div>

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

```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-880">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-880-0" data-tab-group="tabgrp-880" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-880-1" data-tab-group="tabgrp-880">kotlin</button></div>

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

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

</div>

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

```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://developers.synerise.com/DataManagement/DataManagement.html#operation/CreateATransaction) (single transaction)
- [`/v4/transactions/batch`](https://developers.synerise.com/DataManagement/DataManagement.html#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-881">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-881-0" data-tab-group="tabgrp-881" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-881-1" data-tab-group="tabgrp-881">kotlin</button></div>

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

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

</div>

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

```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-882">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-882-0" data-tab-group="tabgrp-882" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-882-1" data-tab-group="tabgrp-882">kotlin</button></div>

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

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

</div>

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

```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-883">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-883-0" data-tab-group="tabgrp-883" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-883-1" data-tab-group="tabgrp-883">kotlin</button></div>

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

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

</div>

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

```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-884">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-884-0" data-tab-group="tabgrp-884" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-884-1" data-tab-group="tabgrp-884">kotlin</button></div>

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

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

</div>

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

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

</div>
</div>
 
