contents · 2020-04-01 · contents living user experience ... lead nurturing think about the...

36
Contents Living User eXperience - LUX - the Marketing Automation tool for TYPO3 3 Introduction ................................................. 3 Screenshots ................................................. 3 Documentation ............................................... 7 Features ................................................... 7 Tracking ................................................ 7 Identification ............................................. 7 Analyses ................................................ 8 Scoring ................................................ 8 Workflow & User Experience .................................... 8 CommandControllers & Scheduler ................................. 8 Privacy Features ........................................... 8 Possible Enterprise Features ..................................... 8 Technical requirements ........................................... 9 Changelog .................................................. 9 Marketing documenation ......................................... 10 Glossary ................................................ 10 Identification ............................................. 11 Lead nurturing ............................................ 11 Cold calling - tipps and tricks .................................... 11 Understanding the diagrams ................................. 11 Getting informed ....................................... 12 Via internal chat ....................................... 12 Privacy documenation ........................................... 12 Example part for your privacy page ................................. 12 User information ........................................... 13 Tracking Opt-Out .......................................... 13 Opt-Out Plugin ........................................ 13 DoNotTrack Header ..................................... 13 Tracking and Analysis ........................................ 13 TypoScript Configuration .................................. 13 Backend Module Analysis ...................................... 14 Dashboard .......................................... 14 Content ............................................ 14 Scoring and Categoryscoring .................................... 14 Scoring ............................................ 15 Categoryscoring ....................................... 15 CommandController ......................................... 15 LuxAnonymizeCommandController ............................. 16 LuxCleanupCommandController .............................. 16 LuxLeadCommandController ................................ 16 LuxServiceCommandController ............................... 16 FAQ .................................................. 17 How to enable tracking even if I’m logged in into backend? ............... 17 I change lib.lux.settings but nothing happens? ...................... 17 Lux does not work - any hints? ............................... 17 How to add own workflow triggers? ............................. 17 How to add own workflow actions? ............................. 17 Identification ............................................. 17 Field mapping ........................................ 18 Email4link .......................................... 19 Technical documenation .......................................... 20 1

Upload: others

Post on 09-Jun-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Contents · 2020-04-01 · Contents Living User eXperience ... Lead nurturing Think about the customer livecycle and try to develop your leads. There are a few possibilities of nurturing

Contents

Living User eXperience - LUX - the Marketing Automation tool for TYPO3 3Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3Screenshots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

Tracking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7Identification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7Analyses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8Scoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8Workflow & User Experience . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8CommandControllers & Scheduler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8Privacy Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8Possible Enterprise Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

Technical requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9Changelog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9Marketing documenation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10Identification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11Lead nurturing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11Cold calling - tipps and tricks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

Understanding the diagrams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11Getting informed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12Via internal chat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

Privacy documenation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12Example part for your privacy page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12User information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13Tracking Opt-Out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

Opt-Out Plugin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13DoNotTrack Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

Tracking and Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13TypoScript Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

Backend Module Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14Dashboard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14Content . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

Scoring and Categoryscoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14Scoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15Categoryscoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

CommandController . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15LuxAnonymizeCommandController . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16LuxCleanupCommandController . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16LuxLeadCommandController . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16LuxServiceCommandController . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

FAQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17How to enable tracking even if I’m logged in into backend? . . . . . . . . . . . . . . . 17I change lib.lux.settings but nothing happens? . . . . . . . . . . . . . . . . . . . . . . 17Lux does not work - any hints? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17How to add own workflow triggers? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17How to add own workflow actions? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

Identification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17Field mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18Email4link . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

Technical documenation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

1

Page 2: Contents · 2020-04-01 · Contents Living User eXperience ... Lead nurturing Think about the customer livecycle and try to develop your leads. There are a few possibilities of nurturing

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

1. Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212. Installation via composer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21Extension Manager settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223. Add TypoScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234. Ready to go . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

Backend Module Leads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24Detail Preview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24Detail View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

Plugins and Pageoverview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25Pageoverview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25Plugins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

Backend Module Workflows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26List view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 Title . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 Trigger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27TypoScript Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27Extending Triggers and Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

2

Page 3: Contents · 2020-04-01 · Contents Living User eXperience ... Lead nurturing Think about the customer livecycle and try to develop your leads. There are a few possibilities of nurturing

Living User eXperience - LUX - the Marketing Automation tool for

TYPO3

Introduction

LUX is an enterprise software solution to fill the gap between your TYPO3-website and a standalonemarketing automation tool. LUX will track, identify, analyse your leads and give the visitors some improveduser experience for your website like showing relevant information at the right time.

Screenshots

Example dashboard overview:

Example leadlist:

3

Page 4: Contents · 2020-04-01 · Contents Living User eXperience ... Lead nurturing Think about the customer livecycle and try to develop your leads. There are a few possibilities of nurturing

Show some details:

Show relevant information in page view:

4

Page 5: Contents · 2020-04-01 · Contents Living User eXperience ... Lead nurturing Think about the customer livecycle and try to develop your leads. There are a few possibilities of nurturing

Workflow - Define your own trigger(s) and combine them via AND or OR:

Workflow - Do one or more Actions if a trigger is activated:

5

Page 6: Contents · 2020-04-01 · Contents Living User eXperience ... Lead nurturing Think about the customer livecycle and try to develop your leads. There are a few possibilities of nurturing

Ask for the visitors email-address when he/she wants to download an asset:

. . . with a CK editor plugin:

6

Page 7: Contents · 2020-04-01 · Contents Living User eXperience ... Lead nurturing Think about the customer livecycle and try to develop your leads. There are a few possibilities of nurturing

Documentation

See the full documentation (technical, marketing and privacy)

Features

Tracking

• Page views• Number of website visits• Pagefunnel• First and last visit• Store attributes from any form on the website• Enrich information via IP: Country, Region, Company• Track any asset download

Identification

• Identify a lead with any webform email field• O�er via CkEditor plugin a email4link popup (give me your email and we are going to send you the

asset via email)• Automaticly merge cookie-ids on second identification (if cookie was removed)

7

Page 8: Contents · 2020-04-01 · Contents Living User eXperience ... Lead nurturing Think about the customer livecycle and try to develop your leads. There are a few possibilities of nurturing

Analyses

• Last leads per page• Dashboard (most important information)• Listview• Detailview with pagefunnel and activity-log• Show pageviews• Show asset downloads

Scoring

• General scoring (with individual calculation)• Category Scoring• Contextual content (based on category scoring)

Workflow & User Experience

• Workflow backend module with a GUI and easy extension possibility• Triggers: – On page visit (define on which number of pagevisit) – On a minimum scoring – If in a time

frame – If visitor enters a page from a category – If visitor gets identified• Actions: – Lightbox with a content element – Send an email with lead details – Redirect to any URL –

Send publication to a slack channel

CommandControllers & Scheduler

• Anonymize leads (for presentations or local development)• Cleanup commands (to really erase data)• Lead commands to get a summary mail with last activities• Service commands (calculate scoring for all leads)

Privacy Features

• There is a plugin which allows the visitor to opt from tracking• The doNotTrack header of the browser will be respected• Toogle IP anonymize function• Toggle IP information enrichment over ipapi.com• Toggle Tracking of Pagevisits• Toggle Tracking of Downloads• Toggle Field identification of any form• Toogle Email4link functionality• CommandController to anonymize records (for developing or for a presentation)

Possible Enterprise Features

• Todo: Blacklisting• Todo: Newsletter tool (replace or extend direct_mail? New tool - usable without Lux?)• Todo: Contacts (Import?)• Todo: API (Im- and Export)• Todo: A/B Tests• Todo: SocialMedia Connection (Twitter)

8

Page 9: Contents · 2020-04-01 · Contents Living User eXperience ... Lead nurturing Think about the customer livecycle and try to develop your leads. There are a few possibilities of nurturing

Technical requirements

lux needs minimum TYPO3 8.7 as a modern basic together with composer mode. Every kind of form extensionis supported for the identification feature (powermail, form, formhandler, felogin, etc. . . ).

Changelog

Version Date State Description1.19.0 2018-04-

24Task Documentation update. Telecommunication provider list update.

1.18.0 2018-04-21

Feature Introduce summary-mails in command controller.

1.17.0 2018-04-12

Feature Publish to multiple slack channels now.

1.16.1 2018-04-12

Bugfix Fix for chrome select boxes in workflow module, fix filter select incontent view.

1.16.0 2018-04-12

Feature Show company from IP-address on di�erent places. Add companytrigger.

1.15.1 2018-04-04

Bugfix Allow links in lightboxes now.

1.15.0 2018-04-04

Task Add documentation, Dashboard: Show percentual values. Performancein content view.

1.14.0 2018-03-26

Bugfix Small bugfixes (CKeditor Plugin, Dateformat)

1.13.2 2018-03-18

Bugfix Small bugfixes.

1.13.1 2018-03-15

Bugfix Small bugfixes.

1.13.0 2018-03-14

Task Add css grid for dashboard. Small bugfixes.

1.12.0 2018-03-13

Feature Disable tracking if be-user is logged in. Small bugfixes.

1.11.0 2018-03-12

Feature Some privace features. Some brush up. Add contextual content plugin.

1.10.0 2018-03-10

Task Some small improvements. Add a opt-out plugin.

1.9.0 2018-03-08

Task Some changes to see categoryscorings.

1.8.0 2018-03-07

Feature Optical refactoring of pageoverview. Bugfix in category scoring.

1.7.0 2018-03-07

Feature Add identified trigger and slack action.

1.6.0 2018-03-06

Task Add categoryscoring. Bugfix: Don’t track downloads with email4linktwice.

1.5.1 2018-03-05

Bugfix Prevent exception in backend.

1.5.0 2018-03-05

Task Finish workflow modules with initial triggers/actions. Small bugfixes.

1.4.0 2018-03-04

Task Split backend modules, add content analysis, integrate nearly completeworkflow

1.3.0 2018-03-02

Task Don’t show full download path in frontend with email4download

9

Page 10: Contents · 2020-04-01 · Contents Living User eXperience ... Lead nurturing Think about the customer livecycle and try to develop your leads. There are a few possibilities of nurturing

Version Date State Description1.2.0 2018-03-

01Task Some small fixes in backend analysis show identified and recurring.

1.1.1 2018-02-27

Bugfix Some small fixes in backend analysis and email4link functionality.

1.1.0 2018-02-26

Task Show more relevant information in detail view. Small fixes.

1.0.1 2018-02-26

Bugfix Fix some smaller bugs that occurs with live data

1.0.0 2018-02-26

Task Initial Release with a stable tracking, identification and analyses

Marketing documenation

We’re going to update this documenation from time to time to give you some hints how to use lux or amarketing automation tool to get best results.

Glossary

First of all, let’s define some terms in marketing automation and in Lux. This will help you with this manualand simplifies the work with marketing automation tools in general.

Term DescriptionLux Living User eXperience - the Marketing Automation tool for TYPO3Lead A lead is a potential new customer for your business. No matter if you sell

products or services.Visitor A visitor is a website-visitor. This could be a lead or just someone who comes to

your site and leaves at once because he/she was wrongScoring A scoring is a value related to a lead, where we want to see how hot this lead

is.This means: The more scoring the lead have, the more business-relevant is thislead.So, scoring is just a factor for us to see how interested the lead is - or if thelead wants to do business with us.A scoring can also decrease if the last visit fromthe lead was some time ago.

Category-Scoring While a scoring tells us if a lead is hot, we still don’t in which product or servicethe lead is interested in.Here comes the category scoring. You can have unlimitedcategories and a scoring related to category with Product A will tell us, if thelead is interested in the product.A category-scoring will not decrease, even if thevisit was some time ago.

Nurturing Lead-Nurturing means to develop a lead. Tell your leads relevant information andlet them know how your business could help them. If you do this step by step, youwill develop your leads - you will nurture your leads.

Email4link Email4link is a Lux feature where you can ask your leads for their email if theywant to download something.

Workflow A workflow is a combination of one or more triggers and one or more actions tonurture your leads.

Workflow Trigger A trigger is a point of action this will cause an action. A known trigger could bee.g. the second website visit.

Workflow Action An action will be executed if a trigger fits. A known action could be to open alightbox for the visitor.

Identified Lead An identified lead means, that we know his/her email address.

10

Page 11: Contents · 2020-04-01 · Contents Living User eXperience ... Lead nurturing Think about the customer livecycle and try to develop your leads. There are a few possibilities of nurturing

Term DescriptionLead identification This is a virtual field of the lead and is used in the lead backend module and on

some other places of Lux. Depending on the information that we have, we show theemail or the first- and lastname or simply “Anonymous” if the lead is still notidentified.

Cookie A cookie is an individual value that is saved in the visitors browser.DoNotTrack Browser support a DoNotTrack setting. This setting must be turned on from the

user (it is not a default setting of the browser). If lux recognize this setting, alltracking functions are disabled. We will respect this privacy setting!

Slack Slack is a chat platform. Mainly used for team-communication and loved bydevelopers. There is a Publish to a slack channel workflow action available in Lux.

Identification

This part of the documentation describes di�erent possibilities to identify your leads. Identification meansthat you are able to know the person behind the lead. And this needs an unique identification-property fromthe lead. E.g. firstname would be - of course - not a good property because this is not unique. MarketingAutomation tools are going to use the email-address as unique property of the user. And. . . emails aregreat because, you can:

• identify the lead• see the firstname as part of the email address (mostly given in business cases)• see the lastname as part of the email address (mostly given in business cases)• see the company as part of the email address (mostly given in business cases)• having an url (company) where you can simply find more interesting stu� of your lead• send marketing relevant information in newsletters

So, if email-addresses are great and we want to collect the email from our unknown leads - how can we dothis? The answer is simple: We have to deal a bit with our visitors. Let them download an interesting asset(e.g. a whitepaper) but ask for their email address first. Another way would be to o�er a callback-form whereyou o�er to call the visitor - also ask for the email address here. Is there a form, where the visitor can getaccess to a software? You guessed it, ask for the email address.

A good percentual value would be an identification rate of 1% of all your visitors. So check the Lux dashboardand decide to make more deals if the value is too low.

See more technical details in documenation part Identification

Lead nurturing

Think about the customer livecycle and try to develop your leads. There are a few possibilities of nurturinglike storytelling (tell your visitors a story to let them understand the problems they have and the solution youare o�ering), contextual content (show only relevant content for the needs of your visitors) or open a lightboxwith a special o�er if the lead visits your product the second or third time.

Cold calling - tipps and tricks

Understanding the diagrams

When is the perfect time for a cold call? Lux will help you to show the relevant information you or yourssales need. In the following example you will see the scoring of a potential new customer. There are twovisible peaks in the diagram. Every peak reflects a perfect time for a cold call because this is the time whenthe lead shows activity on your website and this means - he/she is interested in your company, your products

11

Page 12: Contents · 2020-04-01 · Contents Living User eXperience ... Lead nurturing Think about the customer livecycle and try to develop your leads. There are a few possibilities of nurturing

or your service. The visible drop in the diagram reflects a time when the visitor is too busy or maybe notinterested any more. So don’t miss the perfect time.

The categoryscoring diagram shows you in which product the lead is interested in. So this will help you too�er your potential customer the right product.

Getting informed

Via Email

You can set up a lead summary mail (e.g. frequently every monday) with the last visitors and there companies.This means, you don’t have to log in into TYPO3 and see the important information in your mail client(e.g. Outlook).

Via internal chat

If you’re using an internal tool like slack for your team-communication, you can set up an own workflow toget informed if there is an interesting lead on your website. Even if it is not identified it’s possible to seerelevant information like the companyname or the location.

This part of the documentation gives you some information about privacy on websites in general.

Privacy documenation

Lux respects the privacy protection of website visitors. Please follow our example.

First of all let your visitors know what kind of information you are collecting and why you are collection thoseinformation. The best place for this explanation is the privacy site (Datenschutzerklärung). This will followthe rules of GDPR (General Data Protection Regulation) / DSGVO (Datenschutzgrundverordnung).

Example part for your privacy page

This could be an example for your German “Datenschutzerklärungsseite”. This is not a legal bindingdeclaration.

<h2>Verwendung des Marketing-Automation-Tools lux</h2>

Diese Website benutzt das Marketing-Automation-Tool lux. Lux verwendet so genannte "Cookies".Das sind Textdateien, die auf Ihrem Computer gespeichert werden und die eine Analyse der Benutzung der Website durchSie ermöglichen. Dazu werden die durch den Cookie erzeugten Informationen über die Benutzung dieser Website auf unseremServer gespeichert. Zusätzlich speichern wir Ihre Eingaben und Vorlieben um Ihnen entsprechende Inhalte anzubietenund die Bedienbarkeit der Website zu vereinfachen.

Diese Informationen werden nicht an Dritte weitergegeben. Sie können die Speicherung der Cookies durch eineentsprechende Einstellung Ihrer Browser-Software verhindern - z.B. durch Aktivierung des "DoNotTrack" Headers; wirweisen Sie jedoch darauf hin, dass Sie in diesem Fall gegebenenfalls nicht sämtliche Funktionen dieser Websitevollumfänglich werden nutzen können.

Wenn Sie mit der Speicherung und Nutzung Ihrer Daten nicht einverstanden sind, können Sie die Speicherung und Nutzunghier deaktivieren. In diesem Fall wird in Ihrem Browser ein Opt-Out-Cookie hinterlegt der verhindert, dass LuxNutzungsdaten speichert. Wenn Sie alle Ihre Cookies löschen, hat dies zur Folge, dass auch das Lux Opt-Out-Cookiegelöscht wird. Das Opt-Out muss bei einem erneuten Besuch unserer Seite wieder aktiviert werden.

We would recommend to place an Opt-Out Plugin also nerby this explanation (see Plugins).

12

Page 13: Contents · 2020-04-01 · Contents Living User eXperience ... Lead nurturing Think about the customer livecycle and try to develop your leads. There are a few possibilities of nurturing

User information

Every visitor has the right to see every data that you’ve stored about him/her. In addition the right that allinformation must be removed.

Beside a CommandController to remove leads and all there data, there is a Remove completely button in thedetail view of a lead. Both will result in a complete remove of all data of the lead.

Tracking Opt-Out

Opt-Out Plugin

As known from Matomo (former known as Piwik) also Lux o�ers a Plugin fo an Opt-Out possibility forvisitors.

DoNotTrack Header

Browsers support a (per default turned o�) option to inform the website that the visitor don’t wants to betracked. This is the DoNotTrack or DNT setting. Even if this rare used feature of the browser is only arecommendation, Lux will respect this setting of course!

Note: While Firefox turns on the DNT by default for anonymous tabs, Chrome and Internet Explorer neverturn this setting on by default.

Tracking and Analysis

This part of the documentation describes all configuration parts related to analysis and tracking of visitorsand will be automaticly loaded if you choose the main lux static template in the root template.

TypoScript Configuration

The file 01_TrackingConfiguration.typoscript contains all relevant settings for the visitor tracking.

Lux basicly tracks every vistors page request with the current time. In addition it’s possible to also trackasset downloads.

See the inline comments for a description in TypoScript:

lib.lux.settings {

# All tracking settingstracking {

pagevisits {# Toggle pagevisit tracking (on/off).# Switching this feature on will flood table tx_lux_domain_model_pagevisit but allow you to see a full pagefunnel of all of your visitors. Your decision :)_enable = {$plugin.tx_lux.settings.tracking.page}

}assetDownloads {

# Toogle asset download tracking (on/off)_enable = {$plugin.tx_lux.settings.tracking.assetDownloads}

# Allow only files with this extensionsallowedFileExtensions = {$plugin.tx_lux.settings.tracking.assetDownloads.allowedExtensions}

}}

}

13

Page 14: Contents · 2020-04-01 · Contents Living User eXperience ... Lead nurturing Think about the customer livecycle and try to develop your leads. There are a few possibilities of nurturing

Constants to this TypoScript part:

plugin.tx_lux.settings {# cat=lux//0010; type=boolean; label= Activate page tracking: (De)Activate tracking of the users pagefunnel.tracking.page = 1

# cat=lux//0020; type=boolean; label= Activate download tracking: (De)Activate tracking if the user downloads an asset.tracking.assetDownloads = 1

# cat=lux//0020; type=text; label= Activate download tracking: (De)Activate tracking if the user downloads an asset.tracking.assetDownloads.allowedExtensions = pdf,txt,doc,docx,xls,xlsx,ppt,pptx,jpg,png,zip

}

Example page tracking request in browser console:

Backend Module Analysis

Dashboard

Now, if lux is up and running, you should see information in the Analysis Backend Module in the dashboardview:

The dashboard view should give you a quick overview about the latest activities and some useful information:* How many recurring/unique leads * How many identified leads * The latest page visits * Hottest leads(orderings by scoring) * Activity log * A world map for a basic visitor analysis

Clicking on a name/email/“anonymous” will open a detail page with some more information of the lead.

Note: You can filter the dashboard view to leads from this or from previous month or from this year withthe filter select at the top

With a bit of TypoScript configuration it’s possible to decide which activity status should be shown in activitylog in dashboard view:

lib.lux.settings {backendview {

analysis {activity {

# Greater then 0 means to also have "lux identified a new lead", greater 1 means to not have this kind of messagesstatusGreaterThen = 1

}}

}}

Content

If you choose the content view (see top left to switch from dashboard to content), you will see the 100 mostinteresting pages and assets for your leads.

Clicking on an asset or a page will open a detail page to this item, where you can exactly see which lead wasinterested in this item.

Scoring and Categoryscoring

This part of the documentation tells us a bit about scoring and categoryscoring and how to configure lux forthat.

14

Page 15: Contents · 2020-04-01 · Contents Living User eXperience ... Lead nurturing Think about the customer livecycle and try to develop your leads. There are a few possibilities of nurturing

While scoring reflects how hot a lead is in general, category scoring shows which product/service is theright choice for di�erent leads (see glossary at Marketing Information).

Scoring

A basic scoring tells us how interested a lead is in general. So page visits and downloads are the key.

The default scoring calculation is stored in the Extension Manager settings of lux (see part Installation) andis:

(10 * numberOfSiteVisits) + (1 * numberOfPageVisits) + (20 * downloads) - (1 * lastVisitDaysAgo)

Note: If you’re using lastVisitDaysAgo you want to decrease scoring if the last page visit of the lead was awhile ago. That means that you have to call a CommandController once a day (or night) for a calculation.

The general scoring is visible on di�erent views in Lux. Mostly beside the lead identification. The value inthe grey badge reflects the general scoring. The value in the blue badge reflects the hottest category scoring:

Categoryscoring

You know your business much better than us. So you have to think about, which categories reflect whichpart of your business in your TYPO3 installation. In our case, we could use a category for this product luxanother for our product Content Publisher and probably a third for carreer to find new collegues whowants to help us with lux and TYPO3. Of course a download or a page visit of an asset/page of a lux categoryshould increase a category scoring.

What can we do with the knowledge about leads and their category scoring? Lux is able to execute workflowactions (see Workflow) based on category scoring or show contextual content (also based on category scoring -see Plugins).

Configuration

You can simply define some lux-categories in your TYPO3. A lux-category is just a sys_category record inTYPO3. Don’t forget to check the checkbox “lux-category”.

After you added some lux-categories to your system, you can mark pages and files with that categories.

Calculation

Per default every visit of a page of a lux-category will increase category-scoring with factor 10 while adownload will increase the value by 20 (a download is a larger action then a simple pagevisit - this results inmore scoring points of course).

If you want to change the factors, you can do this in the Extension Manager in the settings of lux (see partInstallation).

Analysis

Just open a lead detail-view. You will see all relevant information about category scorings to this lead.

CommandController

This part of the documentation shows you all available CommandControllers in Lux.

Most of the CommandControllers can be called via CLI or via Scheduler Backend Module (directly or viacronjob).

15

Page 16: Contents · 2020-04-01 · Contents Living User eXperience ... Lead nurturing Think about the customer livecycle and try to develop your leads. There are a few possibilities of nurturing

LuxAnonymizeCommandController

• \In2code\Lux\Command\LuxAnonymizeCommandController::anonymizeAllCommand() will anony-mous all record data. This is only a function if you want to present your Lux information to others.Because this function cannot be reverted, please do this only on test systems.

Note: This CommandController can be started from CLI only (not from Scheduler).

LuxCleanupCommandController

• \In2code\Lux\Command\LuxCleanupCommandController::removeUnknownVisitorsByAgeCommand(int$timestamp) Remove not identified visitors where the last visit is older then the given Timestamp (inseconds). Remove means in this case not deleted=1 but really remove from database.

• \In2code\Lux\Command\LuxCleanupCommandController::removeVisitorsByAgeCommand(int$timestamp) Remove all visitors (identified and anonymous) where the last visit is older then the givenTimestamp (in seconds). Remove means in this case not deleted=1 but really remove from database.

• \In2code\Lux\Command\LuxCleanupCommandController::removeVisitorByUidCommand(int$visitorUid) Remove a single visitor (identified or anonymous) by a given uid. Removemeans in this case not deleted=1 but really remove from database.

LuxLeadCommandController

All commands in this class allows you to frequently receive a summary of leads via email.

• \In2code\Lux\Command\LuxLeadCommandController::sendSummaryCommand() Get all leads: You canspecify the receiver email addresses, the timeframe in which you are interested (e.g. “give me all leadsof the last 24h”), if lux should send you only identified leads and a minimum scoring.

Example CLI call (via typo3_console):

./vendor/bin/typo3cms luxlead:sendsummary [email protected],[email protected] --timeframe=86400 --identified=1 --minimum-scoring=10

• \In2code\Lux\Command\LuxLeadCommandController::sendSummaryOfLuxCategoryCommand() Getall leads of a lux category: You can specify the receiver email addresses, the timeframe in which you areinterested (e.g. “give me all leads of the last 24h”), if lux should send you only identified leads and ascoring of a category must be higher then 0.

Example CLI call (via typo3_console):

./vendor/bin/typo3cms luxlead:sendsummaryofluxcategory [email protected],[email protected] --timeframe=86400 --identified=1 --lux-category=1

• \In2code\Lux\Command\LuxLeadCommandController::sendSummaryOfKnownCompaniesCommand()Get all leads and companies (even anonymous): You can specify the receiver email addresses, thetimeframe in which you are interested (e.g. “give me all leads of the last 24h”), a minimum scoring andif there must be a scoring in a lux category (higher then 0).

Example CLI call (via typo3_console):

./vendor/bin/typo3cms luxlead:sendsummaryofknowncompanies [email protected],[email protected] --timeframe=86400 --minimum-scoring=10 --lux-category=1

Example summary mail for sales with activities of identified and unknown leads of a given timeframe (e.g. thelast day):

LuxServiceCommandController

\In2code\Lux\Command\LuxServiceCommandController::reCalculateScoringCommand() This commandwill calculate the scoring of all leads. Normally used if the calculation changes or if you are using the variablelastVisitDaysAgo in Extension Manager configuration of the extension Lux. In the last case it’s recommendedto run the calculation once per night.

16

Page 17: Contents · 2020-04-01 · Contents Living User eXperience ... Lead nurturing Think about the customer livecycle and try to develop your leads. There are a few possibilities of nurturing

FAQ

How to enable tracking even if I’m logged in into backend?

With a single line of TypoScript constants: plugin.tx_lux.settings.disableTrackingForBackendUsers= 0

I change lib.lux.settings but nothing happens?

If you change/overwrite lib.lux, take care that you tell the plugin and the module that this changed.

Example TypoScript setup:

# Add Slack webhookUrllib.lux.settings.workflow.actions.4.configuration.webhookUrl = https://hooks.slack.com/services/mywebhookcodelib.lux.settings.workflow.actions.4.configuration.emoji =plugin.tx_lux_fe.settings < lib.lux.settingsmodule.tx_lux.settings < lib.lux.settings

Lux does not work - any hints?

• Did you clean all caches after installation (in Install Tool)?• Please use a second browser (where you are not logged in into backend) for your tests• Please check if your browser does not use the doNotTrack settings• Please check if there is no cookie value true for cookie luxTrackingOptOut in your browser

How to add own workflow triggers?

This is very simple - see Workflows for more information.

How to add own workflow actions?

This is very simple - see Workflows for more information.

Identification

This part of the documentation describes di�erent possibilities to identify your leads. Identification meansthat you are able to know the person behind the lead. And this needs an unique identification-property fromthe lead. E.g. firstname would be - of course - not a good property because this is not unique. MarketingAutomation tools are going to use the email-address as unique property of the user. And. . . emails aregreat because, you can:

• identify the lead• see the firstname as part of the email address (mostly given in business cases)• see the lastname as part of the email address (mostly given in business cases)• see the company as part of the email address (mostly given in business cases)• having an url (company) where you can simply find more interesting stu� of your lead• send marketing relevant information in newsletters

So, if email-addresses are great and we want to collect the email from our unknown leads - how can we dothis? The answer is simple: We have to deal a bit with our visitors. Let them download an interesting asset(e.g. a whitepaper) but ask for their email address first. Another way would be to o�er a callback-form whereyou o�er to call the visitor - also ask for the email address here. Is there a form, where the visitor can getaccess to a software? You guessed it, ask for the email address.

Going back to the technical part - forms will help us on lead identification.

17

Page 18: Contents · 2020-04-01 · Contents Living User eXperience ... Lead nurturing Think about the customer livecycle and try to develop your leads. There are a few possibilities of nurturing

Field mapping

The easiest way for an identification is to o�er some forms on your website where you listen to the values thatyour visitors add there. Lux will help you to listen on any webform (no matter if it is powermail, femanager,form, formhandler, felogin or a static html content). The technique behind is simple. You can map fieldnames to lead properties via TypoScript.

The default mapping will e.g. map a field with name tx_powermail_pi1[field][e-mail] to the lead propertyemail (see TypoScript below).

lib.lux.settings {

# All identification settingsidentification {

# En- or Disable field identification_enable = {$plugin.tx_lux.settings.fieldidentification}

# Auto identify with EVERY input field of your website.# Using a * as wildcard will search for a string in a string while using a key without * will search for the exact match.fieldMapping {

# "email" is the key-field for visitor identification and merging.email {

0 = *[email]1 = *[e-mail]2 = *[e_mail]

}firstname {

0 = *[firstname]1 = *[first-name]2 = *[first_name]3 = *[firstName]4 = *[vorname]

}lastname {

0 = *[lastname]1 = *[last-name]2 = *[last_name]3 = *[lastName]4 = *[surname]5 = *[sur-name]6 = *[sur_name]7 = *[name]8 = *[nachname]

}company {

0 = *[company]1 = *[firma]

}phone {

0 = *[phone]1 = *[telefon]2 = *[tel]

}username {

0 = username1 = user

18

Page 19: Contents · 2020-04-01 · Contents Living User eXperience ... Lead nurturing Think about the customer livecycle and try to develop your leads. There are a few possibilities of nurturing

2 = benutzername3 = benutze

}}

}}

You can test the field mapping by adding a simple form to your frontend. Open a second browser and fill outthe form. As soon as you enter an email and leave the field (on blur), the values are sent asynchronical toLux. You don’t have to submit the form. Just go into the backend and check if the lead gets identified.

Example powermail form in frontend:

Example lead identification in dashboard:

Email4link

There is another build in feature, where you can simply ask for email addresses if a lead wants to downloadsomething. A plugin for the CKEditor helps you to change every link into a lux email4link-link.

Example configuration yaml file for your CK Editor with lux email4link:

imports:- { resource: "EXT:rte_ckeditor/Configuration/RTE/Processing.yaml" }- { resource: "EXT:rte_ckeditor/Configuration/RTE/Editor/Base.yaml" }- { resource: "EXT:rte_ckeditor/Configuration/RTE/Editor/Plugins.yaml" }

editor:externalPlugins:

luxEmail4Link:resource: �EXT:lux/Resources/Public/JavaScript/Static/CkEditorPlugins/luxEmail4Link/plugin.js�

config:

allowedContent: truecontentsCss: [�EXT:lux/Resources/Public/Css/Modules.min.css�]

toolbarGroups:- { name: �styles�, groups: [ �styles� ] }- { name: �basicstyles�, groups: [ �basicstyles�, �cleanup� ] }- { name: �paragraph�, groups: [ �list�, �indent�, �blocks�, �align�, �bidi�, �paragraph� ] }- { name: �links�, groups: [ �links�, �Email4Link� ] }

...

See the related default TypoScript configuration:

lib.lux.settings {

# All identification settingsidentification {

# Email4Link configuration if visitor wants to receive a mailemail4link {

mail {# Enable/Disable_enable = 1

19

Page 20: Contents · 2020-04-01 · Contents Living User eXperience ... Lead nurturing Think about the customer livecycle and try to develop your leads. There are a few possibilities of nurturing

# Template file for mail with asset attachmentmailTemplate = EXT:lux/Resources/Private/Templates/Mail/Email4LinkMail.html

# Mail subjectsubject = Your requested asset

# From name for mail to visitorfromName = Website

# From email for mail to visitorfromEmail = [email protected]

# Allow only files with this extensionsallowedFileExtensions = pdf,txt,doc,docx,xls,xlsx,ppt,pptx,jpg,png,zip

# Allow only sending of files within this storages (commaseparated uid list)allowedStorages = 1

}}

}}

After that, you can change every link in the CK editor:

Field DescriptionTitle Show a title in the lightbox that opens on click in frontendDescription Show a description in the lightbox that opens on click in frontend (optional)Send asset via email Try to send asset as attachment via email (only possible for allowed file extensions -

see TypoScript)

All clicks in frontend will be catched now by JavaScript and opens a lightbox:

Note: If you want to also use the email4link feature in your HTML-Templates, you can simply add somedata-attributes to your links.

<aclass="btn btn-primary"href="/fileadmin/whitepaper.pdf"data-lux-email4link-sendemail="true"data-lux-email4link-text="Please give us your email-address, we�re going to send you the asset."data-lux-email4link-title="Receive document via email.">Download our whitepaper</a>

Technical documenation

This documentation is the interesting part for administrators and developers and should clearify how lux canbe installed, configured and how does it work. In addition we want to give you some hints how to extend luxwith your own workflow triggers or workflow actions.

Introduction

Lux is build to use asynchronical techniques and without the need of any USER_INT function to also use luxtogether with staticfilecache extension for high performance on your TYPO3 websites.

20

Page 21: Contents · 2020-04-01 · Contents Living User eXperience ... Lead nurturing Think about the customer livecycle and try to develop your leads. There are a few possibilities of nurturing

There is no need to use a JS framework like jQuery - Lux just uses vanilla JS - also for the lightboximplementation.

But TYPO3 should run in composer mode to allow the loading of additional packages (see Installation formore details).

Tracking and doing workflow stu� in frontend needs JavaScript to be enabled in the visitors browser. Somefunctions are disabled if the visitor is also logged in into backend at the same time (to avoid misleadingdata). It’s possible for visitors to opt out (with the opt-out plugin) or to use the do not track settings in theirbrowser. Lux will respect this settings in every case.

Every visitor will get an unique cookie with name luxId. This id will be used for tracking and identification.A second cookie can be added for an opt out with the name luxTrackingOptOut.

Installation

This part of the documentation describes how to install lux to your TYPO3 instance.

1. Requirements

• TYPO3 8.7 or newer• TYPO3 must run in composer mode• PHP 7.0 - 7.2

2. Installation via composer

Example composer.json file:

{"require": {

"php": ">=7.0.0 <7.3.0","typo3/cms": "^8.7","in2code/lux": "^1.0",

},"repositories": [

{"type": "composer","url": "https://composer.typo3.org"

},{

"type": "git","url": "[email protected]:in2code-de/lux.git"

}]

}

After you have added the repository and the package name, you can do a composer update in2code/luxfor example to install the package. Don’t forget to activate (e.g. in the extension manager) the extension onceit is installed.

Note: You need a github user that has access to the private lux repository for an installation.

Note: Lux itself will also load the php package jlawrence/eos for some scoring calculation magic.

21

Page 22: Contents · 2020-04-01 · Contents Living User eXperience ... Lead nurturing Think about the customer livecycle and try to develop your leads. There are a few possibilities of nurturing

Extension Manager settings

If you click on the settings symbol for extension lux, you can change some basic settings in lux extension.

22

Page 23: Contents · 2020-04-01 · Contents Living User eXperience ... Lead nurturing Think about the customer livecycle and try to develop your leads. There are a few possibilities of nurturing

Setting DescriptionBasic: Scoring Calculation Define a calculation model for the basic lead scoring.Available variables

are - numberOfSiteVisits, numberOfPageVisits, downloads,lastVisitDaysAgo.Note - you should run a commandController (e.g. everynight) and calculate the scoring again, if you are using the variable“lastVisitDaysAgo”.

Basic: Add on pagevisit Categoryscoring: Add this value to the categoryscoring if a lead visits apage of a lux-category

Basic: Add on download Categoryscoring: Add this value to the categoryscoring if a leaddownloads an asset of a lux-category

Module: Disable analysismodule

Toggle the backend module Analysis in general

Module: Disable leadmodule

Toggle the backend module Leads in general

Module: Disable workflowmodule

Toggle the backend module Workflows in general

Advanced: Disable box withlatest leads

Toggle the box with latest lead visits in page module in general

Advanced: Disable iplogging

Disable the logging of the visitors IP address

Advanced: Anonymize IP As an alternative to disableIpLogging, you can anonymize the visitorsIP-address when saving. The last part of the IP will be anonymized with"***"

Advanced: Disableip-api.com information

Toggle information enrichment based on the visitors IP by ip-api.com

3. Add TypoScript

If you have already activated lux in your TYPO3 instance, you can add the static TypoScript file Main

TypoScript (lux) in your root template. Most of the TypoScript configuration is used for frontend and forbackend configuration.

If you want to see what kind of TypoScript will be included and how to overwrite some parts, look at the Luxfolder

4. Ready to go

lux is now up and running. If you go into the frontend of your webpage and open the browser console, youshould see an asynchronical request to every page request.

Note: Take care to be not logged in into your TYPO3-backend at the same time with the same browser

Backend Module Leads

The backend module Leads show you all identified (and anonymous) leads.

See all your leads in a listview on the left side while you can see useful lead information on the right side(number of page visits and hottest leads). The left side itself is splitted into a filter area and the table-list-viewbelow.

Filter

23

Page 24: Contents · 2020-04-01 · Contents Living User eXperience ... Lead nurturing Think about the customer livecycle and try to develop your leads. There are a few possibilities of nurturing

Field DescriptionSearchterm Use this fulltext search field for filtering (name, email, company, cookieId, etc. . . )Page ID Show only leads that visited a page (Table columns change - pagevisits available now)Scoring Search for leads with a minimum scoringCategory-Scoring Show only leads that have a category-scoring of a given category (Table columns

change - Categoryscoring will be available)Time-From Search for leads that are only known since a defined date and timeTime-To Search for leads that are only active until a defined date and time

Filter Buttons Filter now: Let’s filter the table with our properties Reset filter: Let’s reset the table tooriginal list view Download button: The download button let you download the lead table in format CSV

Table

The table will show you your website leads.

Column DescriptionLeadidentification

Use this fulltext search field for filtering (name, email, company, cookieId, etc. . . )

Lead scoring Show only leads that visited a page (Table rows change - pagevisits available now)Email Search for leads with a minimum scoringCompany Show only leads that have a category-scoring of a given category (Table rows change -

Categoryscoring will be available)Last visit Search for leads that are only known since a defined date and timeNumber of visits Search for leads that are only active until a defined date and timePagevisits Only viewable if you filter for a page (will replace column Number of visits)Categoryscoring Only viewable if you filter for a scoring of a category

Orderings: Per default the orderings is identified leads first and after that sort by scoring. The orderingscan be change if you are using a special filter.

Detail Preview

If you click in a table row, a small lead preview will be loaded via AJAX. Both diagrams on the right side willbe replaced with a preview box and a scoring box.

If you add a text into the textarea Add an individual description, this notice is saved automaticly if the focusgets lost on the field (on blur).

Clicking on Show lead details will open the detail page.

Detail View

The detail view will give you a couple of information of the chosen lead. The view is splitted into 5 boxes: *Lead information * Lead scoring * Activity log * Conversion funnel / Page visits * Categoryscoring

Lead information

See all relevant lead information.

It starts with the Lead identification. Depending on the information we have, this will show the email or thefirst- and lastname or simply “Anonymous”. Beside this, you will see the general scoring and the hottest

24

Page 25: Contents · 2020-04-01 · Contents Living User eXperience ... Lead nurturing Think about the customer livecycle and try to develop your leads. There are a few possibilities of nurturing

category scoring (if there is one). A click on the google icon will open a new tab with google and let yousearch for the lead.

After the first line, there are information that came from field mapping, meta information (first and last visit)and information enriched by the visitors IP-address. The description field is also shown and can be used inthe same way as described in Detail Preview.

Lead scoring

See the lead scoring of the lead in the last 6 weeks. That gives you the possibility to decide, how yournurturing workflows are running.

Note: The scoring calculation can be done in the Extension Manager settings of the extension. If you areusing the value lastVisitDaysAgo, you should use a CommandController to calculate the lead scoring one timea day.

Activity log

See the most interesting activities of this lead related to lux. You will see information like Lead gets identified,*Lead gets identified by email4link" or “Lead downloads an asset”. Also every workflow that takes action onthis lead is listed here.

Tipp: Use your mousecursor for getting a date and time in a tooltip to every activity.

Conversion funnel / Page visits

See from which referrer your lead start to visit your website and follow page by page.

Categoryscoring

See a diagram with all available categoryscorings for this lead.

Note: The calculation can be influenced by the Extension Manager settings of the extension. Note: SeeCategoryscorings how to use category scoring in lux.

Interaction Buttons

On the bottom of the detail view, you will find three buttons.

• Go back: Browser will show the previous page• Blacklist: This lead will be blacklisted on. This means, the lead is not visible in any view any more.

This is helpful, if you identify a searchengine crawler (maybe with a high scoring). In addition allproperties and related tables are cleaned!

• Remove completely: This will remove all information about this lead from your system. Remove meansthat the records are really remove - not only a deleted=1!

Plugins and Pageoverview

This part of the documentation describes all lux plugins and the pageoverview view in backend.

Pageoverview

If you have activated pageoverview in Extension Manager settings of extension lux, you will see the last threeleads (Identified and Anonymous) of a page in page module.

25

Page 26: Contents · 2020-04-01 · Contents Living User eXperience ... Lead nurturing Think about the customer livecycle and try to develop your leads. There are a few possibilities of nurturing

Plugins

Plugin 1: Opt out

The first plugin in lux fits ideally to your privacy notes page. As you may not from Matomo (former knownas Piwik) Lux also o�ers a checkbox in frontend where visitors can de-check if they don’t want to be tracked.

If the browser has a DoNotTrack setting enabled, the view changes a bit.

You can simply add a Plugin Pi1 trackingOptOut to a page and add some content to it.

Plugin 2: Contextual content

Another possibility beside workflow actions to nurture leads is to use a contextual content plugin. If you addthis to a page, you can define a default content element and you can define one or more content elements perlux-category. An asynchronous request (AJAX of course for high performance website not a USER_INT) willshow the most relevant content element - related to the category scoring of the current visitor.

If you have added more then only one content element per category, the content element is selected randomly.

Backend Module Workflows

This part of the manual describes how to manage workflows in lux backend module.

A workflow is a technique to nurture your leads. Let’s say a lead that reaches a category scoring of 25 in acategory Product A should see a special o�er in a popup (lightbox)? Or maybe you want to redirect a lead toa di�erent page if he/she visits the page the second time? Lux will help you to build your own and individualworkflows.

List view

If you open the backend module workflows and you have not added any workflows yet, the only interactionpossibility for you is to add a new workflow. If you have already added one or more workflows, you will see alist of your existing workflows.

Existing workflows can be deleted or edited by clicking the buttons. If you edit an existing workflow or if youadd a new workflow, you will see a form that is splitted into three di�erent steps.

1 Title

Define a title and an internal description for your new workflow:

After that you can choose next for step 2.

2 Trigger

A trigger is a condition for a possible event or action. You can choose one or more triggers (and combinethem logical with AND or OR) that should result in an action (see 3 Action).

Choose a trigger and click on the + button. Now a new trigger configuration was added. Depending on thetrigger that you have chosen, it’s possible to add values to the trigger itself. In this example, we choose the If

a lead gets identified trigger - no values to add here:

Possible triggers by default are: * On entering a page * When lead reaches a scoring * When lead reaches acategoryscoring * When lead enters a page of a given category * On a defined time * If a lead gets identified *If lead company given

26

Page 27: Contents · 2020-04-01 · Contents Living User eXperience ... Lead nurturing Think about the customer livecycle and try to develop your leads. There are a few possibilities of nurturing

After that you can choose next for step 3 or previous for step 1 again.

3 Action

An action is when lux executes a workflow on given conditions (triggers). You can choose one or more actions.If you choose more actions, all actions will be executed.

Choose an action and click on the + button. Now a new action configuration was added. Depending on theaction that you have chosen, it’s possible to add values to the action itself. In this example, we choose thePublish a message to a slack channel action.

We can select if this action should be executed only once (default setting) or multiple times and we can add atext for publishing to a slack channel.

Possible actions by default are: * Open a popup (lightbox) with a content element * Redirect visitor toanother page * Sends an email * Publish a message to a slack channel

After that you can choose save or previous for step 2 again.

TypoScript Configuration

There is a default TypoScript configuration that will be added if you add the Lux Static Template to yourroot template. Depending on the triggers and actions that you’re using, you can enrich some of them withconfiguration in TypoScript. If you want to publish to a slack channel, a webhook URL is needed e.g.

lib.lux.settings {

# All workflow settingsworkflow {

############################# Define individual triggers############################triggers {

# Trigger if visitor enter a page1 {

# Title to show in workflow backend moduletitle = LLL:EXT:lux/Resources/Private/Language/locallang_db.xlf:trigger.pagevisit

# Classname for implementation of the trigger itselfclassName = In2code\Lux\Domain\Trigger\PageVisitTrigger

# Templatefile for implementation of the form in workflow moduletemplateFile = EXT:lux/Resources/Private/Templates/Workflow/Trigger/PageVisit.html

# Additional configurationconfiguration {

# Any configuration - available as array in Template File and Trigger class for some own magic}

}

# Trigger for reached scoring2 {

# Title to show in workflow backend moduletitle = LLL:EXT:lux/Resources/Private/Language/locallang_db.xlf:trigger.scoring

27

Page 28: Contents · 2020-04-01 · Contents Living User eXperience ... Lead nurturing Think about the customer livecycle and try to develop your leads. There are a few possibilities of nurturing

# Classname for implementation of the trigger itselfclassName = In2code\Lux\Domain\Trigger\ScoringTrigger

# Templatefile for implementation of the form in workflow moduletemplateFile = EXT:lux/Resources/Private/Templates/Workflow/Trigger/Scoring.html

# Additional configurationconfiguration {

# Any configuration - available as array in Template File and Trigger class for some own magic}

}

# Trigger for reached categoryscoring3 {

# Title to show in workflow backend moduletitle = LLL:EXT:lux/Resources/Private/Language/locallang_db.xlf:trigger.categoryscoring

# Classname for implementation of the trigger itselfclassName = In2code\Lux\Domain\Trigger\CategoryScoringTrigger

# Templatefile for implementation of the form in workflow moduletemplateFile = EXT:lux/Resources/Private/Templates/Workflow/Trigger/CategoryScoring.html

# Additional configurationconfiguration {

# Any configuration - available as array in Template File and Trigger class for some own magic}

}

# If lead enters a page or downloads an asset with a relation to a lux category4 {

# Title to show in workflow backend moduletitle = LLL:EXT:lux/Resources/Private/Language/locallang_db.xlf:trigger.category

# Classname for implementation of the trigger itselfclassName = In2code\Lux\Domain\Trigger\CategoryTrigger

# Templatefile for implementation of the form in workflow moduletemplateFile = EXT:lux/Resources/Private/Templates/Workflow/Trigger/Category.html

# Additional configurationconfiguration {

# Any configuration - available as array in Template File and Trigger class for some own magic}

}

# Trigger for a defined time (start to stop)5 {

# Title to show in workflow backend moduletitle = LLL:EXT:lux/Resources/Private/Language/locallang_db.xlf:trigger.timeframe

# Classname for implementation of the trigger itselfclassName = In2code\Lux\Domain\Trigger\TimeFrameTrigger

28

Page 29: Contents · 2020-04-01 · Contents Living User eXperience ... Lead nurturing Think about the customer livecycle and try to develop your leads. There are a few possibilities of nurturing

# Templatefile for implementation of the form in workflow moduletemplateFile = EXT:lux/Resources/Private/Templates/Workflow/Trigger/TimeFrame.html

# Additional configurationconfiguration {

# Any configuration - available as array in Template File and Trigger class for some own magic}

}

# Trigger lead gets identified6 {

# Title to show in workflow backend moduletitle = LLL:EXT:lux/Resources/Private/Language/locallang_db.xlf:trigger.identified

# Classname for implementation of the trigger itselfclassName = In2code\Lux\Domain\Trigger\IdentifiedTrigger

# Templatefile for implementation of the form in workflow moduletemplateFile = EXT:lux/Resources/Private/Templates/Workflow/Trigger/Identified.html

# Additional configurationconfiguration {

# Any configuration - available as array in Template File and Trigger class for some own magic}

}

# Trigger if company is known from lead (e.g. from IP-Information)7 {

# Title to show in workflow backend moduletitle = LLL:EXT:lux/Resources/Private/Language/locallang_db.xlf:trigger.company

# Classname for implementation of the trigger itselfclassName = In2code\Lux\Domain\Trigger\CompanyTrigger

# Templatefile for implementation of the form in workflow moduletemplateFile = EXT:lux/Resources/Private/Templates/Workflow/Trigger/Company.html

# Additional configurationconfiguration {

# Any configuration - available as array in Template File and Trigger class for some own magic}

}}

############################ Define individual actions###########################actions {

# Action for showing an individual content element in a lightbox to the lead1 {

# Title to show in workflow backend module

29

Page 30: Contents · 2020-04-01 · Contents Living User eXperience ... Lead nurturing Think about the customer livecycle and try to develop your leads. There are a few possibilities of nurturing

title = LLL:EXT:lux/Resources/Private/Language/locallang_db.xlf:action.popupcontentelement

# Classname for implementation of the action itselfclassName = In2code\Lux\Domain\Action\PopupContentElementAction

# Templatefile for implementation of the form in workflow moduletemplateFile = EXT:lux/Resources/Private/Templates/Workflow/Action/PopupContentElement.html

# Additional configurationconfiguration {

# Any configuration - available as array in Template File and Action class for some own magic}

}

# Action for doing a redirect to another URI2 {

# Title to show in workflow backend moduletitle = LLL:EXT:lux/Resources/Private/Language/locallang_db.xlf:action.redirect

# Classname for implementation of the action itselfclassName = In2code\Lux\Domain\Action\RedirectAction

# Templatefile for implementation of the form in workflow moduletemplateFile = EXT:lux/Resources/Private/Templates/Workflow/Action/Redirect.html

# Additional configurationconfiguration {

emailOverrides {# Any configuration - available as array in Template File and Action class for some own magic

}}

}

# Action for sending a notification email3 {

# Title to show in workflow backend moduletitle = LLL:EXT:lux/Resources/Private/Language/locallang_db.xlf:action.email

# Classname for implementation of the action itselfclassName = In2code\Lux\Domain\Action\EmailAction

# Templatefile for implementation of the form in workflow moduletemplateFile = EXT:lux/Resources/Private/Templates/Workflow/Action/Email.html

# Additional configurationconfiguration {

emailOverrides {# Override sender settings for SPF-defiance settings (affected only the sender settings - not the reply to settings)senderName = MarketingsenderEmail = [email protected]

}}

}

30

Page 31: Contents · 2020-04-01 · Contents Living User eXperience ... Lead nurturing Think about the customer livecycle and try to develop your leads. There are a few possibilities of nurturing

# Action for publishing to a slackchannel4 {

# Title to show in workflow backend moduletitle = LLL:EXT:lux/Resources/Private/Language/locallang_db.xlf:action.slack

# Classname for implementation of the action itselfclassName = In2code\Lux\Domain\Action\SlackAction

# Templatefile for implementation of the form in workflow moduletemplateFile = EXT:lux/Resources/Private/Templates/Workflow/Action/Slack.html

# Additional configurationconfiguration {

# Define multiple configurations - one per slack channels or slack domain1 {

# Add a name for a selection in workflow backend modulename = Slack Channel "Sales"

# Add your webhook Url like https://hooks.slack.com/services/tokenwebhookUrl = https://hooks.slack.com/services/TOKENabcdefghi123456/789123456/7891

# Username for this webhookusername = lux

# Set an emoji for all this publishings (can be empty, if you already set an image to your webhook in slack)emoji = :fire:

}}

}}

}}

Extending Triggers and Actions

Of course we wanted to build a very flexible Marketing Automation tool that can be extended to your needs.So we don’t know all the triggers and actions that you need. But we made it very easy for you to extend theexisting list with your own triggers and actions.

The following examples would require an additional extension and we call it luxextension.

Add an individual trigger

Let’s say you want to add an individual trigger If a frontend user adds a page, you should register it viaTypoScript first:

lib.lux.settings {

# All workflow settingsworkflow {

triggers {

# Trigger if a frontend user enters a page

31

Page 32: Contents · 2020-04-01 · Contents Living User eXperience ... Lead nurturing Think about the customer livecycle and try to develop your leads. There are a few possibilities of nurturing

100 {# Title to show in workflow backend moduletitle = LLL:EXT:luxextension/Resources/Private/Language/locallang_db.xlf:trigger.frontenduser

# Classname for implementation of the trigger itselfclassName = Vendor\Luxextension\Domain\Trigger\FrontendUserTrigger

# Templatefile for implementation of the form in workflow moduletemplateFile = EXT:luxextension/Resources/Private/Templates/Workflow/Trigger/FrontendUser.html

# Additional configurationconfiguration {

# If a frontenduser is registered in this fe_groupgroup = 1

}}

}}

}plugin.tx_lux_fe.settings < lib.lux.settingsmodule.tx_lux.settings < lib.lux.settings

A template file will help you to ask the marketing editors for configuration. In our example the trigger shouldonly work for a selected page. So we need an input field where the editor can add a PID and we name it page.

EXT:luxextension/Resources/Private/Templates/Workflow/Trigger/FrontendUser.html:

<f:spaceless><f:comment>

Available variables:{index} Index variable for fieldnames{triggerSettings.title} Trigger title from TypoScript{triggerSettings.description} Trigger description from TypoScript{triggerSettings.className} Trigger className from TypoScript{triggerSettings.templateFile} Trigger templateFile from TypoScript{triggerSettings.configuration.foo} Trigger configuration from TypoScript

</f:comment>

<div class="row form-group lux-trigger lux-trigger-conjunction{trigger.conjunction}"><div class="col-md-12">

<label for="trigger_{index}_page" class="lb-lg"><f:translate key="LLL:EXT:luxextension/Resources/Private/Language/locallang_db.xlf:trigger.frontenduser.page">PID</f:translate>

</label><input

type="number"name="tx_lux_lux_luxworkflow[trigger][{index}][configuration][page]"class="form-control"id="trigger_{index}_page"placeholder="123"value="{configuration.page}" />

</div></div>

<input type="hidden" name="tx_lux_lux_luxworkflow[trigger][{index}][className]" value="{triggerSettings.className}" /><input type="hidden" name="tx_lux_lux_luxworkflow[trigger][{index}][conjunction]" value="{trigger.conjunction}" />

32

Page 33: Contents · 2020-04-01 · Contents Living User eXperience ... Lead nurturing Think about the customer livecycle and try to develop your leads. There are a few possibilities of nurturing

</f:spaceless>

Two additional hiddenfields at the end will store the chosen conjunction and the className into database.

Now it’s time for some own PHP-magic in the class Vendor\Luxextension\Domain\Trigger\FrontendUserTrigger.EXT:luxextension/Classes/Domain/Trigger/FrontendUserTrigger.php:

<?phpdeclare(strict_types=1);namespace Vendor\Luxextension\Domain\Trigger;

use \In2code\Lux\Domain\Trigger\AbstractTrigger;use \In2code\Lux\Domain\Trigger\TriggerInterface;

/*** Class FrontendUserTrigger*/

class FrontendUserTrigger extends AbstractTrigger implements TriggerInterface{

/*** @return void*/

public function initialize(){

if ((int)$this->getConfigurationByKey(�page�) === 0) {throw new \Exception(�No page configuration given�, 1522680218);

}if ($this->getSettingsByPath(�group�) === ��) {

throw new \Exception(�No fe_group uid given in TypoScript�, 1522680425);}

}

/*** Check if* - the current visitor enters the configured page* - and if the visitor is logged in as fe_user* - and if he/she is logged in in a given fe_group** @return bool*/

public function isTriggered(): bool{

if ((int)$GLOBALS[�TSFE�]->id === (int)$this->getConfigurationByKey(�page�)) {$userGroupUid = (int)$this->getSettingsByPath(�group�);$userGroupsFeLogin = explode(�,�, $GLOBALS[�TSFE�]->fe_user->user[�usergroup�]);if (!empty($userGroupsFeLogin)) {

return in_array($userGroupUid, $userGroupsFeLogin);}

}return false;

}}

Your PHP trigger class must implement TriggerInterface and should extend the AbstractTrigger. Last classo�ers you useful methods (like getWorkflow(), getTrigger() and getVisitor(), getConfigurationByKey() or

33

Page 34: Contents · 2020-04-01 · Contents Living User eXperience ... Lead nurturing Think about the customer livecycle and try to develop your leads. There are a few possibilities of nurturing

getSettingsByPath()) to get helpful information.

The method initialize() is called before isTriggered() and the method afterTrigger() at last. While you haveto add a boolean method isTriggered() the others are optional.

Last but not least, you should add a locallang file with the keys that you’ve used in TypoScript and in yourTrigger HTML file.

Add an individual action

Let’s say you want to add an individual action Send lead values via CURL, you should register it viaTypoScript first:

lib.lux.settings {

# All workflow settingsworkflow {

actions {

# Action to send some details via CURL to a thirdparty software100 {

# Title to show in workflow backend moduletitle = LLL:EXT:luxextension/Resources/Private/Language/locallang_db.xlf:action.curl

# Classname for implementation of the action itselfclassName = Vendor\Luxextension\Domain\Action\CurlAction

# Templatefile for implementation of the form in workflow moduletemplateFile = EXT:luxextension/Resources/Private/Templates/Workflow/Action/Curl.html

# Additional configurationconfiguration {

uri = https://www.thirdpartycrm.org/api/}

}}

}plugin.tx_lux_fe.settings < lib.lux.settingsmodule.tx_lux.settings < lib.lux.settings

A template file will help you to ask the marketing editors for configuration. In our example we just askfor the URI to send the values to. Per default TypoScript configuration should work but the URI could beoverwritten by a configuration from the marketing editor. So we need an input field where the editor can adda URI for overwriting and we name it uri.

EXT:luxextension/Resources/Private/Templates/Workflow/Action/Curl.html:

<f:spaceless><f:comment>

Available variables:{index} Index variable for fieldnames{actionSettings.title} Action title from TypoScript{actionSettings.description} Action description from TypoScript{actionSettings.className} Action className from TypoScript{actionSettings.templateFile} Action templateFile from TypoScript{actionSettings.configuration.foo} Action configuration from TypoScript

34

Page 35: Contents · 2020-04-01 · Contents Living User eXperience ... Lead nurturing Think about the customer livecycle and try to develop your leads. There are a few possibilities of nurturing

</f:comment>

<div class="lux-action"><h1><f:translate key="LLL:EXT:luxextension/Resources/Private/Language/locallang_db.xlf:action.curl" /></h1>

<div class="row form-group"><div class="col-md-3">

<label for="trigger_{index}_recurring" class="lb-lg"><f:translate key="LLL:EXT:lux/Resources/Private/Language/locallang_db.xlf:action.label.recurring">

Recurring/Single</f:translate>

</label><select name="tx_lux_lux_luxworkflow[actions][{index}][configuration][recurring]" class="form-control" id="trigger_{index}_recurring">

<option value="single"{f:if(condition:�{configuration.recurring} == "single"�,then:� selected="selected"�)}>{f:translate(key:�LLL:EXT:lux/Resources/Private/Language/locallang_db.xlf:action.label.recurring.single�)}</option><option value="recurring"{f:if(condition:�{configuration.recurring} == "recurring"�,then:� selected="selected"�)}>{f:translate(key:�LLL:EXT:lux/Resources/Private/Language/locallang_db.xlf:action.label.recurring.recurring�)}</option>

</select></div><div class="col-md-9">

<label for="action_{index}_uri" class="lb-lg"><f:translate key="LLL:EXT:luxextension/Resources/Private/Language/locallang_db.xlf:action.curl.uri">

URI to send request to (optional)</f:translate>

</label><input

type="text"name="tx_lux_lux_luxworkflow[actions][{index}][configuration][uri]"class="form-control"value="{configuration.uri}"id="action_{index}_uri" />

<span class="help-block"><f:translate key="LLL:EXT:luxextension/Resources/Private/Language/locallang_db.xlf:action.curl.uri.help">

Any helptext for the marketing editors</f:translate>

</span></div>

</div></div>

<input type="hidden" name="tx_lux_lux_luxworkflow[actions][{index}][className]" value="{actionSettings.className}" /></f:spaceless>

One additional hiddenfield at the end will store the chosen className into database.

Now it’s time for some own PHP-magic in the class Vendor\Luxextension\Domain\Action\CurlAction.EXT:luxextension/Classes/Domain/Action/CurlAction.php:

<?phpdeclare(strict_types=1);namespace Vendor\Luxextension\Domain\Action;

use \In2code\Lux\Domain\Action\AbstractAction;use \In2code\Lux\Domain\Action\ActionInterface;

/*** Class CurlAction*/

35

Page 36: Contents · 2020-04-01 · Contents Living User eXperience ... Lead nurturing Think about the customer livecycle and try to develop your leads. There are a few possibilities of nurturing

class CurlAction extends AbstractAction implements ActionInterface{

/*** @return bool*/

public function doAction(): bool{

$uri = $this->getSettingsByPath(�uri�);if ($this->getConfigurationByKey(�uri�) !== ��) {

$uri = $this->getConfigurationByKey(�uri�);}return $this->sendToUri($uri);

}

/*** @return bool*/

protected function sendToUri(string $uri): bool{

$resource = curl_init($uri);

$values = [�email� => $this->getVisitor()->getEmail()

];

curl_setopt_array($resource,[

CURLOPT_POST => true,CURLOPT_RETURNTRANSFER => true,CURLOPT_HTTPHEADER => [�Content-Type: application/json�],CURLOPT_POSTFIELDS => json_encode($values),

]);$result = curl_exec($resource);if ($result === false) {

throw new \DomainException(�Could not connect to given URI.�, 1522680965);}return $result !== false;

}}

Your PHP action class must implement ActionInterface and should extend the ActionTrigger. Last classo�ers you useful methods (like getWorkflow(), getAction() and getVisitor(), getConfigurationByKey() orgetSettingsByPath()) to get helpful information.

The method initialize() is called before doAction() and the method afterAction() at last. While you have toadd a boolean method doAction() the others are optional.

Last but not least, you should add a locallang file with the keys that you’ve used in TypoScript and in yourTrigger HTML file.

36