> For the complete documentation index, see [llms.txt](https://docs.ergonode.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ergonode.com/apps2/detailed-reference/synchronization.md).

# 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
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
