Well there can be a LOT of variations in how a store is setup. Any store not just Miva Merchant. Since google supports them all... it's up to the coder to work through the google documentation and apply to their own store.
And exactly just what the goals are for tracking can be completely different depending on the website being tracked. It isn't just web retail stores, that use google analytics.
For example:
You might want a goal to be that a person fills in some form and then gets another page... and then does some action.. like watch a video to its completion.
OR if they use a particular pay per click add you placed out there in the www, you might want to track if they used it... just knowing someone got to a page isn't enough.
Or you might want to ask some demographic questions and then see how over time, that person does things in your website.
There are more goals than just checking out.
In a miva store, the checkout can be altered and so it isn't always the Miva default. You might have a 1 page checkout for example. For any type of store, if you want to use completing checkout all the way through the checkout completion or invoice step... you basically just follow through your checkout, grab the urls at each page load.. and then use each one of those urls as step in your 'funnel'. Your final invoice screen is your 'goal'.
IF you've customized google to use 'names' for pages instead of the url (I'll explain why you should in a min)... then you'll have to figure out what those names are and use those instead of the actual urls of your 'steps.
Google tracking can be really simple. OR google tracking can get really complicated. The data you can obtain can be really refined if you start using the customizable feature of the ga.js tracker.
*** I wanted to take a sec and explain why you might want to use the pageTracker.TrackPageView('') to actually name pages. ***
I found in my miva merchant store, that default google analytics didn't give me much information. Since everything looks like the merchant.mvc file is the same 'page' there were a lot of different screens that the customer experiences, that are not actually the same, even though the urls is merchant.mvc. However since ga thought they were the same page, all of those screens were lumped together.
Using the TrackPageView allows setting of a fake page name for different screens.
so... I used store morph to writeout an appropriate line of javascript that sets the pageTracker.TrackPageView depending on what screen including the checkout series of page.
now, in my google analytics I can see if people were looking at a category, product, or a product nested in a category, one of the checkout screens, or even an informational page template that I setup. I believe I got about 98% of the screens they'll see. There might be a few missing.
Note: I am using Ray's tool belt to get around the bug in miva that doesn't allow certain characters before a store morph token. If you have Bill's tool kit, you can use that too. Or I've seen a couple other workaround on this forum too. This just worked for me. TERMS is my own template that I used to put policies and terms for my store on. You might have something else, or not need it at all.
Code:
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-xxxxxx-x");
pageTracker._initData();
<mvt:if expr="(g.screen EQ 'PROD')">
<mvt:item name="ry_toolbelt" param="striphtml|g.codeprod|l.all_settings:product:code" />
<mvt:item name="ry_toolbelt" param="striphtml|g.codecate|l.all_settings:category:code" />
<mvt:item name="ry_toolbelt" param="assign|g.kecode|'pageTracker._trackPageview(' $ asciichar(39) $'/product/' $ g.codecate $ '/' $ g.codeprod $ '.html' $ asciichar(39) $')'" />
&mvt:global:kecode;;
<mvt:elseif expr="(g.screen EQ 'CTGY')">
<mvt:item name="ry_toolbelt" param="striphtml|g.codecate|l.all_settings:category:code" />
<mvt:item name="ry_toolbelt" param="assign|g.kecode|'pageTracker._trackPageview(' $ asciichar(39) $'/category/' $ g.codecate $ '.html' $ asciichar(39) $')'" />
&mvt:global:kecode;;
<mvt:elseif expr="(g.screen EQ 'OINF')">
pageTracker._trackPageview('/checkout/address.html');
<mvt:elseif expr="(g.screen EQ 'OSEL')">
pageTracker._trackPageview('/checkout/shipping.html');
<mvt:elseif expr="(g.screen EQ 'OPAY')">
pageTracker._trackPageview('/checkout/payment.html');
<mvt:elseif expr="(g.screen EQ 'INVC')">
pageTracker._trackPageview('/checkout/order.html');
<mvt:elseif expr="(g.screen EQ 'BASK')">
pageTracker._trackPageview('/checkout/basket.html');
<mvt:elseif expr="(g.screen EQ 'SFNT')">
pageTracker._trackPageview('/store/storefront.html');
<mvt:elseif expr="(g.screen EQ 'TERMS')">
pageTracker._trackPageview('/store/policyterms.html');
<mvt:elseif expr="(g.screen EQ 'SMAP')">
pageTracker._trackPageview('/store/sitemap.html');
<mvt:elseif expr="(g.screen EQ 'ACAD')">
pageTracker._trackPageview('/store/customer_create.html');
<mvt:elseif expr="(g.screen EQ 'ACED')">
pageTracker._trackPageview('/store/customer_edit.html');
<mvt:elseif expr="(g.screen EQ 'BSKE')">
pageTracker._trackPageview('/store/basket_empty.html');
<mvt:elseif expr="(g.screen EQ 'LOGN')">
pageTracker._trackPageview('/store/customer_login.html');
<mvt:elseif expr="(g.screen EQ 'OUS1')">
pageTracker._trackPageview('/checkout/upsell_oneitem.html');
<mvt:elseif expr="(g.screen EQ 'OUSM')">
pageTracker._trackPageview('/checkout/upsell_multiple.html');
<mvt:elseif expr="(g.screen EQ 'PATR')">
pageTracker._trackPageview('/store/product_missing_attrib_&mvta:product:code;.html');
<mvt:elseif expr="(g.screen EQ 'SRCH')">
pageTracker._trackPageview('/store/search.html');
<mvt:else>
pageTracker._trackPageview('');
</mvt:if>
</script>
In the above example using custom page names, if my goal is to track checkout through the invoice. I set the google goal to be
https://mydomain/checkout/order.html
and I set the steps in my funnel to start with the shopping basket page name and so on.
If you browse on the google forums for analytics you'll see that it can be very granular using this.
The trick is to make sure your custom names for screens you care about are unique for each screen. If they aren't, å everything that appears to have the same custom name will be lumped together in google analytics.
Hope that kind of helped.