Helpful information ...
Click-and-collect integration: technical guide for IT teams
Click and Collect Integration: A Technical Guide for IT Teams
The most reliable path is API orchestration through a middleware layer with real-time stock synchronization, or a direct custom API integration when you need full control over the data flow. A successful integration rests on three foundations: reliable authentication against the carrier or POS system, synchronized stock across channels, and clear customer notifications at every order status. In the sections below, we'll walk through the architecture, concrete examples, and the steps you'll need for a production implementation.
In short:
- In multi-channel sales environments, using middleware or a custom API integration for syncing stock and data is the most reliable approach, since both give you full control.
- For placing and collecting orders, it's essential to generate unique, time-limited pickup codes that can be verified through API calls at collection.
- Connecting to a carrier requires a clearly defined REST interface and correct configuration to prevent compressed responses, which is critical for a successful integration.
- The architecture needs to clearly separate checking availability from reserving stock, to prevent the last unit of a product from being sold to multiple customers at once.
- When choosing an integration approach, it's important to think about future channel volume, since changing the architecture later can mean significant costs.
Table of Contents
- Basic architecture: from order to pickup
- Plugins, headless API, or middleware: how to choose the right path
- Connecting to a carrier: a practical example with Pošta Slovenije
- Stock and POS synchronization: an example BOPIS architecture
- Checkout, notifications, and secure order pickup
- Security, testing, and common integration mistakes
- An implementation checklist and project timeline
- When to opt for a custom integration with an outside provider
- A scoped review of your integration with Moxy-web
- Sources
- Frequently asked questions
Basic architecture: from order to pickup
Every click and collect integration follows a similar data flow pattern. A customer selects pickup instead of delivery in the cart, the system checks item availability, and creates a stock hold. The order then travels to the order management system or directly to the store's POS, where staff prepare the item and mark it as ready for pickup.

At this step, a pickup token or QR code is typically generated, linked to the order identifier, and serves as proof at pickup. This token needs to be unique and time-limited, to avoid the risk of someone using it after the transaction is complete.
A key technical decision is whether synchronization happens in real time or with a delay (eventual consistency). Real-time sync is essential when you have limited stock across multiple stores at once, while eventual sync with a one-minute delay is often sufficient for smaller stores with a single warehouse.
Plugins, headless API, or middleware: how to choose the right path
The choice between the three main approaches depends on the complexity of your sales environment and the number of channels you need to connect.
- Plugins for established platforms offer a quick setup and make sense for simple cases with a single store and a single warehouse.
- A custom API integration gives you full control over reservation logic, statuses, and notifications, but requires more development time.
- A middleware layer, such as Azure Logic Apps or a queuing system, acts as an orchestrator between the ecommerce platform, the POS system, and the carrier, handling event coordination.
The middleware approach proves the most durable in multi-channel environments, where orders flow in simultaneously from an online store, a mobile app, and a physical store.
Pro tip: When choosing an architecture, always consider how many sales channels you'll be connecting over the next two years, since changing the middleware layer later means duplicated development costs.
Connecting to a carrier: a practical example with Pošta Slovenije
When click and collect also includes the option to ship an uncollected order, or a return, you'll need a connection to a carrier. Pošta Slovenije offers a REST interface for submitting shipments, which requires prior registration as a client and follows a clearly defined sequence of calls.
- First, obtain a GUID token via the R_GetGuid method, which functions as a session for subsequent calls.
- Submit shipment data with the C_PostData method, and check status via R_GetStatus.
- Access runs through BasicAuth authentication, and server responses are compressed with GZip.
- When testing in tools like Postman, you need to set the Accept-Encoding: identity header, otherwise you'll receive an unreadable compressed string.
The shipment structure and CN23 fields are described in detail in the eOddajaService JSON documentation, which also includes implementation examples in PHP and C#. We recommend separating your test and production environments as early as the client registration stage, since the credentials differ between the two.
Stock and POS synchronization: an example BOPIS architecture
The central technical question is how to prevent two customers from buying the last unit of the same product at the same time. The solution lies in distinguishing between checking availability and actually placing an inventory hold, which immediately pulls the item out of sale on other channels.
The reference architecture for BOPIS in Dynamics 365 Commerce describes this lifecycle: the system checks stock at checkout, creates an order in the central system, notifies the store to prepare it, and updates status at pickup. The reserve-at-order-placement model proves the most reliable at preventing the sale of nonexistent stock in multi-channel environments.
When stock genuinely isn't sufficient, the system needs to trigger a mechanism to release the reservation and offer the customer an alternative, such as delivery from a different warehouse. You can find more on preventing incorrectly displayed stock in our article on managing online store inventory.

Checkout, notifications, and secure order pickup
The pickup experience starts right at checkout, where the customer needs to clearly see the choice of pickup location and the expected preparation time.
- Add a pickup-location selector to checkout, along with a phone number field, which is essential for notifications.
- At the "ready for pickup" status, generate a QR code or a one-time password (OTP) with a time limit, such as 48 hours.
- Send a notification via SMS or email, with SMS delivering a faster response for urgent pickups.
- At pickup, verify the code through the same API call that created the reservation, and immediately update the status in the POS system, using a time-limited code for security.
You'll often need similar notification and verification logic for payments too, as described in the article on payment system integration.
Security, testing, and common integration mistakes
Every connection between the ecommerce platform, the POS system, and the carrier needs to run over HTTPS, and credentials should never be stored in plain text in code or a repository. For BasicAuth credentials and tokens, use the secure secrets storage your hosting environment offers.
Before launch, run integration tests that also cover edge cases: declined authentication, an expired GUID token, and asynchronous status changes. Also simulate peak-time load, such as during holiday promotions.
The most common mistake when connecting to Pošta Slovenije is an incorrectly set Accept-Encoding header, which returns a compressed, unreadable response. Another common issue is not accounting for GUID token expiration, which causes calls to be rejected mid-transaction.
An implementation checklist and project timeline
A click and collect integration project typically runs through five phases, each with a clear output before moving to the next.
- Scoping: define the channels, carriers, and POS systems that need to be connected.
- Architecture: choose between a plugin, custom API, and middleware approach based on complexity.
- Development: implement stock reservation, pickup code generation, and notifications.
- Integration testing: check edge cases, authentication, and load.
- Pilot and production: launch on a limited set of products or stores before rolling out to the full catalog.
Pro tip: A phased rollout at a single store reveals stock and notification issues before you repeat them across ten locations.
We described a similar process in the case study on integrating a web application with logistics, where the pilot phase revealed a missing rollback mechanism before the full launch.
When to opt for a custom integration with an outside provider
When you have multiple sales channels, your own POS environment, or a need to connect with several carriers at once, a custom integration typically performs better than a generic plugin. That's when it makes sense to work with a provider who understands both ecommerce and logistics and ERP systems, and who can tailor the architecture to your scale of business — not the other way around.
— Ziga
A scoped review of your integration with Moxy-web
Moxy-web prepares a scope assessment for your click and collect integration, including an analysis of your existing systems, choosing an architecture, and custom development, without relying on pre-built platforms. Since we build our own code, we can tailor the solution to your POS system, stock, and chosen carrier without the technical constraints of a third-party platform. The first step is a conversation about your project's scope at Moxy-web, where you'll get an estimate of the work and timeline before signing an agreement.
Sources
For technical details, check Pošta Slovenije's documentation on the REST service, the reference BOPIS architecture from Dynamics 365, and explanatory notes on VAT for ecommerce.
Frequently asked questions
What does a click and collect integration mean for an online store?
It's a technical connection between the online store, the stock system, and the point of sale, letting a customer order online and pick up in-store. The integration covers stock reservation, customer notifications, and verification at pickup.
Should I use a plugin or a custom API for the integration?
A plugin makes sense for a simple environment with a single store, while a custom API suits multiple channels or your own POS system. A middleware layer is the most durable choice when you're connecting three or more systems at once.
Why is my call to the Pošta Slovenije API returning an unreadable response?
The response is most likely compressed with GZip, which happens when the Accept-Encoding: identity header isn't set in your testing tool. After setting this header, the server's response should be readable in plain JSON format.
How do I prevent selling a product that's out of stock?
The solution is reserving stock at the moment an order is placed, not just checking availability when a product is displayed. This approach, described in the reference BOPIS architecture, immediately removes the reserved quantity from sale on other channels.
How long does implementing a click and collect integration take?
The timeline depends on the number of channels and the architecture chosen, and the project typically runs through scoping, development, testing, and a pilot launch before full production. For a precise estimate of work and timelines for your case, it's best to get a scope assessment from a provider.
Recommended