Cześć! Chciałbym podzielić się skryptem Google Ads, który wyklucza frazy niebrandowe, czyli takie, które nie są związane z konkretną nazwą firmy. Skrypt ten pomoże utworzyć kampanię brandową produktową PLA.
Po co tworzyć kampanie brandową?
Dlaczego warto tworzyć kampanie brandowe? To pytanie może wydawać się zasadne, ponieważ niektórzy mogą uważać, że to marnowanie pieniędzy – przecież w wynikach organicznych nasza firma również się pojawia. Jednak zobaczmy to na przykładzie: wpisuję w wyszukiwarkę “sukienka Zalando” i co widzę? Same reklamy, żadnych wyników organicznych. Dodatkowo, na pierwszej linii są reklamy produktowe. Warto, aby w takiej sytuacji pokazywał się właściwy brand.
Jak klienci wyszukują Twoja markę?
Klienci często kojarzą markę z konkretnym przedmiotem, ale nie pamiętają nazwy. Mogą wtedy użyć skrótu, jak w przykładzie “sukienka Zalando”. Jeśli nasz klient już zna naszą markę i chce dokonać zakupu, może natrafić na produkty konkurencji zamiast naszych.
Drugim powodem wykluczania fraz brandowych z innych kampanii jest ochrona marki. Kampania brandowa przejmuje wtedy rolę ochrony marki, co pozwala w innych kampaniach wykluczyć frazy związane z marką i uniknąć sztucznego remarketingu.
Jeśli przekonałem Cię do wartości kampanii brandowych, oto gotowy skrypt, który wykluczy niebrandowe frazy. W kampaniach PLA możemy jedynie wykluczać frazy, więc musimy wykluczyć wszystkie poza właściwymi. W internecie krąży wiele skryptów, ale żaden nie działał u mnie, więc napisałem własny.
Jak to działa? Tworzymy listę wykluczeń, na którą automatycznie będą dodawane niechciane frazy, z wykluczeniem tych, które są dla nas ważne.
Zacznij od listy brandowej. Zobacz, jakie frazy są związane z nazwą brandową. Możesz utworzyć kampanię typu search i na podstawie wyszukiwanych fraz zbudować listę brandową lub zerknąć do raportu, gdzie odkryjesz frazy brandowe, które przynoszą sprzedaż.
Gdy masz już te frazy, tworzysz listę, gdzie będą dodawane frazy niebrandowe. Następnie przejdź do skryptu. Wklej gotowy skrypt (znajdziesz go w artykule), dodaj swoje frazy, nazwę listy do wykluczeń i etykietę. Nazwij skrypt, zautoryzuj i uruchom. Utwórz kampanię, jeśli jeszcze jej nie masz, dodaj etykietę i gotowe.
Na koniec, wpadłem na pomysł kilku innych skryptów, np. skrypt wykluczający słabe frazy, które nie przynoszą konwersji mimo wielu kliknięć, lub na podstawie ROAS. O tych skryptach opowiem w następnym tutorialu.
Dziękuję za uwagę i powodzenia w tworzeniu kampanii brandowych!
Skrypt do pobrania
//Konfiguracja:
var EXCLUDE_QUERIES_WITHOUT = [“nazwa brandu”, “nazwa brandu i słowo”];
var CAMPAIGN_LABEL = “Brand”;
var NEGATIVE_KEYWORD_LIST_NAME = “No Brand”; // Nazwa listy wykluczających słów kluczowych
//Koniec konfiguracji
function main() {
checkLabel();
var campaignsIds = findShoppingIds();
if (campaignsIds.length > 0) {
var badQueries = findBadQueries(campaignsIds);
if (badQueries.length > 0) {
Logger.log(“Skrypt dodaje ” + badQueries.length + ” nowych wykluczających słów kluczowych do listy…”);
addNegativeKeywordsToList(badQueries);
} else {
Logger.log(“Wszystkie zapytania spełniają Twoje wymagania.”);
}
} else {
Logger.log(“Nie znaleziono kampanii z określoną etykietą.”);
}
}
function findShoppingIds() {
var campaignsIds = [];
var campaignsSelector = AdsApp.shoppingCampaigns()
.withCondition(“LabelNames CONTAINS_ANY [‘” + CAMPAIGN_LABEL + “‘]”)
.withCondition(“Status = ENABLED”)
.forDateRange(“TODAY”);
var campaignsIterator = campaignsSelector.get();
while (campaignsIterator.hasNext()) {
var theCampaign = campaignsIterator.next();
campaignsIds.push(theCampaign.getId());
}
return campaignsIds;
}
function findBadQueries(campaignIds) {
var badQueries = [];
var report = AdsApp.report(
‘SELECT Query,Clicks,Impressions,Cost,Conversions,CampaignId ‘ +
‘ FROM SEARCH_QUERY_PERFORMANCE_REPORT ‘ +
‘ WHERE CampaignId IN [‘ + campaignIds.join(“,”) + ‘] ‘ +
‘ DURING YESTERDAY ‘);
var rows = report.rows();
while (rows.hasNext()) {
var isItBadQuery = true;
var row = rows.next();
var query = row[‘Query’];
Logger.log(“Sprawdzanie zapytania: ” + query); // Logowanie zapytania
for (var i = 0; i < EXCLUDE_QUERIES_WITHOUT.length; i++) {
if (query.indexOf(EXCLUDE_QUERIES_WITHOUT[i]) !== -1) {
isItBadQuery = false;
break;
}
}
if (isItBadQuery) {
badQueries.push(query);
Logger.log(“Dodanie do listy wykluczających: ” + query); // Logowanie złego zapytania
}
}
return badQueries;
}
function addNegativeKeywordsToList(badQueries) {
var negativeKeywordListIterator = AdsApp.negativeKeywordLists()
.withCondition(“Name = ‘” + NEGATIVE_KEYWORD_LIST_NAME + “‘”)
.get();
if (negativeKeywordListIterator.hasNext()) {
var negativeKeywordList = negativeKeywordListIterator.next();
badQueries.forEach(function(badQuery) {
negativeKeywordList.addNegativeKeyword(‘[‘ + badQuery + ‘]’);
Logger.log(badQuery + ” –> dodany do listy wykluczających słów kluczowych”);
});
} else {
Logger.log(“Nie znaleziono listy wykluczających słów kluczowych o nazwie: ” + NEGATIVE_KEYWORD_LIST_NAME);
}
}
function checkLabel() {
var labelIterator = AdsApp.labels().withCondition(“Name = ‘” + CAMPAIGN_LABEL + “‘”).get();
if (!labelIterator.totalNumEntities()) {
AdsApp.createLabel(CAMPAIGN_LABEL);
}
}