Most developers initially have a shop connection via the Smartstore Web API in mind. The Web API is available to every shop owner as an open source code plugin. It is based on OData and includes endpoints for the most important entities. The API does not support batch processing and web hooks at the moment.
The API is primarily intended to exchange entity based, raw data with the shop and especially if you are familiar with OData, it offers a relatively easy and fast way of connectivity. The API also maps Smartstore business logic but only to a very limited degree. It is not the goal of Smartstore to provide access to as much business logic as possible via a monolithic API. Therefore it should be carefully checked before starting the integration whether the business logic available by the API is sufficient for your needs. If it is not, then the API may not be a sufficient solution.
At this point, a connection using a separate plugin can be more flexible because you have access to many functions of the Smartstore Core, functions that are also used by the shop backend. For exchanging large amounts of data, mechanisms are available that significantly increase performance compared to an API solution and latencies associated with data exchange over the internet are eliminated here. A plugin can also be designed to act as a middleware between Smartstore and an external application and handle things like modelling different data structures of both sides.
A disadvantage of having your own plugin is the longer learning curve and that you have to get familiar with the Smartstore Core. On the other hand, the cost of maintenance for a plugin has turned out to be relatively small in practice. If you are unsure about the future data exchange with the shop and want to be on the safe side, a plugin may be the better choice in the long run. A new plugin can be created easily and quickly using the VisualStudio extension for Smartstore plugins.
Another way of data exchange is to import or export data. Smartstore has a high-performance import\export framework, which can be used to import products, categories, customer data and newsletter subscribers in CSV format. The import can be started manually or scheduled per background task. The importers' source code is also open. They can therefore be used as a blueprint to develop own import functions. The same applies to exports. Several providers allow to export data in CSV, XML or other specific formats. The result of an export can be forwarded using publishing profiles (e.g. download link, e-mail, HTTP POST or FTP).