> For the complete documentation index, see [llms.txt](https://docs.sentiance.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.sentiance.com/sdk/appendix/data-sychronization.md).

# Data Sychronization

Within the Sentiance platform, there are different data synchronization methodologies. \
When we refer to **data synchronization**, we mean the process of:\
Collecting data detected on the user’s device by the Sentiance SDK and making it available across different systems. Both synchronization methods serve different use cases and are implemented in different ways.<br>

{% stepper %}
{% step %}

## Sentiance Platform (SDK Data Syncing)

When you opt in to data visualization on the Sentiance platform, the SDK enables data to be collected from the device and synched to the Sentiance Backend. This method allows visiualization of insights and analytics in your[ Insights Control Tower](/getting-started/insights-control-tower.md)

This includes insights such as:

* Analytics
* Transports
* Driving insights
* Mobility insights
* User data (such as Device info, SDK info etc...)

#### **How It Works**

* Data is automatically aggregated on the device by the SDK
* Insights are sent in batches to Sentiance backend systems
* Once processed, the data becomes available in **ICT**

⚠️ **Note:**

* Not all ICT dashboards are updated at the same frequency
* Some dashboards update shortly after data arrives
* Others refresh daily at fixed intervals

Users with **Spectator access** in ICT can view and interact with these insights.

#### **Benefits**

Synchronizing data to the Sentiance platform enables:

* Advanced troubleshooting and support
* Continuous improvement of detection models
* Access to analytics and visualization tools

⚠️ **Data retention:** Data on the Sentiance platform is stored for a limited period (approximately 90 days).<br>
{% endstep %}

{% step %}

## Your Backend Systems (Custom Data Syncing)

This method involves synchronizing SDK data with your own backend systems by implementing the necessary logic for data syncronization in your application.

This can be achieved by:

* Using **real-time listeners** provided by the SDK
* Querying the SDK on demand via available APIs

#### **Best Practices**

To ensure reliable and efficient data handling:

* **Process real-time events immediately**\
  Handle incoming data in listener callbacks and ensure all required fields are captured
* **Define your own data structures**\
  Map SDK data to structures that align with your business logic
* **Choose a synchronization strategy**
  * Send data immediately for real-time use cases
  * Temporarily store data localy on the device and sync it to your backend in batches
* **Schedule periodic jobs**\
  Implement background tasks to query the SDK for insights
* **Validate SDK data**\
  Always validate data from SDK before transforming to your data structures and transport
  * Prevents data loss
  * Avoids incorrect mappings to your own data structures
    {% endstep %}
    {% endstepper %}
