Reinventing logistics with a contact-free delivery.


  • Scope Product workshops, UX/UI design, native mobile apps development, frontend, quality assurance
  • Timeframes Ongoing since 2017
  • Innovation Remote parcel locker opening and MultiLocker
  • Technologies Swift, Kotlin, Angular
  • Business sector Logistics
  • iteo Team 3 x Android developers
    2 x iOS developers
    3 x Quality Assurance engineers
    1 x Scrum Master
    1 x UI designer
    1 x UX designer

Substituting text messages with an appealing, likable app, we created a new, effective channel of communication between InPost and their clients.


  • 2017

    Beginning of collaboration

  • 2018

    Kick-off of InPost Mobile project

  • 2019

    Version 1 release


    The beginning of work on version 2


    Version 2 release

  • 2020

    Version 2 release


    Additional app motive “dark mode”


    Version 3 release, Labelfree posting, InPost pointmaps, Huawei AppGallery

  • 2021

    A banner with customer service information


    Redirecting a parcel to a WebView Parcel Locker


    Phone call with a courier and air quality

  • 2022

    Quick returns feature with shipment tracking


    Ukrainian language support


    Voicebot or consultant help


    Eco returns feature, parcel lockers map


    In-app parcel sharing feature


    A lottery with a phone number as a parameter, transferring the configuration from Firebase to BE, adding a marketing banner to the hamburger menu.


    Corrections to ECOreturns, improvements of the PUSH notifications delivery, new marketing consents, Synerise SDK for sending pushes, and banner carousel.

  • 2023

    Push notifications for Parcel Sharing


    Banner carousel management with Synerise, notificationID, Synerise declarative tracking

  • Project’s highlights

    InPost application creates a true revolution and innovation on the logistics market, allowing a 24/7, quick, convenient, and contactless parcel collection and labelless posting, being a safe alternative for other companies’ services.


    Business needs & goals

    Business needs

    One of the main business needs was to accelerate the process of package pickup. Especially during holiday seasons, when the number of orders and the demand for lockers is much higher.

    Remote locker opening can reduce the lines in front of Parcel Lockers and also it leaves out the verification process (from the perspective of the user, of course) which requires entering or scanning a barcode. during holiday seasons, when the number of orders and the demand for lockers is much higher.

    Business goals

    Another important goal was to entirely give up text messages with parcel pickup codes.

    This solution was highly ineffective cost-wise (InPost was sending tens of millions text messages monthly!) and also was risky in terms of potential frauds.


    Two native apps, for Android and iOS with backend coded in Java.

    • Kotlin – for Android app, with support for Google Mobile Services (GMS) & Huawei Mobile Services (HMS)

    • Dagger – libraries included by the Kotlin framework (dependency injection)

    • RxJava – for asynchronous apps

    • Retrofit – for easier communication with API

    • Firebase – receiving push notifications and collecting analytical data

    • Swift – for an iOS app

    • SwiftLint – the most important libraries (partial automatization of code review)

    • Realm – easy to use databases

    • Firebase, Lottie – graphic animations

    • Hero – animations between views



    Remote Parcel Locker opening

    By allowing the users to collect their packages more seamlessly and quickly, InPost can deliver even more parcels every day!

    The functionality has been shared with the app’s version 2 release. The process of parcel collection needed to be fully intuitive and similar in both InPost mobile app and Parcel Lockers.

    The process of remote parcel locker opening is designed precisely not to interrupt the Client’s system.

    The functionality was highly praised by the users, contributing to their everyday convenience.


    Effective optimization of the process of picking up the parcels from lockers.

    The solution resulted in a larger number of free lockers for other clients that made an order using the InPost services. Usually, when the lockers were overstuffed, the courier had to park in front of the Parcel Locker and it took a couple of hours to hand the packages over to the customers.

    With MultiLocker, the effectiveness of the whole system grows, as the delivery person can put a couple of packages ordered by one person in a single locker.

    Labelfree parcel posting

    Posting parcels using the InPost app is the first service of this kind available on the market. This functionality has been released with the new app’s 3.0.0 version.

    The new feature’s goal was to maximally facilitate the process of posting the packages:

    • Possibility to post parcels directly from the InPost Mobile app
    • Sending the parcels 24/7 not needing to print or stick the label
    • Convenient posting process without queues
    • BLIK payment option
    • Broadening the option of payment and implementing new functionalities for the posting process in the app in the future

    Product Workshops

    Designing application began with Product Workshops

    Along with the Client, we thoroughly analyzed the project, established the highest priorities and the order of individual functionalities implementation.

    Workshops resulted in preparing the application’s prototype assessed internally by the InPost team.


    The next step was creating an MVP – Minimal Viable Product

    It included basic, most essential features that needed to be developed in the future.

    UX & UI design

    After creating the second prototype (based on MVP), we designed the UX to track shipments as well as other side components of the application.

    We chose only the ones that fully represented our Client’s business value. Although at this point the structure of the app remained unchanged, we redesigned it according to the company’s brand book, including color consistency and the use of new fonts.


    Challenges we faced

    Transition between versions 1 and 2 of the InPost app included app stores updates.

    Downloading a new version of the app from the store is connected with reading the HTML code. If an app store introduces even a small
    change, the app’s functionalities may stop working and the level of
    security may drop.

    To avoid the risk, we decided to use API needing to implement some
    adjustments on the backend side. Version 3 of the app was released in 2020 and introduced InPost Mobile to Huawei App Gallery.

    Problems with API required looking for a better solution. We found it developing the version 2 of the app.

    In the app’s first version, API has been based on the mocks which simulate the target functionality. After the development, it became clear that it required rebuilding.

    We solved it differently in the version 2 of the app. API was ready before the functionalities were made or during development. This way we were able to avoid time delays in the project.

    Secure process of verification.

    We had to minimise the risk of handing over the parcel to a wrong user.

    When a user wants to collect a package remotely, the app sends a request with parcel’s number, pickup code and device location (within a certain range) to the system. If the verification is successful, the session opens up, and if not, the session is rejected.

    Length of time for each step of the locker opening process.

    The solution suggested by InPost required a demanding process of programming. We had to face all the potential difficulties it came with.

    First, we had to calculate the time for each step in milliseconds instead of using time frames. This way the app receives the times, verifies and converts them to the local time, and then passes them between classes that are responsible for locker opening.

    Now, the time spent on the screen is added to the current hour. If the locker opening request is confirmed by the app, the next actions are taken by the Parcel Locker.

    Each machine has its own computer connected to the InPost system being able to take care of each step and properly send the data.


    Solutions we offered

    Avoiding client’s system overload.

    Firstly, remote Parcel Locker opening was based on sending requests to ask the API about the status of the locker. But it came with a risk.

    The requests we sent every second so the system would make sure that the locker door is open. But this solution was highly problematic, especially during so-called “peak” moments, e.g. during holidays when the demand for package delivery rapidly grows. Too many requests per second could cause an overload of the InPost systems bugging or stopping them completely.

    We’ve decided that the request should be blocked by InPost until the locker’s status changes (possible options being “open”, “fail” or “timeout”). The whole process is very quick but it requires extending HTTP timeouts. The default time for the whole app is 10 seconds. In this case, we needed to create a separate API configuration so the timeout for one request can take 30 seconds. It was the easiest solution to avoid the system’s overload.

    Closing the parcel locker door.

    If a package is taken out of the locker and the door are being locked, a user can click the button confirming the operation – then the app sends a request to InPost’s API with a message that the doors are locked. But what if they aren’t?

    The fix was quite simple. After clicking the “Parcel taken out” button, the app shows a screen with the “Door closed” announcement. It doesn’t send an API request and goes straight to the summary. This way, a user isn’t blocked on one screen – especially when the door is damaged and can’t be closed.

    At this point, after summarizing the process, a user has an option to send a complaint, for example when the package has defects.

    Distance issues

    Remote Parcel Locker opening shouldn’t work from a random distance.

    The solution was fast and simple but it couldn’t allow users to open the locker from their home when their significant other is passing by the Parcel Locker and wants to pick up their package. We needed the app to verify the distance between the person collecting a parcel and the locker.

    We wanted to avoid the situation in which the app says that the client is not actually near the locker.

    The first tested solution was to drag the last known phone location, but this method wasn’t efficient though. After checking the logs, it appeared that the localization could be determined using data from a couple of minutes earlier which was interpreted by the system as being too far from the Parcel Locker. At this point, the app wouldn’t agree to open the locker remotely.

    It’s usually applied in apps that don’t have any navigation requirements and don’t need very detailed data. Unfortunately, tests done by InPost showed that this mode is not enough – it located the device within 100 meters or more and in this case, a user had to be closer than 100 meters.

    In the next step, we decided to use the high accuracy mode of
    localization which might have required special settings in the device system if the localization accuracy changed. Using this information (technical launch of Intent) will open system dialogue which will allow it to automatically change the localization accuracy.

    It is worth remembering that the highest accuracy depends on GPS signals which mean it works best outside. The localization process can take more time when the signal is distracted. In this case, the system will send information (Exception) to the app which will fix the issue (Intent).

    Quality assurance

    Manual testing

    Procedure was carried out following the list of the most important functionalities. Testers from iteo and InPost went through each point before releasing subsequent versions of the application.

    There were also manual field tests at the Parcel Lockers.

    Check our full design case study


    A consistently reliable partner, Iteo is a strong company who delivers skillful products. We haven’t experienced a single problem from their side with the timeline or scope. Their quick reaction time has been a critical strength we’ve highly valued.
    Works without any problems. Delivers features that make using InPost services as simple as it can be. One of the most useful apps on my phone.
    Awesome app This app is really great, especially for someone who orders lots of packages, like me. It’s very convenient to open boxes with just one button.
    It’s great! At this point all features work extra! I highly recommend! I use a lot, I was not disappointed!!!
    This app makes my life easier It’s really useful since it sends you notifications about your parcel so you don’t have to check your e-mail all the time.
    I really love the graphics, it’s cute and adorable! The app is fast, tracks everything on time, all updates are quickly visible in the system, and the delivery is also fast and reliable. Great user experience overall!


    The result is a simple, intuitive and modern mobile application for Android and iOS.

    InPost application won main prize at Mobile Trends Awards and became the app of the year 2019. It was recognized in the ‘Service’ category also as no 1. The company repeated its success in 2020 as well, winning the main award, 1st place in the ‘Service’ category, and 2nd place in users’ voting.

    The app has now over 5M downloads with daily dynamic increase due to huge demand for indirect goods delivery and collection. All versions of the application remained on first positions in Polish Google and Apple stores for a long time.

    Check the app

    More projects