Jede Symfony-Bestellung ihrem Kanal zuordnen
Ein Bundle gibt das Script per Twig aus und sendet jede bezahlte Bestellung, wenn die Antwort schon draußen ist.
Paket mirafive/sdk-symfony
In 5 Schritten eingerichtet
Bundle installieren
Mit Symfony Flex registriert sich das Bundle selbst, ohne Flex tragen Sie
MiraFive\Symfony\MiraFiveBundle::class => ['all' => true]inconfig/bundles.phpein. Es setzt PHP 8.3 und Symfony 6.4, 7 oder 8 voraus.Code für Schritt 1 der Einrichtung mit Symfony: Bundle installieren. composer require mirafive/sdk-symfony
Zwei Schlüssel eintragen
Der geheime Schlüssel einer Server-Quelle sendet aus Ihrer App, der Website-Schlüssel einer Website-Quelle steht im Script-Tag. Beide finden Sie unter Daten → Quellen. Sie gehören in
.env.localoder Ihren Secret-Store, nie ins Repository. Eine Konfigurationsdatei brauchen Sie nicht.Code für Schritt 2 der Einrichtung mit Symfony: Zwei Schlüssel eintragen. MIRAFIVE_SECRET_KEY=mf_… MIRAFIVE_WEBSITE_KEY=mf_…
Script per Twig ausgeben
mirafive_script()gibt das zweizeilige Script-Tag mit Ihrem Website-Schlüssel aus, ohne Schlüssel nichts. Es zählt jede Seite und startet einwilligungsfrei, ohne Cookies und ohne Speicher auf dem Gerät.Code für Schritt 3 der Einrichtung mit Symfony: Script per Twig ausgeben. <head> {{ mirafive_script() }} </head>
Bestellung melden
MiraFive\Mirawird per Autowiring injiziert.track()puffert nur, das Bundle sendet aufkernel.terminate, wenn die Antwort beim Browser ist.flush()rufen Sie nie selbst auf.Code für Schritt 4 der Einrichtung mit Symfony: Bestellung melden. use MiraFive\Mira; // $mira ist das injizierte MiraFive\Mira, etwa als Argument des Controllers $mira->track('order_paid', userId: (string) $order->getCustomerId(), properties: [ 'revenue' => 328, 'currency' => 'EUR', ]);
Einrichtung prüfen
Der Befehl sendet ein Test-Event, das weder gespeichert noch berechnet wird, und endet mit „The secret key and host work. Nothing was stored or billed.“ Danach öffnen Sie eine Seite unter ihrer echten Domain und sehen unter Daten → Live nach.
Code für Schritt 5 der Einrichtung mit Symfony: Einrichtung prüfen. bin/console mirafive:check
MIRA FIVE ist Analyse rund um die Person. Das Bundle bringt das PHP-SDK in Ihren Container: MiraFive\Mira kommt
per Autowiring, eine Twig-Funktion gibt das Script aus, und Events gehen auf kernel.terminate und
console.terminate raus. Keine Seite wartet auf die Analyse.
Wie kommt eine Bestellung zu ihrem Kanal?
Über die Person. Stellen Sie die Website-Quelle unter Daten → Quellen auf Vollständig und das Script auf
den vollen Modus. Ihr Banner übergibt die Antwort mit mirafive('consent', …):
# config/packages/mirafive.yaml
mirafive:
script_mode: fullNach der Anmeldung identifiziert ein Listener auf LoginSuccessEvent die Person mit derselben internen ID, die Ihr
Server sendet. getUserIdentifier() ist oft die E-Mail-Adresse und gehört nie hinein:
$this->mira->identify((string) $user->getId(), ['plan' => $user->getPlan()]);Die Bestellung landet dann bei dieser Person, neben dem Kanal ihres ersten Besuchs. Mit einem Kaufziel auf
order_paid zeigt Herkunft Käufer und Umsatz je Kanal und Kampagne.
Wie zählt ein Webhook nur einmal?
Mit send() und einem Idempotenzschlüssel. Die Methode sendet sofort, nie über Messenger, und eine Wiederholung
wird einmal gespeichert:
$mira->send([
['name' => 'order_paid', 'userId' => (string) $order->getCustomerId(), 'properties' => ['revenue' => 328, 'currency' => 'EUR']],
], idempotencyKey: "order-{$order->getId()}");Was übernimmt das Bundle noch?
mirafive_script({autocapture: true})erfasst Klicks, Formulare und Feldänderungen ohne Code.enabled: falseunterwhen@devzeichnet nichts auf, lokale Arbeit bleibt aus Ihren Zahlen.- Fehler beim Senden erreichen Ihren Code nie, sie landen als Warnung im Monolog-Kanal
mirafive.
Im Tab Einbauen der Quelle steht Von Ihrem Coding-Agent einbauen lassen: ein Prompt für Claude Code, Cursor oder Codex mit allen Schritten und der Prüfung, bei einer Server-Quelle nie mit dem geheimen Schlüssel. Alle Optionen stehen in der Dokumentation, die Aufgabenteilung auf der Einrichtungsseite.
Andere Einrichtungen
Dieselben Zahlen, egal wie Ihre Website gebaut ist.
Fragen und Antworten
Werden Antworten dadurch langsamer?
track() puffert nur, gesendet wird einmal pro Anfrage auf kernel.terminate, unter PHP-FPM nach der Antwort. Mit messenger: true und einem Routing-Eintrag sendet ein Messenger-Worker.Wie testen Sie Code, der Events sendet?
test: true unter when@test in config/packages/mirafive.yaml. Dann geht nichts ins Netz, und self::mira()->assertTracked('order_paid') aus dem Trait InteractsWithMira prüft das Event, auch wenn es noch im Puffer liegt.Funktioniert das mit FrankenPHP im Worker-Modus oder RoadRunner?
messenger:consume sendet nach jeder Nachricht. Der Zustand einer Anfrage hängt an der Anfrage und gerät nie in die nächste.Sehen Sie, welcher Kanal Käufer bringt
Kostenlos bis 25.000 Events im Monat. Ohne Kreditkarte.