Sitecore Marketing Automation Framework for quickly integrating/syncing Sitecore xDb with a Marketing Automation Platform
- Triggered Goals sync
- Triggered Outcomes sync
- xDb Autofill Endpoints
- Form Sync
- Rich Text form selector
- Markup Generator for Forms
- Campaign Sync
- xProfile Sync
Goals and Outcomes triggered for a Contact within xDb can be sent as an Entity or an Object to the Marketing Automation platform. Several pipelines and hooks are available to hook into:
- Build Tracking Event (ma.buildTrackingEvent) - Maps data from a Page Event to a Tracking Event
- Build Tracking Outcome (ma.buildTrackingOutcome) - Maps data from an Outcome to a Tracking Event
- Filter Page Events (ma.filterPageEvents) - Filters page events before building a Tracking Event
- Filter Outcomes (ma.filterOutcomes) - Filters outcomes before building a Tracking Event
- Flush Tracking Events (ma.flushTrackingEvents) - Sends events to Job Manager, Queue, Platform, etc
xProfile Sync with Marketing Automation on session start.
Pipeline hook:
- Ingestion Pipeline (ma.ingestion) - Runs configured Hydrator
Additional Hooks and Extension Points:
- IHydrator - Responsible for taking an object that exists in memory (xProfile Facet) and populating the object with data from the Marketing Automation platform
- ObjectHydratorFromJson is part of the framework to hydrate from a Json Stream
- IDataReader - Responsible for getting the stream of data from the Marketing Automation platform
- JsonDataReader is part of the framework to read data from a Json (API)
- IHydratorResolver - Responsible for resolving the hydrator with the Object that needs to be hydrated
- IIngestionManager - Responsible for resolving combining the IDataReader and IHydrator to ingest
Default Ingestion Configuration
<?xml version="1.0"?>
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
<ingestion>
<dataReader type="KKings.Foundation.Popsicle.xDb.Ingest.DataReader.DefaultDataReader, KKings.Foundation.Popsicle" />
<hydratorResolver type="KKings.Foundation.Popsicle.xDb.Ingest.Resolvers.DefaultHydratorResolver, KKings.Foundation.Popsicle">
<FacetName>Personal</FacetName>
<FacetTypeName>Sitecore.Analytics.Model.Entities.IContactPersonalInfo, Sitecore.Analytics.Model</FacetTypeName>
<HydratorTypeName>KKings.Foundation.Popsicle.xDb.Ingest.Hydrators.ObjectHydratorFromJson, KKings.Foundation.Popsicle</HydratorTypeName>
</hydratorResolver>
<ingestionManager type="KKings.Foundation.Popsicle.xDb.Ingest.IngestionManager,KKings.Foundation.Popsicle">
<param name="reader" ref="ingestion/dataReader" />
<resolvers name="resolvers" hint="list">
<resolver ref="ingestion/hydratorResolver" singleInstance="true"/>
</resolvers>
</ingestionManager>
</ingestion>
</sitecore>
</configuration>
Multiple Resolvers can be used to hydrate different Facets on the Contact Record. Add Resolvers or references to the ingestion/ingestionManager/resolvers node.
The following features have been implemented:
- Token Expander for Injecting markup, the Marketing Form, within Rich-Text Fields
- Centralized Markup Generator for generating Forms
Override the Default MarkupGenerator by adding a class that imlements the IMarkupGenerator interface. Then patch in the replacement:
<?xml version="1.0"?>
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
<forms>
<generator type="[Namespace, Class]" singleInstance="true" />
</forms>
</sitecore>
</configuration>
Continuation of forms implementation