Post by sumiseo558899 on Nov 9, 2024 23:08:44 GMT -5
There are many interesting tasks in the work of a web analyst, I can’t tell you about all of them, but today I will share the story of setting up analytics on a Tilda multi-landing page. And also about the pitfalls I stepped on in the process and how I avoided them.
Internet marketers and people who develop business on the Internet. I give examples of real problems that are solved with the help of web analytics;
for beginner web analysts. You will be able to repeat the settings and possibly avoid the problems I encountered;
Initial data and important details
Initially, the task sounded like "set up analytics on the site for a multi-landing page". It is a well-known fact that the more precisely the task is formulated, the more effectively we will solve it. Therefore, I clarified the missing information and formulated the task more specifically.
The theme of the site is the organization of offline events throughout Russia. Registration is online. Each user has a personal account.
The site is a multi-landing page on Tilda (oh, the horror!) with the following structure:
news
For each event, three landing pages are created: a page with a description and 2 pages with registration.
Tasks
Find out the cost of a lead for paid and free events across events and advertising campaigns.
Set up event tracking so that you can see the following indicators in the counter interface (Yandex Metrica, Google Analytics) for multiple metrics and indicators:
The analytics system should be as automated as possible, i.e. exclude the human indifference factor.
Let me clarify the last point. The difficulty is that new landing pages will be created in the future. Dozens of new events are planned. The standard solution of adding events to conversion buttons is not suitable and here is why.
When setting up events on conversion buttons, you will have to add new identifiers: both in the site code and in the analytics systems for each new event. Not only that, in Google Analytics (hereinafter GA) we are limited to 20 goals per view, and in Yandex Metrica (hereinafter YM) this is a limit of 200 goals per counter, which can also quickly end.
Such a system will not be automated and content writing service
in the process of work, for example, adding new identifiers, it is possible that the performer will make a mistake. In addition, it is not possible to identify the name of the event (in YM at all, in GA only for the purposes of the "URL of the goals" report).
Note
GA has a report called "Conversions - Goals - Goal URLs" that shows the location of the completed goal. Perhaps this could be used to analyze the pages where users completed goals?
I will give an example of a report for clarity:
news
An example of how we would see event registration information.
Having looked at the report carefully, it becomes clear that it is not capable of solving our problems. We do not have the opportunity to examine the session parameters and desired metrics in detail.
Honestly, the idea of using targets is so-so. Something else is needed.
Something else
GA has built-in tools to expand our knowledge of user actions around events, which are perfect for our task.
For example, if we receive an event (for example, a click on the “more details” button), we can pass the parameters of this event to the GA interface:
the page where the button is located;
user status (registered or not);
the name of the element to which the button belongs;
page type, if it's an A/B test, and so on.
This tool is called Custom Dimensions and Custom Metrics (hereinafter CM and CM). This is what we will be using!
The advantage of using them is that after setting up we can:
create segments based on them;
add them as additional parameters to any standard reports;
use as main parameters in your own reports.
Note : I recommend that you familiarize yourself with the custom parameters and metrics in GA . In fact, this toolkit is very useful and often irreplaceable.
For metrics we use a similar functionality, only it is called “Visit parameters”.
Tilda, the platform on which the site runs, deserves special attention.
"Advantages" of the tilda platform
1. To solve the problem, we will need to upgrade the GA and YM counter code. Unfortunately, it is impossible to do this in Tilda using standard tools, since the counter code is connected using the counter tracking identifier.
However, there is a way out, you need to create a custom html block and copy our modified GA and YM codes there. Add this block to the site page template so that the code is present on all pages.
Note : Don't forget to remove the standard Tilda connection with GA and YM, otherwise there may be problems with the received data.
2. Another "wonderful" piece of news from Tilda was the list of permissions for managing the GA counter. I don't know about you, but to me it seemed quite redundant:
news
I couldn't bring myself to grant the listed permissions for the GA account, which has counters for other sites. All counter codes were added to a custom html block.
Let's start building our analytics system
Settings in google analytics
Setting up PP and PP in GA
The algorithm for working with Custom Dimensions and Custom Metrics looks like this:
We create parameters or metrics in the GA interface.
We determine the moment when we will set and send the PP values (for example, when the application is successfully sent).
We set the PP value at the moment selected in step 2 (through the technical department specialists).
We send the value to GA (via a technical department specialist).
Custom parameters and metrics are set in the GA interface at the resource level:
news
We will put information about the event name and the participation option into these parameters. We will record "Registration" and "Payment" as regular events.
Setting up:
event name - CustomDimension;
type of participation (free, paid) — CustomDimension;
fact of registration - Event;
fact of payment - Event.
news
Google Analytics will assign an index to the created parameter. Programmers will later transfer values by index.
news
The parameter index is the number after the name of the dimension variable.
If you don't remember it, you will always see it in the "Custom Definitions - Resource Level Custom Parameters" section (middle column in "admin"):
news
In the code, the Dimension will be accessed only by dimension1, dimension2, etc. For example, we set it like this:
Event name - ga('set', 'dimension1', indicator value);
Participation type - ga('set', 'dimension2', indicator value);
After talking with a technical specialist, it was decided:
the event name is taken from the page title block
the type of participation is determined by the end of the page URL. If "_free", then "Free", if "_std", then "Paid".
Important! This is the first and only limitation to creating pages with events:
When creating event pages in the future, it is important to remember to add "_free" at the end of the URL for free registration pages and "_std" for paid registration pages.
For convenience
Additionally, in GA, we set up custom metrics.
number of registrations started;
number of successful registrations.
When a user starts registering, we send this indicator to him with a value of 1.
I did this so that this data could be viewed in any reports.
When a user successfully completes registration, we send a value of 1 to GA's "Number of successful registrations" metric.
GA can sum up the values of indicators, calculate the average, and perform any other operations that are typical for standard indicators.
The value of the indicator in the code is set similarly to user parameters:
number of started registrations ga('set', 'metric1', 'parameter value');
number of successful registrations ga('set', 'metric2', 'parameter value').
We send the PP and PP values to GA via an event. That is, first we set all the necessary parameters, indicators, and then we create an event in the code that will send our data to the system.
Please note:
If the event is not created, the data will not go to GA.
If the event is written in the code above the assignment of indicators, the data will not go to GA.
If you register several events, the data will be sent several times and the statistics will be distorted.
Example of code with sending PP:
ga('set', 'dimension1', myName) — set item 1;
ga('set', 'dimension2', status) — set pp 2;
ga('set', 'metric2', '1') — set pp 2;
ga('send', 'pageview', '/dimension') — we pass pp and pp via the pageview event;
Now that we have finished setting up Google Analytics, let's move on to the metrics.
Setting up visit indicators in Yandex Metrica:
For metrics, we write in “Visit parameters”:
name of the event;
participation option.
How to do it
To use the visit parameters you need to:
upgrade the counter code by adding one line:
params: window.yaParams
Note : Let me remind you that we have disabled the standard Tilda integration with Yandex Metrica and moved the modernized Yandex Metrica code to the HTML block.
Determine the moment when to pass the parameter (for example, when the request is successfully sent).
Set the value using the following code:
var yaParams = {parameter_name:'parameter value'};
For example:
var yaParams = {Event name:'Event 1'};
send value to metric
Note : we pass the visit parameters to the metric using the optional argument of the reachGoal method. Learn more about the different ways to pass visit parameters .
onclick="yaCounterXXXXXXXX.reachGoal('FREE_SEND', goalParams);"
The metric interface will contain the name "parameter_name" that you passed in the code. You will be able to see the data in the standard report "Standard reports - Content - Visit parameters" or you can create a custom report with the groupings you are interested in.
Features of visit parameters
Attempt number one. Initially, we wanted to pass a structure of 3 nesting levels (the help says that you can pass up to 10 nesting levels inclusive), but we were unable to implement this.
Well, how could it not work out... we did, but extra links appeared in the structure, which complicated the process of building reports. The thing is that, since the visit parameters in our case are dynamic (we set them using variables), because of this, the names of the variables end up in the intermediate links, and in the report it looks like this:
news
myParam is the name of the variable. The information is difficult to perceive.
Although it is possible to remove levels in the grouping settings that contain variable names, we decided to abandon this method.
Attempt number two. We tried to convey the name of the event and the option to participate in the event using different parameters. And this was another rake for the dwarves, which hit painfully on the ... ego.
Example:
var yaParams = {Event name:'Event 1'};
var yaParams = {Participation option:Free'};
This transfer was displayed in the reports as follows:
news
In this variant of transferring visit parameters, it is not possible to establish a correspondence between the event name (1) and the participation option (2). When there is more data, it will be impossible to establish a relationship.
Attempt number three. So we decided to abandon the options above and combined the parameters into one:
news
We pass the visit parameter as follows: “Event name – Participation option.”
This option suited us. We are done with the settings in Yandex Metrica.
More to come: problems
After the settings, we check the correctness of the incoming data and fix all failures (if any).
Problem 1: Classic accordion
When checking the correct transfer of visit parameters (to Metrica), we found a problem: some pages had an outdated Yandex.Metrica counter. A trivial, but difficult to diagnose problem.
This is indirectly evidenced by multiple internal transitions from the main domain of the site. And we saw it clearly when we looked at all the page templates and compared the counter codes.
Solution: put the same Yandex Marketing code on all pages of the site and republished each page (Tilda).
Problem 2: It wasn't the reel
The next day, problems with receiving data surfaced again. Successful registrations for events did not arrive in the analytics systems.
After a bit of digging... what's more, after trying a bunch of different options, we found no reason and almost despaired. There was only one option left: go to the head of the technical department - this person has seen many different "tildes", wix-s in his time... and he will tell you what the problem is.
As expected, it wasn't the reel that was the problem.
We found out that the personal account is a separate site on a subdomain (which we had not noticed before). By default, the GA counter records visits from subdomains, but the GA code was completely absent on the subdomain pages.
That's why we added the GA code to the personal account pages. Additionally, in GA, I quickly made an extended filter for cross-domain tracking.
Cross-domain tracking does not have to be configured, but I configured it to obtain information about the full URL of the page from which the payment was made.
Problem 3: Memory is such memory
After setting up cross-domain tracking in the GA view, do not forget to adjust the goals that are set to the page URLs. Since after setting up cross-domain tracking, GA sees the pages together with the site domain.
For example, a goal set to the page /robox/success/, which worked before, will not work after setting up cross-domain tracking. Now GA sees the same page as site.ru/robox/success/. Therefore, replace the page URL in the goal with site.ru/robox/success/. Keep this in mind! Or use the "contains" condition, but this is not always appropriate.
What else was configured?
E-commerce
To obtain income data, we set up e-commerce in GA. We used only part of the e-commerce capabilities (id, name, price). We wrote a technical specification for the technical department, and implemented the code on the site. Now GA receives data on orders.
Setting up in mailchimp
Set up integration of mailing lists (MailChimp) with Google Analytics. Don't forget to mark each link in the letter with UTM tags.
Excluded sources of transition
Added the payment system domain to the list of excluded referral sources so that traffic from it is not identified as a referrer and a new session is not created.
Custom reports in ga
I set up reports with the required parameters and indicators so that I could view the required data in one click.
What data were you able to “extract” based on the configured analytics system?
The setup is complete (for now). Immediately after setup, advertising campaigns were launched, after which I assessed their effectiveness based on the new analytics system.
Let's see what data we received.
1. The client can assign the creation of new events to any specialist and know that site analytics will be collected automatically.
The only limitation is that when creating pages for new events, don't forget to add "_free" at the end of the URL for pages with free registration and "_std" for pages with paid registration.
Internet marketers and people who develop business on the Internet. I give examples of real problems that are solved with the help of web analytics;
for beginner web analysts. You will be able to repeat the settings and possibly avoid the problems I encountered;
Initial data and important details
Initially, the task sounded like "set up analytics on the site for a multi-landing page". It is a well-known fact that the more precisely the task is formulated, the more effectively we will solve it. Therefore, I clarified the missing information and formulated the task more specifically.
The theme of the site is the organization of offline events throughout Russia. Registration is online. Each user has a personal account.
The site is a multi-landing page on Tilda (oh, the horror!) with the following structure:
news
For each event, three landing pages are created: a page with a description and 2 pages with registration.
Tasks
Find out the cost of a lead for paid and free events across events and advertising campaigns.
Set up event tracking so that you can see the following indicators in the counter interface (Yandex Metrica, Google Analytics) for multiple metrics and indicators:
The analytics system should be as automated as possible, i.e. exclude the human indifference factor.
Let me clarify the last point. The difficulty is that new landing pages will be created in the future. Dozens of new events are planned. The standard solution of adding events to conversion buttons is not suitable and here is why.
When setting up events on conversion buttons, you will have to add new identifiers: both in the site code and in the analytics systems for each new event. Not only that, in Google Analytics (hereinafter GA) we are limited to 20 goals per view, and in Yandex Metrica (hereinafter YM) this is a limit of 200 goals per counter, which can also quickly end.
Such a system will not be automated and content writing service
in the process of work, for example, adding new identifiers, it is possible that the performer will make a mistake. In addition, it is not possible to identify the name of the event (in YM at all, in GA only for the purposes of the "URL of the goals" report).
Note
GA has a report called "Conversions - Goals - Goal URLs" that shows the location of the completed goal. Perhaps this could be used to analyze the pages where users completed goals?
I will give an example of a report for clarity:
news
An example of how we would see event registration information.
Having looked at the report carefully, it becomes clear that it is not capable of solving our problems. We do not have the opportunity to examine the session parameters and desired metrics in detail.
Honestly, the idea of using targets is so-so. Something else is needed.
Something else
GA has built-in tools to expand our knowledge of user actions around events, which are perfect for our task.
For example, if we receive an event (for example, a click on the “more details” button), we can pass the parameters of this event to the GA interface:
the page where the button is located;
user status (registered or not);
the name of the element to which the button belongs;
page type, if it's an A/B test, and so on.
This tool is called Custom Dimensions and Custom Metrics (hereinafter CM and CM). This is what we will be using!
The advantage of using them is that after setting up we can:
create segments based on them;
add them as additional parameters to any standard reports;
use as main parameters in your own reports.
Note : I recommend that you familiarize yourself with the custom parameters and metrics in GA . In fact, this toolkit is very useful and often irreplaceable.
For metrics we use a similar functionality, only it is called “Visit parameters”.
Tilda, the platform on which the site runs, deserves special attention.
"Advantages" of the tilda platform
1. To solve the problem, we will need to upgrade the GA and YM counter code. Unfortunately, it is impossible to do this in Tilda using standard tools, since the counter code is connected using the counter tracking identifier.
However, there is a way out, you need to create a custom html block and copy our modified GA and YM codes there. Add this block to the site page template so that the code is present on all pages.
Note : Don't forget to remove the standard Tilda connection with GA and YM, otherwise there may be problems with the received data.
2. Another "wonderful" piece of news from Tilda was the list of permissions for managing the GA counter. I don't know about you, but to me it seemed quite redundant:
news
I couldn't bring myself to grant the listed permissions for the GA account, which has counters for other sites. All counter codes were added to a custom html block.
Let's start building our analytics system
Settings in google analytics
Setting up PP and PP in GA
The algorithm for working with Custom Dimensions and Custom Metrics looks like this:
We create parameters or metrics in the GA interface.
We determine the moment when we will set and send the PP values (for example, when the application is successfully sent).
We set the PP value at the moment selected in step 2 (through the technical department specialists).
We send the value to GA (via a technical department specialist).
Custom parameters and metrics are set in the GA interface at the resource level:
news
We will put information about the event name and the participation option into these parameters. We will record "Registration" and "Payment" as regular events.
Setting up:
event name - CustomDimension;
type of participation (free, paid) — CustomDimension;
fact of registration - Event;
fact of payment - Event.
news
Google Analytics will assign an index to the created parameter. Programmers will later transfer values by index.
news
The parameter index is the number after the name of the dimension variable.
If you don't remember it, you will always see it in the "Custom Definitions - Resource Level Custom Parameters" section (middle column in "admin"):
news
In the code, the Dimension will be accessed only by dimension1, dimension2, etc. For example, we set it like this:
Event name - ga('set', 'dimension1', indicator value);
Participation type - ga('set', 'dimension2', indicator value);
After talking with a technical specialist, it was decided:
the event name is taken from the page title block
the type of participation is determined by the end of the page URL. If "_free", then "Free", if "_std", then "Paid".
Important! This is the first and only limitation to creating pages with events:
When creating event pages in the future, it is important to remember to add "_free" at the end of the URL for free registration pages and "_std" for paid registration pages.
For convenience
Additionally, in GA, we set up custom metrics.
number of registrations started;
number of successful registrations.
When a user starts registering, we send this indicator to him with a value of 1.
I did this so that this data could be viewed in any reports.
When a user successfully completes registration, we send a value of 1 to GA's "Number of successful registrations" metric.
GA can sum up the values of indicators, calculate the average, and perform any other operations that are typical for standard indicators.
The value of the indicator in the code is set similarly to user parameters:
number of started registrations ga('set', 'metric1', 'parameter value');
number of successful registrations ga('set', 'metric2', 'parameter value').
We send the PP and PP values to GA via an event. That is, first we set all the necessary parameters, indicators, and then we create an event in the code that will send our data to the system.
Please note:
If the event is not created, the data will not go to GA.
If the event is written in the code above the assignment of indicators, the data will not go to GA.
If you register several events, the data will be sent several times and the statistics will be distorted.
Example of code with sending PP:
ga('set', 'dimension1', myName) — set item 1;
ga('set', 'dimension2', status) — set pp 2;
ga('set', 'metric2', '1') — set pp 2;
ga('send', 'pageview', '/dimension') — we pass pp and pp via the pageview event;
Now that we have finished setting up Google Analytics, let's move on to the metrics.
Setting up visit indicators in Yandex Metrica:
For metrics, we write in “Visit parameters”:
name of the event;
participation option.
How to do it
To use the visit parameters you need to:
upgrade the counter code by adding one line:
params: window.yaParams
Note : Let me remind you that we have disabled the standard Tilda integration with Yandex Metrica and moved the modernized Yandex Metrica code to the HTML block.
Determine the moment when to pass the parameter (for example, when the request is successfully sent).
Set the value using the following code:
var yaParams = {parameter_name:'parameter value'};
For example:
var yaParams = {Event name:'Event 1'};
send value to metric
Note : we pass the visit parameters to the metric using the optional argument of the reachGoal method. Learn more about the different ways to pass visit parameters .
onclick="yaCounterXXXXXXXX.reachGoal('FREE_SEND', goalParams);"
The metric interface will contain the name "parameter_name" that you passed in the code. You will be able to see the data in the standard report "Standard reports - Content - Visit parameters" or you can create a custom report with the groupings you are interested in.
Features of visit parameters
Attempt number one. Initially, we wanted to pass a structure of 3 nesting levels (the help says that you can pass up to 10 nesting levels inclusive), but we were unable to implement this.
Well, how could it not work out... we did, but extra links appeared in the structure, which complicated the process of building reports. The thing is that, since the visit parameters in our case are dynamic (we set them using variables), because of this, the names of the variables end up in the intermediate links, and in the report it looks like this:
news
myParam is the name of the variable. The information is difficult to perceive.
Although it is possible to remove levels in the grouping settings that contain variable names, we decided to abandon this method.
Attempt number two. We tried to convey the name of the event and the option to participate in the event using different parameters. And this was another rake for the dwarves, which hit painfully on the ... ego.
Example:
var yaParams = {Event name:'Event 1'};
var yaParams = {Participation option:Free'};
This transfer was displayed in the reports as follows:
news
In this variant of transferring visit parameters, it is not possible to establish a correspondence between the event name (1) and the participation option (2). When there is more data, it will be impossible to establish a relationship.
Attempt number three. So we decided to abandon the options above and combined the parameters into one:
news
We pass the visit parameter as follows: “Event name – Participation option.”
This option suited us. We are done with the settings in Yandex Metrica.
More to come: problems
After the settings, we check the correctness of the incoming data and fix all failures (if any).
Problem 1: Classic accordion
When checking the correct transfer of visit parameters (to Metrica), we found a problem: some pages had an outdated Yandex.Metrica counter. A trivial, but difficult to diagnose problem.
This is indirectly evidenced by multiple internal transitions from the main domain of the site. And we saw it clearly when we looked at all the page templates and compared the counter codes.
Solution: put the same Yandex Marketing code on all pages of the site and republished each page (Tilda).
Problem 2: It wasn't the reel
The next day, problems with receiving data surfaced again. Successful registrations for events did not arrive in the analytics systems.
After a bit of digging... what's more, after trying a bunch of different options, we found no reason and almost despaired. There was only one option left: go to the head of the technical department - this person has seen many different "tildes", wix-s in his time... and he will tell you what the problem is.
As expected, it wasn't the reel that was the problem.
We found out that the personal account is a separate site on a subdomain (which we had not noticed before). By default, the GA counter records visits from subdomains, but the GA code was completely absent on the subdomain pages.
That's why we added the GA code to the personal account pages. Additionally, in GA, I quickly made an extended filter for cross-domain tracking.
Cross-domain tracking does not have to be configured, but I configured it to obtain information about the full URL of the page from which the payment was made.
Problem 3: Memory is such memory
After setting up cross-domain tracking in the GA view, do not forget to adjust the goals that are set to the page URLs. Since after setting up cross-domain tracking, GA sees the pages together with the site domain.
For example, a goal set to the page /robox/success/, which worked before, will not work after setting up cross-domain tracking. Now GA sees the same page as site.ru/robox/success/. Therefore, replace the page URL in the goal with site.ru/robox/success/. Keep this in mind! Or use the "contains" condition, but this is not always appropriate.
What else was configured?
E-commerce
To obtain income data, we set up e-commerce in GA. We used only part of the e-commerce capabilities (id, name, price). We wrote a technical specification for the technical department, and implemented the code on the site. Now GA receives data on orders.
Setting up in mailchimp
Set up integration of mailing lists (MailChimp) with Google Analytics. Don't forget to mark each link in the letter with UTM tags.
Excluded sources of transition
Added the payment system domain to the list of excluded referral sources so that traffic from it is not identified as a referrer and a new session is not created.
Custom reports in ga
I set up reports with the required parameters and indicators so that I could view the required data in one click.
What data were you able to “extract” based on the configured analytics system?
The setup is complete (for now). Immediately after setup, advertising campaigns were launched, after which I assessed their effectiveness based on the new analytics system.
Let's see what data we received.
1. The client can assign the creation of new events to any specialist and know that site analytics will be collected automatically.
The only limitation is that when creating pages for new events, don't forget to add "_free" at the end of the URL for pages with free registration and "_std" for pages with paid registration.