Hello,
this is possible 🙂
You need to configure two blocks.
First explanation is for server-side code (when Dynamic blocks are set to Server-side = no caching) – only to show how to create cookies server-side:
Block 1 (Set Cookie)
Automatic insertion: disabled
Shortcode: Enabled
Page types: all enabled
Url parameters: utm_source (White list)
PHP processing: enabled
Code:
<?php
setcookie ('utm_source_session', 'value', time() + (24 * 3600), COOKIEPATH);
?>
Header code:
[adinserter code="1"]
[ADINSERTER HTTP]
Block 2 (Session Ad)
Set insertion and ad as needed
Url parameters: utm_source, utm_source_session (White list)
Explanation:
Header code inserts raw HTTP header line (above [ADINSERTER HTTP] separator) from block 1 which sets cookie when utm_source url parameter is present.
Shortcode [adinserter code="1"] ensures only block code is inserted (no wrapping div).
https://adinserter.pro/documentation/plugin-settings#header-footer
https://adinserter.pro/documentation/manual-insertion#shortcodes
https://adinserter.pro/documentation/black-and-white-lists#url-parameters
https://adinserter.pro/documentation/plugin-settings
Block 2 inserts ad either when utm_source_session cookie is set or when utm_source url parameter is set (when no cookie created yet – first page visit via url parameter).
And now universal approach with Javascript which works also with caching (Dynamic blocks set to client-side insert):
Block 1 (Set Cookie)
Automatic insertion: Footer
Page types: all enabled
Url parameters: utm_source (White list)
Code:
<script>
function setCookie (name,value,days) {
var expires = "";
if (days) {
var date = new Date();
date.setTime(date.getTime() + (days*24*60*60*1000));
expires = "; expires=" + date.toUTCString();
}
document.cookie = name + "=" + (value || "") + expires + "; path=/";
}
setCookie ('utm_source_session', 'cookie_value', 1)
</script>
No Header code needed, Block 2 is the same.