Στήνω το GA4 στο WooCommerce με καθαρό data layer και Google Tag Manager, ώστε κάθε ecommerce event, από το view_item μέχρι το purchase και το refund, να φτάνει μία φορά και με τα σωστά ποσά. Τα έσοδα στο GA4 συμφωνούν με το admin σου.
Αναλαμβάνω το setup του GA4 σε WooCommerce από την αρχή ή διορθώνω αυτό που ήδη έχεις: σχεδιάζω το data layer, στέλνω τα ecommerce events από τα σωστά WooCommerce hooks και επαληθεύω ότι οι παραγγελίες στο GA4 συμφωνούν με αυτές του καταστήματος. Το tracking είναι η βασική μου δουλειά, οπότε ξέρω πού σπάνε συνήθως αυτές οι υλοποιήσεις.
Το WooCommerce GA4 tracking σπάνια είναι λάθος επειδή «δεν μπήκε ο κωδικός». Είναι λάθος επειδή μπήκε δύο φορές, επειδή στέλνει τιμές με ΦΠΑ ενώ το backend τις κρατάει χωρίς, ή επειδή το purchase ξαναφεύγει κάθε φορά που κάποιος ανανεώνει τη σελίδα ευχαριστίας.
Το αποτέλεσμα: το GA4 δείχνει άλλες παραγγελίες από το WooCommerce και το Google Ads κάτι τρίτο. Επειδή το Smart Bidding και κάθε report στηρίζονται σε αυτά τα νούμερα, βελτιστοποιείς πάνω σε δεδομένα που δεν ισχύουν.
Παρακάτω θα βρεις ποια events χρειάζεται κάθε e-shop, πότε αρκεί ένα plugin και πότε χρειάζεσαι custom data layer, πώς αποτρέπεται το διπλό purchase, πώς μετράς τα refunds, πότε έχει νόημα το server-side και πώς ελέγχεις το αποτέλεσμα στο DebugView.
01
Τα GA4 ecommerce events που χρειάζεται ένα WooCommerce e-shop
Το GA4 έχει προκαθορισμένο ecommerce schema. Αν στέλνεις τα recommended events με τα σωστά ονόματα και τον πίνακα items, γεμίζουν αυτόματα τα ecommerce reports, τα funnels και τα audiences. Με custom ονόματα χάνεις όλη αυτή τη λειτουργικότητα και ξαναχτίζεις τα πάντα με το χέρι.
Κάθε event κουβαλά τον ίδιο πίνακα items με σταθερά πεδία: item_id, item_name, item_brand, item_category, item_variant, price, quantity. Το item_id πρέπει να είναι παντού το ίδιο (SKU ή product ID, όχι εναλλάξ), αλλιώς το ίδιο προϊόν εμφανίζεται δύο φορές στα reports.
view_item_list και select_item
Σε σελίδες κατηγορίας, αποτελέσματα αναζήτησης και blocks σχετικών προϊόντων. Δείχνουν ποιες λίστες φέρνουν κλικ και ποια προϊόντα αγνοούνται, κάτι που δεν φαίνεται πουθενά αλλού.
view_item
Στη σελίδα προϊόντος, με πλήρη item data και, σε variable products, το variant που είναι επιλεγμένο. Είναι η βάση για το conversion rate ανά προϊόν και για remarketing audiences με νόημα.
add_to_cart, remove_from_cart και view_cart
Από τα hooks του καλαθιού και όχι μόνο από το κλικ στο κουμπί, ώστε να πιάνονται και τα AJAX add to cart από λίστες, quick views και mini cart.
begin_checkout, add_shipping_info και add_payment_info
Τα βήματα όπου χάνονται οι περισσότεροι αγοραστές. Με αυτά ξεχωρίζεις αν το πρόβλημα είναι τα μεταφορικά, ο τρόπος πληρωμής ή η ίδια η φόρμα. Το classic checkout και το block-based checkout του WooCommerce θέλουν διαφορετική υλοποίηση.
purchase και refund
Το purchase στέλνεται μία φορά ανά transaction_id, με value, currency, tax, shipping, coupon και items. Το refund αφαιρεί το ποσό όταν η παραγγελία επιστρέφεται, ώστε το revenue στο GA4 να μην είναι διαρκώς φουσκωμένο.
02
Plugin ή custom data layer μέσω WooCommerce hooks;
Τα plugins (GTM4WP, Site Kit, MonsterInsights, ειδικά GA4 plugins για WooCommerce) βάζουν γρήγορα ένα βασικό tracking και για ένα μικρό κατάστημα μπορεί να αρκούν. Το πρόβλημα ξεκινά όταν συνυπάρχουν δύο, όταν ένα plugin στέλνει το ίδιο event με το GTM container σου, ή όταν χρειάζεσαι κάτι που το plugin δεν καλύπτει.
Το custom data layer γράφεται πάνω στα WooCommerce hooks, για παράδειγμα woocommerce_add_to_cart για το καλάθι και woocommerce_thankyou για την ολοκλήρωση της παραγγελίας, και διαβάζει τα πραγματικά δεδομένα από τη βάση αντί για ό,τι προλαβαίνει να διαβάσει ένα click listener από τη σελίδα. Το Google Tag Manager διαβάζει από το data layer και τροφοδοτεί GA4, Google Ads και Meta από μία πηγή.
Η επιλογή δεν είναι ιδεολογική. Αν το plugin καλύπτει σωστά τα events που χρειάζεσαι και είναι το μόνο που στέλνει δεδομένα, το κρατάμε. Αν όχι, το custom data layer αντέχει καλύτερα στα updates και ελέγχεται πιο εύκολα.
Plugin: γρήγορο ξεκίνημα, περιορισμένος έλεγχος στο schema και στα ποσά
Plugin: κίνδυνος διπλών events όταν τρέχει παράλληλα με GTM tags
Custom data layer: πραγματικά δεδομένα παραγγελίας από τη βάση, όχι από το DOM
Custom data layer: variable products, bundles, κουπόνια και refunds χωρίς εκπλήξεις
Και στις δύο περιπτώσεις: μία πηγή αλήθειας και ένα tag ανά destination
03
Πώς αποτρέπεται το διπλό purchase event
Η σελίδα ευχαριστίας (order-received) είναι μια κανονική σελίδα: ο πελάτης μπορεί να την ανανεώσει, να γυρίσει σε αυτήν από το ιστορικό ή από το email επιβεβαίωσης. Χωρίς προστασία, κάθε φόρτωση στέλνει νέο purchase.
Η λύση έχει δύο σκέλη. Πρώτον, ένα flag στα order meta που σημειώνει ότι το purchase έχει ήδη σταλεί, ώστε κάθε επόμενη φόρτωση να μη στέλνει τίποτα. Δεύτερον, σταθερό transaction_id ίσο με τον αριθμό παραγγελίας. Το GA4 χρησιμοποιεί το transaction_id για να περιορίζει τα διπλά, αλλά αυτό δεν αρκεί: αν δύο πηγές στέλνουν διαφορετικό ή κενό transaction_id, ή αν το διπλό event φτάνει σε Google Ads και Meta, η αγορά μετριέται δύο φορές.
Υπάρχει και το αντίθετο πρόβλημα: πληρωμές όπου ο πελάτης μεταφέρεται στη σελίδα της τράπεζας ή του PayPal και δεν επιστρέφει ποτέ στη σελίδα ευχαριστίας. Εκεί το purchase χάνεται από τον browser και καλύπτεται μόνο server-side, από το hook που αλλάζει το status της παραγγελίας.
Flag στα order meta: ένα purchase ανά παραγγελία
transaction_id ίσο με το order number σε GA4, Google Ads και Meta
Αφαίρεση παράλληλων plugins και hardcoded scripts
Κάλυψη πληρωμών που δεν επιστρέφουν στη σελίδα ευχαριστίας
04
Refunds και ακυρώσεις στο GA4
Οι επιστροφές καταχωρούνται στο admin του WooCommerce, όχι στον browser του πελάτη, οπότε κανένα GTM tag δεν μπορεί να τις δει. Το refund event στέλνεται από τον server μέσω GA4 Measurement Protocol, από το hook που ενεργοποιείται όταν καταχωρείται η επιστροφή.
Για πλήρη επιστροφή αρκεί το transaction_id. Για μερική, στέλνονται και τα items που επιστράφηκαν με την ποσότητά τους, ώστε το GA4 να αφαιρέσει το σωστό ποσό. Το client_id του επισκέπτη αποθηκεύεται στην παραγγελία κατά το checkout, ώστε το server event να συνδέεται με τον σωστό χρήστη.
Σε κατηγορίες με πολλές επιστροφές, όπως ένδυση και υπόδηση, χωρίς refund tracking το revenue και το ROAS που βλέπεις είναι σταθερά υπερεκτιμημένα.
05
Server-side tracking σε WooCommerce: πότε έχει νόημα
Το server-side tracking δεν είναι προϋπόθεση για σωστό GA4 σε WooCommerce. Είναι το επόμενο βήμα όταν τα βασικά δουλεύουν και το ad spend είναι αρκετό ώστε κάθε χαμένο conversion να κοστίζει.
Υπάρχουν δύο μορφές. Η πρώτη είναι ένα server-side GTM container σε δικό σου subdomain, από όπου τα events προωθούνται σε GA4, Google Ads και Meta CAPI με λιγότερες απώλειες από ad blockers και περιορισμούς στα cookies. Η δεύτερη είναι στοχευμένα server events από το ίδιο το WooCommerce μέσω Measurement Protocol, για refunds και πληρωμές που δεν επιστρέφουν στο site.
Σε κάθε περίπτωση το browser και το server event μοιράζονται το ίδιο transaction_id ή event_id, ώστε να γίνεται deduplication, και η συγκατάθεση του χρήστη ταξιδεύει μαζί με το event.
06
Πώς ελέγχεις το setup στο DebugView
Άνοιξε το site μέσα από το GTM Preview (Tag Assistant). Έτσι ενεργοποιείται το debug mode και τα events εμφανίζονται σε πραγματικό χρόνο στο DebugView, στο Admin του GA4.
Κάνε μια δοκιμαστική διαδρομή: λίστα προϊόντων, σελίδα προϊόντος, προσθήκη στο καλάθι, checkout, πληρωμή. Σε κάθε event έλεγξε ότι υπάρχουν currency, value και πίνακας items, ότι το item_id είναι ίδιο σε όλα τα βήματα και ότι το purchase εμφανίζεται μία φορά, ακόμη κι αν ανανεώσεις τη σελίδα ευχαριστίας.
Το DebugView επιβεβαιώνει τη δομή, όχι την ακρίβεια. Η τελική επαλήθευση γίνεται μετά από μερικές μέρες πραγματικής κίνησης, συγκρίνοντας transactions και revenue στα ecommerce reports του GA4 με τις παραγγελίες του WooCommerce για το ίδιο διάστημα.
GTM Preview ενεργό και events ορατά στο DebugView
currency, value και items σε κάθε ecommerce event
Ίδιο item_id σε view_item, add_to_cart και purchase
Ένα purchase ανά παραγγελία, και μετά από refresh
Σύγκριση GA4 με WooCommerce orders μετά από πραγματική κίνηση
07
Τι περιλαμβάνει η υλοποίηση
Κάθε project ξεκινά με audit του υπάρχοντος setup και τελειώνει με επαλήθευση πάνω σε πραγματικές παραγγελίες. Δεν παραδίδεται setup χωρίς σύγκριση GA4 και WooCommerce και τεκμηριωμένη εξήγηση για ό,τι μένει εκτός, όπως ad blockers, άρνηση consent ή δοκιμαστικές παραγγελίες.
Όταν το data layer είναι σταθερό, το ίδιο purchase event τροφοδοτεί το Google Ads conversion με σωστό value και currency και το Meta CAPI με τα ίδια items. Έτσι το Smart Bidding μαθαίνει από πραγματικές αξίες παραγγελιών και οι διαφορές ανάμεσα στις πλατφόρμες εξηγούνται από attribution, όχι από σπασμένο tracking.
Έγγραφο data layer με events, πεδία items και κανόνες για ΦΠΑ, μεταφορικά και εκπτώσεις
Υλοποίηση σε WooCommerce hooks με προστασία από διπλό purchase
GTM container με ένα tag ανά destination και Consent Mode v2
Refunds μέσω Measurement Protocol
Reconciliation GA4 vs WooCommerce και documentation για τη συντήρηση
08
Για ποιον είναι
Για WooCommerce e-shops που τρέχουν Google Ads ή Meta και θέλουν τα έσοδα στο GA4 να συμφωνούν με τις παραγγελίες. Για ομάδες που κληρονόμησαν ένα setup με πολλά plugins και δεν ξέρουν τι στέλνει τι. Και για developers ή agencies που θέλουν έτοιμη προδιαγραφή data layer και ανεξάρτητο έλεγχο πριν από ένα launch.
Η ΔΙΑΔΙΚΑΣΙΑ
Πώς στήνουμε το GA4 στο WooCommerce
01
ΒΗΜΑ 1 / 5
Audit υπάρχοντος setup
Καταγράφω τι στέλνει σήμερα το κατάστημα: plugins, GTM tags, hardcoded scripts και διπλά events. Παίρνεις λίστα με ό,τι είναι λάθος και γιατί.
02
ΒΗΜΑ 2 / 5
Σχεδιασμός data layer
Ορίζουμε events, πεδία items, item_id και κανόνες για ΦΠΑ, μεταφορικά και εκπτώσεις, σε έγγραφο που καταλαβαίνει και ο developer σου.
03
ΒΗΜΑ 3 / 5
Υλοποίηση σε WooCommerce hooks
Τα events μπαίνουν στα σωστά hooks, για classic ή block checkout, με προστασία από διπλό purchase και υποστήριξη variable products.
04
ΒΗΜΑ 4 / 5
GTM, GA4 και destinations
Ένα tag ανά destination, Consent Mode v2, σύνδεση με Google Ads και Meta, και refunds μέσω Measurement Protocol.
05
ΒΗΜΑ 5 / 5
Επαλήθευση και παράδοση
Έλεγχος στο DebugView, σύγκριση GA4 με WooCommerce σε πραγματικές παραγγελίες και documentation για τη μελλοντική συντήρηση.
ΓΙΑΤΙ ΕΧΕΙ ΣΗΜΑΣΙΑ
Τι κερδίζεις από σωστό WooCommerce tracking
Έσοδα στο GA4 που συμφωνούν με το WooCommerce
01
Πλήρες funnel από view_item μέχρι purchase
02
Ένα purchase ανά παραγγελία, χωρίς διπλά
03
Refunds που αφαιρούνται σωστά από το revenue
04
Google Ads και Meta με πραγματικές αξίες παραγγελιών
05
Documentation ώστε το tracking να αντέχει τα updates
Θέλεις τα νούμερα του GA4 να συμφωνούν με τις παραγγελίες του WooCommerce;
Στείλε το URL του e-shop. Θα δεις τι στέλνει σήμερα το tracking σου, τι λείπει ή διπλομετράει και τι χρειάζεται για σωστό GA4 σε WooCommerce.
FAQ
Συχνές ερωτήσεις για GA4 & WooCommerce
Υπάρχουν δύο δρόμοι. Ο γρήγορος είναι ένα plugin που στέλνει τα ecommerce events απευθείας. Ο πιο αξιόπιστος είναι ένα data layer γραμμένο πάνω στα WooCommerce hooks, με το Google Tag Manager να προωθεί τα events στο GA4. Και στους δύο χρειάζεσαι σωστό currency, σταθερό item_id και έλεγχο στο DebugView πριν θεωρήσεις ότι δουλεύει. Αυτό που δεν πρέπει να συμβαίνει είναι να τρέχουν και οι δύο δρόμοι μαζί.
Τουλάχιστον view_item, add_to_cart, begin_checkout και purchase, ώστε να έχεις ένα βασικό funnel. Ένα πλήρες setup προσθέτει view_item_list, select_item, remove_from_cart, view_cart, add_shipping_info, add_payment_info και refund. Όλα χρησιμοποιούν τα recommended ονόματα του GA4 και τον ίδιο πίνακα items με σταθερό item_id, ώστε να δουλεύουν τα ενσωματωμένα ecommerce reports.
Οι συνηθέστερες αιτίες είναι τα διπλά purchase events από παράλληλα plugins και GTM tags, τα χαμένα events από ad blockers και άρνηση consent, οι πληρωμές που δεν επιστρέφουν στη σελίδα ευχαριστίας και οι διαφορετικοί κανόνες για ΦΠΑ και μεταφορικά στο value. Μια μικρή, σταθερή απόκλιση είναι φυσιολογική. Μια μεγάλη ή ασταθής απόκλιση σημαίνει ότι κάτι στο setup είναι σπασμένο.
Ναι, αν είναι το μόνο που στέλνει ecommerce events, καλύπτει τα events που χρειάζεσαι και στέλνει σωστά ποσά. Στην πράξη, όταν χρειαστείς refunds, custom πεδία, block checkout ή server-side, τα περισσότερα plugins γίνονται περιοριστικά και το data layer με GTM είναι πιο καθαρή λύση. Η απόφαση παίρνεται μετά το audit του υπάρχοντος setup, όχι εκ των προτέρων.
Με ένα flag στα order meta. Το purchase στέλνεται μία φορά και η παραγγελία σημειώνεται ως tracked, οπότε κάθε επόμενη φόρτωση της σελίδας δεν στέλνει τίποτα. Το σταθερό transaction_id, ίσο με τον αριθμό παραγγελίας, λειτουργεί ως δεύτερο δίχτυ ασφαλείας στο GA4 και επιτρέπει deduplication και στις πλατφόρμες Google Ads και Meta.
Όχι για να δουλέψει σωστά το GA4. Έχει νόημα όταν το ad spend είναι σημαντικό και θέλεις να περιορίσεις τα conversions που χάνονται από ad blockers και περιορισμούς των browsers, ή όταν πολλές πληρωμές ολοκληρώνονται εκτός site. Για τα refunds αρκεί ένα απλό server event μέσω Measurement Protocol, χωρίς πλήρες server-side GTM container.
Εξαρτάται από το τι υπάρχει ήδη, το theme, τον τύπο του checkout και τα destinations που θέλεις να τροφοδοτήσεις. Ένα τυπικό e-shop χρειάζεται λίγες μέρες υλοποίησης και μία με δύο εβδομάδες πραγματικών δεδομένων πριν κλείσει η επαλήθευση. Μετά από ένα σύντομο audit παίρνεις συγκεκριμένο πλάνο, χρονοδιάγραμμα και προσφορά.
ΑΣ ΜΙΛΗΣΟΥΜΕ
Έτοιμος να αποδώσειτο MarTech stackσου;
Διάλεξε μία ώρα από το ημερολόγιο και κλείσε δωρεάν intro call 15 λεπτών. Προτιμάς να στείλεις brief; Χρησιμοποίησε τη φόρμα δίπλα.