VP Conversation Tracking is a VirtueMart plugin that helps you track Google Analytics e-commerce conversions and conversations about your Ads from all advertising platforms, such as Google Adwords, Facebook Ads, Twitter Ads, Bing Ads, etc. It also allows you to customise your Thank You page or order confirmation page just the way you want. You can even show the full order details immediately after order confirmation. The plugin is compatible with Joomla! 3, 4, and 5.
Installation
You can download the latest installation packages from our site's download page for VP Conversion Tracking. If you have an older version of Joomla!, VirtueMart, or PHP, please check the compatibility section to find the version of VP Conversion Tracking compatible with your Joomla!, VirtueMart, and PHP versions.
It is a Joomla! System Plugin and can be installed directly through Joomla! Extension Installer. It can also be used to upgrade VP Conversion Tracking. In that case, you must install it without uninstalling the existing plugin.
Uninstallation
You can uninstall the component just like any other Joomla! Plugin. In your site's back-end, go to Extensions Manager, click on Uninstall, select System - VP Conversion Tracking and click on Uninstall. This will completely remove VP Conversion Tracking plugin from your site.
Configuration
Order Confirmation Page

The order confirmation page section allows you to customise your order confirmation page layout.
Select Page
Select the page you want your customers to see after placing an order. Available options are -
- Standard VirtueMart: If you select this, the order confirmation page layout will not change. It will continue using the standard VirtueMart Order Confirmation page, which is controlled by the respective payment plugins.
- Thank You Page (VPCT): If you select this, the VP Conversion Tracking plugin's specially designed Thank You page will appear. The content of this page can be further customised with the following options.
- Order Details: If you select this, the customers are redirected to the order details page immediately after placing the order.
- Custom Menu Item: If you select this, you can redirect the user to a specific menu item when placing an order. You can select the menu item below.
Select Custom Menu Item
This option is displayed when you Select Page as Custom Menu Item. You can assign your desired menu item from the drop-down list.
Related Products Thank You Page (VPCT) Specific Option.
If show, related products of ordered products are displayed on the Thank You page.
Maximum Related Products Thank You Page (VPCT) Specific Option.
Maximum number of related products to be displayed.
Suggested Products Thank You Page (VPCT) Specific Option.
If show, suggested products, i.e. Custom who bought this products also bought this products are displayed on the Thank You page.
Maximum Suggested Products Thank You Page (VPCT) Specific Option.
Maximum number of suggested products to be displayed.
Products Per Row - Desktop Thank You Page (VPCT) Specific Option.
Products per row for large devices like modern desktops. Window width >=1200px.
Products Per Row - Smaller Desktop Thank You Page (VPCT) Specific Option.
Products per row for medium devices like older desktops. Window width >=992px and <1200px.
Products Per Row - Tablet Thank You Page (VPCT) Specific Option.
Products per row for smaller devices like tablets. Window width >=768px and <992px.
Products Per Row - Phone Thank You Page (VPCT) Specific Option.
Products per row for small devices like mobile phones. Window width <768px.
Displayed Price Types Thank You Page (VPCT) Specific Option.
Select price variants to be displayed against the displayed products. The default is the Final Sales Price.
Price Labels Thank You Page (VPCT) Specific Option.
If show, labels of the price variants are displayed.
Google Ecommerce and Google Adwords Conversion Tracking
![]()
In this section, you can set up Google Analytics Tracking, Google Ecommerce Conversion Tracking, and Google Adwords Conversion Tracking. You can either use gtag.js or Google Tag Manager (GTM) for the tracking. It uses the latest Google Analytics 4 (GA4).
Enable Ecommerce Tracking
If yes, Google Analytics Ecommerce Tracking or Google Analytics Enhanced Ecommerce code snippets are added to the site.
Analytics Tracking Method
Select your Google Analytics Tracking method i.e. analytics.js, gtag.js or Google Tag Manager (GTM).
Global Pageview Tracking Installed
Set this yes if your site already uses Global Page View tracking for all pages. If no, the plugin will load Global Page View tracking before initialising ecommerce tracking.
Add Global Pageview Tracking to All Pages
If yes, Global Pageview Tracking codes will be automatically added to all your site pages. We recommend removing the previously added Google Analytics tracking codes from your site and enabling this option to allow the plugin to add the tracking codes in the proper order. This parameter is available only when Global Pageview Tracking Installed is No.
Measurement ID
This option is available only when Global Pageview Tracking Installed is set to No and Analytics Tracking Method is set to gtag.js. You need to enter your Google Analytics Measurement ID.
Analytics GTM Container ID
This option is available only when Global Pageview Tracking Installed is set as No and Analytics Tracking Method is set as Google Tag Manager (GTM). Enter your Google Tag Managers Container ID here.
Track Product View
If yes, the product page view tracking data will be passed to Google Analytics.
Track Add to Cart
If yes, the add-to-cart tracking data will be passed to Google Analytics.
Track Remove from Cart
If yes, the remove-from-cart tracking data will be passed to Google Analytics.
Enable Adwords Conversion Tracking
If yes, the Google Adwords Conversion Tracking snippet is added to the site.
Adwords Tracking Method
Select your Google Adwords Tracking method i.e. gtag.js or Google Tag Manager.
Global Adwords Tracking Installed
Set this to yes if you have already installed Global Adwords Tracking snippers on all pages of your site. If not, the plugin will first load Global Adwords Tracking before initialising Adwords Conversion tracking.
Install Global Adwords Tracking to All Pages
If yes, the plugin automatically adds Global Adwords Tracking snippers to all site pages. This parameter is available only when Global Adwords Tracking Installed is set as No.
Adwords Conversion ID
Provide your Google Adwords Conversion ID. Please note that this parameter is available only when Global Adwords Tracking Installed is set as No and Adwords Tracking Method is set as gtag.js.
Adwords Conversion Label
Provide your Google Adwords Conversion Label. Please note that this parameter is available only when Global Adwords Tracking Installed is set as No and Adwords Tracking Method is set as gtag.js.
Adwords GTM Container ID
Provide your Google Tag Manager Container ID for Adwords. If you use the same GTM container for analytics tracking, enter the same container ID. Please note that Google Tag Manager will not automatically track Adwords conversions. You must configure data variables derived from the Ecommerce or Enhance Ecommerce Datalayer and then configure the Tag accordingly. Refer to this Google documentation to learn more - https://support.google.com/tagmanager/answer/6105160?hl=en. This parameter is available only when Global Adwords Tracking Installed is set as No and Adwords Tracking Method is set as Google Tag Manager (GTM).
Tracking Currency
If User's Currency, all data is passed in customer's selected currency. If Vendor's Currency, all data is passed in shop owners default currency.
Location
Set where the scripts will be placed on the order confirmation page. If HEAD, the scripts are placed before the closing </head> tag. If BODY, the scripts are placed before the closing </body> tag. If PAGE, the scripts are placed at the bottom of VP Conversion Tracking - Thank Page.
Facebook Ads Conversion Tracking
![]()
Enable Facebook Ads Conversion Tracking
If yes, Facebook Ads Conversion Tracking snippets are added to the site.
Base Facebook Pixel Installed
Set this as yes if you have already installed the base Facebook pixel for all pages of your site. If not, the plugin will initialise the Base Facebook Pixel before calling the conversion tracking function.
Install Base Facebook Pixel to All Pages
If yes, the plugin automatically adds base Facebook tracking pixels to all your site pages. This option is available only when the Base Facebook Pixel Installed option is No.
Track Product View
If so, the product page view tracking data will be passed on to Facebook.
Track Add to Cart
If so, the add-to-cart tracking data will be passed on to Facebook.
Facebook Pixel ID
Provide your Facebook ads conversion tracking pixel ID. This option is available only when Base Facebook Pixel Installed is set as No and Install Base Facebook Pixel to All Pages is set as Yes.
Tracking Currency
If User's Currency, all data is passed in customer's selected currency. If Vendor's Currency, all data is passed in shop owners default currency.
Location
Set where the scripts will be placed on the order confirmation page. If HEAD, the scripts are placed before the closing </head> tag. If BODY, the scripts are placed before the closing </body> tag. If PAGE, the scripts are placed at the bottom of VP Conversion Tracking - Thank Page.
Shopper Approved

This section lets you show the Customer Satisfaction Survey of ShopperApproved.com on the order confirmation page.
Enable Survey
If yes, Shopper Approved - Customer Satisfaction Survey is displayed on the order confirmation page.
Site ID
Enter your unique site ID from ShopperApproved.com.
Force Comments
If enabled, the comments field in the survey form becomes a mandatory field.
Send Email
If yes, the email option is enabled in the survey request script.
Custom Global Tracking Codes
![]()
You can add your custom global tracking codes here. These tracking codes are added to every page of your site. You can add multiple snippets by clicking on the Add New button. To remove them, click on the Remove button.
Name
Give a name to your tracking code snippet. Examples are Bing Ads, etc.
Enabled
If yes, the tracking code snippet is added to the pages.
Location
The location where the codes are to be placed is on the order confirmation page. If HEAD, the codes are placed before the closing </head> tag. If BODY, the codes are placed before the closing </body> tag.
Tracking Code Snippet
Add your tracking codes here. You can also copy the exact codes from the tracking service provider and paste them here.
Custom Product Tracking Codes
![]()
Add your custom product tracking code snippets. These tracking codes will be added to the product details page. You can add multiple snippets by clicking on the Add New button. To remove them, click on the Remove button.
Name
Give a name to your tracking code snippet. Examples: Bing Ads, Yahoo Ads, etc.
Enabled
If yes, the tracking code snippet is placed on the product details page.
Location
The location where the codes are to be placed on the product details page. If HEAD, the codes are placed before the closing </head> tag. If BODY, the codes are placed before the closing </body> tag. If PAGE, the codes are placed at the bottom of VP Conversion Tracking - Thank Page.
Tracking Code Snippet
Copy & paste your tracking codes snippet here. You can pass product variables (like product name, sales price, etc) by inserting the respective variable tag from the Product Information drop-down list. Select the variable, place the cursor at your desired position in the snippet text area, and click the Insert button to insert the tag.
Custom Conversion Tracking Codes
![]()
You can add your custom conversion tracking codes here. These tracking codes are added only to the order confirmation or thank you pages. You can also pass order information or order data using the Variable Tags in your tracking codes. You can add multiple snippets by clicking on the Add New button. To remove, click on the Remove button.
Name
Give a name to your tracking code snippet. Examples: Bing Ads, Yahoo Ads etc.
Enabled
If yes, the tracking code snippet is placed on the order confirmation page.
Location
The location where the codes are to be placed on the product details page. If HEAD, the codes are placed before the closing </head> tag. If BODY, the codes are placed before the closing </body> tag. If PAGE, the codes are placed at the bottom of VP Conversion Tracking - Thank Page.
Tracking Code Snippet
Copy & paste your tracking codes snippet here. You can pass order details variables (like order total, order current, etc.) by inserting the respective variable tag from the Order Information drop-down list. Select the variable, place the cursor at your desired position in the snippet text area and click the Insert button to insert the tag.
For example, Order Total can be rendered using {{ order_total_rounded }} tag. Similarly, Order Currency can be rendered using {{ order_currency_code }}.
Advanced

Item ID Property
If default, SKU will be used as Item ID (if it exists) and fallbacks to VirtueMart Product ID. If Product ID, VirtueMart Product ID will be used explicitly as Item ID.
Force Load VM
If yes, VirtueMart is force-loaded. Disable this option only if you are facing PHP fatal errors while using the plugin.
Thank You Page Router
This is a Thank You Page (VPCT) specific option. Select how the Thank You Page of VP Conversion Tracking should be routed when the SEF URL option is enabled. Default is Enabled. If you are using some 3rd party SEF URL extension, you may need to set this to None or No-SEF mode.
Layout Override
You can override the Thank You Page (VPCT) layout in your template.
Copy the files from - plugins/system/vpconversiontracking/views/thankyou/tmpl/
to templates/YOUR-JOOMLA-TEMPLATE/html/com_virtuemart/thankyou/.
Now you are free to make the necessary changes to the layout files.
Order Conversion Variable Tags
Here is a list of variables you can use to pass respective information in your custom order conversion tracking codes.
| # | Tag | Description |
|---|---|---|
| Order | ||
| 1 | {{ virtuemart_order_id }} | Prints Order ID |
| 2 | {{ invoice_number }} | Prints Invoice Number if available |
| 3 | {{ virtuemart_user_id }} | Prints User ID |
| 4 | {{ virtuemart_vendor_id }} | Prints Vendor ID |
| 5 | {{ order_number }} | Prints Order Number |
| 6 | {{ customer_number }} | Prints Customer Number |
| 7 | {{ order_pass }} | Prints Order Pass |
| 8 | {{ order_create_invoice_pass }} | Prints Order Create Invoice Pass |
| 9 | {{ order_total }} | Prints Order Total |
| 10 | {{ order_total_rounded }} | Prints Order Total Rounded |
| 11 | {{ order_salesPrice }} | Prints Order Salesprice |
| 11 | {{ order_salesPrice_after_couponDiscount }} | Prints Total Net Product Price after Coupon Discount |
| 12 | {{ order_billTaxAmount }} | Prints Order Billtaxamount |
| 13 | {{ order_billTax }} | Prints Order Billtax |
| 14 | {{ order_billDiscountAmount }} | Prints Order Billdiscountamount |
| 15 | {{ order_discountAmount }} | Prints Order Discountamount |
| 16 | {{ order_subtotal }} | Prints Order Subtotal |
| 16 | {{ order_subtotal_after_couponDiscount }} | Prints Total Base Product Price after Coupon Discount |
| 17 | {{ order_tax }} | Prints Order Tax |
| 18 | {{ order_shipment }} | Prints Order Shipment Price |
| 19 | {{ order_shipment_tax }} | Prints Order Shipment Tax |
| 20 | {{ order_payment }} | Prints Order Payment Price |
| 21 | {{ order_payment_tax }} | Prints Order Payment Tax |
| 22 | {{ coupon_discount }} | Prints Coupon Discount |
| 23 | {{ coupon_code }} | Prints Coupon Code |
| 24 | {{ order_discount }} | Prints Order Discount |
| 25 | {{ order_currency }} | Prints Order Currency |
| 26 | {{ order_currency_code }} | Prints Order Currency Code |
| 27 | {{ order_status }} | Prints Order Status Code |
| 28 | {{ order_status_name }} | Prints Order Status Name |
| 29 | {{ user_currency_id }} | Prints User Currency ID |
| 30 | {{ user_currency_rate }} | Prints User Currency Rate |
| 31 | {{ user_currency_code }} | Prints User Currency Code |
| 32 | {{ total_in_user_currency }} | Prints Total In User Currency |
| 33 | {{ payment_currency_id }} | Prints Payment Currency ID |
| 34 | {{ payment_currency_code }} | Prints Payment Currency Code |
| 35 | {{ payment_currency_rate }} | Prints Payment Currency Rate |
| 36 | {{ total_in_payment_currency }} | Prints Total In Payment Currency |
| 37 | {{ virtuemart_paymentmethod_id }} | Prints Paymentmethod ID |
| 38 | {{ payment_method }} | Prints Payment Method Name |
| 39 | {{ virtuemart_shipmentmethod_id }} | Prints Shipmentmethod ID |
| 40 | {{ shipment_method }} | Prints Shipment Method Name |
| 41 | {{ oc_note }} | Prints OC Note |
| 42 | {{ delivery_date }} | Prints Delivery Date |
| 43 | {{ order_language }} | Prints Order Language |
| 44 | {{ customer_note }} | Prints Customer Note |
| 45 | {{ ip_address }} | Prints IP Address |
| 46 | {{ created_on }} | Prints Created On |
| 47 | {{ created_by }} | Prints Created By |
| 48 | {{ modified_on }} | Prints Modified On |
| 49 | {{ modified_by }} | Prints Modified By |
| 50 | {{ order_link }} | Prints Order Link |
| 51 | {{ order_link_raw }} | Prints Order Link Raw |
| 52 | {{ pdf_link }} | Prints PDF Link if available |
| Billing Address | ||
| 1 | {{ details.BT.email }} | Prints E-Mail |
| 2 | {{ details.BT.company }} | Prints Company Name |
| 3 | {{ details.BT.title }} | Prints Title |
| 4 | {{ details.BT.first_name }} | Prints First Name |
| 5 | {{ details.BT.middle_name }} | Prints Middle Name |
| 6 | {{ details.BT.last_name }} | Prints Last Name |
| 7 | {{ details.BT.address_1 }} | Prints Address 1 |
| 8 | {{ details.BT.address_2 }} | Prints Address 2 |
| 9 | {{ details.BT.zip }} | Prints Zip / Postal Code |
| 10 | {{ details.BT.city }} | Prints City |
| 11 | {{ details.BT.virtuemart_country_id }} | Prints Country |
| 12 | {{ details.BT.virtuemart_state_id }} | Prints State / Province / Region |
| 13 | {{ details.BT.phone_1 }} | Prints Phone |
| 14 | {{ details.BT.phone_2 }} | Prints Mobile phone |
| 15 | {{ details.BT.fax }} | Prints Fax |
| Shipping Address | ||
| 1 | {{ details.ST.address_type_name }} | Prints Address Nickname |
| 2 | {{ details.ST.company }} | Prints Company Name |
| 3 | {{ details.ST.first_name }} | Prints First Name |
| 4 | {{ details.ST.middle_name }} | Prints Middle Name |
| 5 | {{ details.ST.last_name }} | Prints Last Name |
| 6 | {{ details.ST.address_1 }} | Prints Address 1 |
| 7 | {{ details.ST.address_2 }} | Prints Address 2 |
| 8 | {{ details.ST.zip }} | Prints Zip / Postal Code |
| 9 | {{ details.ST.city }} | Prints City |
| 10 | {{ details.ST.virtuemart_country_id }} | Prints Country |
| 11 | {{ details.ST.virtuemart_state_id }} | Prints State / Province / Region |
| 12 | {{ details.ST.phone_1 }} | Prints Phone |
| 13 | {{ details.ST.phone_2 }} | Prints Mobile phone |
| 14 | {{ details.ST.fax }} | Prints Fax |
| Products/Items | ||
| 1 | {{# items }} {{ virtuemart_product_id }} {{/ items }} | Prints all Product ID in loop |
| 2 | {{# items }} {{ virtuemart_vendor_id }} {{/ items }} | Prints all Vendor ID in loop |
| 3 | {{# items }} {{ product_available_date }} {{/ items }} | Prints all Product Available Date in loop |
| 4 | {{# items }} {{ product_basePriceWithTax }} {{/ items }} | Prints all Product Baseprice With Tax in loop |
| 5 | {{# items }} {{ product_desc }} {{/ items }} | Prints all Product Description in loop |
| 6 | {{# items }} {{ product_discountedPriceWithoutTax }} {{/ items }} | Prints all Product Discounted Price Without Tax in loop |
| 7 | {{# items }} {{ product_final_price }} {{/ items }} | Prints all Product Final Price in loop |
| 8 | {{# items }} {{ product_in_stock }} {{/ items }} | Prints all Product In Stock in loop |
| 9 | {{# items }} {{ product_item_price }} {{/ items }} | Prints all Product Item Price in loop |
| 10 | {{# items }} {{ product_lwh_uom }} {{/ items }} | Prints all Product Lwh Uom in loop |
| 11 | {{# items }} {{ product_mpn }} {{/ items }} | Prints all Product Mpn in loop |
| 12 | {{# items }} {{ product_name }} {{/ items }} | Prints all Product Name in loop |
| 13 | {{# items }} {{ product_variant }} {{/ items }} | Prints all Product Variant in loop |
| 14 | {{# items }} {{ product_ordered }} {{/ items }} | Prints all Product Ordered in loop |
| 15 | {{# items }} {{ product_parent_id }} {{/ items }} | Prints all Product Parent ID in loop |
| 16 | {{# items }} {{ product_priceWithoutTax }} {{/ items }} | Prints all Product Pricewithouttax in loop |
| 17 | {{# items }} {{ product_quantity }} {{/ items }} | Prints all Product Quantity in loop |
| 18 | {{# items }} {{ product_s_desc }} {{/ items }} | Prints all Product Short Description in loop |
| 19 | {{# items }} {{ product_sales }} {{/ items }} | Prints all Product Sales in loop |
| 20 | {{# items }} {{ product_sku }} {{/ items }} | Prints all Product SKU in loop |
| 21 | {{# items }} {{ category_name }} {{/ items }} | Prints all Category Name in loop |
| 22 | {{# items }} {{ product_special }} {{/ items }} | Prints all Product Special in loop |
| 23 | {{# items }} {{ product_subtotal_discount }} {{/ items }} | Prints all Product Subtotal Discount in loop |
| 24 | {{# items }} {{ product_subtotal_with_tax }} {{/ items }} | Prints all Product Subtotal With Tax in loop |
| 25 | {{# items }} {{ product_tax }} {{/ items }} | Prints all Product Tax in loop |
| 26 | {{# items }} {{ product_unit }} {{/ items }} | Prints all Product Unit in loop |
| 27 | {{# items }} {{ product_url }} {{/ items }} | Prints all Product Url in loop |
| 28 | {{# items }} {{ product_weight }} {{/ items }} | Prints all Product Weight in loop |
| 29 | {{# items }} {{ product_weight_uom }} {{/ items }} | Prints all Product Weight Uom in loop |
| 30 | {{# items }} {{ low_stock_notification }} {{/ items }} | Prints all Low Stock Notification in loop |
| 31 | {{# items }} {{ slug }} {{/ items }} | Prints all Slug/Alias in loop |
| 32 | {{# items }} {{ virtuemart_category_id }} {{/ items }} | Prints all Category ID in loop |
| 33 | {{# items }} {{ virtuemart_manufacturercategories_id }} {{/ items }} | Prints all Manufacturer Categories ID in loop |
| 34 | {{# items }} {{ mf_desc }} {{/ items }} | Prints all Manufacturer Desc in loop |
| 35 | {{# items }} {{ mf_email }} {{/ items }} | Prints all Manufacturer Email in loop |
| 36 | {{# items }} {{ mf_name }} {{/ items }} | Prints all Manufacturer Name in loop |
| 37 | {{# items }} {{ mf_url }} {{/ items }} | Prints all Manufacturer Url in loop |
Product Variables for Orders
If you watch the above list carefully, you can find that all product variables are output in a loop. This is because an order can have several items, and we need to loop through the items list to fetch all the details.
Tracking code snippets are JavaScript. Therefore, when you need to pass product information, in most cases, you will need to build an array of products containing relevant data/information. You can achieve this in several ways. Here are a few examples.
<script type="text/javascript">
// Create a empty array which will contain all product information
var products = [];
// Loop through all items and push/add individual product details object to the products array
{{# items }}
products.push({
id: '{{ virtuemart_product_id }}',
name: '{{ product_name }}',
variant: '{{ product_variant }}',
price: '{{ product_final_price }}'
});
{{/ items }}
</script>
The above codes will output the following depending on the items you ordered.
<script type="text/javascript">
// Create a empty array which will contain all product information
var products = [];
// Loop through all items and push/add individual product details object to the products array
products.push({
id: '67',
name: 'Marine Cap',
variant: 'Cap Size S-M',
price: '21.48000'
});
products.push({
id: '72',
name: 'Poncho',
variant: 'Clothing weave Twill, Clothing size M',
price: '29.88000'
});
products.push({
id: '73',
name: 'Dress',
variant: 'Clothing weave Twill, Clothing size XS',
price: '539.88000'
});
</script>
You can also build the same array of product objects differently, like below.
<script type="text/javascript">
// Create an array of all product objects
var products = [
{{# items }}
{
id: '{{ virtuemart_product_id }}',
name: '{{ product_name }}',
variant: '{{ product_variant }}',
price: '{{ product_final_price }}'
},
{{/ items }}
];
</script>
The above codes will output the following depending on the items you ordered.
<script type="text/javascript">
// Create an array of all product objects
var products = [
{
id: '67',
name: 'Marine Cap',
price: '21.48000',
variant: 'Cap Size S-M'
},
{
id: '72',
name: 'Poncho',
price: '29.88000',
variant: 'Clothing weave Twill, Clothing size M'
},
{
id: '73',
name: 'Dress',
price: '539.88000',
variant: 'Clothing weave Twill, Clothing size XS'
},
];
</script>