- order_id
- 88231
- customer
- ana.r@example.com
- amount_pence
- 4250
- city
- 'leeds '
- created_at
- 2026-10-14 18:03:00
- status
- pending → paid (changed)
Step 1 · Made
The shop's database writes a row, then changes it
The checkout writes the order to the shop's own PostgreSQL database with the status pending. When the card payment clears, 2 minutes later, the app updates the same row to paid. The row is shaped for the app: the amount is in pence, the time is written without a time zone, and the city is exactly what the customer typed. Every pipelineData PipelineA set of steps that moves data from where it is made to where it is used, cleaning and reshaping it on the way, run on a schedule or as data arrives. starts from data like this, made for some other job.
What goes wrong
Nothing in the row says that 18:03 is UK time. Read later as UTC, the order would move an hour, and near midnight it would move to another day.