You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 13/umbraco-engage/README.md
+1-7Lines changed: 1 addition & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,12 +6,6 @@ description: >-
6
6
7
7
# Umbraco Engage Documentation
8
8
9
-
{% hint style="info" %}
10
-
This is the official documentation for the Release Candidate of Umbraco Engage.
11
-
12
-
Learn more about the product and the expected release date on [the product pages on Umbraco.com](https://umbraco.com/products/add-ons/engage/).
13
-
{% endhint %}
14
-
15
9
{% hint style="warning" %}
16
10
Umbraco Engage is currently only available for Umbraco 13.
17
11
{% endhint %}
@@ -20,7 +14,7 @@ Umbraco Engage is a marketing suite that helps marketers and developers create p
20
14
21
15
Explore the top features and learn more about Umbraco Engage on [Umbraco.com](https://umbraco.com/products/add-ons/engage/).
22
16
23
-
<table data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td></td><td><a href="installation/installation.md">Install Umbraco Engage</a></td><td>Ready to dive in? Check the installation guide to get started.</td><td><a href="broken-reference">Broken link</a></td><td><a href=".gitbook/assets/Documentations Icons_Umbraco_CMS_Install.png">Documentations Icons_Umbraco_CMS_Install.png</a></td></tr><tr><td></td><td><a href="getting-started/">Getting Started</a></td><td>Get an overview and learn how to set up Umbraco Engage.</td><td><a href="broken-reference">Broken link</a></td><td><a href=".gitbook/assets/Documentations Icons_Umbraco_Cloud_Getting_Started.png">Documentations Icons_Umbraco_Cloud_Getting_Started.png</a></td></tr><tr><td></td><td><a href="tutorials/">Tutorials</a></td><td>Find detailed step-by-step guides for personalization, analytics, A/B testing, and more.</td><td><a href="broken-reference">Broken link</a></td><td><a href=".gitbook/assets/Documentations Icons_Umbraco_CMS_Tutorials.png">Documentations Icons_Umbraco_CMS_Tutorials.png</a></td></tr></tbody></table>
17
+
<table data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td></td><td><a href="installation/installation.md">Install Umbraco Engage</a></td><td>Ready to dive in? Check the installation guide to get started.</td><td><a href="installation/installation.md">installation.md</a></td><td><a href=".gitbook/assets/Documentations Icons_Umbraco_CMS_Install.png">Documentations Icons_Umbraco_CMS_Install.png</a></td></tr><tr><td></td><td><a href="getting-started/">Getting Started</a></td><td>Get an overview and learn how to set up Umbraco Engage.</td><td><a href="getting-started/">getting-started</a></td><td><a href=".gitbook/assets/Documentations Icons_Umbraco_Cloud_Getting_Started.png">Documentations Icons_Umbraco_Cloud_Getting_Started.png</a></td></tr><tr><td></td><td><a href="tutorials/">Tutorials</a></td><td>Find detailed step-by-step guides for personalization, analytics, A/B testing, and more.</td><td><a href="broken-reference">Broken link</a></td><td><a href=".gitbook/assets/Documentations Icons_Umbraco_CMS_Tutorials.png">Documentations Icons_Umbraco_CMS_Tutorials.png</a></td></tr></tbody></table>
* Retrieves _all_ active A/B test variants for the given visitor throughout the website.
24
-
* The visitor external id can be retrieved using **IAnalyticsVisitorExternalIdHandler.GetExternalId()**
24
+
* The visitor external id can be retrieved using `IAnalyticsVisitorExternalIdHandler.GetExternalId()`
25
25
26
26
### Example
27
27
28
-
To use these services, inject the specified service into your code. The example below uses **IAbTestingService.GetCurrentVisitorActiveAbTestVariants()** by injecting the service into a controller:
28
+
To use these services, inject the specified service into your code. The example below uses `IAbTestingService.GetCurrentVisitorActiveAbTestVariants()` by injecting the service into a controller:
Copy file name to clipboardExpand all lines: 13/umbraco-engage/developers/analytics/client-side-events-and-additional-javascript-files/google-analytics-blocker-detection.md
-2Lines changed: 0 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -19,5 +19,3 @@ If you include the script one of the following events is sent:
19
19
* Otherwise, the following event is sent: `umbEngage("send", "event", "Tracking", "Allowed", "Google Analytics");`
20
20
21
21
To see the statistics of this event go to the Analytics section of Umbraco Engage and open the 'Events' report. Look for the category with the name 'Tracking'.
Copy file name to clipboardExpand all lines: 13/umbraco-engage/developers/analytics/extending-analytics/getting-the-correct-ip-address.md
+7-7Lines changed: 7 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,11 +6,11 @@ description: >-
6
6
7
7
# Getting the Correct IP Address
8
8
9
-
By default, Umbraco Engage extracts the IP address from the request by inspecting the **UserHostAddress** and the **X-Forwarded-For** header. The latter is commonly used if your website operates behind a load balancer. In most scenarios, this will correctly resolve the client's IP address.
9
+
By default, Umbraco Engage extracts the IP address from the request by inspecting the `UserHostAddress` and the `X-Forwarded-For` header. The latter is commonly used if your website operates behind a load balancer. In most scenarios, this will correctly resolve the client's IP address.
10
10
11
-
If IP addresses are not being resolved accurately, your website may be behind a loadbalancing server or another protected environment. It might not forward the original client IP in the default **X-Forwarded-For** header or could exclude it entirely.
11
+
If IP addresses are not being resolved accurately, your website may be behind a load-balancing server or another protected environment. It might not forward the original client IP in the default `X-Forwarded-For` header or could exclude it entirely.
12
12
13
-
In this case, you may need to provide a custom implementation of the **IHttpContextIpAddressExtractor** to handle your specific requirements.
13
+
In this case, you may need to provide a custom implementation of the `IHttpContextIpAddressExtractor` to handle your specific requirements.
14
14
15
15
The default extractor looks like this:
16
16
@@ -29,7 +29,7 @@ public string ExtractIpAddress(HttpContextBase context)
29
29
}
30
30
```
31
31
32
-
To override this behavior, implement your own **IHttpContextIpAddressExtractor** and instruct Umbraco to use your extractor instead of the default extractor:
32
+
To override this behavior, implement your own `IHttpContextIpAddressExtractor` and instruct Umbraco to use your extractor instead of the default extractor:
@@ -47,11 +47,11 @@ public class CustomIpExtractorUserComposer : IUserComposer
47
47
```
48
48
49
49
{% hint style="info" %}
50
-
It is important that your UserComposer adjusts the service registration **after** Umbraco Engage has initialized.
50
+
It is important that your `UserComposer` adjusts the service registration **after** Umbraco Engage has initialized.
51
51
{% endhint %}
52
52
53
-
This can be enforced using the **ComposeAfterAttribute**. Failing to add this attribute may result in Umbraco running your IUserComposer before the Umbraco Engage composer, causing your changes to be overwritten.
53
+
This can be enforced using the `ComposeAfterAttribute`. Failing to add this attribute may result in Umbraco running your IUserComposer before the Umbraco Engage composer, causing your changes to be overwritten.
54
54
55
55
Additionally, ensure you use `RegisterUnique<...>()` instead of `Register<...>()`. While you can use Register when multiple implementations of a single service exist, in this case, you want your own extractor to be resolved exclusively. Therefore, RegisterUnique will overwrite the Umbraco Engage extractor.
56
56
57
-
After implementing both classes and running your project, your extractor should be called to resolve IP addresses. You can verify the output of your extractor by inspecting the **umbracoEngageAnalyticsIpAddress** database table. The last portion of the IP address may be anonymized (set to 0) if this option is enabled in the Umbraco Engage configuration file.
57
+
After implementing both classes and running your project, your extractor should be called to resolve IP addresses. You can verify the output of your extractor by inspecting the `umbracoEngageAnalyticsIpAddress` database table. The last portion of the IP address may be anonymized (set to 0) if this option is enabled in the Umbraco Engage configuration file.
Copy file name to clipboardExpand all lines: 13/umbraco-engage/developers/analytics/forms.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -9,7 +9,7 @@ To track Umbraco Forms submissions, you need to install [Umbraco Forms](https://
9
9
10
10
## Summary
11
11
12
-
Umbraco Engage measures interactions with Umbraco Forms on your website automatically if you include the Umbraco Engage [analytics JavaScript file](client-side-events-and-additional-javascript-files/additional-measurements-with-the-analytics-scripts.md). No additional configuration is needed. The data is visualized in the backoffice in **Engage > Analytics > Forms**.
12
+
Umbraco Engage measures interactions with Umbraco Forms on your website automatically if you include the Umbraco Engage [analytics JavaScript file](client-side-events-and-additional-javascript-files/additional-measurements-with-the-analytics-scripts.md). No additional configuration is needed. The data is visualized in the backoffice in Engage > Analytics > Forms.
13
13
14
14
The following is measured:
15
15
@@ -26,7 +26,7 @@ The following is measured:
26
26
It is possible to track a specific visitor to your website and see if they have made any form submissions. To do so, follow these steps:
27
27
28
28
1. Edit the Umbraco Form you wish to track visitors for and go to the **Design** view.
29
-
2. Add a new field to your form called '**Analytics - VisitorId**\`.
29
+
2. Add a new field to your form called '`Analytics - VisitorId`\`.
30
30
3. Give the new form field a name such as **Visitor ID**.
31
31
4. Specify a URL in the settings of the field type called **Template**:
Copy file name to clipboardExpand all lines: 13/umbraco-engage/developers/analytics/location.md
+21-17Lines changed: 21 additions & 17 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,22 +5,26 @@ description: Learn how to implement an IP to location provider.
5
5
6
6
# Capture location data
7
7
8
-
The localization information is displayed under the **Location** tab in the **Analytics** section of Umbraco Engage dashboard.
8
+
The localization information is displayed under the **Location** tab in the **Analytics** section of the Umbraco Engage dashboard.
9
9
10
-
Umbraco Engage Analytics natively supports storing and reporting localization information for incoming traffic. Localization refers to identifying the (physical) origin of an incoming request. Web requests from a visitor's browser do not contain location information, so you must provide an implementation for this.
10
+
Umbraco Engage Analytics natively supports storing and reporting localization information for incoming traffic. Localization refers to identifying the (physical) origin of an incoming request. Web requests from a visitor's browser do not contain location information. This means that you must implement this.
11
11
12
-
Most localization services, such as Maxmind, use IP addresses to perform a (rough) lookup. The information is compiled into a database where lookups can be performed. However IP addresses do not contain any information regarding their (physical) origin, rather they only identify a device on the internet. Localization information for any given IP address is tracked manually and can change overtime. We recommend either using an external service or acquiring a copy of a GeoIP database for localization lookup purposes.
12
+
Most localization services, such as Maxmind, use IP addresses to perform a (rough) lookup. The information is compiled into a database where lookups can be performed. IP addresses do not contain any information regarding their (physical) origin, rather they only identify a device on the internet. Localization information for any given IP address is tracked manually and can change over time. We recommend either using an external service or acquiring a copy of a GeoIP database for localization lookup purposes.
13
13
14
14
## Implementation
15
15
16
-
Once you have a service that can provide localization information, integrating it into Umbraco Engage is straightforward.
16
+
Once you have a service that can provide localization information, you must integrate it with Umbraco Engage.
17
17
18
-
For this purpose, implement the interface **Umbraco.Engage.Business.Analytics.Processing.Extractors.IRawPageviewLocationExtractor**. This interface allows the localization information for a pageview, defined as a single visitor's visit to a specific point in time. The pageview contains the property **IpAddress** which can be used for Geo IP lookup.
18
+
Implement the following interface:
19
19
20
-
First, define a class that implements **ILocation**, to hold the localization information that will be returned through the interface in our implementation:
This interface allows information about localization for a pageview, defined as a single visitor's visit to a specific point in time. The page view contains the `IpAddress` property that can be used for Geo IP lookup.
23
23
24
+
1. Define a class that implements `ILocation`
25
+
1. This will hold the localization information that will be returned through the interface in our implementation.
26
+
27
+
{% code overflow="wrap" %}
24
28
```cs
25
29
usingUmbraco.Engage.Business.Analytics.Processed;
26
30
publicclassGeoIpLocation : ILocation {
@@ -30,13 +34,12 @@ public class GeoIpLocation : ILocation {
30
34
publicstringCity { get; set; }
31
35
}
32
36
```
33
-
34
37
{% endcode %}
35
38
36
-
Next, implement the location extractor to read and validate the incoming IP address and filter out local IP addresses with the native **IsLoopback** method. Then, call your Geo IP localization implementation:
37
-
38
-
{% code overflow="wrap" lineNumbers="true" %}
39
+
2. Implement the location extractor to read and validate the incoming IP address and filter out local IP addresses with the native `IsLoopback` method.
@@ -63,13 +66,15 @@ public class MyCustomLocationExtractor : IRawPageviewLocationExtractor
63
66
}
64
67
}
65
68
```
66
-
67
69
{% endcode %}
68
70
69
-
Lastly, let the IoC container know to use your implementation for the **IRawPageviewLocationExtractor**. Umbraco Engage has a default implementation of this service, which only returns null. This default service is registered using Umbraco's **RegisterUnique** method. To override this service, call RegisterUnique **after** the Umbraco Engage dependencies have been initialized, which is **after** the **UmbracoEngageApplicationComposer**:
71
+
4. Let the IoC container know to use your implementation for the `IRawPageviewLocationExtractor`.
72
+
73
+
Umbraco Engage has a default implementation of this service, which only returns null. This default service is registered using Umbraco's `RegisterUnique` method.
70
74
71
-
{% code overflow="wrap" lineNumbers="true" %}
75
+
5. Override this service by calling `RegisterUnique`**after** the `UmbracoEngageApplicationComposer`.
@@ -85,13 +90,12 @@ public class UmbracoEngageComposer: IComposer
85
90
}
86
91
}
87
92
```
88
-
89
93
{% endcode %}
90
94
91
-
After implementing this, Umbraco Engage will begin collecting and displaying localization information for pageviews. This can be viewed in the Analytics section of the Umbraco Engage dashboard.
95
+
After implementing this, Umbraco Engage collects and displays localization information for pageviews. This can be viewed in the Analytics section of the Umbraco Engage dashboard.
92
96
93
97
{% hint style="info" %}
94
-
If the custom implementation returns **null**, **ILocation** will display as "Unknown".
98
+
If the custom implementation returns `null`, `ILocation` will display as "Unknown".
0 commit comments