My Sitecore contributions in 2024

It is that time of the year once again, and the Sitecore MVP 2025 applications are open.

Below is a summary of my contributions for 2024:

Content contributions

This year I mostly created content within Content Hub, Sitecore Experience Edge and Sitecore Personalize space. This is where I felt there were gaps based on industrial client work I have done this year. I believe I have produced content that meets expectations in terms of quality, quantity, and visibility and more importantly, adds value to our community. This has been through blog posts, code sharing via GitHub, YouTube content, Product Feedback via Gartner Peer Reviews among other social channels:

Gartner Peer Reviews:

Sitecore Hackathon 2024:

Code and architectural artifacts:

In person events

I’m a regular attendee and an active member of Sitecore User Group London. Include a chance to attend the in person event post Symposium hosted by Sitecore in their London Paddington office.

Engagement

I have continued online and offline conversations and driven Sitecore community engagement throughout 2024 in order to amplify the content I have created.

Next steps

For 2025, I look forward keeping up producing more valuable content in terms of quality, quantity, and visibility to our Sitecore community. I will be putting myself forward for public speaking events throughout the calendar year. I intent to continue identifying any gaps and filling them, providing product feedback, improvements, and references

Stay tuned and best of luck with those submitting the Sitecore MVP 2025 applications.

My Sitecore contributions in 2023

It is that time of the year once again, where Sitecore MVP 2024 applications are open.

I have had a relatively productive year compared to 2022, and below is a summary of my contributions:

Content contributions

I believe I have created content that adds value mostly within Content Hub, Sitecore Experience Edge, Sitecore Personalize among the Sitecore composable stack. I believe I have produced content that meets expectations in terms of quality, quantity, and visibility and more importantly, add value to our community. This has been through blog posts (x14 Sitecore blogs in 2023, with a total views:  2400+ so far), code sharing via GitHub, reference Architectures, YouTube content among other social channels:

LinkedIn articles:

Sitecore Hackathon 2023:

Code and architectural artifacts:

Public speaking

I am an active member of Sitecore User Group London and been working with Alex Washtell to facilitate the event held at our Avanade offices back in February 2023. I was also a speaker on the event held at Sagittarius on 9th November 2023.

Engagement

Through my social profile, I have driven engagement throughout 2023 to amplify the content I have created.

Next steps

For 2024, I look forward keeping up producing content that meets expectations in terms of quality, quantity, and visibility. Keep up and drive further engagement of wider Sitecore community by leveraging my previous MVP credentials and strong social profile. I am putting myself forward for public speaking events throughout the calendar year. I intent to continue identifying any gaps and filling them, providing product feedback, improvements, and references

Stay tuned and best of luck with those submitting the Sitecore MVP 2024 applications

Unlocking the Potential: Tips and Tricks for Working with GraphQL Queries and Sitecore Experience Edge

Adapted from
adapted from www.wallarm.com

What is GraphQL

GraphQL is a kind of query language and server-side runtime technology used widely for application programming interfaces (APIs) that ensure that the client gets the required data. Nothing less or nothing more. Created by Facebook, GraphQL has a lot of aims and functions:

  • A powerful data-fetching API
  • API interface that’s easy to learn and work with
  • An open-source query language making APIs fast and flexible
  • An effective method to streamline security management for the API
  • A way to give developers and business analysts the ability to develop APIs with desirable methods
  • A query language that gets along with a given integrated development environment easily and effectively
  • The facility to develop APIs that will function the way the client/end-user wanted or expected

GraphQL Playground

The easiest way to compose GraphQL queries to query your Sitecore Experience Edge is to make use of the GraphQL playground. I am presuming that you already have your Sitecore Experience Edge instance
connected to your Sitecore Content Hub instance or Sitecore XM Cloud instance.
To refresh your memory, you can visit this blog post where I have detailed steps to help you with the set up

In this blog post, I will be working with my Sitecore Content Hub instance to share a few tips and tricks. You will find these tips and tricks applicable to Sitecore XM Cloud as well.

Preview and Delivery APIs

Before you can access the GraphQL playground, you need to decide whether you are going to be using the Preview API or the Delivery APIs.

  • Preview API: The Preview API is a GraphQL endpoint that exposes a preview of your content. Use the Preview API to access content that is not approved yet, including drafts. This can be useful when you want to test content in a staging environment before going to production. This is accessible using endpoint {ContentHubURL}/api/graphql/preview/v1 where ContentHubURL is your Sitecore Content Hub instance url.
  • Delivery API: The Delivery API is a GraphQL endpoint that exposes approved and published content. Use this API for all production-related actions. This is accessible using endpoint https://edge.sitecorecloud.io/api/graphql/v1

You will also need access to API Keys to use with your Preview or Delivery APIs. You can obtain your API keys as follows:

  • Navigate to Manage -> API Keys to launch the API Keys management screen
  • On the API Keys screen, you need to provide the required name and scope of the API Keys, then click the call to action to generate the Preview or Delivery API keys. Please keep a note of them as you get only once chance to view and copy them. I recommend storing these keys securely on your Key Vault or similar tool.

Launching GraphQL Playground

To launch the GraphQL playground, open your browser and specify the following URL:

  • Preview IDE: {ContentHubURL}/api/graphql/preview/ide This will launch the Preview API playground
  • Delivery IDE: https://edge.sitecorecloud.io/api/graphql/ide This will launch the Delivery API play ground

Below is a screenshot of Delivery API playground

  • A – This is the Delivery IDE URL
  • B – This is the Delivery API endpoint
  • C – This the GraphQL query section, where you will specify the queries. In my example, this the query to list all published assets, by using the predefined object allM_Asset
  • D – This is the output of the GraphQL query, showing the results as JSON object. Notice only the id and title are returned, as specified in my query. This is one of the main advantages of using GraphQL, you get nothing less or nothing more than what you specify.
  • HTTP Header – this is where we specify our API Key using the “X-GQL-Token” header. In this example, I have used the Delivery API key as I am querying my Delivery instance.

Troubleshooting tips and tricks

I am presuming you have so far been successful getting your GraphQL playground working. If you encounter any issues, try and troubleshoot as follows:

  • Do you have your Delivery Platform setup correctly? ?Check that your Sitecore Content Hub has a license for Delivery platform, and this has been enabled. One way of verifying this is by having Manage -> Delivery Platform icon on your dashboard, as shown below. If you are missing it, contact Sitecore Support to have it enabled.
  • Are you using correct Delivery API or Preview API Keys? Do not get the Delivery or Preview API keys mixed. To avoid any potential mix up, ensure you assign your API keys names to reflect Delivery or Preview scope when generating them. If you are not sure anymore, you can always discard and generate new ones (Please note in Production environments, deleting and generating new API keys may affect production services, plan this carefully
  • Are you accessing the correct GraphQL Playground? Similarly to above, ensure your browser is pointing to Delivery IDE or Preview IDE accordingly. For example, if you haven’t published all your Assets, you may get discrepancy in the assets output within Delivery IDE and Preview IDE. Please note Preview IDE will show content that is not approved yet, including drafts.
  • Have you checked Browser Developer Tools? Your browser “Network” section captures detailed logs on requests and responses. An example screenshot below will help verify the response coming back from GraphQL server:

GraphQL tips and tricks

Using filters with your query

Suppose you want to control how many items to query, then you will need to filter the query results. Below is an example, where we are getting a single asset with id value of "some_asset_id"

Using parameters with query filters

Suppose you want to use a parameter with your filter the query. A use case is to be able to dynamically filter the list of assets based on some condition. Below is an example, where we are using a parameter for the id value of "some_asset_id"

  • A – We make use of the Query Variables section to define parameters. In this case it is named "assetId"
  • B – We define the parameter using the arguments to the query as shown here. ID is the strong scalar type for the Asset Identifier field

Next steps

This completes this blog, where I have walked you through GraphQL and Sitecore Experience Edge. I hope you find this useful, and feel free to leave me any comments or thoughts. See you soon in my next blog post.

How to bulk import CMP content items with multi-languages into Sitecore Content Hub

If you have bulk imported DAM assets into your Sitecore Content Hub using the Excel Import, then you are already familiar with the process. In fact, I recently blogged on how to bulk import video subtitles with multi-languages.

However, Sitecore Content Hub is a great platform with many hidden gems. In this blog post, I will be exploring the hidden gems on how the bulk import CMP content items. Hopefully save you valuable time of having to figure out on your own.

What is Sitecore Content Hub CMP?

CMP stands for Content Marketing Platform.

Below is an excerpt from the Sitecore official docs

A Content Marketing Platform allows the planning, authoring, collaboration, curation and distribution of the different content types that drive the execution of a content marketing strategy while allowing campaign management. CMP is a central hub providing an overall view of all content and how it is performing. It is an essential platform to help with planning and analyzing content marketing campaigns and individual pieces of content.

Sitecore official docs

I will highly recommend watching the Sitecore Content Hub Content Marketing Platform (CMP) Walkthrough video from Sitecordial

For my use case, I will be looking at Blogs, which is one of the out of the box content types in CMP.

Creating a Blog entity within Content Hub CMP

  1. To create a Blog entity, on the Content creation page, select Add Content 
  2. On the add Content dialog, enter the Name and Type, which are mandatory fields. For Type, select Blog from the list of available Content Types. You can also specify the Locale (although this will default to your current Locale). Click Save to save your entry.
  3. Now select your new Blog item to edit. You should see the edit screen shown below. Enter content for the blog title, quote and body, then click Save to commit your changes.

Adding translations for multi-languages for your Blog entity

  1. To add a new translation, select the Localize action item from the Action menu, available from the top right-hand side of the edit screen.
  2. This will prompt you to enter name and locale on a popup shown below.
  3. Click Save to create this variant for the selected language
  4. This will then open the edit screen for you to edit the translated content for the blog item.

Preparing your CMP content items for Bulk Import

Now that we have familiarized ourselves on how to add a single Blog item and a single translation using the portal, let us look at bulk import.

 As usual, we will leverage the Excel Import template for the bulk import. In my related blog post, I already explained the pre-requisites you need for Excel Imports.

Blog items are M.Content entities, therefore we need to ensure our import worksheet is named M.Content

I have prepared an Export profile for exporting Blogs for your reference. You can access the Export Profiles area using the steps below.

Manage -> Export Profiles -> Create new export profile

The screenshot below shows my BlogContent export profile.

Key highlights on the Content export profile

Pay attention to the Relations section, where we are enabling the export of the related entities for:

  • ContentToContentVariant
  • ContentLifeCycleToContent
  • ContentTypeToContent
  • LocalizationToContent

Also, ensure includeSystemProperties is enabled.  

This export profile will output worksheets for these Relations for your reference when generating the Excel Import template.

Export your CMP Blog entities into Excel

  1. Navigate to your Content search portal page.
  2. Search and locate your blog(s). You can use the Filters section to filter Content type of Blog.
  3. Select the blog(s) entities (by ticking the checkbox of your selection component)
  4. On the right-hand side, access the Actions dropdown menu, and click on “Export to Excel” as shown below.
  5. Your download should be ready and accessible from Profile -> Downloads link

A look at M.Content Excel Import template

Your M.Content import template will look similar to this one below.

You can now view or download the full Excel template file that I have used

Key highlights:

  • Row 1 – this is the default blog entity based on your default language, e.g., en-US
  • Row 2 through 4 – these are the variants of the blog entity for my localized languages. In your case, you many more or less, as per your localized languages you are supporting.
  • Pay special attention to the ContentToContentVariant:Parent which is how the variants are linked to the default blog entity using identifier  id123456789-blog-en-US in my example.
  • Pay special attention to the ContentToContentVariant:Child which is how the default blog entity is linked to all variants. This will have pipe delimited list of variant identifiers (e.g., id123456789-blog-ar-AE|id123456789-blog-zh-CN|id123456789-blog-da-DK)
  • Please note, you need to pre-generate unique values for the identifier column for your variant blog entities. This ensures you can script and control how to link them with parent blog as shown above. This will be key to successful bulk import of the blog entities with multi-language support.
  • Use M.Content.IsVariant to mark which blog entities are variants
  • Use the CmpContentToLinkedAsset column to link the blog entities to existing assets (images or videos) from your DAM if required.  You can link multiple assets by using a pipe delimited list of assets identifiers.
  • Use the CmpContentToMasterLinkedAsset column to assign a Cover Image to the blog entities
  • The LocalizationToContent has the M.Localization taxonomy values corresponding to each localized language
  • I have provided default values for the columns Content.ApprovedForCreation, Content.IsInIdeationState, ContentLifeCycleToContent as per my use case. In your case, provide appropriate values that meet your content strategy.

Finally, let us do bulk import of Blog entities into CMP

And finally, to bulk import, use the Content Creation page. Ensure the creation component on your page has Import Excel option enabled.

  1. On the Content creation page, select Import Excel
  2. Do one of the following:
    • Drag the Excel file you want to upload into the dialog box.
    • Click browse, then pick the Excel file you want to upload.
  3. Optionally, click Add more to add more files if needed.
  4. Click Upload files.

 Next steps

On this blog post, we have looked at how to bulk import Blogs to your Sitecore Content Hub CMP. I am keen to hear your feedback or comments. Please do use the comments section for that.

Stay tuned for future posts as well look and feel free to look around at my existing posts on Sitecore platform.

Sitecore personalize and mobile app projects series – part 2b

Introduction

On this series of blog posts, I am documenting my journey of delivering personalized content to end users of a mobile app.

Enabling Experience Edge for Sitecore XM

In this blog, I will cover integration between Sitecore Experience Edge and your Sitecore XM instance. Below is a reminder of our architecture.

Recap on Experience Edge for Experience Manager (XM)

Sitecore Experience Edge for Experience Manager (XM) is an API-based service from Sitecore that gives you globally replicated, scalable access to your Sitecore Experience Platform items, layout, and media.

Sitecore XM + Experience Edge architecture, adapted from Sitecore docs

Experience Edge for XM acts as a publishing target for your Sitecore content and media, and provides a GraphQL API that lets you deliver “Headless content”, which will be consumed by the Mobile app.

Getting Started with Sitecore XM Cloud

You can request for a demo from Sitecore, by filling and submitting this form available on Sitecore website. Sitecore Support team will then get back to you with details on how to access your Sitecore XM cloud instance.

Alternatively, you can request for an XM + Edge Demo from the Sitecore Demo Portal page. This is the Portal where you can also request the Sitecore Play! Summit and Sitecore Play! Shop demos. The XM + Edge Demo will come configured with an Experience Edge, ready to go.

Below are the steps to use:

Step-by-step guide to obtain XM + Edge Demo

  1. Logon to https://portal.sitecoredemo.com/. On the home page, click on “Quick Deploy”. This is the quickest way to get your demo instance based on Demo Team’s default configurations.
  2. This will open a modal, from which the user can:
    • select a demo template
    • select an instance name based on the guidelines described above, in the “Choosing an instance name” section
    • select a demo channel with preferred demo version
    • select a region to which the instance will be deployed to
  3. Instance names are valid under the following conditions:
    • The name must not already be used by another instance
    • The name must be at least 3 characters long
    • The name must contain only alphabetical characters or a hyphen
    • The name must start with a character (not a number or hyphen)
  4. In case the name is not valid, or the name is taken, an error message will appear after the name has been validated by the Demo Portal API
  5. Click on Deploy Now button to submit the information captured above
  6. The Demo provisioning process may take a couple of minutes. Grab a cup of tea or coffee while this runs. Finally, you will receive an email notification from get[at]sitecoredemo.com, similar to one below.
  7. You can follow the links in the email to access your instance. Alternatively, log on to https://portal.sitecoredemo.com/ and you will see the link on your dashboard

Accessing your Sitecore XM instance and Experience Edge instance

Opening your XM+ Edge Demo instance, you will get a landing page like one below

To access you XM instance, follow the URL in the section named Important Links This will open your Sitecore XM login page, and which you can access using the provided credentials To access your Experience Edge tenant, use the URL provided in the Edge Tenant section, plus the API key. You can see details on What is GraphQL in the other blog post in this series

Next steps

This completes this blog, where I have walked you through getting your Sitecore XM and Sitecore Experience Edge integration working. I hope you find this useful, and feel free to leave me any comments or thoughts.

In my next blog, I will be looking at integration between Sitecore Experience Edge and Sitecore Personalize.

Sitecore personalize and mobile app projects series – part 3

Introduction

On this series of blog posts, I am documenting my journey of delivering personalized content to end users of a mobile app.

Connecting Sitecore Personalize to Sitecore Experience Edge

In this blog, I will deep dive into the integration between Sitecore Experience Edge and Sitecore Personalize part of the architecture, shown below. For the full reference architecture, refer to part one of this series.

Integrating Sitecore EE with Sitecore Personalize

What is Sitecore Personalize

Before we jump into how to integrate Sitecore Experience Edge with Sitecore Personalize, lets first look at what is Sitecore Personalize? Sitecore Personalize is cloud-native solution from Sitecore, for delivering tailored experiences to every customer, on any channel, and at scale.

Sitecore Personalize brings lots of value for marketers, including the following:

  • supports experiments that optimize experiences in any digital product, app, or channel
  • applies AI-driven digital decisioning capabilities to connect operational data
  • provides client-side personalization
  • reinforces decisioning and next-best actions and offers
  • provides inbound and outbound personalization

I will be focusing on the mobile app channel, with hope of exploring all the capabilities available to us.

Getting Started with Sitecore Personalize

Partner CDP Training Sandbox

If you are part of Sitecore Partner Programme, then you should already have access to a Partner CDP Training Sandbox. You can reach out directly to Sitecore Support to get your credentials to gain access to the tenant for your partner sandbox account.

Your Partner CDP Training Sandbox will have both Sitecore CDP and Sitecore Personalize. I will NOT be covering Sitecore CDP in this post. It is not part of my solution, but feel free to explore more about it.

Depending on your location, you will access your Partner CDP Training Sandbox using either of the following URLs:

  • app.boxever.com (Europe)
  • app-ap.boxever.com (Asia Pacific (APAC)
  • app-us.boxever.com (United States)

Request for a demo

You can also request for a Sitecore CDP demo from Sitecore by following the steps on the Request a demo page. This will require you to submit a form to Sitecore, after which you will get an invitation to sign up and access the Sitecore CDP demo tenant. Please note this will give you access to both Sitecore CDP & Personalize, at the time of this writing.

Sitecore Personalize – Navigation and Menus

The screenshots shared below are from my Partner CDP Training Sandbox, which has both Sitecore CDP & Personalize. If you are working with Sitecore Personalize only, these screenshots may have some differences for your case.

Click on the leftmost button, to the left of “CDP & Personalize” logo to switch between multiple tenants, as shown below.

Sitecore CDP & Personalize navigation menus

For documentation links, your tenant settings, and your profile settings, use the buttons to the right of the top nav menus, as shown above

Step by step on how to connect to Sitecore Experience Edge

To add a connection to Sitecore Experience Edge, use these steps:

  1. Use the Developer center top nav menu item, and click on Connections sub-menu item, as shown below.
  2. This will open the Connections page, shown below. Click on Add Connection button on the right-hand-corner to start the process
  3. This will launch an Add Connection dialog box, shown below
  4. Select the Data System category. This will open a 5-screen wizard form to capture the new connection details. The first screen is where you name and describe your connection, as shown below. Enter the Name, Description and choose an Icon, and click Next button to progress the wizard
  5. In the second wizard screen, you will specify the Authenticate method. Select None. So, no need to click on Test Authentication button. Click Next to progress the wizard to the Request screen
  6. On the third screen, you need to Configure Request details as shown on the screenshot below
    • Request URL
      • On the Request URL field, select a POST request, with URL of https://edge.sitecorecloud.io/api/graphql/v1  This will be your Sitecore Experience Edge Delivery API endpoint. It is a GraphQL endpoint that exposes your approved and published content.
    • Headers
      • Next, you need to add custom HTTP HEADER named “X-GQL-Token”, where you will specify the API Key required for your endpoint.
      • You can create this API Key from your Sitecore Content Hub instance, using the Manage -> API Keys page. Alternatively, you can create this programmatically using the Token API
    • Request
      • The easiest way to compose the request body is to make use GraphQL playground to compose your queries – taking advantage of schema discovery and auto-complete capabilities. As shown on the screenshot above, this is a simple query to list all approved and published assets with their Id and Title only. I grabbed this from the XHR request call on the  browser developer tools
    • Test Request
      • Now you can click on Test Request button, which should give you some Response, like the screenshot above. If you encounter any issues at this step, it is either you have a wrong API Key or a malformed GraphQL query. One tip is to ensure the  “query” part of the request has been formatted into a single line, as shown above.
      • Click Next button to progress the wizard to the fourth step, the Map screen
  7. We will revisit the map screen later on during this project. Skip this for now, by clicking on Next button to progress to final screen of this five-step wizard
  8. On the last Review & Save screen, you will see the summary of your details. If you are happy with everything, click on Save button to complete the wizard

You have now successfully established a connection with your Sitecore Experience Edge, and this will be available on your Connections list, for use in the future steps.

What is GraphQL

GraphQL is a query language for APIs that allows clients to specify exactly which data they want to fetch by making a single request and providing a query with the desired data fields.

Below is a screenshot of the GraphQL playground available using https://edge.sitecorecloud.io/api/graphql/ide/

Next Steps

This completes this blog, where I have walked you through getting your Sitecore Personalize connected with your Sitecore Experience Edge. I hope you find this useful, and feel free to leave me any comments or thoughts.

In my next blog, I will be looking at Sitecore Personalize capabilities, APIs and how to integrate it with the mobile app. Stay tuned.

Sitecore personalize and mobile app projects series – part 2a

Introduction

On this series of blog posts, I am documenting my journey of delivering personalized content to end users of a mobile app.

Enabling Sitecore Experience Edge for Sitecore Content Hub

In this blog, I will deep dive into the two blocks from bottom of my reference architecture, shown below.  I will specifically cover integration between Sitecore Experience Edge and your Sitecore Content Hub instance. For the full reference architecture, refer to part one of this series.

Enabling Sitecore Experience Edge for Sitecore Content Hub

Recap on Sitecore Experience Edge

Sitecore Experience Edge for Content Hub is a set of services based on the Content as a Service (CaaS) model. It enables you to seamlessly deliver structured content across any channel that other applications and properties can easily consume

Sitecore Experience Edge - Content as a Service (CaaS)

Sitecore Experience Edge CaaS (Adopted from https://doc.sitecore.com/ch/en/users/42/content-hub/experience-edge–caas-intro.html)

Configure the publishing settings

To use the Experience Edge delivery platform, you must first enable the publishing settings and specify whether publishing is done automatically whenever there are changes or whether it is done manually.

Below are the steps to accomplish this, in your Sitecore Content Hub tenant:

  1. On the menu bar, click Manage
  2. On the Manage page, click Settings
  3. On the Settings page, in the left pane, click PublishingSettings. You can also search using the search box
  4. In the right pane, select the Publishing enabled check box
  5. If you want to automatically publish the schema or entities when changes are detected, select the Auto publishing enabled check box
  6. Click Publish schema to publish changes to the schema
  7. Click Publish all to CaaS to publish all publishable entities
  8. Click Save
Sitecore Experience Edge - configure publishing settings

Publishable entities

Once you have enabled Sitecore Experience Edge on your Content Hub instance, you will notice a Delivery Platform item is now added on your Manage screen, as shown below.

Sitecore Experience Edge - Delivery Platform icon on Manage screen

Click the Delivery platform icon above to navigate to the Delivery platform page, like the one shown below. On this page, you can choose which existing entities that you would like to publish or unpublish.

Sitecore Experience Edge Delivery platform page

You do this by clicking on the Icon next to your entities, which will launch a Delivery platform settings dialog box, similar to one shown below:

Sitecore Experience Edge - Delivery platform settings popup dialog

Enable Publish an entity definition

In the Delivery platform settings dialog box, turn on the Enable in delivery platform switch

Click Save & Publish.

Unpublish an entity definition

In the Delivery platform settings dialog box, turn off the Enable in delivery platform switch

Click Save & Publish

Verifying the Publish status

The publish status is now displayed next to the Delivery platform page title

Sitecore Experience Edge delivery platform publishing status

Next Steps

This completes this blog, where I have walked you through getting your Sitecore Experience Edge integration working. I hope you find this useful, and feel free to leave me any comments or thoughts.

In my next blog, I will be looking at integration between Sitecore Experience Edge and Sitecore Personalize. Stay tuned.

Sitecore Personalize and Mobile App projects series

Background

I recently started working on a project that primarily delivers content to end-users via a native mobile app. One of the key requirements I am working on is to deliver personalized content to end users of this mobile app.

This is my first opportunity to work with Sitecore Personalize in depth.

Wearing my architectural hat, and without re-inventing the wheel, I sought to look out for some reference architecture that I could build on.

There seems to be a lot of existing official Sitecore docs on Sitecore Personalize for both business users and developers. I will advise you will need some patience and time to go through the docs which have quite a lot of content.

If you prefer watching videos instead, the Sitecore Discover channel has done some justice to this topic too, especially the content from Dylan Young.

As much as the docs are very well written and the content is quite useful, I found myself jumping a bit to piece together my solution. This can be frustrating especially when Personalizing a Mobile App should be a common use-case you could imagine.

I have decided to document my journey on this project, so that I can share with you any learnings, tips, and tricks for Personalizing Native Mobile apps.

Mobile App Personalization reference architecture

Above is a reference architecture I have come up with for my solution.

At a very high level, my mobile app will consume content that is delivered on the Sitecore Experience edge. Sitecore Experience Edge is a set of services based on the Content as a Service (CaaS) model. It enables you to seamlessly deliver structured content across any channel that other applications and properties can easily consume.

The origin of this content published on the Sitecore Experience Edge could be either Sitecore Content Hub or Sitecore XM cloud. Sitecore Content Hub is a strategic enterprise solution that provides you with a variety of features centered around digital assets and marketing content.

Sitecore Personalize will leverage the Decisioning model, Omni-channel Experiences and Experimentation capabilities to provide all the required personalized content in the mobile app. This includes copy content, imagery and other media. I will be sharing step by step details on how to achieve this.

Sitecore Personalize can integrate with a Customer Data Platform (CDP) of choice, which I have left open for now. Please note I could decide to go with Sitecore CDP solution here too. The key feature here is to ingest customer profile data, to input into our Personalization decisioning engine.

I have introduced an Orchestration layer between my mobile app and the Sitecore Personalize, mainly for some security considerations that I will cover in detail a bit later in this blog series.

I will let you review and digest this high solution level architecture. Please leave me your initial thoughts and comments.

Next steps

In my next blog, I will deep dive into the two blocks from bottom of my reference architecture.