How to batch-refresh product configurations by importing your OC Configuration file?

!! Before making extensive edits to your OC Configuration Sheet, we recommend you download the CSV file and keep it safe.  In the worst case scenario that you crash the App on a Sunday morning after you have imported your new changes, you can always revert by importing the last known stable version.

After your products are setup by your PM, you might occasionally want to update prices, images, or descriptions.  There are tutorials on how to do that directly in your Dashboard.  Importing your OC sheet will over-write whatever is in the Dashboard…it does this by matching the “model” property.  So if you import a sheet with new attributes for a particular model, that model in the database will be refreshed with values from your sheet, leaving others untouched.

download CSV File

Step 1: Download CSV

Download your OC Configuration File from Google Sheets:

Menu >Download > Comma Separated Values 


Pro Tip:

If you are only changing a few lines, we recommend you copy the entire rows (and the header: Row1) and create a new worksheet/tab called “Mini”

Ctrl-Shift-V (Paste values only) only the affected rows into a new sheet.

Then download the CSV of this “Mini” sheet.


Import profile

Step 2: Prepare Dashboard to understand your CSV

Login to your OC Dashboard and go to: 

System >CSV Product Import

Load your Profile.  In most cases there will only be one to choose from. We are building additional mini profiles to prepare for clients with large databases to easily import only certain attributes (like prices) to make it easier to mount mass price-cut promotions.

Make sure you choose the right Store (“Markets”) then click Next (top right)


Edit import profile

Step 3: Click Next

99% of the time you would ignore this screen and just click NEXT (top right)

But this is where the headers in your files are mapped to the actual attributes that matter in your product database.

If you have just added new products which may require a new attribute which was not included in your profile, then you would do it in this step, then make sure to SAVE the profile. (maybe even a new profile name if you want to keep the old one)

Generate Product Cache

Step 4: Update Cache

When import is complete (100%); click:

Update Product List Cache (left bottom)

This generates new product JSON files which are the payloads that gets downloaded to your app upon launch.

We run this automatically every hour.  But if you are eager to see the changes you imported instantly in your app, you need to force the refresh. (make sure to force close your app and launch it to force it to re-download latest offerings)

Common Mistakes to watch out for

Ok, so you have imported and now the app crashes upon launch.  This is a clear signal there is a NULL value lurking somewhere in your OC Configuration Sheet.  Here are the top few errors that will solve 99% of the problems.


The App reads the Type and Name as a pair in each sub-Category step to know how to group product selection steps together.  This must NOT be empty.  All Type-Name pairs ends up in the same screen regardless of which “subcat” they are in.


To force a New Line (or carriage return) in the Description property of any subCats, you should use the \n characters.  This is how it may look:  

“description”:”This is the First Line\nThis is my second line after a line break\nThis is my third line.”

But note that for OC default properties (that means stuff that we didn’t customize and add to OC…these would be the fields that have their own column in the sheet, or you will see specific forms to fill in the dashboard)

For these, you can use “Alt-Enter” in Googlesheets to force a line break.  It will be rendered accordingly.  DO NOT use \n in these cases.  OC automatically adds a \ and the app sees this as \\n

Very often we have formulas referencing certain cells within the sheet or across sheets.  Sometimes when you move lines around, or delete/add entire lines, these formulas break and you end up with a #ref error in the cell.  This will confuse the App.

We also added various scripts in cells to clean and formulate JSONs, or simply to calculate target_rects based upon data in multiple cells.  In a massive sheet (over a hundred lines of products in multiple sheets), it will take time for all the scripts to load, access data and complete its run.  And in the meantime, it says “…loading”

So look out for these, and give it time to run.  If it stalls, try this: Ctrl+C  (to copy the formula) then delete the cell, and paste (Ctrl+V) the formula again.  Then hit enter twice.  This usually reloads and recalculates the script.

All the price related properties expect a number with decimal values.  These would be: “price” “extraCostPerPage” “multiplier” “minPages” “minPhotos” “maxPages” “maxPhotos”

A common mistake is to put “TBD” in a cell for Prices, simply because the boss has not yet decided how to price some items.  DON’T!

If you need to put a placeholder for any property, use the right datatype.  For prices, we recommended entering “999.99” so that you can easily search and replace these values when you know the right price.

Another common mistake for our German customers is to enter 99,99  Google doesn’t understand the komma as a decimal delimiter.  Use the decimal point (punkt)…like people from the US!

! BE AWARE –  Always launch your app after you make a massive import.  The App is fussy…this is so that we are able to catch any imported errors early and address them.  If there is a NULL value lurking anywhere in your spreadsheet, your app will crash upon launch.  This is a signal to go check your data entry and make sure you did not leave something out.

How to batch-update prices

Running a promo for 100 products, then reverting it after one week?