Summit Lab: Server-Side Digital Marketing
19 May 2019 » Server Side
Last Thursday (16/05/2019) I delivered my very first lab at an Adobe Summit. I would like to thank all of you who attended. It went really well and many participants managed to do the full exercise. I have received many requests to publish the content or explain more. There is so much to explain, that I will write multiple posts in the coming weeks, to cover all aspects. Use the comments if you need more clarifications.
For those of you who could not attend the Adobe EMEA Summit, the lab was about “Server-Side Digital Marketing”. Check my post about the PHP PoC to understand the details.
Pros & cons
In my first post about server-side digital marketing, I gave a detailed explanation of some advantages and disadvantages of these techniques. In the lab, I summarised them (and added a few more) as in the following table.
Advantages | Disadvantages |
---|---|
Faster websites
Data quality
Easier SPA development
Headless implementations
|
Less flexibility
Increased complexity
Increased time to market
No standard libraries available DMP functionality very limited |
Sample website
I also created a PoC to show how to implement it. You can find it in this Gitlab link: https://gitlab.com/pmonjo/adobe-emea-summit-2019. It is important to mention that it will not work if you just clone/fork it. You need to create a configuration file named ADBServerConfig.json and place in the same directory as index.php and the other *.php files.
{
"version": "2019-01-13T17:42:00Z",
"marketingCloud" : {
"org": <YOUR ORG ID>,
"ssl": false
},
"target": {
"clientCode": <YOUR ADOBE TARGET CLIENT ID>,
"timeout": 5
},
"analytics": {
"rsids": <RSID>,
"server": <ANALYTICS SERVER>,
"charset": "UTF-8",
"privacyDefault": "optedin"
}
}
I have not tried setting ssl
to true
, but it should work. Also, remember to enclose in double quotes all strings in this JSON file. Let me know if you see any issues with the website and I will try to fix them. Remember that this is just a PoC and no guarantees are made.
Note. You must keep the copyright notice at the bottom of the web pages. All credits for the HTML code go to https://www.html5webtemplates.co.uk/.
Adobe tools
This is a summary of the Adobe tools I explained in the lab:
- ECID. I already wrote about it in a previous post and the PHP library also has it. The most important conclusion is that, in web, you should never generate the ECID server-side. The reason is that AAM becomes almost useless. Instead, as I showed in the lab and in the code, you should use a hybrid implementation. The most immediate consequence is that Target and Analytics have to be run client-side on the first page of the first visit. I will write a future post to explain this hybrid solution in detail. Obviously, if you are implementing for a headless device, your only option is ECID server-side.
- Target. In the index.php file you can see how I implemented a hybrid implementation, using regional mboxes and at.js. The basics of the server-side part are already documented in my server-side Target post, but I did not explain the hybrid solution nor A4T. This will be explained in a later post.
- Analytics. All *.php files of the sample website contain a hybrid Analytics implementation at the bottom. I already wrote about server-side Analytics, where you can find more details. I am not sure I will write about it in the future, as it is fairly straight forward. Maybe I will enhance the PHP library to also generate the JavaScript. Other ideas are welcome.
I explicitly excluded Audience Manager, as it adds additional complexity in hybrid implementations and the lab was only 45 minutes long. In fact, I still need to figure out how to create this particular implementation, keeping all its features intact. This will also merit its own post in the coming weeks.
Note. By “hybrid implementation” I mean an implementation of Adobe tools where part is client-side and part is server-side.
Single Page Applications
When I started working in the web industry, SPAs were mostly unheard of. Nowadays, if your website is not an SPA, it is “antique”. I still need to learn how they work internally (I understand the concept).
Why am I mentioning them? As I explained in the lab, SPAs may not need hybrid implementations of Target and Analytics. They may be able to operate 100% server-side. I hope to have time to learn SPAs and write about them in another post.
Let me know if I have missed something from the lab in this summary!