Users onboarding and personalization

Until recently travelers couldn’t learn how many frequent flyer miles will they get before purchasing a ticket. Now using Milefy API it’s become easy. As a flight search provider you can use our API to submit flight results and receive mileage earnings data in return, ready to present to your user. But are these numbers relevant for the user? What if he uses different frequent flyer program?


John is a frequent flyer. He lives in Brussels, but flies often to both London and Barcelona for business meetings. He is a member of British Airways Executive Club frequent flyer program. As a result he prefers to fly with British Airways or Iberia, because he knows, he can earn miles on these flights.

One example flight for each route, that John usually searches tickets for.

Example above illustrates, that Milefy API calculates miles for the default program for the flight’s marketing airline. In other words for the British Airways it’s British Airways Executive Club, for Iberia it’s Iberia Plus and so on. Fortunatelly John is a savvy frequent flyer and he knows, that Iberia flights will most likely earn some miles for his Executive Club too, but what if he had flown with an airline he is not familiar with?

In another example John takes a trip from Brussels to Singapore.

John notices, that these flights earn miles to programs, he is not a member of. Instead, default programs are shown: Miles & Smiles for Turkish Airlines and Finnair Plus for Finnair.

Now how John can learn if any of these flights can earn him miles to his Executive Club program?

He can personalize his search by selecting frequent flyer program membership, that he holds.

First John selected Executive Club as his frequent flyer program, then he searched for the flight to Singapore. This time he sees miles only for his selected program. As a result he learns, that only by flying with Finnair he will earn miles to his Executive Club membership.

To sum up, the more you know about your user and his frequent flyer program memberships, the more relevant and valuable results you can present to him. But learning user’s program name is just a first step in this journey.

Levels of personalization

After reading this section you will learn what are the benefits of personalization, both for the user and the business you’re working for. Depending how much information user has shared with your application, you will be able to provide different value.


Level Benefits
Program You can hides irrelevant frequent flyer programs and display mileage earnings and cabin upgrades for the user’s selected program.
Program and status tier You can display exact number of mileage earnings and eligible status benefits for the selected program.
Multiple programs You can add ability to switch between programs earning on the same flight result.
Mileage tracking User can automatically update mileage earnings in his memberships and track progress towards his next status tier.

Level 1: Program

Flight results personalized with traveler profile including Lufthansa Miles & More frequent flyer program.

If you know the frequent flyer program membership, that user holds, then you can display mileage earnings only for this program. User won’t see anymore irrelevant flight results containing earnings for other programs.

In this case, basic status tier for selected program is assumed.


  1. Display relevant mileage earnings only for the program membership, that user holds,
  2. Fine tune your promotional offers using user selected program to focus on specific airline or alliance.

User input

An example of a frequent flyer program input field.

Perhaps the easiest way for the user to input the frequent flyer program is to type a few letters of its name and then select from the list of matching programs supported by Milefy API.

Of course regular list (HTML select element) would be easier to implement, but there are two reasons why it’s not the best approach from the user experience point of view:

  1. The list with over 65 frequent flyer programs is too long to allow fast selection,
  2. Users tend to forget the name of the frequent flyer program, that they use, but remember the airline they registered with and the program it belongs to. For example they may not remember Miles & Smiles name, but they know, that they use Turkish Airlines program. With autocomplete, you can match both frequent flyer and airline name.


First of all you should identify the user within the Milefy API. If you can recognize the user in your application and you have already stored his traveler ID, then you should re-use an existing traveler ID. Recognition doesn’t necessarily mean, that user created an account with your application. For users, that haven’t opened account yet, traveler ID can be stored as a part of the browser cookie or in localStorage.

If you don’t recognize the user, then you should create a traveler profile for him using Create traveler method.

Next you can display frequent flyer program input field with the list of all supported programs. You can retrieve such list using Get program collection method.

Once an user selects his program, you should use Create membership method to save his frequent flyer program membership under his traveler profile referenced by traveler ID. In the simplest form, you can create the membership with only frequent flyer program code, for example MAS for Turkish Airlines Miles & Smiles.

Now, when you have traveler profile with one frequent flyer program membership attached, you are ready to create a flight search with mileage calculations included. You should use Calculate frequent flyer info method, specifying in request traveler ID and set of flights to calculate miles for. The response will contain mileage earnings personalized automatically according to the specified traveler profile.

Level 2: Program and status tier

Flight results personalized with Miles & More program and Senator status tier.

In addition to the program name, you can ask user for the status tier he holds in particular program. As a result, our engine will no longer assume, that user holds basic status tier in the program and apply relevant, usually higher mileage earnings.


  1. User receives always 100% relevant and accurate information about his mileage earnings and cabin upgrades,
  2. Besides mileage earnings and cabin upgrades, information about status benefits also becomes available to the user.

User input

An example of status tier input.

Every frequent flyer program has an individual number of available status tiers. Their official names also differ across different programs, even though travelers usually recognize only some common names like: Silver, Gold and Platinum tier.


Implementation is almost the same as in Level 1: Program. The only difference is, that after user selected his frequent flyer program, application should prompt user with status tier selection.

The list of status tiers can be retrieved from Get program collection method.

After user selected a status tier from the list, you should use Create membership method to save membership under his traveler profile, but this time you need to specify not only program code, but also code of the selected status tier.

Once you complete this, you can send request to calculate mileage earnings using Calculate frequent flyer info. Results will be automatically personalized according to traveler’s selected frequent flyer program and his status tier.

Level 3: Multiple programs

Flight results personalized using two programs: Lufthansa Miles & More and Singapore Airlines KrisFlyer. Some results may have mileage earnings applicable to both of these programs.

There is no limit to number of frequent flyer program memberships, that one user can add to his traveler’s profile. Usually frequent flyers tend to use 1-3 programs and choose them depending on the route, that they fly. Milefy API can calculate mileage earnings for all of them at once, so user can have an overview of all the options, including these, when two or more programs earn miles on the same flight.


  1. User can make better choices comparing benefits from different frequent flyer programs he is a member of.

User input

Side panel allowing user to input multiple frequent flyer program memberships and set status tier for each of them.

Interface should allow user to add and delete frequent flyer membership. If user can input status tier, then it might be worth supporting edit action as well.

Alternative input for multiple frequent flyer program memberships. User types the name of the program or airline, selects one program from pre-populated list of matching ones. Then pop-up window with list of status tiers is displayed prompting user to select one. After this, new membership is added to the field. It contains program name and indicates selected status tier as an icon next to it.


The implementation most likely will require user to open persistent account with the application. Otherwise user may lose time to re-input the data when using different device (assuming traveler ID is stoted temporarily e.g. in cookie).

The workflow regarding Milefy API communication remains exactly the same as in Level 2: Program and status tier. The only difference is, that user can add more than one membership to his traveler’s profile.

Level 4: Mileage tracking

Flight search results after user connected his Miles & More membership using his frequent flyer account credentials. From now on user can track his mileage earnings automatically in the application.

We offer the most advanced level of personalization using membership connection feature. User can input his frequent flyer membership credentials to sign in and your application will automatically receive data including mileage earnings, expiration dates and current and next status tier.

Moreover, if user decides to store credentials with our system, you can update his mileage earnings any time. This way a user can create a virtual wallet consisting of all his frequent flyer memberships. And whenever he will run a new flight search, all his membership connected that way will be taken under account.


  1. User does not need to remember any information about his frequent flyer program (status tier, mileage balances), because he retrieve it automatically,
  2. User can track his mileage earnings,
  3. User can track his progress towards next status tier or re-qualification.

User input

An example of workflow for connecting user frequent flyer membership account.

Every frequent flyer program has its own configuration of the account connection form (view in the middle). Some programs require more than two fields (membership number and password), others require user email address instead of membership number, so the form needs to be constructed dynamically based on configuration specified in Milefy API.

The configuration specifies number of required input fields and following information for each of them:

  • Label for the end user,
  • Type of the field (email, number, select etc.),
  • Hint helping user input valid information (optional),
  • Regular expression pattern, that can be used for the input validation (optional),
  • Array of options if field type equals select,
  • Order in which fields should be displayed.

Account connection and update is a time-consuming process. This type of request may last anywhere from a few seconds to even one minute. Due to that you should build the interface in a way, that user doesn’t need to wait actively for the request being completed. Instead, this action should take place in the background, not preventing user to interact with other parts of the application and notifying him when connection is complete and his mileage earnings updated.


Assuming you have already created a traveler profile using Create traveler method, you should then create requested by the user frequent flyer program membership. You should do it the same way like in the Level 1: Program using Create membership method specifying only program code in the request body.

Once you have created the membership, then you should authenticate it with the user credentials. You need to use Create simple authentication method to do so, specifying traveler ID and program code as URL parameters and login credentials in the request body. You can choose to store this data securely on 30K servers, which allows for automatic update of user mileage earnings or not and require credentials with every update. You can also store just membership number and not password. It all depends on your privacy policy and can be modified any time.

After successful connection, the membership will contain updated information (mileage earnings, current status tier, expiration date etc.). You can retrieve this data using Get membership method.

Finally you can update mileage earnings of the user if he decided to store his credentials. You can do it for all user memberships at once using Update membership collection method. This can be either done on user request or automatically on behalf of the user, for example once a month for the active user accounts.

Onboarding user

Designing good workflow for onboarding user is a key to successful Milefy API integration. Since higher level of personalization allows user to benefit from additional features and more relevant data, he makes more informed choices, which in turn results in purchase of more expensive fares. In other words the goal is to convert regular, anonymous users into loyal frequent flyers with set of connected memberships, because it is profits they will generate this way.


At first glance it is a simple task. You could for example add a frequent flyer section in the user profile, where user could add and connect his memberships. That however might be ignored by the vast majority of the users, because they wouldn’t know such feature exists, they would be forced to open an account to use it and finally they don’t even know how they could benefit from it.

Then there are other problems such as users, that don’t remember their password to the frequent flyer program account they use or need to explain difficult terms such as status tier qualification to the less savvy frequent flyers. In short words — it’s a great challenge to invent workflow and interface, that will make the personalization easy for the user.


Instead of trying to convince user to input his frequent flyer programs and connect them one by one in the user profile, we suggest to build workflow, that gradually introduces new features and prompts user to add more data bit by bit.

It’s very unlikely that user will input all his frequent flyer programs at once, even if promised with mileage earnings, tracking of his earnings and seeing status benefits. Instead you can fetch user frequent flyer program and his membership number from the existing fields on the booking page to store this information and personalize the flight search he will perform in the future.

During this next search you may prompt the user to specify his status tier in this frequent flyer program. Next time he comes back, he will see already status benefits on flight search results. He makes another booking and instead of sending him regular confirmation to his email, you send him information about the mileage earnings he should collect from this flight asking if he wants to keep track of them in his profile.

This way user finally reaches highest level of personalization with created account, a few frequent flyer program memberships assigned to it and connected with user credentials. It took a few steps and a few visits, but the goal was achieved with very little friction for the user.

Example of step-by-step workflow

A path through all levels of personalization. User is motivated to add more information, because he sees immediate effects on every step and application unveils more and more available features.

Onboarding workflow ideas

Below you can find a few ideas for how to design user interface and onboarding workflow.

Flight search form

Having frequent flyer program as an optional field in the flight search form is one of the most straight-forward ways of providing first level of personalization to the user.

Loading flight results

You can utilize loading splash screen to prompt user to input his frequent flyer information.

Call to action on the flight search page

A bar, that includes call to action can grab user’s attention and persuade to personalize their search.

Filters on flight search page

A bar, that includes call to action can grab user’s attention and persuade to personalize their search.

Flight details

You can use flights details to prompt user to personalize his search for the sake of seeing relevant miles on one particular result.

Booking page

In addition to program name and membership number you may try to collect the password as well. This way you can connect the traveler’s membership automatically.

Email confirmation

You can also use email messages to encourage user to add his frequent flyer membership information. This way you don’t interfere with the flight shopping workflow.


Visit section for developers, check resources there or give as a shout: