In deze blogpost laat ik je zien hoe je een professionele, dynamische order tracker direct in je Shopify product template kunt integreren als een custom liquid block.
In deze blogpost laat ik je zien hoe je een professionele, dynamische order tracker direct in je Shopify product template kunt integreren als een custom liquid block. Deze tracker berekent automatisch de verzend- en leverdata op basis van je bedrijfsregels, inclusief de "voor 17:00 besteld, vandaag verzonden" functionaliteit.
Kopieer en plak de volgende code in het tekstveld van het Custom Liquid block:
<!-- BEGIN Custom Liquid -->
<div id="diek-order-tracker" class="diek-tracker-container">
<style>
#diek-order-tracker {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
box-sizing: border-box;
margin: 20px 0;
}
#diek-order-tracker * {
box-sizing: border-box;
}
.diek-tracker-container {
width: 100%;
max-width: 100%;
}
.diek-tracker-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 8px;
}
.diek-tracker-title {
font-size: 16px;
font-weight: 600;
color: #000000;
}
.diek-guarantee {
display: flex;
align-items: center;
font-size: 12px;
color: #000000;
background-color: rgba(0, 0, 0, 0.1);
padding: 4px 8px;
border-radius: 4px;
}
.diek-guarantee i {
margin-right: 5px;
}
.diek-tracker-blocks {
display: flex;
background-color: white;
border-radius: 8px;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1);
overflow: hidden;
}
.diek-tracker-block {
flex: 1;
padding: 15px 10px;
text-align: center;
position: relative;
}
.diek-tracker-block:not(:last-child) {
border-right: 1px solid #f0f0f0;
}
.diek-tracker-icon {
color: #000000;
margin-bottom: 8px;
font-size: 22px;
}
.diek-tracker-label {
color: #000000;
font-weight: 600;
font-size: 13px;
margin-bottom: 5px;
}
.diek-tracker-date {
color: #666;
font-size: 12px;
}
.diek-tracker-note {
background-color: rgba(0, 0, 0, 0.08);
border-radius: 6px;
padding: 8px 12px;
font-size: 12px;
color: #000000;
margin-top: 10px;
}
</style>
<div class="diek-tracker-header">
<div class="diek-tracker-title">Uw bestelling</div>
<div class="diek-guarantee">
<i class="fas fa-check-circle"></i> Bezorggarantie
</div>
</div>
<div class="diek-tracker-blocks">
<div class="diek-tracker-block">
<div class="diek-tracker-icon">
<i class="fas fa-shopping-cart"></i>
</div>
<div class="diek-tracker-label">Bestelling geplaatst</div>
<div id="diek-order-date" class="diek-tracker-date">Laden...</div>
</div>
<div class="diek-tracker-block">
<div class="diek-tracker-icon">
<i class="fas fa-truck"></i>
</div>
<div class="diek-tracker-label">Verzonden</div>
<div id="diek-dispatch-date" class="diek-tracker-date">Laden...</div>
</div>
<div class="diek-tracker-block">
<div class="diek-tracker-icon">
<i class="fas fa-home"></i>
</div>
<div class="diek-tracker-label">Bezorgd</div>
<div id="diek-delivery-date" class="diek-tracker-date">Laden...</div>
</div>
</div>
<div class="diek-tracker-note">
<i class="fas fa-info-circle"></i> Bestellingen op werkdagen voor 17:00 worden dezelfde dag verzonden.
</div>
<script>
(function() {
// Functie om de datum te formatteren naar 'DD MMM' formaat in het Nederlands
function formatDate(date) {
const months = ['jan', 'feb', 'mrt', 'apr', 'mei', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec'];
const day = date.getDate();
const month = months[date.getMonth()];
return `${day} ${month}`;
}
// Functie om werkdagen toe te voegen (slaat weekend over)
function addBusinessDays(date, days) {
let result = new Date(date);
let daysAdded = 0;
while (daysAdded < days) {
result.setDate(result.getDate() + 1);
// Check of het geen weekend is (0 = zondag, 6 = zaterdag)
if (result.getDay() !== 0 && result.getDay() !== 6) {
daysAdded++;
}
}
return result;
}
function updateDates() {
try {
// Huidige datum en tijd voor bestelling
const today = new Date();
// Verzendingsdatum bepalen
let dispatchDate;
const currentHour = today.getHours();
const currentDay = today.getDay(); // 0 (zondag) tot 6 (zaterdag)
const isBusinessDay = currentDay !== 0 && currentDay !== 6;
const isBeforeCutoff = currentHour < 17;
if (isBusinessDay && isBeforeCutoff) {
// Voor 17:00 op een werkdag: vandaag verzonden
dispatchDate = new Date(today);
} else if (isBusinessDay && !isBeforeCutoff) {
// Na 17:00 op een werkdag: morgen verzonden (mits geen weekend)
dispatchDate = new Date(today);
dispatchDate.setDate(dispatchDate.getDate() + 1);
// Als morgen weekend is, dan maandag
if (dispatchDate.getDay() === 0 || dispatchDate.getDay() === 6) {
while (dispatchDate.getDay() === 0 || dispatchDate.getDay() === 6) {
dispatchDate.setDate(dispatchDate.getDate() + 1);
}
}
} else {
// Weekend: verzending op maandag
dispatchDate = new Date(today);
while (dispatchDate.getDay() === 0 || dispatchDate.getDay() === 6) {
dispatchDate.setDate(dispatchDate.getDate() + 1);
}
}
// Levering is 1-2 werkdagen na verzending
const deliveryStartDate = addBusinessDays(dispatchDate, 1);
const deliveryEndDate = addBusinessDays(dispatchDate, 2);
// Datums bijwerken
document.getElementById('diek-order-date').textContent = formatDate(today);
document.getElementById('diek-dispatch-date').textContent = formatDate(dispatchDate);
document.getElementById('diek-delivery-date').textContent =
`${formatDate(deliveryStartDate)} - ${formatDate(deliveryEndDate)}`;
} catch (e) {
console.error("Error updating dates:", e);
}
}
// Direct de datums bijwerken bij het laden
updateDates();
})();
</script>
<!-- Font Awesome alleen toevoegen als het nog niet geladen is -->
<script>
if (!document.getElementById('font-awesome-diek')) {
var fa = document.createElement('link');
fa.id = 'font-awesome-diek';
fa.rel = 'stylesheet';
fa.href = 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css';
fa.type = 'text/css';
document.head.appendChild(fa);
}
</script>
</div>
<!-- END Custom Liquid -->
Deze custom liquid block bevat alles wat je nodig hebt in één pakket:
Zoek in de JavaScript-code naar const isBeforeCutoff = currentHour < 17;
en wijzig het getal 17 naar jouw cut-off tijd.
Je kunt eenvoudig de Engelse teksten aanpassen naar Nederlands:
Als je bezorgtijden anders zijn, pas dan deze regel aan:
const deliveryEndDate = addBusinessDays(dispatchDate, 2);
Verhoog het getal 2 naar 3, 4 of hoger als je bezorging langer duurt.
Door deze dynamische order tracker toe te voegen aan je productpagina's, geef je klanten duidelijke informatie over wanneer ze hun aankoop kunnen verwachten. Dit verbetert niet alleen de klantenervaring, maar kan ook je conversiepercentage verhogen door het creëren van een gevoel van urgentie met de "voor 17:00 besteld" melding.
Probeer het vandaag nog uit in je Shopify winkel!
Al sinds mijn vijftiende bouw ik websites. Nu, 10+ jaar en 50+ projecten verder, combineer ik design, Shopify‑development en data‑gedreven marketing tot één 360° e‑commerce‑aanpak.
Check me op socials voor updates, tips en een kijkje achter de schermen.