Building a personalised and highly dynamic experience with AEM
HI there,
AEM is an important component in our distributed customer experience platform which is fully based on loosely coupled components (CMS, apps, 3rd party services) which are tied together by a service oriented REST API framework. In order to create a unified developer experience, we would like all of the different services (content delivery/retrieval, data retrieval) to comply with the overall REST guidelines internally defined. At the same time, we consider personalisation as one of the most important capabilities of this platform, being applicable to all the backend components (personalised content, personalised offers/promotions, personalised data).
Combining both REST as well as the need for personalisation which translates into providing input parameters from the user, the commonly accepted best practive for doing that is using query strings as part of the URI (this would cover the generic features of pagination and sorting as well).
Our content teams (being responsible for AEM) complain though that using query strings implies dynamic page generation (of course, that's the point of personalisation), and that means that these pages can't be authored/edited manually anymore which I find a little bit odd. At the same time, I am not an AEM expert and don't intend to become one, I am merely treating AEM as a blackbox adhering to a common interface to the outside world.
Hence, my question is: Is there a commonly accepted best practice for building personalised pages/content in AEM, e.g. presenting promotions based on end user geography, size of wallet, customer segment ?
PS: I am aware of the distinction between selectors (HOW to render things...html, json, xml) and query strings (WHAT to return), and I also know that previously, people advised against query strings due to being non cacheable, but I believe, this argument is void as it can be configured which parameters allow for caching and which don't (see here)
thx in advance