# Synchronization

At the heart of every PIM-including ecosystem, there's data integration.

A need to keep your data well-organized thanks to PIM and easily accessible to eCommerce system(s).

We do realize that creating the synchronization process is not an easy task. At the very minimum, it most usually requires:

* a queue system like RabbitMQ, Amazon SQS, etc
* a worker
* well-developed and robust logic to handle the process
  * progress state
  * both process and entry statuses
  * history
  * frontend application displaying all that data
* persistent storage i.e. database
* business logic implementation

which is a lot and usually not that easy to do, especially, in the distributed environment of multiple services.

That's why at the core of the Apps engine we created an entire synchronization process orchestration with the intent of you only being left with implementing your desired business logic and the minimum effort needed around it.

Need only an incremental export of data you have recently changed? We've got you covered.

Does it have to handle full export each time? It's possible with an App.

## Creating synchronization App

To start with a synchronization App enable at least one of those features in your Manifest.

* synchronization - enables the basic integration. During every synchronization, you'll only receive data changed from the last iteration
* synchronization\_full - enables the possibility of running full integration on every execution

Both features may be enabled next to each other or you can pick just one.

<figure><img src="/files/jDvrwSApyVAG4KpRrmtj" alt=""><figcaption><p>With both features enabled they are available via split button with full synchronization as a secondary choice.</p></figcaption></figure>

If your App generates a file, enable features according to your needs

* synchronization\_file\_download - enables file download for each synchronization
* synchronization\_file\_download\_latest - generates constant URL under last-generated file will be available for feed-like functionalities

Finally, you need to develop your business logic in [synchronization endpoints](/apps2/detailed-reference/synchronization/synchronization-endpoints.md) and [file download endpoint](/apps2/detailed-reference/synchronization/file-download-endpoint.md) if your App utilizes this feature.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.ergonode.com/apps2/detailed-reference/synchronization.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
