The Cost of Goods Sold (COGS) VISTA solution is one of my favorite solutions because it gives context.  As we all know data are basically useless without context and revenue is no exception.  What would you rather have A) $1,000 in revenue or B) $100,000 in revenue?  Ok, I am obviously going to have a twist here. Here is more context, product A, with $1,000 in revenue only costs $1, whereas product B costs $99,999.  I am sure you understand by now that Company A is making more money.   They are netting $999 where Company B is netting $1.  So in conclusion data without context might lead you in the wrong direction.

The Solution(s):

Adding context to data is obviously important but how to do it is not as obvious.  There are three solutions that will solve the problem of getting COGS data into your Omniture reporting.

  • First, you can tag the purchase page with an incrementor event that will hold the COGS of the product. The main problem is a web savvy user will be able to see that information.
  • Second solution, is to tag the purchase page the same way as you would in the first solution, but instead you can tag with an encrypted value. And you can request a VISTA solution to decrypt the encrypted value.
  • The third solution is the COSGS VISTA Solution which will act in the same way as the first and second solution but everything is handled server side. It requires no change to your implementation.

COGS VISTA Solution:

The COGS VISTA Solution is a DB VISTA solution that automates placing an incrementor event into hits with a purchase event.  Let’s talk about what you get after everything is setup.

The below image is an example the Traffic Sources > Search Keywords – All report.

There are three metrics in this report that are not normally available.

  • Cost of Goods – Is the cost of the goods sold where the user searched for a keyword and made a purchase because of it.
  • R – COGS – Is the revenue minus cost of goods sold.  This metric is your basic net profit metric.  You can use this metric to analyze the true income you get from each keyword.
  • Gross Margin Perc – Is the gross margin percentage.  In other words, it is the percentage you are profiting from the keyword.   If you take a look at the example report you can see “pda” has a 73% margin.  That is definitely a search term you want to put more resources into.

Below is a second report SearchCenter > Campaigns.

Again, this report has metrics that are not normally available.  Also, this report only works if you are a SearchCenter customer.

  • ROAS [COGS] – Is your return on ad spend taking into consideration your COGS.  This column will be extremely valuable as you will be given a more holistic view of how your ads are performing. Clients that implement the COGS VISTA solution often find campaigns that are producing negative revenue when they look at the ROAS[COGS] metric.  This metric is calculated as such (Revenue – COGS ) / Keyword Cost.

The two reports pictured above are only a couple reports out of hundreds you can pull that utilize the COGS metrics.  There are simple reports such as the products report, and there are complex reports such as female users who came from a search engine who posted a comment.

If there is one point to remember from this entire post it is this:

The COGS VISTA solution will give you a more complete view for all reports that involve revenue.

What is needed from you:

The COGS solution needs you to produce a table with the product ID and the cost of the product.  This can be done manually and if you have a lot of products or have products that change often then it can be done programmatically.  There are a lot of complex systems out there so it is difficult to judge simplicity, but in my experience with my website  it took me no more than two hours to set up a script that would update the COGS table once a day.   Your engineering department should be able to set up a similar script in a reasonable amount of time.

As always, post your comments or e-mail me at pearcea (at)  It is your comments and e-mails that keep me posting and give me ideas for future posts.

Other posts you might be interested in:


Hi, We are using COGS VISTA rule to process the revenue data. The primary goal of using VISTA is NOT to pass the revenue data over the web. (Ex. s.product = “;id;1;price,”;;) and Vista is able to achieve the goal. But, we have been using the standart event 'purchase' and the default name of that event is 'Revenue' and the Type is 'Currency' The corresonding event used by VISTA is 'event7' named as 'Custom7' and the type again is 'Currency'. Now we need to assign the value of this 'Custom 7' to 'Revenue' so that the current reports will start reading the data from the new VISTA variable and we can stop sending the revenue data over the web. If it is not possible to do this assignment, we will have to change all our current reports to use 'Custom 7' and that will be a painful process, as we have multiple users and multiple reports. Can anyone help us in this regard? Thanks Abhilash

Simon Rumble
Simon Rumble

Yep, been after this one for a long time! For those of us in subscription-based industries (telcos etc) the next step is to post back actual margins on a per-customer basis. Then you can track lifecycle customer value all the way back to customer acquisition.