Uplisting integration and Bema 6 booking
How to connect WordPress to an external API without duplicating data, while safely handling availability, pricing and payments.

An API integration is not just a JSON request. The team must decide which system is the source of truth, how often data changes, how failure is handled and which operations must never be confirmed from stale cache. Bema 6 is a useful example of this approach.
One source of operational data
Uplisting stores apartments, rates, stay rules and availability. WordPress provides an editable Polish and English marketing layer. Instead of maintaining another calendar, the website receives reservation data and normalizes it into its own internal model.
Normalization matters because an external provider can rename fields or return several variants of a value. An internal adapter limits the impact of those changes on templates and forms.
Synchronization follows risk
A lightweight refresh runs regularly, with a full sync every hour. Not all information carries the same risk. An outdated description is inconvenient, while outdated availability may produce a double booking. When critical data becomes stale, the system blocks the operation instead of guessing.
The server validates everything again
A form can present an estimated price immediately, but a browser is not a trusted source. After submission, the server verifies dates, minimum stay rules and price again. Only then does it save a pending booking. Confirmation blocks dates in a protected iCal feed for that apartment.
Payments require independent confirmation
The Przelewy24 integration creates a transaction with the provider. A browser redirect is not enough to mark it as paid. The system verifies the callback signature and transaction identifiers before changing status. The same rule applies to other payment, inventory, CRM or accounting integrations.
Security, observability and exceptions
Nonces, a honeypot, request limits and Cloudflare Turnstile reduce automated spam. Logs and the last synchronization status distinguish provider failures from local issues. Exception handling is equally important: failed payments, expired requests, date conflicts and temporary API downtime all need explicit paths.
This approach works with any properly documented API. See the complete Bema 6 case study.