Blog içeriği
June 16, 2026

Shopify'a Geçişte Reklam Hesapları: Meta, Google Ads ve GMC için Adım Adım Rehber

Shopify geçişinde Meta Pixel, Google Ads ve Merchant Center nasıl yönetilir? ID kopukluğu sorunu, SKU mapping stratejisi ve geçiş sonrası doğrulama adımları.

No items found.

Shopify'a geçişte mağaza kurulumu ve ürün aktarımı genellikle özenle planlanır. Nodus Works olarak yürüttüğümüz geçiş projelerinde ise geçiş sonrası ilk iki haftada en sık karşılaştığımız sorun reklam hesaplarından kaynaklanır: DPA kampanyaları körleşiyor, Google Shopping ürün onayları toplu kalkıyor, conversion attribution bozuluyor. Bu sorunların tamamı tek bir nedene bağlanır: ürün ID'si kopukluğu.

Shopify Geçişinde Reklam Platformlarında Ne Değişir?

Shopify geçişinde Meta ve Google hesaplarına dokunulmaması gerekir; pixel'ler, kataloglar ve kampanyalar yeniden oluşturulmaz, silinmez, değiştirilmez. Asıl sorun platformlarda değil, ürün kimliklerinde yaşanır.

Shopify her ürüne ve her varyanta platforma özgü sayısal ID'ler atar. Bu ID'lerin eski platformdaki değerlerle hiçbir bağlantısı yoktur. Meta ve Google ürünleri bu ID üzerinden tanır; ID kopunca sistem ürünleri eşleştiremez, katalog kampanyaları hedefini kaybeder, conversion attribution bozulur.

Nodus Works olarak yaptığımız geçiş projelerinde bu sorunla en çok karşılaştığımız senaryo şudur: DPA (Dynamic Product Ads) kampanyası aktif olan bir mağaza Shopify'a taşınıyor, pixel kurulumu yapılıyor, feed güncelleniyor, ancak pixel'in gönderdiği content_id ile feed'deki id birbirinden farklı olduğu için Meta sistemi ürünleri eşleştiremez. Reklam çalışıyor görünür ama katalog eşleşmesi sıfıra düşer

Aşama Pixel Gönderdiği ID Feed'deki ID Durum
Geçiş öncesi eski_id_123 eski_id_123 Eşleşiyor
Geçiş sonrası (müdahale yok) yeni_shopify_456 eski_id_123 Eşleşmiyor: katalog körleşir
Geçiş sonrası (doğru yapı) SKU-001-MOR SKU-001-MOR Eşleşiyor

Çözümün özü şudur: platform değişse de hem pixel hem feed aynı değeri görmeye devam etmeli. Bu değerin taşıyıcısı SKU'dur.

Geçiş Öncesi Audit: Neye Bakılır?

Her geçişte ID mapping zorunlu değildir. Katalog kampanyası olmayan bir mağazada bu iş yükü gereksizdir. Mapping kararını verebilmek için önce mevcut hesap yapısını okumak gerekir.

İpucu: Audit'i geçiş gününden en az 2 hafta önce tamamlayın. Son dakika kararları hem mapping hatasına hem de kampanya akışını bölmeye yol açar.
Kontrol Noktası Nerede Bakılır Ne Aranır
Katalog kampanyası var mı? Meta Ads Manager → Campaigns DPA, Catalog Sales; Advantage+ Shopping varsa katalog bağlı mı kontrol et
Katalog feed aktif mi? Meta Commerce Manager → Catalogs Items sayısı, son fetch (veri çekme) zamanı
Pixel event hacmi Meta Events Manager → Overview Haftalık Purchase (Satın Alma) ve ViewContent (İçerik Görüntüleme) sayısı
Google Shopping kampanyası Google Ads → Campaigns Shopping veya PMax (Maksimum Performans) aktif mi?
GMC feed durumu Merchant Center → Products Onaylı ürün sayısı, hata oranı
Remarketing listesi Google Ads → Audience Manager Liste büyüklüğü ve aktif kullanım durumu

Mapping Gerekiyor mu? Karar Matrisi

Audit sonuçlarına göre mapping ihtiyacı üç senaryoya ayrılır. Doğru senaryo tespit edilmeden geçişe başlamak hem gereksiz iş yükü hem de telafi edilmesi zor hata yaratır.

Durum Karar Gerekçe
Katalog kampanyası yok, manuel creative reklamlar var Mapping atla Feed eşleşmesi gerekmiyor
Katalog bağlı ama harcama düşük (500$/ay altı), learning yeni Opsiyonel Yeniden öğrenir, kayıp tolere edilebilir
DPA veya katalog bağlı Advantage+ aktif, yüksek harcama, oturmuş ROAS Mapping zorunlu ID kopukluğu direkt ROAS kaybıdır
Google Shopping veya PMax aktif, ürün bazlı satış geliyor Mapping zorunlu GMC feed ID kopunca ürünler onaysız düşer

Mapping Gerekmiyorsa: Basit Geçiş Adımları

Katalog kampanyası olmayan mağazalarda SKU mapping gerekmez. Shopify'ın native kanal entegrasyonları Meta ve Google için feed oluşturmayı, pixel bağlantısını ve conversion event akışını geçişten sonra otomatik devralır.

Adım adım basit geçiş:

  1. Shopify'a ürünleri import et
  2. Shopify admin → Facebook & Instagram channel aktifleştir
  3. Shopify admin → Google & YouTube channel aktifleştir
  4. Her iki kanalın feed oluşturduğunu Commerce Manager ve Merchant Center'da doğrula
  5. Domain bağla, test siparişi ver
  6. Meta Events Manager ve GMC'de event akışını kontrol et

Bu senaryoda Shopify native entegrasyonu hem Meta hem Google için feed'i ve pixel bağlantısını otomatik yönetir. Ek müdahale gerekmez.

Mapping Gerekiyorsa: SKU Stratejisi ve ID Eşleştirme

Mapping'in özü şudur: eski sistemde Meta ve Google'a gönderilen ID ne ise, o değeri Shopify'da SKU olarak ata. Platform değişse de her iki taraftaki ID aynı kalır.

eski sistem ID → Shopify SKU → Pixel content_id = Feed id

Adım 1: Eski Sistemde Kullanılan ID'yi Tespit Et

Her kanalda hangi değerin ürün kimliği olarak kullanıldığını tespit etmek gerekir:

Kanal Nereye Bak Hangi Alan
Meta Pixel Events Manager → Purchase eventi → Payload content_ids değeri
Meta Katalog feed Catalogs → Data sources → Preview id sütunu
Google Ads / GA4 GA4 → Events → purchase → items item_id değeri
GMC feed Merchant Center → Products → Feed önizleme id sütunu

Bu değerler genellikle şunlardan biri olur:

  • Shopify variant_id (örn. 53499724267886)
  • Shopify product_id (örn. 15004856942958)
  • ikas, Ticimax, Ideasoft gibi platformların kendi ID'si
  • Zaten SKU kullanılıyorsa: bir sonraki adıma geç, mapping çalışması minimaldür
Kritik Not: Her varyantın SKU'su benzersiz olmalıdır. Aynı ürünün Mavi ve Mor varyantı aynı SKU'ya sahipse katalog hata verir. variant_id kullanıldığında bu sorun zaten olmaz; platform her varyanta farklı ID atar.

Adım 2: Eski ID'leri Shopify SKU'larına Yaz

Eski platformdan ürün listesini çıkar, her varyant için eski ID'yi SKU kolonu olarak belirle. Shopify'a import ederken SKU kolonunu bu değerle doldur.

ikas üzerinden örnek export (endpoint ve auth formatını ikas API dokümantasyonuyla teyit edin; versiyon güncellenmiş olabilir):

# ikas_export.py
import requests, csv

url = "https://api.myikas.com/api/v1/admin/graphql"
headers = {"Content-Type": "application/json", "Authorization": "Bearer TOKEN"}

query = """
{ listProduct(pagination: {limit: 250}) {
    data { id name
      variants { id sku barcode price stock } } } }
"""

r = requests.post(url, json={"query": query}, headers=headers)
products = r.json()["data"]["listProduct"]["data"]

with open("eski_urunler.csv", "w", newline="") as f:
    w = csv.writer(f)
    w.writerow(["eski_product_id", "eski_variant_id", "eski_sku", "barcode", "ad"])
    for p in products:
        for v in p["variants"]:
            w.writerow([p["id"], v["id"], v["sku"], v["barcode"], p["name"]])

Shopify import CSV'sinde SKU kolonuna eski platform ID'si girilir. Hangi senaryonun uygulandığına göre farklı kaynak kullanılır:

# mapping_olustur.py
import pandas as pd

eski = pd.read_csv("eski_urunler.csv")

# Senaryo A: eski variant_id kullanılıyorsa
eski["shopify_sku"] = eski["eski_variant_id"]

# Senaryo B: eski product_id kullanılıyorsa (tek varyantta)
# eski["shopify_sku"] = eski["eski_product_id"]

# Senaryo C: zaten anlamlı SKU varsa dokunma
# eski["shopify_sku"] = eski["eski_sku"]

eski.to_csv("mapping_tablosu.csv", index=False)

Adım 3: Import Sonrası Shopify ID'lerini Doğrula

Import tamamlanınca Shopify'ın atadığı yeni ID'leri çek ve mapping tablosunu tamamla:

# shopify_id_cek.py
import requests, csv, re

SHOP = "magaza-adi.myshopify.com"
TOKEN = "shpat_XXXX"
url = f"https://{SHOP}/admin/api/2025-01/products.json"
headers = {"X-Shopify-Access-Token": TOKEN}

rows, next_url = [], f"{url}?limit=250&fields=id,handle,variants"
while next_url:
    r = requests.get(next_url, headers=headers)
    for p in r.json()["products"]:
        for v in p["variants"]:
            rows.append({
                "sku":                v["sku"],
                "shopify_product_id": p["id"],
                "shopify_variant_id": v["id"],
                "shopify_handle":     p["handle"],
            })
    link = r.headers.get("Link", "")
    match = re.search(r'<([^>]+)>;\s*rel="next"', link)
    next_url = match.group(1) if match else None

with open("shopify_ids.csv", "w", newline="") as f:
    w = csv.DictWriter(f, fieldnames=rows[0].keys())
    w.writeheader(); w.writerows(rows)

Bu çıktıyı mapping tablosuyla SKU üzerinden birleştir. Eşleşmeyen satırlar hata listesi olarak çıkar; geçiş gününden önce bunların tamamı çözülmüş olmalıdır.

Meta Pixel: content_id Kaynağını SKU'ya Al

Meta DPA kampanyaları ürünleri content_id değeri üzerinden katalogdaki id ile eşleştirir; bu iki değer farklılaşırsa katalog körleşir. Pixel'in content_id kaynağını Shopify variant ID'den SKU'ya almak, feed ile uyumu geçiş sonrasında da sürdürmenin tek kalıcı yöntemidir. Kurulum tipine göre üç farklı yol izlenir.

GTM üzerinden:

GTM kullanılıyorsa ViewContent, AddToCart ve Purchase tag'lerinde content_ids değeri item_id DataLayer değişkeninden beslenmelidir. DataLayer push'unda item_id alanına Liquid şablon kodu üzerinden SKU yazılır:

// Shopify theme - ürün sayfasında dataLayer push
dataLayer.push({
  event: 'view_item',
  ecommerce: {
    items: [{
      item_id:   '{{ product.selected_or_first_available_variant.sku }}',
      item_name: '{{ product.title }}',
      price:      {{ product.selected_or_first_available_variant.price | divided_by: 100.0 }}
    }]
  }
});

Shopify native pixel (Customer Events veya theme.liquid) varsa:

Shopify 2.0 mimarisinde pixel yönetimi Settings → Customer Events üzerinden Web Pixel API ile yapılır; doğrudan theme.liquid üzerinden kurulum artık önerilmez. Legacy kurulumda hâlâ theme.liquid kullanılıyorsa aşağıdaki değişiklik geçerlidir:

{%- comment -%} Eski {%- endcomment -%}
content_ids: ['{{ product.selected_or_first_available_variant.id }}']

{%- comment -%} Yeni {%- endcomment -%}
content_ids: ['{{ product.selected_or_first_available_variant.sku }}']

Facebook channel üzerinden kurulan native Meta entegrasyonu için ise Settings → Customer Events altındaki pixel yapılandırmasında "product ID" kaynağı kontrol edilmelidir; bu alan mağaza bazında farklılık gösterebilir.

Stape veya server-side CAPI varsa:

Stape Dashboard → Shopify connector → Product ID field → SKU seçilir. Server-side event payload'ında content_ids alanı SKU dizisi olarak iletilmelidir:

{
  "event_name": "Purchase",
  "custom_data": {
    "content_ids":  ["SKU-001-MOR", "SKU-002-MAVI"],
    "content_type": "product",
    "value":         860.86,
    "currency":      "TRY"
  }
}

Nodus Works olarak gözlemlediğimiz bir nokta: üç kurulum tipinin aynı mağazada karışık çalıştığı durumlar var. GTM ve native pixel aynı anda aktifse content_id çift gönderilir, event sayımı şişer. Geçiş öncesinde Events Manager'da hangi kaynaklardan event geldiğini kontrol edin.

Google Merchant Center ve Google Ads

GMC feed'i Shopify native Google kanalı üzerinden otomatik oluşturulur. Mapping yapıldıysa feed'deki id değeri zaten SKU olarak gelir; ek müdahale gerekmez.

Mapping yapılmadıysa (yani basit geçiş senaryosundaysanız) Shopify'ın Google kanalı variant_id'yi feed ID'si olarak kullanır. Bu durumda GMC'de yeni ürün girişleri oluşur; eski ürün geçmişi taşınmaz. Shopping ve PMax kampanyaları yeni ürünler üzerinden yeniden öğrenme sürecine girer.

Google Ads conversion tracking geçiş sonrası doğrulanmalıdır. Shopify'ın Google kanalı GA4 ile entegre çalışır; GA4 üzerinden gelen conversion verisi Google Ads'e aktarılıyorsa bu akış geçiş sonrası kesilmeden devam etmelidir. Ancak GA4 property'sinde ölçüm protokolü veya server-side tag kullanılıyorsa item_id alanının SKU ile beslendiğinden emin olun.

Shopify geçiş sürecinin teknik adımları arasında reklam hesabı yapılandırması özellikle DPA ve PMax aktif olan mağazalar için ayrı bir planlama gerektirir; bu süreç 301 yönlendirme ve ürün aktarımıyla eş zamanlı koordine edilmelidir.

Geçiş Sonrası Doğrulama Kontrol Listesi

Geçiş gününden 24 saat sonra aşağıdaki kontroller tamamlanmadan reklam kampanyaları normal bütçeyle çalışmaya bırakılmamalıdır. Sorun varken harcanan bütçe geri alınamaz.

Kontrol Nerede Beklenen Durum
Pixel'den ViewContent eventi geliyor Events Manager Aktif, gerçek zamanlı
Purchase eventi geliyor, value doğru (TRY) Events Manager Geçiş öncesi hacimle yakın
content_id değeri SKU formatında Events Manager → Test Events Sayısal Shopify ID değil, SKU görünüyor
Katalog Diagnostics'te kritik hata yok Commerce Manager Hata oranı geçiş öncesiyle yakın
Katalog feed son fetch başarılı Catalogs → Data sources Son fetch 24 saat içinde
EQM skoru geçiş öncesiyle yakın Events Manager → Overview Büyük düşüş yok
GMC'de onaylı ürün sayısı korundu Merchant Center → Products Geçiş öncesi onaylı ürün sayısıyla yakın
Google Ads conversion eventi geliyor Google Ads → Conversions Aktif conversion kaydı var
404 hatası yok (301 redirect tamam) Search Console → Coverage Eski URL'ler yönlendirilmiş
Kritik Not: GMC'de onaylı ürün sayısında geçiş sonrası ani bir düşüş Shopping ve PMax bütçesini boşa harcatır. GMC durumunu geçişten 48 saat sonra tekrar kontrol edin; ürünler onay sürecinde olabilir.

SSS: Shopify Geçişi ve Reklam Hesapları

Shopify'a geçişte Meta Pixel yeniden kurulmalı mı? Hayır. Mevcut Pixel ID'si korunur, hesap yeniden oluşturulmaz. Değişmesi gereken şey pixel'in gönderdiği content_id değerinin kaynak alanıdır: Shopify variant ID yerine SKU gelmelidir. Pixel ID'si aynı kaldığı için geçmiş event verisi ve audience'lar korunur.

Katalog kampanyası yoksa mapping gerekiyor mu? Hayır. Katalog kampanyası olmayan mağazalarda ID eşleştirme işlemi gereksizdir. Shopify native Meta kanalı feed'i ve pixel bağlantısını otomatik yönetir; ek yapılandırma gerekmez.

Google Merchant Center'daki ürünler geçiş sonrası onaydan düşer mi? Mapping yapılmamışsa feed ID'leri değişeceği için GMC yeni ürün girişleri olarak işler; eski onay geçmişi aktarılmaz. Onay süreci yeniden başlar. Mapping yapılmışsa SKU aynı kaldığından ürünler geçiş sonrası aynı ID ile görünür ve onaylı kalabilir.

Geçiş sonrası reklam performansı ne zaman normale döner? Doğru mapping ve pixel kurulumu yapıldıysa performans düşüşü yaşanmaz. Mapping yapılmadıysa DPA ve PMax kampanyaları yeniden öğrenme sürecine girer; bu süreç kampanya büyüklüğüne göre 1-3 hafta sürebilir.

Shopify'a geçişte Meta Pixel nasıl aktarılır? Meta Pixel, Shopify geçişinde hesap bazında korunur; pixel ID'si değişmez. Yapılması gereken tek şey pixel'in ürünlere gönderdiği content_id değerinin Shopify variant ID yerine SKU'yu kaynak alacak şekilde yapılandırılmasıdır. Bu GTM, native Liquid veya Stape üzerinden uygulanır.

Shopify geçişinde Google Merchant Center feed'i nasıl güncellenir? Shopify'ın Google kanalı aktifleştirildiğinde GMC feed'ini otomatik oluşturur. Katalog kampanyası aktifse eski feed ID'leriyle eşleşme sağlanması için ürünlere geçiş öncesinde SKU ataması yapılmalı; bu SKU'lar feed'de id değeri olarak görünmelidir.

Shopify geçişi sonrası DPA kampanyası neden körleşir? Meta DPA kampanyaları ürünleri content_id ile tanır. Geçiş sonrası pixel'den gelen content_id ile katalog feed'deki id birbirinden farklılaşırsa sistem ürünleri eşleştiremez ve DPA kampanyaları ürün bazlı hedeflemeyi yitirir. Çözüm: her iki tarafın da SKU değerini kaynak alması.

Shopify'da SKU mapping nasıl yapılır? Eski platformdan variant ID'leri veya mevcut ID'ler export edilir, Shopify import CSV'sinin SKU kolonuna bu değerler yazılır. Import sonrası Shopify Admin API ile yeni atanan ID'ler ve SKU'lar çekilir, eşleşme tablosu doğrulanır. Bu tablo daha sonra pixel ve feed yapılandırmasında kullanılır.

Sonuç

Shopify geçişinde reklam platformlarının kaybetmemesi için iki şey gerekir: geçiş öncesi doğru audit ve platform bağımsız bir ID katmanı olarak SKU. Katalog kampanyası olmayan mağazalarda bu iş yükü minimaldür; DPA veya PMax aktif, yüksek harcamalı kampanyalarda ise mapping atlandığında maliyeti doğrudan performans kaybı olarak geri döner.

Shopify'a geçiş planladığınız ve aktif katalog kampanyalarınız varsa geçiş hizmetimiz ürün aktarımı ve 301 yönlendirmeyle birlikte reklam hesabı yapılandırmasını da kapsar; geçiş günü reklam performansının kesilmeden devam etmesi bu planlamanın parçasıdır.

Geçiş sürecinin SEO ve teknik tarafı için WordPress'ten Shopify'a geçiş rehberimiz detaylı adımları içerir.