# Sending data (browser)
The eCommerce server generates JavaScript code which is returned to the end customer's browser. In effect the end customer browser sends the data to edrone servers.
edrone_2_0.js - external library provided by edrone - initial code that should be included in head section.
https://d3bo67muzbfgtl.cloudfront.net/edrone_2_0.js - it should be initialized once using the following script
_edrone.init() - function that is used to send data to edrone - it is automatically initialized after event "window.onload".
# OTHER
Expected result for "other" action for logged in customer
Expected result for "other" action for not logged in customer
# HOMEPAGE VIEW
Expected result for "homepage_view" action for not logged in customer
<script type="text/javascript">
window._edrone = window._edrone || {};
_edrone.action_type = 'homepage_view'; //override the default "other" value
</script>
# PRODUCT VIEW
If you already have initial script include in your head section, the next step is to implement product_view action. That should be implemented in the end of the body section:
<script type="text/javascript">
window._edrone = window._edrone || {};
_edrone.product_skus = 'MAK03035';
_edrone.product_ids = '3434';
_edrone.product_titles = 'SANTI-DONNA'; // use url_encode
_edrone.product_images = 'https://x.z..com/media/s/x/cache/3/image/df/3/u/3u1a6597--1200q100.jpg'; // use url_encode
_edrone.product_urls = 'https://x.z..com/3u1a6597--1200q100'; // use url_encode
_edrone.product_availability = 1;
_edrone.product_category_ids = "12~24~36" // use "~" sign to separate values from each other
_edrone.product_category_names = "Buty~Buty damskie~Szpilki" // use "~" sign to separate values from each other and url_encode on single value
_edrone.action_type = 'product_view';
</script>
Expected result for "product_view" action for logged in customer
# CATEGORY VIEW
The next step is to implement category_view action. That should be implemented in the end of the body section:
<script type="text/javascript">
window._edrone = window._edrone || {};
_edrone.product_category_ids = "12~24~36" // use "~" sign to separate values from each other
_edrone.product_category_names = "Buty~Buty damskie~Szpilki" // use "~" sign to separate values from each other and url_encode on single value
_edrone.action_type = 'category_view';
</script>
Expected result for "category_view" action for logged in customer
# ADD TO CART
The next step is to implement the add_to_cart action. It also should be implemented in the end of body section, but if the add_to_cart button is on the same page as product you only have to change action_type to add_to_cart:
<script type="text/javascript">
window._edrone = window._edrone || {};
let addToCartButton = document.querySelector("#addToCartButton")
if (addToCartButton) {
addToCartButton.addEventListener('click', () => {
_edrone.action_type = "add_to_cart"
_edrone.init()
})
}
</script>
The expected result for the "add_to_cart" action for a logged in customer
What if your add to cart button is included in some product list(home page, category page)?
<script type="text/javascript">
window._edrone = window._edrone || {};
let addToCartButtonList = document.querySelectorAll(".addToCartButton")
addToCartButtonList.forEach((button) => {
if (button) {
button.addEventListener('click', () => {
_edrone.product_ids = button.getAttribute('product_ids')
_edrone.product_skus = button.getAttribute('product_skus')
_edrone.product_titles = button.getAttribute('product_titles')
_edrone.product_images = button.getAttribute('product_images')
_edrone.product_urls = button.getAttribute('product_urls')
_edrone.product_category_ids = button.getAttribute('product_category_ids')
_edrone.product_category_names = button.getAttribute('product_category_names')
_edrone.action_type = "add_to_cart"
_edrone.init()
})
}
})
</script>
# ORDER
The next step is to implement order action. Thats also should be implemented on the "success page" at the end of body section.
<script type="text/javascript">
window._edrone = window._edrone || {};
_edrone.action_type = 'order';
_edrone.email = 'john.doe@edrone.me';
_edrone.user_id = '1234';
_edrone.first_name = 'John';
_edrone.last_name = 'Doe';
_edrone.subscriber_status = '1';
_edrone.product_skus = 'NL1975286|NL2075286'; // use "|" sign to separate products from each other
_edrone.product_ids = '12|13'; // use "|" sign to separate products from each other
_edrone.product_titles = 'Sorel Women shoes Glacy|Sorel Women shoes Glacy Explorer Shortie'; // use "|" sign to separate products from each other and use url_encode
_edrone.product_images = 'https://demo-store.edrone.me/img/p/4/5/45-large_default.jpg|https://demo-store.edrone.me/img/p/4/7/47.jpg'; // use "|" sign to separate products from each other and use url_encode
_edrone.product_urls = 'https://demo-store.edrone.me/index.php?id_product=12&controller=product|https://demo-store.edrone.me/index.php?id_product=13&controller=product'; // use "|" sign to separate products from each other and use url_encode
_edrone.product_category_ids = '2~3~4|2~3~4'; // use "|" sign to separate products from each other and "~" to separate values connected to product from each other and use url_encode
_edrone.product_category_names = 'Main~Shoes~Women shoes|Main~Shoes~Women shoes'; // use "|" sign to separate products from each other and "~" to separate values connected to product from each other and use url_encode
_edrone.product_counts = '1|3'; // use "|" sign to separate products from each other
_edrone.order_id = '4321';
_edrone.country = 'UK';
_edrone.city = 'London';
_edrone.base_currency = 'GBP';
_edrone.order_currency = 'GBP';
_edrone.base_payment_value = '671.50';
_edrone.order_payment_value = '671.50';
</script>
# SUBSCRIBE
How to integrate your newsletter form with edrone:
<script>
window._edrone = window._edrone || {};
let newsletterForm = document.querySelector('#newsletterForm')
if (newsletterForm) {
newsletterForm.addEventListener('submit', () => {
_edrone.customer_tags = 'Footer'; // You can use different tags for different forms.
_edrone.email = newsletter.querySelector('input[type="email"]').value;
_edrone.first_name = newsletter.querySelector('input[type="name"]').value;
_edrone.action_type = 'subscribe';
_edrone.init();
})
}
</script>
# EMAIL INPUT FILLED
We have introduced a new mechanism that allows for earlier user identification based on their interaction with the form. The email_input_filled
event allows us to identify a user who has entered a valid email address in an email-type form field, even if they have not submitted the form.
When a user fills in an "email" type field with a valid email address and leaves it (the blur
event occurs), the email_input_filled
event is sent.
The purpose of the email_input_filled
mechanism is to increase the effectiveness of user identification, which is the foundation of our recommendation, communication, and personalization system.
Our approach is based on the assumption that there is a group of users who enter their email address in a form (e.g., in a pop-up, footer, or contact form) but do not complete the subscription process – they do not click the "Subscribe" button or leave the page before confirming. In the traditional approach, such users are completely lost. Thanks to email_input_filled
, we are able to identify them as soon as they enter a valid email, before they formally confirm their subscription.
# Fields with multiple values
Certain event types may require multiple values in the trace field. For example, when an order event occurs the customer might have purchased multiple items.
In order to specify multiple values in a field separate them by pipe character (|)
Example
_edrone.product_skus = 'MAK03035|FE01041';
The following fields allow multiple values:
- product_ids
- product_titles
- product_images
- product_skus
- product_urls
- product_category_ids
- product_category_names
- customer_tags
- product_counts
- product_brand_ids
- product_brand_names
# Product with multiple categories
A single product may belong to multiple categories (product_category_ids I product_category_names). In such case each category should be separated by a ~ character.
Example
_edrone.product_category_ids = '12~24~36';
_edrone.product_category_names = 'Buty~Buty damskie~Szpilki';
Character encoding Any special characters (e.g. ",',<,>,&) should be encoded using url_encode function.