Wealth Creation with Multiplication – Amazon FBA Private Label as a Tool

Wealth Creation with Multiplication - Amazon FBA Private Label as a Tool

Table of contents


Anyone who is looking to generate wealth or another stream of income.

  • Investors: Want to put money and try their luck
  • Businessmen: Want to expand their business into new industry
  • Individuals: Want to have another income stream
  • Professionals: Who want to educate their investor(s) with unbiased sneak peak.


I keep answering on an almost daily basis about business over Amazon. People come up with all sorts of questions from beginner to complex level, having small to moderate and big investments.

I’ve compiled answers to all of those questions already asked, here.

I am about to feed you information and knowledge like how to create wealth using Amazon FBA Private Label as a tool. I will cover all sorts of questions like Why, How, Who/Where, What Now.

Bon Appetit!


Wealth Creation, a topic discussed many a times, since ages. Experts of all sorts, shared their take on the topic.

My promise to you in this write up is that, I will remain, unbiased. I will share with you raw information, as-is. And leave the conclusion upto you.

Here I am going to discuss, how online e-commerce can help you create wealth. I am not the pioneer in this subject, but just one more voice.

Once I establish why Amazon is a better place, I will guide you with details of how business over Amazon works.

You will find me discussing rewards and risks both. This will give you a clear picture of both sides of the coin.

Then I will equip you with required knowledge and information, having multiple options and routes to Wealth Creation using Amazon FBA Private Label as a tool. Do you know anyone who doesn’t like options?

Finally, this is just introductory & brief knowledge. Maximum, you would expect that you can get a conclusion, if Private Label business is for you or not, nothing more, nothing less.

Without further ado, let’s start.

back to top


Not necessarily wealth is always evil. It really depends upon the person how s/he uses it.

Nor do I advocate greed.

Till year 2018, there were 9,000+ people who did successful summits to The Mount Everest. Its human nature, s/he never settles. Can you relate to the joy of climbing the world’s biggest mountain? Now can you feel what sense of accomplishment you get when you know there are 9,000 more people before you, who have accomplished the same? That is why some of them, try new avenues and try to expedite North & South Poles, Seven Summits and Eight Thousandards.

We humans just never satisfy. We achieved one goal, we set up a new one. This is the natural order of things.

back to top


It’s established that we humans just can’t stop creating wealth and even achieving our one goal will lead to a newer one. Then Why not multiply the joy then? Why don’t we spare time for ourselves? Why not we spend our time and money on quality time with family & friends?

I would recommend hiring someone as Director or Virtual Assistant (VA), shed your load. Multiply profits by dividing your risk, money, efforts and worries.

back to top


Amazon is the #1 online marketplace in the US. It spans multiple countries.

Back in 2018, Amazon’s share of the US eCommerce market alone was 49%, that is 5% of all retail spent across the US. Other big marketplaces like eBay, Apple & Walmart combined are not even close to Amazon.

That big share of the market opens the door to sellers to try their luck on Amazon, as a seller.

How much money, time, effort & expertise will you need to put, if you open a brick and mortar store in the US?

Better let me ask this, how would you bring the first buyer on your website? You might answer, I will run paid ads over Google or Facebook and bring the first few orders. And you would be right. But, you must have enough experience of running ads over Google & Facebook, no?

Online marketplaces, however, offer ease. I listed this product on ebay and got first order within the first two hours. Without putting any further time or efforts to bring buyers. Without even visiting Facebook or Google, let alone, running paid ads there.

Another ease with marketplaces is ready-to-buy buyers pool. Buyers land over online marketplaces with the intent of buying.

Amazon US, being the biggest marketplace of the country, for obvious reasons is not as easy as listing an item over ebay and expecting sales without any further efforts. But then, it’s not rocket science either. We will discuss everything in detail, very soon.

Talking about the crux, all we need is to present our product to the largest pool of buyers on Amazon, that’s all!

back to top


The Control. As simple as that.

We can do a couple of different types of businesses over Amazon, but the control that we get by selling our own Private Label product is unmatchable.

The privilege, that is, The Control, has its own price, though. We will discuss in detail under the Risks and Rewards section, soon.

Talking about Control, we own the product and establish ourselves as a brand. If we are able to sell well, no wonder, you will observe people searching your products with your brand name.

Additionally, having The Control over your private label product means you can strengthen the control at the next level by having your own patent, trademark and universal product code (UPC). Not to forget, you control the production and supply as well.

Say, you want to expand to further avenues like selling as a wholesaler to other online retailers or brick and mortar shops, go ahead, who can stop you?

You want to expand to multiple continents? No worries, talk to your supplier, increase the units at the next production cycle and send inventory to new marketplaces.

back to top


Usually we find differences in opinion due to the way we look at a problem and solution towards it, based upon our own experience. That is why, if you are applying any learned method, the first & foremost thing is to acquire the mindset.


We have to put on the trader’s cap.


Usually with $25,000, you can dive into any smaller niche with complete peace of mind. Otherwise, some people start with just $5,000 as well.


A trader could be anything, but would not be an emotional soul as far as products are concerned. You must hold yourself selling mobile covers, just because they are being used by everyone so you’ve assumed, you will also make a fortune.


I advocate the idea of copying products rather than innovating new ones.

The reason is that innovation requires extensive Research & Development (R&D) and still we will remain unsure about whether our product will be a buyer’s choice or not.

Will I be able to sell the product I choose? The answer is Yes! If and only if, you’ve fulfilled product viability criteria and copied the product instead of innovating it.

back to top


Bird’s eye view Private Label Product lifecycle is as follows;

  1. Product Research
  2. Sourcing
  3. Branding
  4. Content Creation
  5. Intellectual Property (if not going with Amazon IP Accelerator program)
  6. Pre-Launch
  7. Launching
  8. Ranking

back to top


Goal is to find a viable product that fulfill our criteria;

  • Require less customer support. That is why we don’t go into clothing, electronics and a like categories
  • Have less returns rate. For instance fragile items, they could broke before buyer receive
  • Not seasonal or trendy
  • No copyright or patent infringement
  • Not saturated or having barrier to entry
  • Within your budget
  • And a couple more


Goal is to settle on at least 25-30% profit margins that fulfill our criteria;

  • Enhance quality of product without losing profit margins
  • Shipping cost to desired Amazon FBA Warehouse is within budget
  • Inspection can be done easily and reliably


Goal is to be at the desired Top-3 positions in your niche, quickly. Launch is referred to the first few (upto 15) days, where we distribute giveaways and establish our sales history at Amazon. Gone are the days, when sellers used to list the product and start getting sales without any effort. List & Pray don’t work anymore.


Goal is to sustain the Top-3 gained position for the life of the product.

back to top


Like every business, selling private label products over Amazon has risks as well. We can mitigate the risk, but we can’t just completely get rid of them. Risk will remain there.


You get patent or copyright infringement.

Due diligence: Get your patent check from multiple sources, prior even placing order

Solution: Unfortunately there is none. All you will need is to recall your inventory and try to liquidate somewhere.


When all or most of the Top-10 sellers start decreasing their prices, to get maximum sales, we will say, price war is on.

Solution: Wait & watch, let their anger settle. We can’t do much here. Specially, if sellers are Chinese, we would not be able to lower the prices at one point.


Sometimes, due to change in sub-category or something, your product will lose its position overnight.

Solution: Re-rank your product. You will need to invest money again.


It’s a thing to handle exponential growth. Amazon releases payments every 15th day in a month  . If your supplier has 30 days production time and you are shipping items via ocean, it could take at least 2-3 months for your inventory to be available in your Amazon account. Even if you use air-shipping, it will take at least 1.5 to 2 months for your inventory to reach Amazon warehouse. On top of this, your exponential growth will require an influx (from your pockets) to fulfill demand at Amazon and keeping cash flow cycle at these three points (a) supplier (b) ocean (c) Amazon warehouse. If you are unable to meet inventory requirements, your product ranking will suffer and going out of stock, again & again will hurt your overall business and Amazon account too.


Amazon is a buyer centric marketplace, that is why they have to enforce strict rules & regulations over sellers to keep their quality up. Sometimes even a slightest mistake could lead to losing your account.

Solution: Try your level best to get back an account. Or recall your inventory. Arrange a new account and send inventory to this newer account. This may require you to launch your product again.


Though we’ve covered this already in Growth Handling still, some time due to shortage of funds or errors in inventory planning we can be still at verge of being Out of Stock. Let this not happen frequently, otherwise, Amazon would be fed up with you and it will affect your account’s overall health.

back to top


Unlike what Hollywood tells us, no one is a complete villain in real life. Same goes here, if there are risks then there are rewards as well.


The ultimate goal of business. The least possible reward is you will be making profits every month, at least 20%.


If you enter into a fertile niche, your profit and sales will increase by time. If more buyers are leaving positive reviews on your product, tighten your seat belt to earn more.


Almost every product has a few months in a year, where they make more sales. Shopping speeds like Chrismtas, Amazon Prime Day, Halloween, New Year, Mother’s day, Father’s day and the like are there as well.


You can Google optimize your website for small retailers who want to have discounted deals in bulk at wholesale rate.


Once you’ve established yourself in your primary marketplace and you still have investment, you must try more Amazon marketplaces in different countries.


Add more viable products to your product line. Store products result in more sales when your brand is being liked by the buyer-base.


If you’ve outstanding sales in a niche and ranked within Top-3 sweet positions, you can list your item on sites like EmpireFlipper to flip as an asset for a multiplier of 12 or 24 or 36 months profit. If you are making $2,000 per month on average consistently since last 1-2 years, who knows, you can sell your product listing for $72,000

Make sure you read the Sellers FAQ at EmpireFlipper.

back to top


If you have built an interest in Amazon FBA Private Label business and wondering what are some options to kickstart, then you will need to identify which ROLE you want to play.


Even if you have multi-million to invest, as a rule of thumb I would suggest investing small, test the waters first.

Bring some talented professionals (let’s refer to him as Director) who have experience with Private Label Product Launches on equity basis. Giving some fixed salary until the venture receives its Initial Investment from income will keep your Director’s morale up.

You will need to hunt the right resource. You can ask some mentor to point you to some talented resource who took his/her course. Or keep an eye over talented professionals over social media groups, vet them and try to approach them.


If you want to learn the science & art required yourself and then start this business on your own. My piece of advice, never do it all alone, get under some mentorship.

Since you want to be a pilot yourself, you would still need helping hands. You can find tons of talented professionals off upWork, Fiverr and Facebook Amazon related local and international groups.

back to top



  1. Maximum Return on Investment
  2. Enough Profits
  3. Quick Return of Initial Investment
  4. Room for Growth


A product that would give you profits and quick return on investment is your goal here without lots of customer support or negative reviews and low or moderate competition.

Either find a product yourself or hire some professional to do the job.


You can hire some sourcing agent or professional who will do the job for you. People usually start with AliBaba.com to find suppliers.

Approach multiple suppliers, talk to them, get best rates. Shortlist reliable ones. Ask for samples and get them at your place. Hand in hand, you will also buy competitor’s product(s) and evaluate both samples from supplier(s) and competitor’s product.

You must get a patent check by hiring some professional from upWork or Fiverr or some Amazon A-Z service provider marketplace like JungleScout Market.

Once things are sorted out, check if Amazon demands any certification for the product.

Finally, if everything is good so far, pay 30% to your supplier, prefer Trade Assurance if you are dealing over AliBaba to be on the safe side.

It’s always recommended to hire a professional inspection company (like Qima or Pinji etc) once your production is completed.

You will also find reliable and dependable freight forwarders, who will reliably ship your inventory from supplier to Amazon FBA Warehouse.


This is when you would work on;

  • Branding (logo, packaging etc)
  • Content Writing
  • Website Development
  • Product Professional Photography and Graphics Designing
  • Shortlisting attorney for trademark. I recommend using Amazon’s IP Accelerator Program. Prefer hiring attorney once you make few sales during Launch phase to save some additional bucks


Gone are the days when people used to just list the item and start receiving orders. Now if you have a solid Launch plan, you will be able to get on top of the search results, otherwise, it will just list and pray, which unfortunately don’t work anymore.

Few effective methods are;

  • Giveaways
  • Discount Coupons
  • Amazon Sponsored Advertisement – PPC
  • And few more white, grey & black hat methods

You must hire professionals who are expert in the subject.


Once after you gain the top position, your next battlefield is to sustain the position. This will be an operational activity and would span throughout the life of your product over Amazon.

Following are some activities in this phase;

  • Keyword ranking upkeep
  • Trying different price-points
  • Maintaining life-cycle of ranking
    • Profits > ROI > Sales > BSR
  • Initial first few months from 7 to 12, the goal must be to get returns on Initial Investment and start taking profits to home
  • Keep an eye over Growth. Your sales will increase with increase in your reviews
  • Handling listing and account suspension, always keep backups
  • Plan your inventory well ahead of time. Keep an eye over Niche Sales and Price Changes and project sales based upon past sales

Again, I would recommend hire a professional for the task.

back to top


This is the person who would bring his/her skills, expertise & knowledge on the table and spend time on building and growing your business. S/he will demand some salary or fixed price service cost.

If S/he is Director s/he will also require equity in monthly profit and if business will flip as an asset someday.


  • Notice the regular contributors over Facebook Groups specific to Amazon Sellers. 
  • Compile list of professionals
  • Find opinion from multiple contributors
  • Short list
  • Give a small task and vet or maybe invest small, at first


  • Amazon specific local and international Facebook groups
  • Recommendation from professional trainers
  • upWork
  • Fiverr


  • Grip over technicalities over whole Amazon FBA Private Label business workflow
  • Have experience of Private Label Product launch over Amazon
  • Bonus if one or more past launches were successful
  • Looking for long term relationships
  • Ability to delegate task
  • Entrepreneurial Skills
  • Communication Skills
  • Growth Mindset


  • Have grip over most of the workflow of Amazon FBA Private Label
  • Looking for long term work
  • Reliable & Dependable
  • Communication skills

back to top


Expenses vary based upon product, niche, competition and depth of your pockets.


  • Applying for Amazon’s IP Accelerator for Trademark – $900
  • Samples & Competitor’s product evaluation – upto $500
  • Photography & Graphics Designing – upto $400
  • Production Quality Inspection – upto $350
  • Branding & Packaging – upto $200
  • Website Development – upto $300
  • Content Writing – upto $300
  • Hiring Talent – upto$400/mo


  • Total Inventory Landing Cost (from supplier to Amazon warehouse)
  • Launch Strategy and number of Giveaways
  • Ranking overheads
  • PPC overheads

back to top


By now, you have a fair understanding of this business model. If you have any questions, ask on Amazon Sellers related Facebook groups and make an informed decision if this is the best avenue for you to generate wealth.

All the best!

back to top

Download PDF
Wealth Creation with Multiplication using Amazon FBA Private Label as Tool (70 downloads)

Copyrights: All rights reserved to teemya.com. You are allowed to share but link back to original post and credit to author.

Love Triangle of Cashflow Cycle in Private Label

Amazon FBA Private Label – Cashflow Cycle

Private Label business on Amazon FBA have its own cashflow cycle. The amount we invest over inventory, require a flow at three points that is Factory, Transit & Warehouse. Once this cycle is complete, we are almost good for the longer period of time. The money invested at these three places will never come back to us for the life of product.

Cycle of Cashflow

  • Factory/Manufacturer/Supplier
  • Transit – Air/Ocean
  • Amazon FBA Warehouse


Shopping spree during Christmas, Easter, Black Friday, Cyber Monday, Amazon Prime Day etc we need inventory planning a head of time. If this is your first private label business over Amazon, you will need to find past history of your competitors during season with respect to high relevancy to item you are selling and around your organic keywords position in Search Results

Sales hike some niches, have their own increased sales at random month of year. Just like shopping spree, we need to take care of high sales months of our niche, for same inventory planning

Inventory Performance Index (IPI) is a metric at Amazon, that tells, if your inventory is becoming burden over Amazon, as you are not able to sell enough items? Therefore, while planning your inventory, take really good care of IPI score.

Amazon’s Storage Fees applies when you are unable to sell enough items for a given period of time. In order to keep our profits, we need to take really good care of stock level.

Minimum Order Quantity – MOQ

If production time of our item is a month and we are sending inventory via sea shipping, then usually it takes anywhere from 60 to 70 days for your inventory to reach Amazon FBA.

If you want to go slow, you will either order 2-month inventory at once or something, point is, you want to never go out of stock.

Proposed Solution

What if you order three months inventory? you will get good rates from supplier, you will have your inventory ready well ahead of time, no?

Pre Requisites:

  • You’ve confidence over your product’s success
  • You’ve estimated your inventory intelligently
  • Enough capital to buy 3 months inventory

So, if you meet the pre-requisites and order three months inventory in advance, you will be in good hands. All you will need is to order for 4th month, at second month of your launch. The fun part is that, you will not need to influx to order this 4th month’s inventory, rather, you will order from your earnings of 1st month. Thus a cycle of cashflow is maintained.

This three months inventory will definitely increase your investment, but you will be calm seas and enjoy smooth cashflow, down the road.

All the best!

Amazon FBA Private Label Product Launch Plan – Gantt Chart

Amazon FBA Private Label Workflow

Launching Private Label Product over Amazon, is not complex, yet, if we have some handy plan in hand, we not only keep track of our progress, but we will never miss an important step.


This phase will include product hunting and research. The intent will be to find a viable product.

  • Product Hunting & Research: Find viable product
  • Landing Cost Calculation: Product unit cost + Transaction Charges + Shipping Cost + Transaction Charges, per unit
  • Patent Check: Check patent yourself or hire someone off fiverr
  • Create Dummy Listing: Create a dummy listing over Amazon and confirm if there are any certificate requirements
  • Order Analysis: MoQ & Launch Cost: Find out what will be your initial inventory. We will calculate total launch cost here as well


We will contact our manufacturer/supplier during this phase and find if the product is according to our needs.

  • Shortlist Supplier: Find and communicate with few suppliers/manufacturers and shortlist them
  • Shortlist Freight Forwarders: Find and communicate with few freight forwarders (FF) and shortlist cost-effective yet dependable FFs
  • Call for Samples: Get samples delivered to your place
  • Call for Competitor’s product: Get items delivered to your doorstep
  • Evaluate Samples: Have samples and competitor’s item in hand, use, abuse and try to find quality & durability
  • Place Order: Once you are certain with the samples, place your order with supplier
  • Production: Start to end of Production
  • Inspection: Quality check of prepared inventory
  • Shipment: Picking up items from factory/port to Amazon FBA


This will go in parallel with sourcing phase.

  • Brand name: Get unique brand name, check if its not already registered over trademark registry
  • Logo Design: Get unique logo design that you can trademark down the road
  • Packaging Design: Make sure the packaging size/weight is within Amazon’s recommended specs
  • Website Setup: Prepare professional looking website


We will work on Product Listing over Amazon

  • Content Writing: Listing: Zero tolerance policy over quality of content
  • Photography: Get professional photography done
  • EBC: If you have plans for acquiring Brand Registry


We will try to cover ourselves by applying for trademark & patent.

  • Trademark Registration
  • Patent Registration


Different people use different launch strategies. Following example shows, when we want to run multiple launch strategies

  • Facebook Ads Manager & Page Setup
  • ManyChat Setup & Inegration with FB Page
  • FB Ad Setup
  • Rebate Key Setup
  • Launchpad setup

Download Free Private Product Launch template

  • Download to your computer |OR|
  • Copy the Google Spreadsheet template into your Google Drive

All the very best with your Private Label product launch.

Amazon Best Seller Rank (BSR) Explained

The only publicly visible metric of product performance by Amazon is Best Seller Rank associated with each product or its variation, in a particular category.

BSR on Product Detail page

How does BSR is calculated? I guess very few people at Amazon’s core development team would know better. Since Amazon never published any detailed document including all the factors effecting BSR, Amazon sellers always have guess, assumptions and estimations. Moreover these assumptions are result of their own experience from product ranking and observing BSR dance or technical analysis.

If BSR number is higher, it means, sales are low and if BSR is smaller number, it means sales are increased.

BSR & Keyword Ranking

BSR, for sure is a function of sales or no sales. When an item is listed and there is no sales, the BSR will never be displayed, for obvious reason.

BSR & Keyword Ranking

As depicted in above image, when you start, you will have no (or undefined) BSR, for obvious reason that, no item is sold, so far.

First order, you will have some big BSR jump. Primarily, it seems like, the jump height and distance will depend upon, how many sellers have made 1 sale in last X days. Plus the quality of sales will effect how much keyword ranking will improve.

At second order, Amazon will decrease your BSR (improved), how much? there will be couple of factors, including but not limited to just your sales but your competition as well. The keyword ranking will improve, you will move up depending upon, how many sales your competition made in last X days on same keyword.


Following are some main factors that contribute towards change in BSR;

  • Your sales or no sales & your sales history
  • Sales or no sales & sales history of your competition
  • Your or your competitor’s sales momentum
  • Quality of sales, during search did user came to your listing from Storefront page or search result page. The purchase was from Gift Card, the buyer was Prime or not etc
  • Number of returns and their types
  • Negative or Positive Reviews
  • Sales of other products in your main and sub categories
  • Time of day & day of week
  • Shopping Spree
  • Out of Stock shoots your BSR

Technical Analysis

Example #1

Following is a graph using Helium 10’s Chrome extension. The product is best seller in one of its sub category.

1st Organic Rank Product

The blue line is Selling Price, while pinkish is BSR. Notice the high spikes in the start. Notice down the road, the BSR got improved.

Example #2

Now look at this item, ranked at last of page 7. Notice how many fluctuations are there and BSR is not getting stable.

To me, seems like its images and listing content are not perfect and its not ranked over main keyword.

7th Page on Search Result, last organic product


Instead of worrying about your BSR, you should focus on factors effecting it

  • Rank on more keywords
  • Keep Sales Velocity & its Momentum up
  • Better have dispose-off return handling or recall them to some 3rd party warehouse
  • Keep your Review Ratings up. Do follow up with every review regardless of its ratings. Prove you care & respect your buyer’s opinion

Amazon PPC Basic

Amazon PPC Basic - Teemya

Amazon Pay Per Click helps you increase sales velocity, keep sales momentum or increase your profits. Prior starting your PPC, you need to understand not just Advertising screen under Amazon Seller Central, but core concepts behind.

Here are some key points;

  • Sponsored Ad Types
  • Campaign Types
  • Keyword Targeting
  • Search Terms
  • Negative Keywords
  • Product listing content
  • Psychological influencers
  • Profits
  • Campaign Budget and Bid

Sponsored Ad Types

Consider them as Sweet Spots. Definitely, Amazon made those spots, premium for a reason. Therefore, we will use them to achieve our goals.

  • Search Result Page
    • Brand Headline ASIN (top & bottom)
    • Sponsored Product (top, middle & bottom)
  • Product Detail Page
    • Brand Ad (below Bullet Points)
    • Product Display Ad (below Buy Box)
    • Sponsored Product Strip (above review section)

There are few more pages where Amazon display sponsored products like Lightning Deals page.

Campaign Types

There are two types of campaigns, based upon Goals, we use each or both types of campaigns.

  • Automatic Campaign: Let Amazon find keywords for you
  • Manual Campaign: Dictate Amazon with your own keywords.

Keyword Targeting

The Keyword Targeting define which types of search terms are acceptable. The use depend upon your goal.

  • Broad
  • Phrase
  • Exact

Keyword: mini refrigerator

Types of Keyword Targeting

Regardless of targeting type single/plural, slight-misspelling, helper words like “for” are ignored.

In Automatic Campaigns, we would not provide Keyword Targeting since we do not provide keywords to target and leave everything on Amazon’s algorithm.

Search Terms

These are the words or phrases typed or selected (auto-suggest) by user. Depending upon their type of Keyword Targeting, our product listing may appear in front of them.

These search terms will appear depending upon Broad, Phrase or Exact match keyword targeting. In Automatic Campaign, since we do not provide any keyword, we will have random and wild search terms, regardless of keyword targeting.

Negative Keywords

The keywords, that do not achieve our goal(s) and established as non-worthy after 7 days, its wise to mark them as Negative Keywords.

We can put a keyword as negative at Campaign or Ad set levels.

The negative keyword will also have keyword targeting.

Generally, its a good practice to put keyword as negative in the source campaign or ad set prior moving to next.

Product listing content

The product listing content play an important role. Specifically, automatic campaign decides keywords from main/sub category, title, bullet points, description, backend search & platinum terms and product specifics. Some sellers believe keywords in reviews and EBC/A+ Content also play vital role in automatic keyword discovery.

Psychological influencers

Amazon badges influences buyer decision be it Best Seller or Amazon Choice or New Arrival. The digital coupon and Positive review rating 4.7+ will also put a positive impact on your buyer’s buying decision.


Particularly in Amazon PPC, profits is not always limited to just monetary value. Impressions, clicks, click-thru-rate (CTR), Conversion Rate (RA), sales etc will aide your decision regarding keeping the keyword or stop it.

ACoS – Advertisement Cost of Advertisement

This is a percentile metric use to find performance of ad spend over Amazon PPC.

ACoS = Ad Spend ÷ Ad Revenue x 100

Suppose, it cost $25 as spending over ad to get orders worth $100. We will find our ACoS as follows;
ACoS = ( $25 ÷ $100 ) x 100
ACoS = 0.25 x 100
ACoS = 25%

What ACoS is good?

Its relative to your goal, but generally, your profit is your target ACoS. This is how you will identify, if your spendings are more.

Campaign Budget and Bid

I would say, start with minimum. Like if your budget is just $10, start just 1 automatic campaign with $10 budget. However, if you have $30 budget, then start 3 automatic campaign. If you want to start manual campaign with your own keywords, then distribute the initial budget into all of your campaigns, $10 each.

Keyword bid should be little over suggested big, because most of the people will be doing the same. In order to be ahead of competition, you should apply $0.02 to $0.03 more than suggested bid.

Amazon Advertising Interface

Get familiar yourself with Amazon Advertising Interface. Play around.

Whats next?

Once you are equipped with basic knowledge you should move to identify your expectations with Amazon PPC, plan your goals.


Amazon PPC Goals

Amazon PPC Goals
Amazon PPC Goals

Lets be honest, Amazon Pay Per Click is one legitimate and effective way to rank keywords of your newly listed. Yeah, I agree, it takes time, but hey, hustles are fun, no?

The successful PPC Campaign is NOT just about, if you are earning profits as in monetary term. The success is when you are achieving your goals. Don’t get me wrong, the ultimate goal remain profits, but, its relative and we reach there, one step at a time.


Your goals literally define if your PPC is doing good or not.

You can look at your goals from any perspectives, but since its all about Keywords and Search Terms, I would set my goals depending upon my keywords.

  • Discovery
  • Scalability
  • Profitability


To me, the PPC starts with Discovery goal where, we will just focus on identification of our keywords. To aide, I will use both Automatic and Manual Campaigns

Either create just single Automatic campaign with $100 budget or create 10 campaigns with $10 budget each. Multiple automatic campaigns will put Amazon at work, really. After a week or so, you will have winner and looser automatic campaigns. You will be free to keep or remove any number of campaigns.

Since Amazon algorithm in reality is Artificial Intelligence based upon whatever information, we’ve provided to Amazon. Its completely natural to not stuff your content with all keywords or miss the important keywords.

Manual campaign will be filled with hand picked keywords. Thats how you take control of your fate in your hands and rather dictate Amazon to find if our researched keywords are worthy.

Since Automatic Campaigns are suppose to work during whole life of a product, we should never stop them.

Once you see good number of keywords after 7 days, you will move them to another Manual Campaign’s adset as phrase. Its upto you, if you plan to move as broad, but definitely you will not move them as exact at this stage.


It can be either separate Manual Campaign with its own single adset or one adset in a Manual Campaign. Some expert suggest to have keyword niche related campaign or adset.

The goal is to nurture good keywords separately. This is the stage where we will scale up keyword, we will try fine tuning keyword targeting, bid up/down, campaign budget testing, adding keyword to our content etc.

Moved keywords from Discovery Campaigns will be either broad or phrase, depending upon your strategy.

Once we find, the keyword is scaled up and no further optimization can be applied, we will move it to Profitability Campaign.

Same as in Discovery Campaign, we should move the keyword, means, put as negative keyword with Right match type in source campaign or ad set.


It is the Ultimate Goal of whole Amazon PPC drill and bottom line.It can be either another adset in existing Manual Campaign or single adset in its own Campaign.

Similar to Scalability, you have liberty, put proven keywords with lowest possible ACoS in last few weeks.

These can be phrase or exact, but chances are high, most of the keywords will be Exact match type.

Like always, never forget to put same keyword with right match-type as Negative keyword in previous adset or campaign.


Watch closely, keep an eye over keywords and their performance and based upon your goal, add or remove keywords.

Amazon PPC, will ideally go on and on until your item is live and you’ve intentions to keep selling. PPC Discovery, Scalability and Profitability are more like operations than time-specific project.

Best of luck with your PPC hustle.

P.S: Feel free to post your questions in comments. Or you can always contact me over teemya.com for free advise and tips.

Open Letter to ScrapingHub for Evaluating Trial Project

Who is ScrapingHub and what they do?
ScrapingHub is the company behind Scrapy framework. The location of candidate determines who is going to be full time employee or contract basis, most of employees work remotely. Their job listing page covers all open positions.

Regardless of reservations with ScrapingHub, I do appreciate them for following;

  • Scrapy framework is amazing
  • ScrapingHub Cloud services are really good
  • Providing reason, why you’ve rejected the candidate
  • Prompt communications during whole process

Open Letter to ScrapingHub

I applied to your job ad for the Python Developer position. Within a week of applying online, I received an email that I’ve to submit a trial project. I completed the project at weekend and submitted on next working day. Within a week I received reply from my point of contact that “Trial does not meet the required criteria to progress to the next stage of our hiring process on this occasion.” One of my friend applied at their job ad and he was informed that his code was not PEP8 compliant.

Review from ScrapingHub of my Trial Project submission

When dealing with data that’s structured hierarchically it is best if the call structure follows, because that makes understanding and maintenance easier. Single methods/functions with complex conditionals are difficult to understand and debug. The number of items in the job’s output is below the known total, and field coverage is 100%, which is against requirements; taking more time to review the results would have helped with that.

My reservations

  • When dealing with data that’s structured hierarchically it is best if the call structure follows: Completely agree. However I tried to google atleast one script that will help me here, but was not able to find. I assumed it will be forgiven due to extensive comments 🙂 But I take complete responsibility here
  • Single methods/functions with complex conditionals are difficult to understand and debug.: Agreed, that is why I mentioned this already in the assumptions file and as inline-comments in the spider itself. I did distributed logic in the pipelines classes for most of the data filtering. Did you guys checked it? While I was googling, I find a git hub bug page over Scrapy project where it was recommended to not send response object in Pipeline class I note it down in assumptions file too that is the reason image was filtered in spider class
  • The number of items in the job’s output is below the known total: That could be only known to you guys becuase you’ve the database and you guys have setup the website, it was not mentioned within html anywhere. First thing, in order to know the total-number of records I’ve to first run the spider to collect whole data. Secondly, the sample website had individual items within multiple categories. Third, perhaps you guys forgot, it was a test project that usually completed in 9-10 hours according to you guys and you guys already mentioned if it takes more than 16 hours, the candidate should stop and submit whatever he has. I completed the trial project within 10 hours, running multiple times (each run could take upto 10 minutes) locally and on ScrapingHub Cloud (which has limited number of Free credits)
  • field coverage is 100%, which is against requirements: First of all, what is field coverage? and No, it is not mentioned in the requirements as-is, do you guys want me to put that requirements public?
  • taking more time to review the results would have helped with that.: Alright, then say it, modify your requirements so that it clearly mentions that for a non-paid (you guys already mentioned this) put as many as hours possible to find complete results. For your information, each execution of result takes upto 10 minutes. I ran the spider multiple times with -l ERROR to see if result is complete, I submitted the project only when it has no error

Trial Acceptance Suggestions
If you guys are sincerely looking for a resource, here are my suggestions;

  • Add Best Practices section under Scrapy.org’s documentation section
  • Its good that you have requirements to submit assumptions file, do read it as well
  • Do not say that on average it takes 9-10 hours to complete the project, specially to a person who is going to write Scrapy spider code for the first
  • The maximum 16 (or 20) hours limit do not work, clearly mention that you’re expecting a true Scrapy spider comparable to one written by your full time developer who have spent years with you guys. This will help those who are hustler and could write finest piece of code
  • After submission of trial project, if you guys think candidate can improve or willing to, give a choice to either spend more time to improve the code quality of trial project (non paid) or just let it go

General Suggestions

  • If your hiring process has to reject someone based upon their age or geographical location, atleast do not waste their time, do not reply at all like rest or say it loud in email
  • Clearly mention in which Geographical Locations you are hiring for a full time or on-going contract job. Reference ScrapingHub reviews at Glassdoor

Skype Broadcast Message Tool – Replacement of Babel Fish

SkyMass is a message broadcast tool that sends message to your Skype contact list. Since after the Babel Fish stopped working and specially after the launch of Skype ver8, we’ve been strugling to find a tool. When we were not able to find one, we built one for ourself.


  • Pause or Resume broadcast
  • JSON Formatted config file will store your Skype credentials, message and other settings
  • Test before you start your broadcast campaign
  • If your broadcast fails during run, upon restarting it will continue after the contact, last message has been sent to


  • Export your Skype contact list from Skype’s web interface
  • Setup your config.json file
  • Run SkyMass as Administrator


  • Unzip skymass.zip anywhere on your computer
  • Make sure config.json & contacts.csv files, exist within same directory where skymass.exe resides
  • If you want, set “testing”: “true” in config.json file

config.json Explained

	"username": "YOUR_SKYPE_USERNAME",
	"password": "YOUR_SKYPE_PASSWORD",
	"contact_csv_file": "contacts.csv",
	"refresh_report_file": false,
	"testing": true,
	"wait_for_skype_open": 290,
  1. Enter your Skype Username, make sure its enclosed with double quotes (“) without any space
  2. Enter your Skype Password, make sure its enclosed with double quotes (“) without any space
  3. contact_csv_file: Make sure your Exported contact (csv) file name match here
  4. message: Message you want to broadcast
  5. refresh_report_file: If you want to empty existing-contact-message file then set it as true. It will cause sending message again and again, in case of restarting SkyMass software. Its better to set it as false, this way you would not be spaming your contact with same message agian & again
  6. testing: If you want to first test the software, you should set it as true, this way it will run software but will never send message to your contacts
  7. wait_for_skype_open: If Skymass is unable to start Skype, check logs and increase this timer if required
  8. wait_for_login: If your skype hangs after login due to very huge contact list, increase it accordingly


  • This program search for Skype, make sure no other window on the computer is named Skype.
  • This program works with active Skype window, so you should run this program on a machine which can be dedicated for this purpose
  • During run do not try to use the computer, otherwise this software may break and might click controls other than Skype
  • Use this software on your own responsibility, we could never be held for any loss of data or software/hardware failures


version 1.1

  • Delays while opening Skype & after login is now configurable

version 1.0

  • Initial Release

Automate Skype Login using AutoIt

Since Microsoft laucnhed Skype ver8.23.0.10, it was not appreciated by the community, primarily due to its user-interface and do not respect what Skype user want. Some of these people criticize Microsoft when they acquired GitHub, because they suspect Microsoft will do the same with GitHub as what they did to Skype.

Major Changes in Skype 8

  • From AutoIt automation point of view, previously we were logging into Skype using _IEAttach() function while now we login using _UIA_getFirstObjectOfElement found within a user-defined AutoIt Library IUIAutomation MS framework
  • Another significant difference is that now there is no way to export your contacts, nor they are stored in c:\Users\WIN_USERNAME\AppData\Roaming\Skype\SKYPE_USERNAME\main.db any longer. However you can export your contacts only if you login to their web-interface.
  • The third change is that now Skype program contian within Microoft directory instead of Skype’s own directory, like C:\Program Files (x86)\Microsoft\Skype for Desktop\Skype.exe

Pre-requisites to automate Skype Login

Skype Login Automation AutoIt Script

#include "UIAWrappers.au3"
; #INDEX# =======================================================================================================================
; Title .........: Skype Login Automation
; AutoIt Version : 1.0
; Language ......: English
; Description ...: Login to Skype ver
; Author ........: Ahmed Shaikh Memon 
; Requirements...: AutoIt v3.3.12, Developed/Tested on Windows 7 Ultimate SP 1
; ===============================================================================================================================
; #CONSTANTS# ===================================================================================================================
Global Const $cDocument ="controltype:=Document"
; ===============================================================================================================================
; #LOCAL VARIABLES# ============================================================================================================
Local $Username	= "YOUR_SKYPE_USERNAME"
Local $Password	= "YOUR_SKYPE_PASSWORD"
; ===============================================================================================================================
; Start Skype
Local $ProgramFileDir
Switch @OSArch
	Case "X32"
		$ProgramFileDir = "Program Files"
	Case "X64"
		$ProgramFileDir = "Program Files (x86)"
$ProgramFileDir = @HomeDrive & "\" & $ProgramFileDir
Run($ProgramFileDir & "\Microsoft\Skype for Desktop\Skype.exe")
Local $bIsLoggedIn = False
; Is Skype running?
If Not WinExists("[Class:Chrome_WidgetWin_1]") Then
	ConsoleWrite("Unable to find Skype")
; Get Skype window object
Local $oChrome = _UIA_getFirstObjectOfElement($UIA_oDesktop,"class:=Chrome_WidgetWin_1", $treescope_children)
; Click Proceed to login form
Local $oDocument = _UIA_getFirstObjectOfElement($oChrome, "controltype:=" & $UIA_DocumentControlTypeId, $treescope_subtree)
Local $oAnotherUser = _UIA_getObjectByFindAll($oDocument, "name:=Use another", $treescope_subtree)
If IsObj($oAnotherUser) Then
	$bIsLoggedIn = True
	Local $oSignInWithMS = _UIA_getObjectByFindAll($oDocument, "name:=Sign", $treescope_subtree)
	If IsObj($oSignInWithMS) Then
		$bIsLoggedIn = True
If Not $bIsLoggedIn Then
	ConsoleWrite("Unable to login")
; Write Username
Local $oDocument = _UIA_action($cDocument, "object")
Local $oElement = _UIA_getObjectByFindAll($oDocument, "controltype:=UIA_EditControlTypeId", $treescope_subtree)
If Not IsObj($oElement) Then
	ConsoleWrite("Unable to get Username element")
_UIA_action($oElement, "leftclick")
Send($Username & "{ENTER}")
; Write Password
Local $oDocument = _UIA_action($cDocument, "object")
Local $oElement = _UIA_getObjectByFindAll($oDocument, "controltype:=UIA_EditControlTypeId", $treescope_subtree)
If Not IsObj($oElement) Then
	ConsoleWrite("Unable to get Username element")
_UIA_action($oElement, "leftclick")
Send($Password & "{ENTER}")

Checkout all scripts and compile into your AutoIt.

We can use _UIA_DumpThemAll($oChrome, $treescope_subtree) to find the name or element type id associated with particular control over Skype screen. Download examples zip on IUIAutomation MS framework.


  • controltype:=Document in Global Const $cDocument will be used to get access to document object of Skype’s screens change during login process.
  • $ProgramFileDir points to right 32-bit Program Files on this script host computer.
  • _UIA_getFirstObjectOfElement will give access to Skype screen and will try to find it using UI_Automation class name Chrome_WidgetWin_1. We will find this name using Inspect tool
  • $oDocument will be used to find particular elements on Skype app. We can get list of all available elements UI Automation control-type, name, index etc using _UIA_DumpThemAll($oChrome, $treescope_subtree) or _UIA_DumpThemAll($oDocument, $treescope_subtree)
  • _UIA_getObjectByFindAll($oDocument, "name:=Use another", $treescope_subtree) will return element object (if exist) that has text “Use another account”. This will be displayed on Skype login screen if and only if you’ve previously logged in to Skype and logout. Otherwise it will display Sign in
    Skype 8 Automation - Use Another Account
    Skype 8 Automation – Use Another Account
    Skype 8 Automation - Sign in with Microsoft
    Skype 8 Automation – Sign in with Microsoft
  • _UIA_action($oAnotherUser,"leftclick") will trigger leftclick event on Skype screen, this particular line will click “Use another account” link
  • _UIA_getObjectByFindAll($oDocument, "name:=Sign", $treescope_subtree) is added as fail-safe. This piece of code will work when there is no “Use another account” link is visible on Skype login screen.
  • _UIA_getObjectByFindAll($oDocument, "controltype:=UIA_EditControlTypeId", $treescope_subtree) will return Username text-field element.
  • _UIA_action($oElement, "leftclick")
    Send($Username & "{ENTER}")

    In a perfect world, we could have used just single line;

    _UIA_action($oElement,"setvalue using keys", $Username & "{ENTER}")

    But setvalue using keys work in following sequence;

    1. put element into focus
    2. select all text within element
    3. send text to control using Send()

    setvalue using keys is not working as expected on Skype screen. Because as soon as Send() is called, it looses the focus, thus no text is written to the element in question

    While my 3 lines code above, always work, as I am triggering left-click on element instead of focus

    Personally I dont like using Send(), as it require window to be active, which might disturb control being sent to incorrect window, however it seems like the need until we get better solution.

Best practises implemented

  • Well commented code
  • Use of @OSArch & @HomeDrive to build system architecture specific directory
  • Saved two interactions and instead passed [ENTER] keystroke while writing username & password
  • Used generic condition controltype:=UIA_EditControlTypeId for _UIA_getObjectByFindAll to find username & password elements. Deliberately did not used the name or title to find them

Windows Desktop Applications Automation using AutoIt

Write AutoIt Script Like a ProAutoIt is a language & framework to automate (mainly) Windows GUI application interactions. Though it has its own language but there are wrappers available for Python, C# etc too.

This write up target developers who want to automate Windows Desktop Applications but either do not know the right tool or want to enhance their skills using AutoIt.

Just like with any thing, there is either informed or amateur approach towards solving a problem. Developers who have never written Windows GUI applications will write AutoIt code that will depend too much on interactions with active GUI. While we can get maximum out of AutoIt when we rely less over such interactions. This amateur approach creates real issue when we have to interact with multiple desktop applications within same AutoIt script.

One solution to address these issues is to use _WinAPI_PostMessage function, where applicable. We will primarily use this function to interact with menus, otherwise our interactions may occur on wrong window.


Want to automate Notepad;

  • change display font
  • write some text and
  • save file


GUI Inspection:

In order to control GUI elements we will need the Windows Name, Controls ClassNameNN & Automation Ids of Notepad application. If you dont know how to find them using AutoIt Window Info and Inspect tools, watch this video (enable captions, if you want).

AutoIt Script

#include "WinAPI.au3"
#include "WindowsConstants.au3"
; #INDEX# =======================================================================================================================
; Title .........: Windows Desktop Applications Automation using AutoIt
; AutoIt Version :
; Description ...: Automate Notepad for changing display font, writing some text and save file
; Author(s) .....: Ahmed Shaikh Memon (ahmedshaikhm)
; ===============================================================================================================================
; #VARIABLES# ===================================================================================================================
Local $hWnd, $hWndFont, $hWndSaveAs
Global $sFontName = "Arial"
Global $sFileName = "tutorial_1"
; #CONSTANTS# ===================================================================================================================
Global Const $__IDM_FONT = 33
Global Const $__IDM_SAVE = 3
Global Const $__IDC_FONT_NAME = 1001
; Open Notepad
; Get Notepad's handle
$hWnd = WinGetHandle("[Class:Notepad]")
; Display Font Change
; Click Format > Font menu
_WinAPI_PostMessage($hWnd, $WM_COMMAND, $__IDM_FONT, 0)
; Handle Font window
$hFontWin = WinGetHandle("Font")
; Select display font
ControlSend($hFontWin,"", $__IDC_FONT_NAME, $sFontName)
; Save display font
ControlClick($hFontWin, "", "Button5")
; Write text in Notepad
ControlSend($hWnd, "", "Edit1","This is informed approach towards solving a problem")
; Save file
; Click File > Save menu
_WinAPI_PostMessage($hWnd, $WM_COMMAND, $__IDM_SAVE, 0)
; Enter file name in the file open dialog box
$hWndSaveAs = WinGetHandle("Save As")
ControlSend($hWndSaveAs, "", "Edit1", $sFileName)
; Press the Save button on Save As prompt
ControlClick($hWndSaveAs, "", "Button1")

This code is available as gist here


WinAPI.au3 & WindowsConstants.au3 contain definition or constants that will help to communicate particular command to window without visible interaction.

Global variables $hWnd, $hWndFont & $hWndSaveAs will hold handles of Notepad Application, Font window & Save As windows, respectively. While s in $sFontName & $sFileName indicates that they are string. The advantage of following Naming Convention is that it helps create team factor in individuals thus a guess work can be utilized when multiple people are working on same code. Another benefit is that even if you open code after months, you can instantly recognize why particular variable was used.

$__IDM_FONT & $__IDM_SAVE are Menu IDs for sub-menus Font and Save respectively. We’ve identified them using Inspect tool. $__IDC_FONT_NAME is the Control ID for text field for font name.

Run("notepad.exe") is use to open the Notepad application. We can further improve it by using Run("notepad.exe", "", @SW_MAXIMIZE), this will make sure when Notepad is opened up, its window is minimize by default, specially useful when active window will disturb other application or if the computer (where this AutoIt script is being executed) distracts the person using it.

WinGetHandle() is used so that we can send control actions or PostMessage() to just related Window.

_WinAPI_PostMessage() is a wraper to Win 32 API function PostMessage(), this will click sub-menu item without need to have Notepad activated and visible. The function definition is within WinAPI.au3, that is why it is included at the top. WindowsConstants.au3 contain the associated integer for $WM_COMMAND constant

We’ve used ControlSend() function, with particular window handle, so that control command is executed within specific window, otherwise Send() function just send control command, even if (for any reason) your target window is not visible (minimized or something), the control might execute on wrong target if you use Send().

Sleep() functions are used multiple times, because it take few milliseconds to load or close a window, for example Font & Save As windows open after some milliseconds, same while Font window is getting closed. If we dont use them the automation might not work properly.

Known Limitations:

The code is as brief as possible, there is a room to enhance and make it more professional

  • We can open Notepad minimized
  • The Font & Save As windows will be maximized by-default even if Notepad is opened minimized, therefore we can use WinSetState() function to explicitly minimize these windows
  • If the file already exist, we can add few lines of code to test if its asking for overwriting and then peform the desired action
  • We can close Notepad after the automation using WinClose()
  • If your script is going to be deployed on variety of Windows oeprating system versions and different hardware specification machines, then add checks to see if intended control has successfuly executed. For instance, if I’ve to check if Notepad is really opened after Run("Notepad.exe") I would add something like;
    If Not WinExists($hWnd) Then
    	ConsoleWrite("Notepad is not opened" & @CRLF)

Code Execution

Following animated gif shows what happen when you execute this code

Further Reading

For those who are interested in learning more should visit AutoIt’s official wiki & forum or search over StackOverflow, however make sure that you are coming up with intelligent (specific) question

Checkout Automate Skype Login using AutoIt post for a more practical example.


  1. Matt has pointed towards use of PostMessage() Menu IDs
  2. AutoIt Forums got bunch of helpful guys who respond promptly