W Google Analytics 4 (GA4) często występuje problem z oznaczeniem kampanii Google Ads jako “(organic)”, co utrudnia śledzenie danych. Aby temu zapobiec, konieczne jest odpowiednie skonfigurowanie szablonu śledzenia kampanii Google Ads. W artykule omówię kroki, które pozwalają rozwiązać ten problem i poprawić dokładność raportów, co ma kluczowe znaczenie dla monitorowania wyników kampanii reklamowych.
Aby sprawdzić, czy problem dotyczy również Twojego konta GA4, przejdź do panelu tego narzędzia do zakładki Pozyskiwanie ruchu: Sesja – domyślna grupa kanałów. Następnie wybierz źródło/medium jako google/cpc, a jako wymiar dodaj Sesja – kampania. Raport może wyglądać następująco:
Jeśli u siebie również widzisz pozycję (organic) oznacza to, że masz zagregowane dane z kampanii w tym wierszu. To z kolei utrudnia poprawną analizę danych. Dlaczego tak się dzieje? Nie opublikowano żadnej konkretnej informacji, która mówiłaby, kiedy to się dzieje, ale prawdopodobnym powodem jest sytuacja, gdy użytkownicy odrzucają ad_user_data w banerze uzyskiwania zgody na stronie internetowej lub gdy wyłączają spersonalizowane reklamy na poziomie konta Google.
Jak rozwiązać problem?
Jan Zdarsa przygotował skrypt, które pozwala rozwiązać ten problem. Pozwala on na automatyczne dodanie szablonu śledzenia do kampanii Google Ads, dzięki czemu Google Ads może efektywniej przekazywać dane do Google Analytics 4. To z kolei powoduje, że oznaczenie kampanii jako (organic) znika lub bardzo mocno maleje. Szablon śledzenia ma postać:
{lpurl}?utm_source=google&utm_medium=cpc&utm_campaign={_campaign}&utm_id=123456789
parametr utm_campaign={_campaign} odpowiada za automatycznie wstawianą nazwę kampanii, a utm_id za numer ID konkretnej kampanii.
Skrypt znajdziesz poniżej.
function main() { Logger.log("Processing account: " + AdsApp.currentAccount().getCustomerId()); // Process each campaign type with error handling tryHandleCampaigns(AdsApp.campaigns(), "Standard & Others"); tryHandleCampaigns(AdsApp.shoppingCampaigns(), "Shopping"); tryHandleCampaigns(AdsApp.performanceMaxCampaigns(), "Performance Max"); // tryHandleCampaigns(AdsApp.videoCampaigns(), "Video"); Logger.log("Processing completed for account: " + AdsApp.currentAccount().getCustomerId()); } function tryHandleCampaigns(campaignIteratorFunction, campaignType) { try { handleCampaigns(campaignIteratorFunction, campaignType); } catch (e) { Logger.log("Error processing " + campaignType + " campaigns: " + e.message); } } function handleCampaigns(campaignIteratorFunction, campaignType) { var campaignIterator = campaignIteratorFunction .withCondition('Status != REMOVED') .get(); while (campaignIterator.hasNext()) { var campaign = campaignIterator.next(); try { // Use either this template or change the campaignId in utm_id to valuetrack {campaignid} var trackingTemplate = "{lpurl}?utm_source=google&utm_medium=cpc&utm_campaign={_campaign}&utm_id=" + campaign.getId(); // var trackingTemplate = "{lpurl}?utm_source=google&utm_medium=cpc&utm_campaign={_campaign}&utm_id={campaignid}"; campaign.urls().setTrackingTemplate(trackingTemplate); // Set custom parameters or perform other universal actions here campaign.urls().setCustomParameters({campaign: encodeURIComponent(campaign.getName())}); } catch (e) { Logger.log("Error processing campaign " + campaign.getId() + " in " + campaignType + ": " + e.message); } } }
Aby dodać skrypt, zaloguj się na konto Google Ads i przejdź do zakładki SKRYPTY. Następnie dodaj nowy skrypt, autoryzuj go i kliknij PODGLĄD. Jeśli wszystko działa poprawnie, zapisz skrypt.
Na końcu ustaw częstotliwość wykonywania skryptu – godzinny, dzięki czemu zachowasz aktualność swoich kampanii. Na końcu pozostaje uruchomienie skryptu, aby wprowadzić zmiany w istniejących kampaniach.
Jeśli wszystko zostało ustawione poprawnie, w szablonie śledzenia kampanii powinna pojawić się wartość:
Niestety skrypt nie działa w przypadku kampanii generujących popyt (Demand Gen) oraz kampanii video. W tych typach kampanii szablon śledzenia należy dodać ręcznie i może on wyglądać tak:
{lpurl}?utm_source=google&utm_medium=cpc&utm_campaign=Demand%20Gen%20-%20sukienki&utm_id=123456789
%20 oznacza spację, wiec wyświetlana w raportach nazwa kampanii to Deman Gen – sukienki.
Aby sprawdzić ID kampanii, na poziomie raportu kampanii dodaj kolumnę IDENTYFIKATOR KAMPANII:
Dzięki powyższemu rozwiązaniu raporty w Google Analytics 4 ponownie będą poprawne.
WSPÓŁPRACA ZE MNĄ |
Od 2011 roku jako specjalista Google Ads zajmuję się prowadzeniem i optymalizacją kampanii w systemie reklamowym Google. Dotychczas przeprowadziłem ponad 2300 kampanii, których budżet przekroczył już 30 mln zł. Jeśli szukasz kogoś komu chcesz zlecić prowadzenie swoich kampanii, napisz do mnie. Pracuję tylko z firmami, które poważnie podchodzą do tematu, dlatego zapoznaj się proszę z moimi zasadami współpracy. Jeśli je akceptujesz, wyślij mi wiadomość :) |
18 komentarzy
Przemo
19 września 2024 at 10:26
Bardzo dziękuję za to rozwiązanie. Organic niestety coraz częściej występuje u mnie w płatnych kampaniach.
Marcin Wsół
19 września 2024 at 10:27
proszę :)
Michał
19 września 2024 at 10:48
“Na końcu ustaw częstotliwość wykonywania skryptu – godzinny”
Ale gdzie to ustawić?
Marcin Wsół
19 września 2024 at 11:48
w zakładce SKRYPTY znajdziesz listę wszystkich skryptów, przy każdym jest opcja ustawienia harmonogramu, tak jak widać na grafice: https://www.marcinwsol.pl/wp-content/uploads/2024/09/google-cpc-organic-jak-poprawic-raporty-w-ga4-3a.png
luk
19 września 2024 at 13:51
Czy dodanie po prostu szablonu w ustawieniach nie zadziała? Musi być skrypt?
Marcin Wsół
19 września 2024 at 14:16
zadziała, tylko musisz pamiętać, żeby zawsze aktualizować szablon śledzenia, jak zmienisz nazwę kampanii
no i w przypadku wielu kont, skrypt jest wygodniejszy :)
Paweł
20 września 2024 at 11:55
Marcin – a czy wówczas należy pożegnać się z autotaggingiem, czy to nie koliduje?
dzięki
Paweł
20 września 2024 at 12:00
A Ok – doczytałem u autora że nie zaleca wyłączania autotaggingu
Rafał
25 września 2024 at 19:29
Skrypt działa wstecz ? Czy od momentu wdrożenia dopiero będzie właściwie “segregował dane” ?
Marcin Wsół
26 września 2024 at 06:02
skrypt działa do momentu wdrożenia, wstecz niestety nie
Katarzyna S
27 września 2024 at 11:08
Chciałabym też przekazywać nazwę grupy reklam. czy jest to możliwe? W ustawionych ręcznie UTMach przekazywałam grupę reklam parametrem utm_content. Czy da sie zmodyfikować skrypt żeby uwzględnić też nazwę grupy reklam?
Czy przed wdrożeniem skryptu powinnam usunąć z adresów URL reklam UTMy dodane ręcznie?
I jeszcze pytanie czy jest jakiś sposób żeby w UTMach przekazywać nazwy kampanii / nazwy grupy reklam ale tak żeby użytkownik nie widział tego w adresie strony? Czasami nazwy kampanii są dziwne i nie przeznaczone dla oczu klienta :) Pozdrawiam
Marcin Wsół
27 września 2024 at 11:46
prawdopodobnie się da, ale trzeba by było poprosić autora skryptu, aby go zmodyfikował pod tym kątem.
Co do nazw kampanii i grup reklam, niestety będą widoczne, więc tutaj nie mam rozwiązania :(
Adrian
2 października 2024 at 15:02
Dziękuje p. MArcinie za kolejny super materiał. Proszę mi powiedzieć jaki jest cel pobierania ID kampanii?
Jak mam problem trosze inny ale mam nadzieje ze to pomoże: google / cpc – (not set)
Marcin Wsół
3 października 2024 at 07:42
Dzięki ID Google trafniej przyporządkuje dane z kampanii Google Ads. Niemniej można spróbować tylko z nazwami kampanii, żeby przetestować, czy zadziała i raporty będą poprawne.
Ania
7 października 2024 at 23:34
A jak poradzić sobie z google/cpc (not set)?
Kiedyś było tego miesięcznie 1 -2 sztuki. Od lipca ponad połowa konwersji w GA4 z Google Ads.
Marcin Wsół
8 października 2024 at 08:38
tutaj znajdziesz trochę info na ten temat – https://measureschool.com/how-to-fix-not-set-in-ga4/
Łebski Hary
15 października 2024 at 10:41
Marcinie, jak zawsze – czapki z głów. Wielkie dzięki
Marcin Wsół
15 października 2024 at 13:24
dzięki :)