Im Workshop wird eine PHP-Applikation entwickelt und 2 SEO- Szenarien mit PHP-Beispielen besprochen. Szenario 1 übertragt einen bestehenden Blog in einen Unterordner einer anderen Domain (PHP-Proxy), Szenario 2 zeigt die Möglichkeiten einer Kampagnen-Speicherung mit CSV-Export der Conversions für Shops & Blogs auf, ohne die Shop- & Blogsoftware anzupassen (PHP-App für Kampagnen-Tracking).
2. Agenda
a) PHP-Proxy
blogger.com Free-Blog in einem
Unterverzeichnis hosten
b) Conversion-Tracking
genaue Conversion-Messung mit eigener
Applikation
sebastian blum www.sblum.de 13.03.2013 2
4. blogger.com in Unterverzeichnis hosten
Grundidee
Ein einfacher Blog wird bei blogger.com erstellt und
anschließend komplett als Unterseite in eine
bestehende Domain eingebunden.
Vorteile
• Kein Hosting der Seite => Beim Hoster einfachstes
Grundmodell möglich (PHP ohne Datenbank), ab
1,90 Euro im Monat bei hetzner.de
• Keine Installation des Blog-Systems notwendig
• Keine Datenbank-Installation notwendig
• Keine Sicherheitupdates notwendig
sebastian blum www.sblum.de 13.03.2013 4
5. blogger.com in Unterverzeichnis hosten
Grundidee
Ein einfacher Blog wird bei blogger.com erstellt und
anschließend komplett als Unterseite in eine
bestehende Domain eingebunden.
Einsatzszenarien
• Eigene Seite um einfachen Blog / Newsfeed
ergänzen
• Domain-Parking: Seiten vor-projektieren
• Verschiedene IPs und Provider
• Kein Netzwerkeffekt
sebastian blum www.sblum.de 13.03.2013 5
7. blogger.com in Unterverzeichnis hosten
Anpassungen im Blog
Damit kein Duplicate Content entsteht, muss der
Free-Blog entweder auf noindex gesetzt werden oder
der Canonical-Tag auf das richtige Ziel zeigen.
Beispiel: http://seo-campixx-13.blogspot.de/
=> http://seocampixx.sebastianblum.com/blog
sebastian blum www.sblum.de 13.03.2013 7
12. blogger.com hosten - PHP-Skript /3
Controller aktivieren:
$app->mount('/blog', include 'blog.php');
(Mit Micro-Framework Silex)
sebastian blum www.sblum.de 13.03.2013 12
13. Blogs in Unterverzeichnis hosten
Erweiterte Einsatzmöglichkeiten
Eine Wordpress-Multisite-Installation kann bequem
auf einem eigenem Server installiert werden.
Auf die Satelliten-Seiten wird lediglich ein einfaches
PHP-Proxy-Skript kopiert:
• Ein zentraler Login
• Wordpress-Aktualisierungen aller Blogs
gleichzeitig
• Verschiedene Anbieter, IPs, Nameserver
sebastian blum www.sblum.de 13.03.2013 13
15. Blogs in Unterverzeichnis hosten
Erweiterte Einsatzmöglichkeiten
Landing-Pages
Bestimmte Seiten aus einem CMS als Single-Site auf
einer eigenen Domain bereitstellen, um z.B. einen
anderen AdWords-Account verwenden zu können.
sebastian blum www.sblum.de 13.03.2013 15
17. Conversion Tracking für Online-Shops
Warum nicht per Google Analytics?
• GA bietet lediglich Conversions pro Kampagne oder
Quelle
• Diese Conversions pro Kampagnen reichen nicht
aus, um den genauen Erfolg und Wert der
einzelnen Keywords & Anzeigen zu messen
sebastian blum www.sblum.de 13.03.2013 17
19. Conversion Tracking für Online-Shops
Offene Fragen
• Welches Keyword hat genau welchen Erfolg?
• Welche Keywords führen zu Transaktionen, welche
nicht?
individuelle Lösung notwendig
sebastian blum www.sblum.de 13.03.2013 19
20. Conversion Tracking für Online-Shops
Ausgangssituation
Shopbetreiber schalten Google AdWords Anzeigen
und wollen verfolgen, welche Keywords zu welchem
erfolgreich verkauften Produkt geführt haben.
Vorteile des PHP-basierten Trackings
• Die Shopsoftware wird nicht angepasst, stattdessen
wird eine zusätzliche Applikation gebaut
• Die gezielte Werbeschaltung kann durch einfachen
CSV-Export analysiert werden
• Genaue Gewinnermittlung für jedes Keyword
sebastian blum www.sblum.de 13.03.2013 20
21. Conversion Tracking für Online-Shops
Die Tracking-Schritte
sebastian blum www.sblum.de 13.03.2013 21
22. Conversion Tracking für Online-Shops
Die Tracking-Schritte in einer Beispiel-
Programmierung
seocampixx.sebastianblum.com/shop/
google
sebastian blum www.sblum.de 13.03.2013 22
24. Conversion Tracking - Parameter
Statische Parameter
campaign = Kampagnenname der AdWords-Gruppe
Dynamische Value-Track AdWords Parameter
Im Beispiel sind es {matchtype} und {keyword}
Weitere Beispiele
{creative} eindeutige ID der Anzeige
{device} Mobil, Tablet, Desktop oder Laptop
Google ersetzt die Platzhalter bei der Anzeige
sebastian blum www.sblum.de 13.03.2013 24
37. Conversion Tracking für Online-Shops
5.
params. params. params. items.0. items.0.
campaign matchtype keyword count title
Amazon- exakt Amazon 1 Beispiel-
Brand Online-Shop Artikel des
Shops
items.0. items.1. items.1. items.1. successfull.
price count title price profit
49,99 1 zweiter 19,99 10
Artikel
sebastian blum www.sblum.de 13.03.2013 37
38. Conversion Tracking für Online-Shops
Das PHP-Skript
• Daten aus den drei Schritten werden in der Session
gespeichert
• Wenn Kauf erfolgreich abgeschlossen wurde, wird
die Conversion mit den Session-Daten in eine JSON-
Datei gespeichert
sebastian blum www.sblum.de 13.03.2013 38
39. PHP Skript conversion.php
$conversion = $app['controllers_factory'];
$conversion->post('/track', function (Request $request) use ($app) {
foreach (array('params', 'items', 'successfull') as $key) {
if (null !== $data = $request->get($key)) {
$app['session']->set($key, $data);
}
}
if (null !== $request->get('successfull')) {
$json = $app['serializer']->serialize($app['session']->all(), 'json');
$path = __DIR__ . '/../export/' . ($app['debug'] ? 'dev' : 'prod') . '/';
if (!file_exists($path)) {
mkdir($path, 0777);
}
file_put_contents($path . $app['session']->getId() . '.json', $json);
}
return new Response();
})
->bind('conversion')
;
return $conversion;
sebastian blum www.sblum.de 13.03.2013 39
40. Conversion Tracking - Export
• JSON-Daten der gespeicherten Conversion können
für die Auswertung als CSV-Datei exportiert werden
• Die gespeicherten JSON-Objekte müssen hierfür
normalisiert werden:
Keine Verschachtelung
und
Alle Zeilen müssen die gleichen Spalten beinhalten
sebastian blum www.sblum.de 13.03.2013 40