Announcement

Collapse
No announcement yet.

Coding a Conversion Tracking Pixel

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • lesliekirk
    replied
    Re: Coding a Conversion Tracking Pixel

    Hi Kyle,

    No worries!!! It looks to me like the code (sans the red) is now working as "I" expect it to. Now I just need to hear back from the tracking company.

    Many, many thanks!
    Leslie

    Leave a comment:


  • KNewbrough
    replied
    Re: Coding a Conversion Tracking Pixel

    Leslie,

    Just remove the red from that example and leave the purple where it is, and you should be good to go. I have no idea what I was thinking when I gave you that first example code, there were several mistakes. Sorry for the confusion!

    Leave a comment:


  • lesliekirk
    replied
    Re: Coding a Conversion Tracking Pixel

    Before I make the second change here is what I have:

    Code:
    <hr><strong>YOUR ORDER </strong>
    <hr>
    <div style="float:left;">
    <table border="0" cellpadding="5" cellspacing="0">
    <mvt:assign name="g.orderSubtotal" value="0" />
      <mvt:foreach iterator="item" array="order:items">
      <mvt:assign name="g.orderSubtotal" value="g.orderSubtotal + l.settings:item:price" />
        <tr>
          <td rowspan="2" align="left" valign="middle">
            <mvt:item name="toolkit" param="prodthumb|imgurl|l.all_settings:item:code" />
              <mvt:if expr="g.imgurl"><a href="&mvt:global:sessionurl;Screen=PROD&Store_Code=&mvta:global:Store_Code;&Product_Code=&mvta:item:code;"><img src="&mvte:global:imgurl;" border="0" height="200"></a>
              </mvt:if> 
          </td>
          <td align="left" valign="top">
            
            <span class="basket-txt">&mvt:item:name;</span><br>
            <mvt:if expr="l.settings:item:upsold"> <span class="basket-txt">(Special Offer)</span><br> </mvt:if>
            <mvt:foreach iterator="option" array="item:options">
            <mvt:assign name="g.orderSubtotal" value="g.orderSubtotal + l.settings:option:price" />
    <mvt:if expr="pos1 EQ 0">
    <mvt:assign name="g.productSKUs" value="g.productSKUs $ l.settings:item:code" />
    <mvt:else>
    <mvt:assign name="g.productSKUs" value="g.productSKUs $ l.settings:item:code $ ','" />
    </mvt:if>
              <mvt:if expr="'c' CIN l.settings:option:attr_code">
                &mvt:option:attr_code;: &mvt:option:opt_code;<br>
              </mvt:if>
              
              <mvt:if expr="'S' CIN l.settings:option:attr_code">
                &mvt:option:attr_code;: &mvt:option:opt_code;<br>
                <script>
    				 document.getElementById('size').style.display ='block';
    				 </script>
                
              </mvt:if>
             </mvt:foreach> 
          </td>
          <td align="left" valign="top">
          <mvt:if expr="l.settings:option:price">
    &mvt:option:formatted_price;
    <mvt:else>
     &mvt:item:formatted_price;
    </mvt:if></td>
        </tr>
        <tr>
          <td colspan="2" align="left" valign="top">&nbsp;</td>
        </tr>
      
      </mvt:foreach>
    </table>
    </div>
    <div style="float:right;">
    <table border="0" cellpadding="5" cellspacing="0">
    <tr>
      <td>SUBTOTAL</td>
    <td>
     <mvt:if expr="l.settings:option:price">
    &mvt:option:formatted_subtotal;
    <mvt:else>
    &mvt:item:formatted_subtotal;
    </mvt:if>
    </td>
    </tr>
    <mvt:foreach iterator="charge" array="order:charges">
    <tr>
      <td>&mvt:charge:descrip;</td>
      <td>&mvt:charge:formatted_disp_amt;</td>
    </tr>
    
    
    </mvt:foreach>
    <tr>
      <td><strong>ORDER TOTAL</strong></td>
      <td><strong>&mvt:order:formatted_total;</strong></td>
    </tr>
    </table>
    
    
    </div>
    <div style="clear:both;"></div>
    and you suggest changing it to

    Code:
    <hr><strong>YOUR ORDER </strong>
    <hr>
    <div style="float:left;">
    <table border="0" cellpadding="5" cellspacing="0">
    <mvt:assign name="g.orderSubtotal" value="0" />
      <mvt:foreach iterator="item" array="order:items">
      <mvt:assign name="g.orderSubtotal" value="g.orderSubtotal + l.settings:item:price" />
      
      <mvt:if expr="g.productSKUs">
      <mvt:assign name="g.productSKUs" value="g.productSKUs $ l.settings:item:code $ ','" />
    <mvt:else>
      <mvt:assign name="g.productSKUs" value="l.settings:item:code $ ','" />
    </mvt:if>
      
        <tr>
          <td rowspan="2" align="left" valign="middle">
            <mvt:item name="toolkit" param="prodthumb|imgurl|l.all_settings:item:code" />
              <mvt:if expr="g.imgurl"><a href="&mvt:global:sessionurl;Screen=PROD&Store_Code=&mvta:global:Store_Code;&Product_Code=&mvta:item:code;"><img src="&mvte:global:imgurl;" border="0" height="200"></a>
              </mvt:if> 
          </td>
          <td align="left" valign="top">
            
            <span class="basket-txt">&mvt:item:name;</span><br>
            <mvt:if expr="l.settings:item:upsold"> <span class="basket-txt">(Special Offer)</span><br> </mvt:if>
            <mvt:foreach iterator="option" array="item:options">
            <mvt:assign name="g.orderSubtotal" value="g.orderSubtotal + l.settings:option:price" />
    <mvt:if expr="pos1 EQ 0">
    <mvt:assign name="g.productSKUs" value="g.productSKUs $ l.settings:item:code" />
    <mvt:else>
    <mvt:assign name="g.productSKUs" value="g.productSKUs $ l.settings:item:code $ ','" />
    </mvt:if>
              <mvt:if expr="'c' CIN l.settings:option:attr_code">
                &mvt:option:attr_code;: &mvt:option:opt_code;<br>
              </mvt:if>
              
              <mvt:if expr="'S' CIN l.settings:option:attr_code">
                &mvt:option:attr_code;: &mvt:option:opt_code;<br>
                <script>
    				 document.getElementById('size').style.display ='block';
    				 </script>
                
              </mvt:if>
             </mvt:foreach> 
          </td>
          <td align="left" valign="top">
          <mvt:if expr="l.settings:option:price">
    &mvt:option:formatted_price;
    <mvt:else>
     &mvt:item:formatted_price;
    </mvt:if></td>
        </tr>
        <tr>
          <td colspan="2" align="left" valign="top">&nbsp;</td>
        </tr>
      
      </mvt:foreach>
    </table>
    </div>
    <div style="float:right;">
    <table border="0" cellpadding="5" cellspacing="0">
    <tr>
      <td>SUBTOTAL</td>
    <td>
     <mvt:if expr="l.settings:option:price">
    &mvt:option:formatted_subtotal;
    <mvt:else>
    &mvt:item:formatted_subtotal;
    </mvt:if>
    </td>
    </tr>
    <mvt:foreach iterator="charge" array="order:charges">
    <tr>
      <td>&mvt:charge:descrip;</td>
      <td>&mvt:charge:formatted_disp_amt;</td>
    </tr>
    
    
    </mvt:foreach>
    <tr>
      <td><strong>ORDER TOTAL</strong></td>
      <td><strong>&mvt:order:formatted_total;</strong></td>
    </tr>
    </table>
    
    
    </div>
    <div style="clear:both;"></div>
    If I add the new change (in purple) will it conflict with the existing (in red)?

    Leave a comment:


  • KNewbrough
    replied
    Re: Coding a Conversion Tracking Pixel

    Interesting. I guess mvt:assign is less flexible than I hoped and fails if the first variable being concatenated is null.

    Try this in place of the red code in my last post:

    Code:
    <mvt:if expr="g.productSKUs">
      <mvt:assign name="g.productSKUs" value="g.productSKUs $ l.settings:item:code $ ','" />
    <mvt:else>
      <mvt:assign name="g.productSKUs" value="l.settings:item:code $ ','" />
    </mvt:if>
    

    Leave a comment:


  • lesliekirk
    replied
    Re: Coding a Conversion Tracking Pixel

    Ohhh, even more interesting, if just one item is ordered the skus is empty
    Code:
    https://www.trackinglink.com/conversion/beacon.gif?adv=retailer_host_name&amt=30&oid=21862&skus=&cur=usd

    Leave a comment:


  • KNewbrough
    replied
    Re: Coding a Conversion Tracking Pixel

    Hi Leslie,

    I'm not sure I'm totally clear on your question but I'll try to explain and rephrase.

    The code added in red would go into the Order Contents items/options foreach loops. It creates a variable (g.orderSubtotal) which adds all item and attribute prices together to give you a subtotal value before taxes, shipping, or other charges are added to the total.

    The g.productSKUs variable, similarly, creates a comma-delimited list of product codes.

    I also made a mistake in my example code for the SKUs so use this instead:

    Code:
    <table><tr class="basket-heading">
    <td class="item-name">Item</td>
    <td class="item-quantity">Qty.</td>
    <td class="item-price">Item Price</td>
    <td class="item-total">Total Price</td>
    </tr>
    <mvt:assign name="g.orderSubtotal" value="0" />
    <mvt:foreach iterator="item" array="order:items">
    <mvt:assign name="g.orderSubtotal" value="g.orderSubtotal + l.settings:item:price" />
    <mvt:assign name="g.productSKUs" value="g.productSKUs $ l.settings:item:code $ ','" />
    <tr>
    <td class="item-name">
    <div class="special-offer"><mvt:if expr="l.settings:item:upsold">(Special Offer)</mvt:if></div>
    <div class="item-name">
    &mvt:item:name; - <span class="item-code">
    &mvt:item:code;
    </span>
    </div>
    </td>
    <td class="item-quantity">
    &mvt:item:quantity;
    </td>
    <td class="item-price">
    &mvt:item:formatted_price;
    </td>
    <td class="item-total">
    &mvt:item:formatted_subtotal;
    </td>
    </tr>
    <mvt:foreach iterator="option" array="item:options">
    <mvt:assign name="g.orderSubtotal" value="g.orderSubtotal + l.settings:option:price" />
    <tr class="item-options">
    <td class="item-name">
    <mvt:if expr="l.settings:option:option_id">
    &mvt:option:attr_code;: &mvt:option:opt_code;
    <mvt:elseif expr="NOT ISNULL l.settings:option:data">
    &mvt:option:attr_code;: &mvt:option:data;
    <mvt:elseif expr="NOT ISNULL l.settings:option:data_long">
    &mvt:option:attr_code;: &mvt:option:data_long;
    <mvt:else>
    &mvt:option:attr_code;
    </mvt:if>
    </td>
    <td class="item-quantity">&nbsp;</td>
    <td class="item-price">
    <mvt:if expr="l.settings:option:price">
    &mvt:option:formatted_price;
    <mvt:else>
    &nbsp;
    </mvt:if>
    </td>
    <td class="item-total">
    <mvt:if expr="l.settings:option:price">
    &mvt:option:formatted_subtotal;
    <mvt:else>
    &nbsp;
    </mvt:if>
    </td>
    </tr>
    </mvt:foreach>
    </mvt:foreach>
    <mvt:foreach iterator="charge" array="order:charges">
    <tr class="basket-charges">
    <td colspan="2">&nbsp;</td>
    <td class="charge-description">
    &mvt:charge:descrip;:
    </td>
    <td class="formatted-charge">
    &mvt:charge:formatted_disp_amt;
    </td>
    </tr>
    </mvt:foreach>
    <tr	id="basket-totals">
    <td colspan="2">&nbsp;</td>
    <td class="total-prompt">
    Total:
    </td>
    <td class="formatted-total">
    &mvt:order:formatted_total;
    </td>
    </tr>
    </table>
    <div class="clear"></div>
    subtotal: &mvt:global:orderSubtotal;
    skus: &mvt:global:productSKUs;

    If the SKUs list can't end in a trailing comma then things get a little more complicated. Let me know whether that's a problem for the pixel.

    Leave a comment:


  • lesliekirk
    replied
    Re: Coding a Conversion Tracking Pixel

    Okay - just did a test with the code from Kyle (and I see that the delimiter was/is a comma). It pulled the subtotal nicely, but only pulled the first product

    Code:
    https://www.trackinglink.com/conversion/beacon.gif?adv=retailer_host_name&amt=43&oid=21861&skus=LOKAI,&cur=usd

    Leave a comment:


  • lesliekirk
    replied
    Re: Coding a Conversion Tracking Pixel

    And what is the delimited that will be used? Just found out
    Multiple skus should be separated by a comma “,”.
    Leslie

    Leave a comment:


  • lesliekirk
    replied
    Re: Coding a Conversion Tracking Pixel

    Kyle,

    Color me confused. The INVC screen (I'm working with) has an Order Contents but I'm thinking I can use this code in that field?

    Leslie

    Leave a comment:


  • KNewbrough
    replied
    Re: Coding a Conversion Tracking Pixel

    There is no variable by default which includes the order's subtitle before tax and shipping. You can create both of the missing variables inside the order contents element like so (new code added to the CSSUI default highlighted in red):

    Code:
    <mvt:if expr="l.settings:basket:empty">
    Your shopping basket is currently empty.
    <p><mvt:item name="cssui_links" param="storefront">Home</mvt:item></p>
    <mvt:exit />
    </mvt:if>
    <table>
        <tr class="basket-heading">
            <td class="item-name">Item</td>
            <td class="item-quantity">Qty.</td>
            <td class="item-price">Item Price</td>
            <td class="item-total">Total Price</td>
        </tr>
    <mvt:assign name="g.orderSubtotal" value="0" />
        <mvt:foreach iterator="item" array="basket:items">
    <mvt:assign name="g.orderSubtotal" value="g.orderSubtotal + l.settings:item:price" />
        <tr>
            <td class="item-name">
                <div class="special-offer"><mvt:if expr="l.settings:item:upsold">(Special Offer)</mvt:if></div>
                <div class="item-name">&mvt:item:name; - 
                <span class="item-code">
                    &mvt:item:code;
                </span>
                </div>
            </td>
            <td class="item-quantity">
                &mvt:item:quantity;
            </td>
            <td class="item-price">&mvt:item:formatted_price;</td>
            <td class="item-total">&mvt:item:formatted_subtotal;</td>
        </tr>
        <mvt:foreach iterator="option" array="item:options">
    <mvt:assign name="g.orderSubtotal" value="g.orderSubtotal + l.settings:option:price" />
    <mvt:if expr="pos1 EQ 0">
    <mvt:assign name="g.productSKUs" value="g.productSKUs $ l.settings:item:code" />
    <mvt:else>
    <mvt:assign name="g.productSKUs" value="g.productSKUs $ l.settings:item:code $ ','" />
    </mvt:if>
        <tr class="item-options">
            <td class="item-name">
                <mvt:if expr="l.settings:option:option_id">
                &mvt:option:attr_code;: &mvt:option:opt_code;
                <mvt:elseif expr="NOT ISNULL l.settings:option:data">
                &mvt:option:attr_code;: &mvt:option:data;
                <mvt:elseif expr="NOT ISNULL l.settings:option:data_long">
                &mvt:option:attr_code;: &mvt:option:data_long;
                <mvt:else>
                &mvt:option:attr_code;
                </mvt:if>
            </td>
            <td class="item-quantity">&nbsp;</td>
            <td class="item-price">
                <mvt:if expr="l.settings:option:price">
                &mvt:option:formatted_price;
                <mvt:else>
                &nbsp;
                </mvt:if>
            </td>
            <td class="item-total">
                <mvt:if expr="l.settings:option:price">
                &mvt:option:formatted_subtotal;
                <mvt:else>
                &nbsp;
                </mvt:if>
            </td>
        </tr>
        </mvt:foreach>
        </mvt:foreach>
        <mvt:foreach iterator="charge" array="basket:charges">
        <tr class="basket-charges">
            <td colspan="2">&nbsp;</td>
            <td class="charge-description">&mvt:charge:descrip;:</td>
            <td class="formatted-charge">&mvt:charge:formatted_disp_amt;</td>
        </tr>
        </mvt:foreach>
        <tr id="basket-totals">
            <td colspan="2">&nbsp;</td>
            <td class="total-prompt">Total:</td>
            <td class="formatted-total">&mvt:basket:formatted_total;</td>
        </tr>
    </table>
    <div class="clear"></div>
    You can then use &mvt:global:orderSubtotal; for the subtotal minus charges, and &mvt:global:productSKUs; for the delimited list of product codes.

    Leave a comment:


  • Bruce - PhosphorMedia
    replied
    Re: Coding a Conversion Tracking Pixel

    subtotal should be the bare value, if not, just use <mvt:assign name="l.thisOrderTotal" value="glosub(l.settings:order:subtotal, '$', '')" />

    For products, just use:

    <mvt:if expr="g.productList">
    <mvt:assign name="g.productList" value="g.productList $ l.settings:item:code $ ','" />
    <mvt:else>
    <mvt:assign name="g.productList" value="g.productList $ l.settings:item:code" />
    </mvt:if>

    then use g.productList in the pixel.

    Leave a comment:


  • lesliekirk
    started a topic Coding a Conversion Tracking Pixel

    Coding a Conversion Tracking Pixel

    Store owner needs to add a Conversion Tracking Pixel to the INVC screen for a service they have signed up for. Not sure if the company has ever worked with Miva Merchant before so I'm trying to figure this out as I go along. Here's what I'm trying to figure out:

    <subtotal> is the subtotal of the order, excluding taxes and shipping.
    <order_id> is your site-specific order id; this can be up to 128 characters long.
    <product_skus> is the list of product skus in the order. Multiple skus should be separated by a comma “,”. Please note that skus containing "/" need to be URL-encoded in order to be supported.
    <order_id> seems easy enough - &mvt:order:id;

    <subtotal> I'm thinking this might be - &mvt:item:subtotal; (it can't include the $)

    <product_skus> - well this one, I'm guess is going to need to have some sort of foreach iterator but how is that going to work for a URL?

    Code:
    <img width="1" height="1" src="https://www.trackingcompany.com/conversion/beacon.gif?adv=<retailer_host_name>&amt=&mvt:item:subtotal;&oid=&mvt:order:id;&skus=<product_skus>&cur=usd">
    Thanks,
    Leslie
Working...
X