GA4 × WOOCOMMERCE

    GA4 σε WooCommerce: setup & ecommerce tracking.

    Στήνω το 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.

    • Audit υπάρχοντος tracking: plugins, GTM tags, hardcoded scripts, διπλά events
    • Έγγραφο 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
    06
    ΑΣ ΞΕΚΙΝΗΣΟΥΜΕ

    Θέλεις τα νούμερα του 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 πριν θεωρήσεις ότι δουλεύει. Αυτό που δεν πρέπει να συμβαίνει είναι να τρέχουν και οι δύο δρόμοι μαζί.

    ΑΣ ΜΙΛΗΣΟΥΜΕ

    Έτοιμος να αποδώσει το MarTech stack σου;

    Διάλεξε μία ώρα από το ημερολόγιο και κλείσε δωρεάν intro call 15 λεπτών. Προτιμάς να στείλεις brief; Χρησιμοποίησε τη φόρμα δίπλα.