Orders, customers and the tables each one is written into connect Shopware to a PostgresQL database, so what lands there is shaped for whatever that particular database was built to do.
A PostgresQL database has no opinion about your business. It accepts what it is given, in the shape its tables define, and it will take a badly mapped record as readily as a good one. So the first question is what the database is actually for, because a reporting store and a live feed for another application want different things from the same Shopware order. Left unanswered, somebody writes everything into a wide table and the meaning is lost. Connecting Shopware and PostgresQL starts with the schema, which is the only contract there is between the two of them.

PostgresQL is named in Alumio's published database support, so Shopware data is written directly into the tables you defined rather than through a loader somebody maintains.
Each record arrives against the key its table expects, so a second load updates the row it should rather than adding a near-duplicate nobody notices until a count looks wrong.
Load timestamps travel with the data, so anybody querying the database can tell how current a figure is instead of assuming that it must have been written some time this morning.
Because Shopware is read on a schedule and staged, the shop is not queried again by every process that wants the same orders, which keeps reporting load off the storefront.
Alumio writes Shopware orders and lines into the PostgresQL tables you nominate against the keys you define, so the database receives the shape it was designed for rather than whatever shape the API happened to return.
A repeated load matches on the key rather than inserting again, so a table used for reporting does not slowly accumulate duplicate orders which would quietly inflate every figure anybody draws from it afterwards.
Where the database feeds another application rather than a report, only the fields that application needs are written, so the table stays something a developer can rely on rather than a copy of everything Shopware holds.
Alumio sits between sales channels and fulfillment systems as a governed integration backbone. Orders are routed, transformed, and validated, while status updates return to every channel.
Authenticate your systems using Alumio's pre-built connectors. Choose from 200+ connector packages in the marketplace, plus unlimited custom integrations.
Define how data fields map between systems in a visual interface. Adjust formats, enrich records, and apply business logic, no custom code required.
Configure flows to run in real time on events, on a schedule, or both. Reduce manual data entry and let Alumio handle movement and transformation between systems.
Once your first integration is live, adding your ERP, PIM, WMS, or CRM connects to the same hub. Existing flows keep running. No rebuilding from scratch.
What the database is for after this is worth deciding before anything else is connected, because it changes the answer. Where it is a store rather than a feed, the usual addition is a retention and archival service, since a PostgresQL table holding every Shopware order forever becomes a cost and a liability rather than an asset. Alumio holds both connections, so what is kept and what is moved on are one decision.
The table and the key come first, and everything else is detail. Alumio reads the Shopware objects you nominate on the schedule you set and writes them into the PostgresQL tables and columns you define, matching on the key so a repeat load updates rather than inserts. Only relevant changes are processed, which keeps both the shop and the database from doing work twice.
No, and the schema is the contract rather than the code. Which Shopware field lands in which PostgresQL column, on which key, is defined in Alumio's interface, which is also where it is documented by virtue of existing. Because an in-house schema carries whatever conventions its designer preferred, the Code Transformer stays available for a column that will not take a value as it stands.
Both, usually, and treating it as one thing is the mistake. A PostgresQL database receiving Shopware data is a destination for the write and a source for whatever reads it next, so the shape it needs depends entirely on the second half, and nobody can map the first half properly without knowing it. Answering what reads this, before deciding what lands, is what stops a wide table nobody trusts.
A write that succeeded into the wrong table is the failure a database will never complain about, because it has no reason to. Alumio catches a refused write as it happens and records the PostgresQL table, the key and the Shopware record for every load, alerts immediately when a write is refused, names the reason, retries where configured, and leaves the load listed until it clears, so nothing is inserted twice and nothing goes missing between the two.
Talk to an Alumio integration specialist. We'll map the right architecture for your systems, at the right scale, so your operations stay reliable through every change.