Manchmal ist es notwendig, oder praktisch, einen Link zu einem Produkt mit dem Gutscheincode direkt zu bewerben. Das macht vor allem bei Aktionen Sinn, bei denen du unbedingt willst, dass die Leute keine zusätzliche Hürde überwinden müsssen, indem sie zuerst noch selbst den Gutscheincode anwenden müssen. Mit diesem Code-Snippet kannst du coupon codes direkt an URL’s anhängen und verlinken. ZB so:
Um einen Link wie oben zu erzeugen brauchst du die ID des Produkts, oder der Produktvariante, die du verlinken möchtest, den Gutscheincode und ein Code-Snippet, dass du in deiner functions.php in WordPress einfügst.
Sehen wir uns den Link im Detail an:
Zuerst deine Shop-Domain:
https://dein-online-shop.de
danach die Kasse, oder der Warenkorb, je nachdem wohin du weiterleiten möchtest:
/checkout/
/cart/
danach das Produkt (die Produkt-ID). Durch den WooCommerce Hook „add-to-cart“ wird das Produkt automatisch in den Warenkorb gelegt. Das funktioniert mit allen veröffentlichten Produkten und Produktvarianten. Die „74“ tauscht du mit deiner Produkt-ID:
?add-to-cart=74
Die gewünschte Menge des Produkts. Hier kannst du die Menge angeben. 1 ist ein Stück und 10 wären 10 Stück. Das Ampersand „&“ ist das „Trennzeichen“ in der URL. Damit werden weitere URL-Parameter angehängt.
&quantity=1
Und jetzt noch der Gutscheincode. Hier starten wir wieder mit „&“, weil das ein weiterer URL Parameter ist. Hier musst du „deintestcouponcode“ mit deinem Gutscheincode ersetzen:
&coupon=deintestcouponcode
Hier ist das PHP Code-Snippet für die functions.php
Am besten ist, wenn du ein Child-Theme verwendest. Du kannst auch Plugins verwenden, die php code für dich in WooCommerce einhängen.
Füge den PHP Open-Tag „<?php“ nur ein, wenn in deinem File noch keiner ist. Wenn du es zu deinem functions.php file hinzufügst, brauchst du das nicht. Da gibt es schon einen Open-Tag in der ersten Zeile:
<?php
// *******************************************
// BEGIN Add to cart + add coupon code in url:
// *******************************************
function atmt_woocommerce_apply_cart_coupon_in_url() {
if ( ! function_exists( 'WC' ) || ! WC()->session ) {
return;
}
if ( empty( $_REQUEST['coupon'] ) ) {
return;
} else {
$coupon_code = esc_attr( $_REQUEST['coupon'] );
}
WC()->session->set_customer_session_cookie(true);
if ( ! WC()->cart->has_discount( $coupon_code ) ) {
WC()->cart->add_discount( $coupon_code );
}
}
add_action('wp_loaded', 'atmt_woocommerce_apply_cart_coupon_in_url', 30);
add_action('woocommerce_add_to_cart', 'atmt_woocommerce_apply_cart_coupon_in_url');
// *******************************************
// END Add to cart + add coupon code in url:
// *******************************************
Vor kurzem wurde ich von einem Kunden gefragt, ob wir eine bessere Lösung haben, um Interessen von Onlineshop Besucher:innen mit Mautic zu tracken und somit die Follow-Up Kommunikation zu personalisieren und zu verbessern. Die meisten Leute bauen dazu überkomplexe Kampagnen mit hunderten Abfragen und Hirarchien, welche Produkte die wichtigsten sind. Das ist aufwändig und fehleranfällig. Darum habe ich ein kleines Script entwickelt, das ich dir hier zur Verfügung stelle.
Wie trackt man das Hauptinteresse bei vielen Produkten?
Wie schon erwähnt, kann das über Mautic mit dem URL Tracking und Kampagnen gemacht werden. Das braucht aber viele Wenn/Dann Abfragen, Segmente, eine komplexe Logik und vor allem: Rechenleistung, die wiederum deine Datenbank super busy hält und Mautic verlangsamt, oder sogar zum Stillstand bringt.
Stellen wir folgende These auf: Du sendest eine E-Mail an deine Liste mit verschiedenen Produkten. Welches Produkt ist das wichtigste bzw interessanteste für deine Leser:innen? Richtig: das erste, auf das geklickt wird. Natürlich nicht immer, aber wir gehen davon aus, dass das für den Moment das wichtigste Produkt ist. Das ist somit der „main-interest“ alle anderen sind „additional-interests“.
Dynamisch Daten über das Mautic-Tracking-Script senden
Mit Mautic klappt das ganze auch bei unbekannten Kontakten. In Mautic werden diese als „Anonyme Kontakte“ angelegt.
Um diese Infos zu Mautic zu senden, müssen wir keine Komplexen abfragen und vergleiche von Mautic machen lassen. Wir können einfach das Mautic-Tracking-Script erweitern. Die grundlegenden Infos, was du alles mit Mautic Tracking machen kannst findest du in der Mautic Dokumentation.
Schritt 1: Dynamisches Tracking Script erstellen:
Füge dieses Script vor </body> auf allen Produktseiten ein, die dynamische Interessen an Mautic mit Tags senden sollen. WICHTIG: du musst in der 6. Zeile dden Wert ‚http(s)://yourmautic.com/mtc.js‘ zu deinem Mautic ändern. Das Protokoll (http oder https) muss dazu auch richtig angegeben werden!
<script>
(function(w, d, t, u, n, a, m) {
w['MauticTrackingObject'] = n;
w[n] = w[n] || function() { (w[n].q = w[n].q || []).push(arguments) };
a = d.createElement(t), m = d.getElementsByTagName(t)[0];
a.async = 1; a.src = u; m.parentNode.insertBefore(a, m);
})(window, document, 'script', 'http(s)://yourmautic.com/mtc.js', 'mt');
function getLastPermalinkPart(url) {
const urlParts = url.split('/').filter(Boolean); // Filter empty parts
return urlParts[urlParts.length - 1].toLowerCase().replace(/[^a-z0-9-]/g, '-');
}
function trackInterestDynamically() {
const STORAGE_KEY = 'main_interest';
// Get the last part of the permalink without the domain and categories
const course = getLastPermalinkPart(window.location.pathname);
const mainTag = `main-interest-${course}`;
const secondaryTag = `additional-interest-${course}`;
let currentMainInterest = localStorage.getItem(STORAGE_KEY);
let tagUpdate;
if (!currentMainInterest) {
// No main interest set, so this page becomes the main interest
localStorage.setItem(STORAGE_KEY, course);
tagUpdate = `${mainTag}`;
} else if (currentMainInterest !== course) {
// This is a secondary interest
tagUpdate = `${secondaryTag}`;
} else {
// This page is already marked as the main interest
tagUpdate = mainTag; // Retain main interest tag
}
// Send the updated tag information to Mautic
mt('send', 'pageview', { tags: tagUpdate }, {
onload: function() {
console.log('Tag tracking loaded successfully.');
},
onerror: function() {
console.error('Tag tracking failed.');
}
});
}
// Call this function once on each course page
trackInterestDynamically();
</script>
Generell gilt, dass du nur und immer und ausschließlich 🤯 https verwenden solltest. Wenn du das nicht hast oder nicht weißt wie du ein SSL-Zertifikat für dein Mautic bekommst, wende dich an uns (rechts unten im Chat) oder hoste dein Mautic gleich bei hartmut.io zB. mit dem PURE Plan, falls du den Rest selbst machen kannst/möchtest.
Schritt 2: Doppelte Script Auslösung vermeiden
Damit dein Mautic Tracking nicht doppelt oder dreifach läuft musst du dein normales Mautic Script auf den Produktseiten abschalten. Es darf nur einmal laufen, sonst bekommst du falsche Zahlen in dein Mautic und freust dich über extrem hohen Traffic, obwohl es gar nicht stimmt.
Falls du dein Mautic Tracking Script über den Google Tag Manager eingebunden hast, dann kannst du einfach den Trigger im Tag Manager ändern und nur bei Pageviews Page Path „does not start with“ https://deineshopdomain.com/produkte einstellen. Wenn du dazu ein genaues Tutorial brauchst, schreib es gerne in die Kommentare.
Schritt 3: Dynamisches Interesse Tagging testen
Sobald du dein Script richtig eingebunden hast, kannst du in einem Inkognito Fenster testen. Gehe dazu einfach auf deine Seite und rufe dann ein Produkt nach dem anderen auf. Das erste Produkt löst den main-interest-mit-produkt-a Tag aus, das zweite den additional-interest-mit-produkt-b, das dritte den additional-interest-mit-produkt-c und so weiter.
Danach gehst du in dein Mautic auf Kontakte klickst rechts oben auf Anonyme Kontakte und suchst den Kontakt mit deiner IP Adresse. Klicke darauf und in der rechten Sidebar deines Kontakts sind die Tags enthalten. Jeder weitere Klick auf ein Produkt fügt einen weiteren Tag hinzu.
Nutze die erzeugten Daten
Was bringt dir ein unglaublicher Berg an Infos und Daten, wenn du damit nichts machst? Eben. Wenn du Daten auf diese Weise sammelst, musst du das in deiner Datenschutzerklärung erklären: Wofür und wie und warum du diese sammelst. Zusätzlich solltest du den Vorgang in deinem Datenverarbeitungsverzeichnis dokumentieren. Und am wichtigsten: Baue eine Kampagne, mit der du die Kontakte danach weiter bearbeitest. Mit Interesse-Tracking kannst du mit geringem Aufwand die Ansprache und die Kommunikation zu deinen potenziellen Kund:innen personalisieren und relevanter gestalten. Wenn du Hilfe damit brauchst, gib Bescheid. Wir sind gerne für dich da und bauen die Kampagnen für dein E-Mail Marketing, oder betten dieses Script in deine Seite ein.