Hiding Category and Products
How to Setup an entire product category to only show up in Android-Staging?
The Filters 101 Tutorial
Scenario A you are preparing to roll out a new product Category “Christmas Gifts”. You start setting up and running factory tests in September using the Staging app before letting the product go “online”.
Scenario B You have completed testing, and now you want to tease users about this new product with a “coming soon” tag for Android users. (the engineering team gave you a heads up that iOS may not make it out in time)
Scenario C Christmas is here, and a particular product (say “Collage Calendar”) requires some new capabilities which the iOS apps does not yet have. You need to stop these products from showing up for iOS users, but yet, you want to capture sales from Android users as the Android app is ready.
Scenario D it’s the new year, and we are rolling out a new Category (say “Calendar”) which is only supported by V4.0 (and later) of the App. How do you roll out this Category and prevent it from showing up in users who are still on V3.x? (the old v3 apps will crash as it does not know how to support this new Category)
To achieve all the above, we use a feature called “Filters” in the Dashboard. So when the app is launched by a user, the client App queries Dashboard to download the ProductJSON (which is simply a list of supported products and their specifications).
So think of Filters as a pair of “Properties” between the Dashboard and client App. If they match, then Dashboard will let client App have access to that product or Category.
The two most commonly used Filters are the env and comingSoon filters. They each recognize similar child-States:
- dev = Staging app which will put in orders to PSP tagged as “dev” ;
- prod = Production app connected to live environment of the PSP ;
- ios/aos = are the 2 OS variants
Scenario AInitially as you are setting up the Category for “Collage Calendars” you will first add these filters:
env>dev dev>ios dev>aosThis means: Collage Calendars category will show up in both the iOS and AOS Staging Apps
Scenario BYou want a “Coming soon” for Android users, but you want to disable this completely for iOS users. You add the following filters
env>dev dev>ios dev>aos env>prod prod>aos comingSoon>prod-aosAs per Scenario A, Staging Apps will continue to be able to test this Category (env>dev, dev>ios, dev>aos) env>prod, prod>aos: we now give Android Production Apps access to this Category comingSoon>prod-aos: and they will see it in a comingSoon state, where it will show up, but disabled, so users cannot tap on it.
You want to hide the Category completely from iOS users.
env>dev dev>ios dev>aos env>prod prod>aos
The first 3 basic Filters ensures you continue to have access to this in Staging for continued tests and customer support training.
means you now give Android Production apps access to this Category. So since there is no prod>ios filter, the live iOS apps will not see this Category.
This scenario is getting rarer as the white label app matures and has support for most products in our immediate plans.
However, (say) we add an AR preview feature which will require additional libraries to be added to the client app and additional preview parameters to be sent from Dashboard for supported products.
What we will do then is to release the new generation AR-capable app with a next higher Version number (say V4) and also bump up the ProductJSON versioning in Dashboard to V4 also. (they don’t have to match).
We will now add this Filter to ensure that only V4 apps will see the V4 ProductJSON. So users who have not yet upgraded to V4 will not get the additional AR information which will likely cause the app to crash, since its alien information that it is not expecting.
Filtering out individual Products based on OS or Staging/Live
All the above are Category Level Filtering, so those flags will affect all products under that Category.
Now what if you are introducing a new Photobook product with Linen covers. The rest of the photobooks are already live in production. But you need to set up Linen books for testing in the meantime.
You will find that for each Product listing in your Official Product Configuration spreadsheet, there is a Column I called “filters:env“
Set the value to “dev” for any row and that product will only show up in Staging builds.
There are 2 more columns (typically BU and BV) called “attribute:aos_en“ & “attribute:ios_en“. Set any of the cells in these column to “dev“, to make that product show up only in the Staging build of that OS.
If you set them to “FALSE“, then that product will not show up in that OS (in BOTH Staging & Production builds).
In the column labelled “status“. (typically Col. N) you can set any cell to “0“ (numerical zero), to totally HIDE that product from both environments and OS. This is useful for seasonal products (like Christmas Stockings ) where you may want to keep the product info for next season, but you need to hide it for 10mths of the year.
Here’s a Truth Table style handy cut-out guide for your desk: