Skip to content

Commit 1468ca3

Browse files
Sofie Toft Kristensengitbook-bot
authored andcommitted
GITBOOK-38: Official launch final touches
1 parent 2136dc9 commit 1468ca3

File tree

19 files changed

+79
-92
lines changed

19 files changed

+79
-92
lines changed

13/umbraco-engage/README.md

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,6 @@ description: >-
66

77
# Umbraco Engage Documentation
88

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-
159
{% hint style="warning" %}
1610
Umbraco Engage is currently only available for Umbraco 13.
1711
{% endhint %}
@@ -20,7 +14,7 @@ Umbraco Engage is a marketing suite that helps marketers and developers create p
2014

2115
Explore the top features and learn more about Umbraco Engage on [Umbraco.com](https://umbraco.com/products/add-ons/engage/).
2216

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>
2418

2519
## Quick Links
2620

13/umbraco-engage/SUMMARY.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# Table of contents
22

33
* [Umbraco Engage Documentation](README.md)
4+
* [Support](support.md)
45

56
## Installation
67

@@ -119,7 +120,6 @@
119120
* [Headless](developers/headless/README.md)
120121
* [Using the Marketing API](developers/headless/using-the-marketing-api.md)
121122
* [Headless Example](developers/headless/headless-example.md)
122-
* [Support](developers/support.md)
123123

124124
## Security and Privacy
125125

13/umbraco-engage/developers/ab-testing/csharp-api.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,22 +10,22 @@ description: >-
1010

1111
You can retrieve the active A/B test variants for a visitor in different ways depending on your specific scenario:
1212

13-
* **IAbTestingService.GetCurrentVisitorActiveAbTestVariants()**
13+
* `IAbTestingService.GetCurrentVisitorActiveAbTestVariants()`
1414
* Namespace: `Umbraco.Engage.Web.AbTesting`
1515
* Returns the active variants for the current visitor on the current page.
1616
* Can only be used with an active request context
17-
* **IAbTestingVisitorService.GetVisitorAbTestVariants(visitorExternalId, pageId, culture, contentTypeId)**
17+
* `IAbTestingVisitorService.GetVisitorAbTestVariants(visitorExternalId, pageId, culture, contentTypeId)`
1818
* Namespace: `Umbraco.Engage.Business.AbTesting`
1919
* Retrieves active A/B test variants on a specific page, without requiring a request context.
20-
* The visitor external id can be retrieved using **IAnalyticsVisitorExternalIdHandler.GetExternalId()**
21-
* **IAbTestVisitorToVariantManager.GetActiveVisitorVariants(visitorExternalId)**
20+
* The visitor external id can be retrieved using `IAnalyticsVisitorExternalIdHandler.GetExternalId()`
21+
* `IAbTestVisitorToVariantManager.GetActiveVisitorVariants(visitorExternalId)`
2222
* Namespace: `Umbraco.Engage.Business.AbTesting`
2323
* 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()`
2525

2626
### Example
2727

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:
2929

3030
```cs
3131
using Umbraco.Engage.Business.AbTesting;

13/umbraco-engage/developers/analytics/client-side-events-and-additional-javascript-files/google-analytics-blocker-detection.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,3 @@ If you include the script one of the following events is sent:
1919
* Otherwise, the following event is sent: `umbEngage("send", "event", "Tracking", "Allowed", "Google Analytics");`
2020

2121
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'.
22-
23-
![]()

13/umbraco-engage/developers/analytics/extending-analytics/getting-the-correct-ip-address.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@ description: >-
66

77
# Getting the Correct IP Address
88

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.
1010

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.
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.
1212

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.
1414

1515
The default extractor looks like this:
1616

@@ -29,7 +29,7 @@ public string ExtractIpAddress(HttpContextBase context)
2929
}
3030
```
3131

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:
3333

3434
```cs
3535
using Umbraco.Engage.Business.Analytics.Collection.Extractors;
@@ -47,11 +47,11 @@ public class CustomIpExtractorUserComposer : IUserComposer
4747
```
4848

4949
{% 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.
5151
{% endhint %}
5252

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.
5454

5555
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.
5656

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.

13/umbraco-engage/developers/analytics/extending-analytics/sending-data-to-the-gtm-datalayer.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,25 @@
11
---
22
description: >-
3-
Discover how to push A/B testing and personalization variables from
4-
Umbraco Engage to the Google Tag Manager (GTM) data layer in Razor templates.
3+
Discover how to push A/B testing and personalization variables from Umbraco
4+
Engage to the Google Tag Manager (GTM) data layer in Razor templates.
55
---
66

7-
# Sending data using Google Tag Manager
7+
# Sending data to the GTM Datalayer
88

99
Umbraco Engage provides a partial view that pushes variables related to A/B testing and personalization to the Google Tag Manager (GTM) data layer.
1010

1111
The following variables are pushed:
1212

13-
* `inabtest: true` - if the visitor participates in an active A/B test on the page; otherwise **false**.
13+
* `inabtest: true` - if the visitor participates in an active A/B test on the page; otherwise `false`.
1414

1515
{% hint style="info" %}
1616
This will also be **true** if the visitor is assigned to the "A" variant which is the original page.
1717
{% endhint %}
1818

19-
* `abtestname` - The name of the A/B test the visitor is participating in. If there is no active A/B test, the value will be **null**
20-
* `abtestvariant` - The name of the A/B test variant assigned to the visitor. If there is no active A/B test, the value will be **null**
21-
* `personalized: true` - If personalization is applied to the page for the visitor; otherwise **false**.
22-
* `personalizationname` - The name of the active personalization. If there is no active personalization, the value will be **null**.
19+
* `abtestname` - The name of the A/B test the visitor is participating in. If there is no active A/B test, the value will be `null`
20+
* `abtestvariant` - The name of the A/B test variant assigned to the visitor. If there is no active A/B test, the value will be `null`
21+
* `personalized: true` - If personalization is applied to the page for the visitor; otherwise `false`.
22+
* `personalizationname` - The name of the active personalization. If there is no active personalization, the value will be `null`.
2323

2424
To render the partial view in your Razor template, use the following line:
2525

13/umbraco-engage/developers/analytics/forms.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ To track Umbraco Forms submissions, you need to install [Umbraco Forms](https://
99

1010
## Summary
1111

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.
1313

1414
The following is measured:
1515

@@ -26,7 +26,7 @@ The following is measured:
2626
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:
2727

2828
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`\`.
3030
3. Give the new form field a name such as **Visitor ID**.
3131
4. Specify a URL in the settings of the field type called **Template**:
3232

13/umbraco-engage/developers/analytics/location.md

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,26 @@ description: Learn how to implement an IP to location provider.
55

66
# Capture location data
77

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.
99

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.
1111

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.
1313

1414
## Implementation
1515

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.
1717

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:
1919

20-
First, define a class that implements **ILocation**, to hold the localization information that will be returned through the interface in our implementation:
20+
`Umbraco.Engage.Business.Analytics.Processing.Extractors.IRawPageviewLocationExtractor`
2121

22-
{% code overflow="wrap" lineNumbers="true" %}
22+
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.
2323

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" %}
2428
```cs
2529
using Umbraco.Engage.Business.Analytics.Processed;
2630
public class GeoIpLocation : ILocation {
@@ -30,13 +34,12 @@ public class GeoIpLocation : ILocation {
3034
public string City { get; set; }
3135
}
3236
```
33-
3437
{% endcode %}
3538

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.
40+
3. Call your Geo IP localization implementation.
3941

42+
{% code overflow="wrap" %}
4043
```cs
4144
using Umbraco.Engage.Business.Analytics.Processing.Extractors;
4245
public class MyCustomLocationExtractor : IRawPageviewLocationExtractor
@@ -63,13 +66,15 @@ public class MyCustomLocationExtractor : IRawPageviewLocationExtractor
6366
}
6467
}
6568
```
66-
6769
{% endcode %}
6870

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.
7074

71-
{% code overflow="wrap" lineNumbers="true" %}
75+
5. Override this service by calling `RegisterUnique` **after** the `UmbracoEngageApplicationComposer`.
7276

77+
{% code overflow="wrap" %}
7378
```cs
7479
using Umbraco.Engage.Business.Analytics.Processing.Extractors;
7580
using Umbraco.Engage.Common.Composing;
@@ -85,13 +90,12 @@ public class UmbracoEngageComposer: IComposer
8590
}
8691
}
8792
```
88-
8993
{% endcode %}
9094

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.
9296

9397
{% 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".
9599
{% endhint %}
96100

97101
{% hint style="info" %}

0 commit comments

Comments
 (0)