Details
-
Type: New Feature
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: 4.2.0
-
Fix Version/s: 4.3.0-b1
-
Component/s: None
-
Labels:None
Description
Under Packages > Order Forms > Settings
- Create a new section called Embed Code
- In that section, create a new textarea field labeled Order Form Embed Code
- The textarea field will be parsable via H2o, so it should be validated to be parsable when saving it, similar to email templates
- Allow for the following tags (NOTE: SEE BELOW FOR AVAILABLE TAGS)
- {order} – (include order.id and order.number in the Tags section)
{package} – (include package.id and package.name in the Tags section){package_group} – (include package_group.id and package_group.name in the Tags section){total} – (the total price. This may be better as a {totals} object with references to {totals.subtotal}, {totals.total_after_tax}, etc., if available)- {currency} – (the invoice/payment currency for the order)
- Add an order_page tag to be used in conditional statements so that the embed code can be conditional by page
- Available order_page's should be based on the pages currently available in the order process where the embed code could be set (typically NOT AJAX requests)
- signup/index
- main/index
- main/packages
- forms/index
- config/index
- config/preconfig
- checkout/index
- checkout/complete
- cart/index
- Available order_page's should be based on the pages currently available in the order process where the embed code could be set (typically NOT AJAX requests)
- The full list of order_page's and additional tags should be made known in the documentation.
- Be sure to denote in the documentation what tag(s) are available to what order page(s). For example, the {order} tag is not available before the checkout process is complete
- Ensure that the embed code is set to every page it is defined for on every order form
- The AJAX order form may not allow the embed code to be set for certain pages during checkout because much of it is loaded via AJAX
EXAMPLE EMBED CODE
{% if order_page == 'forms/index' %} <script type="text/javascript"> $(document).ready(function() { console.log('this is the forms/index page!'); }); </script> {% endif %}
AVAILABLE TAGS:
- order_page (e.g. "main/index")
- currency (e.g. "USD")
- products - A numerically-indexed array containing each service product in the cart, or processed for the order
- Each item contains the package and package_group. See below for an example
AVAILABLE TAGS ONLY ON THE checkout/complete ORDER PAGE
- order - This is an object representing the order that was placed. See below for an example
- invoice - This is an object representing the invoice for the order that was placed. See below for an example
Example set of tags available to the checkout/complete page:
[order_page] => checkout/complete [order] => stdClass Object ( [id] => 302 [order_number] => 5aeb807f2b778 [order_form_id] => 13 [invoice_id] => 6918 [fraud_report] => {"distance":"0","countryMatch":"No","countryCode":"","freeMail":"No","anonymousProxy":"No","score":"2.50","binMatch":"NA","binCountry":"","err":"IP_NOT_FOUND","proxyScore":"0.00","ip_region":"","ip_city":"","ip_latitude":"","ip_longitude":"","binName":"","ip_isp":"","ip_org":"","binNameMatch":"NA","binPhoneMatch":"NA","binPhone":"","custPhoneInBillingLoc":"NotFound","highRiskCountry":"No","queriesRemaining":"5935","cityPostalMatch":"No","shipCityPostalMatch":"","maxmindID":"9BHCJUNH","carderEmail":"No","riskScore":"9.24","explanation":"This order is slightly risky, and we suggest that you review it manually, especially for B2B transactions. The order is higher risk because the billing country and the country in which the IP address is located don't match"} [fraud_status] => review [status] => pending [ip_address] => 127.0.0.1 [date_added] => 2018-05-03 21:34:55 [order_form_label] => umtemp [order_form_name] => UM Temp [client_id] => 1 [total] => 1.0000 [paid] => 0.0000 [currency] => USD [date_closed] => [invoice_id_code] => PROFORMA-1-2018-05-03 [client_id_code] => 1500 [client_first_name] => Jar Jar [client_last_name] => Binks [client_company] => Republic Senate [client_address1] => 1 Coruscant [client_email] => tyson@phillipsdata.com ) [invoice] => stdClass Object ( [id] => 6918 [id_format] => PROFORMA-{num}-2018-05-03 [id_value] => 1 [client_id] => 1 [date_billed] => 2018-05-03 21:34:55 [date_due] => 2018-05-03 21:34:55 [date_closed] => [date_autodebit] => [autodebit] => 1 [status] => proforma [subtotal] => 1.0000 [total] => 1.0000 [paid] => 0.0000 [previous_due] => 16912.7368 [currency] => USD [note_public] => [note_private] => [id_code] => PROFORMA-1-2018-05-03 [delivery_date_sent] => [due] => 1.0000 [line_items] => Array ( [0] => stdClass Object ( [id] => 22424 [invoice_id] => 6918 [service_id] => 1106 [description] => UM Temp - (May 03, 2018 - Jun 03, 2018) [qty] => 1.0000 [amount] => 1.0000 [subtotal] => 1.00000000 [taxes] => Array ( ) [taxes_applied] => Array ( ) [tax_subtotal] => 0 [tax_total] => 0 [total] => 1 [total_w_tax] => 1 ) ) [delivery] => Array ( [0] => stdClass Object ( [id] => 11050 [invoice_id] => 6918 [method] => email [date_sent] => ) ) [meta] => Array ( ) [tax_subtotal] => 0 [tax_total] => 0 [taxes] => Array ( ) ) [currency] => USD [products] => Array ( [0] => stdClass Object ( [package] => stdClass Object ( [id] => 27 [id_format] => {num} [id_value] => 24 [module_id] => 1 [name] => UM Temp [description] => [description_html] => [qty] => [module_row] => 26 [module_group] => [taxable] => 0 [single_term] => 0 [status] => active [company_id] => 1 [prorata_day] => [prorata_cutoff] => [id_code] => 24 [email_content] => Array ( [0] => stdClass Object ( [lang] => de_de [html] => [text] => ) [1] => stdClass Object ( [lang] => en_us [html] => [text] => ) ) [pricing] => Array ( [0] => stdClass Object ( [id] => 67 [pricing_id] => 249 [package_id] => 27 [term] => 1 [period] => month [price] => 1.0000 [setup_fee] => 0.0000 [cancel_fee] => 0.0000 [currency] => USD ) ) [meta] => stdClass Object ( ) [groups] => Array ( [0] => stdClass Object ( [id] => 35 [name] => Temp Group [description] => [type] => standard [company_id] => 1 [allow_upgrades] => 1 ) ) [option_groups] => Array ( ) ) [package_group] => stdClass Object ( [id] => 35 [name] => Temp Group [description] => [type] => standard [company_id] => 1 [allow_upgrades] => 1 ) ) )
Google and other services allow tracking of conversion data by embedding a javascript snippet with variable substitution for certain values, like:
- Order Number (And also Order ID)
- Package Name
- Package Group
- Total Price
- Quantity
- Currency Code
And possibly other variables. The best place for this embed code is probably under Packages > Order Forms > Settings with a section called "Embed Code" and a list of possible variables. The form should be a text area, and the contents of the text area should be embedded into the order form footer where other Javascript may appear.
Issue Links
- is blocked by
-
CORE-2687 Add plugin to Appcontroller.structure
- Closed
So this is a field that allows embedding HTML as written? What page(s) will this be added to?
What are all of the fields that are expected to be available for substitution?