Smart Listing

Introduction

You can start an app by selling a few subscriptions and consumables for all of your customers by creating a basic IAPHUB listing.

But what if you're looking to sell different products depending on the user? How exactly can you do that?

This is where you might want to take a look at our Smart Listing feature.
By using this feature you'll be able to configure a listing that will return different products depending on the user.

In order to understand this guide properly, let's talk about three words you'll read frequently on this page:

  • Listing: A listing is what we're configuring in the editor to tell IAPHUB what are the products we have for sale.
  • Store: A store is an object containing a list of products, there is only one store in a basic listing and there is many stores in a smart listing, IAPHUB will decide depending on our configuration which store it should return depending on the user.
  • Group: A group is an object containing stores, it can be useful to organize your listing when you have a lot of stores.

Enable smart listing editor

Let's create a smart listing to show you exactly how it works.
A listing is basic by default, it'll return the same products for everyone.
You need to click on the Enable button (see screenshot below) to enable the Smart Listing Editor.

Getting started with the smart listing editor

After you have the smart listing editor enabled you'll see two things (see screenshot below):

  • A default store: It is the store that will be selected by default if no other store is selected, having a smart listing with only one default store is basically the same as having a basic listing (this is why no filter is allowed on the default store).
  • A '+' button: By clicking on this button you'll be able to create a store or a group.


Now let's say for the example we're currently selling 10 credits for $1.99 (Tier 2) and we're looking to sell 10 credits for $0.99 (Tier 1) depending on certain conditions.



In order to tell IAPHUB we're only returning the Store 1 for a few users we'll have to add a filter.
Click on the 'Add filter' link and a modal should appear.



As you can see there are a few different types of filters:

User country

By using this filter the store will only be selected if the user is from one of the specified countries, IAPHUB is automatically detecting the country of the user (from the IP).

User tag

By using this filter the store will only be selected if the user has the specified tag.
This filter is particularly powerful since it'll allow you to do almost anything, it is pretty easy to add a tag on a user from the client or the server by using our API.

Device platform

By using this filter the store will only be selected if the user is using the specified platform. You could for instance use this filter to return a store only on iOS.

Device param

It is possible to specify from the device some parameters that will be provided to IAPHUB when the client is fetching the products for sale (setDeviceParams). By using this filter the store will only be selected if the device has the specified param.
The difference with the 'User tag' is that a tag is saved at the user level, a device param is coming directly from the device.
Let's say you would like to return a store for a particular version of your app, you woudn't be able to use a user tag because a user can have multiple devices with different versions of your app, you would have to use a device param.

Full example

You can find below the full example where we're returning our cheapest 10 credits product depending on certain conditions.



It is important to note the stores are executed from the left to the right, here is exactly how it'll work:

  • The Store 1 is executed, the system check if the user is from Argentina or Mexico, the store is returned if it is the case.
  • The Store 2 is executed, the system check if the user has a tag 'has_discount' that equals 'true', the store is returned if it is the case.
  • The Store 3 is executed, the system check if a device param 'promo_code' that equals 'VIP' has been provided, the store is returned if it is the case.
  • If none of the previous stores were a match, the default store is returned.

This example is of course very basic, you could do almost anything you want by using a smart listing!

Groups

There is also another interesting feature you might like, especially when your listing is getting a little complicated with a lot of stores, you could use groups!

You probably remember we had two options when we cliked on the '+' button, let's use the second one, let's create a group 'Discount' that will contain our 3 stores returning discounted products.



It seems like it is a little bit cleaner right? So what will happen here? First all the stores inside the group 'Discount' will be executed and if none is a match the default store will be selected.

You can also add filters on a group, it works just like a store. And by clicking on the group you'll be able to navigate inside.

Emulate

If you have a complicated listing it might be a wise idea to test it.
Fortunately you can emulate a listing directly from the IAPHUB dashboard!

In order to do that, click on the 'three dots' icon next to the 'publish' and 'save' buttons.
You should see a menu appear, click on 'Emulate' and a modal should appear.



From this modal you can emulate different parameters of a user and after you submit the form you should be able to see which store has been selected.