Files
Jacek Pyziak 86e712ba4f feat(02-purchase-event-prepayment): move purchase event to przelewy24 pre-payment page
Phase 2 complete:
- buildPurchaseDataLayer() called in przelewy24() controller, payload passed to template
- dataLayer.push added to templates/tickets/przelewy24.php (fires at order commitment)
- dataLayer.push removed from templates/tickets/order-confirm.php
- Captures 100% of orders regardless of user returning from payment gateway

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 22:29:54 +02:00

4.0 KiB

phase, plan, subsystem, tags, requires, provides, affects, tech-stack, key-files, key-decisions, patterns-established, duration, started, completed
phase plan subsystem tags requires provides affects tech-stack key-files key-decisions patterns-established duration started completed
02-purchase-event-prepayment 01 payments
gtm
ga4
purchase
datalayer
przelewy24
analytics
phase provides
01-purchase-data-layer buildPurchaseDataLayer() method and payload schema
Purchase event fires on przelewy24 page (post-order, pre-payment)
Order-confirm no longer emits purchase event
analytics
checkout
order-confirmation
added patterns
Fire purchase event at order commitment (przelewy24 redirect), not at payment return
created modified
autoload/controls/class.Tickets.php
templates/tickets/przelewy24.php
templates/tickets/order-confirm.php
Purchase event przeniesiony na przelewy24 — po złożeniu zamówienia w DB, przed przekierowaniem do P24
order_confirm() przekazuje purchase_data_layer: null — brak eventu na stronie potwierdzenia
Event purchase fires at payment commitment page, using beacon transport to survive navigation
5min 2026-04-26T00:00:00+02:00 2026-04-26T00:00:00+02:00

Phase 2 Plan 1: Purchase Event Pre-Payment Summary

Event purchase dataLayer przeniesiony z order-confirm (post-payment) na stronę przelewy24 (post-order, pre-payment redirect) — teraz capturuje 100% zamówień niezależnie od powrotu użytkownika z bramki.

Performance

Metric Value
Duration ~5 min
Started 2026-04-26
Completed 2026-04-26
Tasks 2 completed
Files modified 3

Acceptance Criteria Results

Criterion Status Notes
AC-1: Purchase event na stronie przelewy24 Pass dataLayer.push fires na początku przelewy24.php przed auto-submit formularza
AC-2: Brak purchase event na order-confirm Pass Blok JSON/push usunięty z order-confirm.php; kontroler przekazuje null
AC-3: Payload zawiera dane zamówienia Pass buildPurchaseDataLayer() bez zmian — transaction_id, value, currency, items

Accomplishments

  • buildPurchaseDataLayer() wywołany w przelewy24() kontrolera i payload przekazany do szablonu
  • Blok dataLayer.push dodany na początku przelewy24.php (przed spinner/formularzem)
  • Blok dataLayer.push usunięty z order-confirm.php (linie 1-17)
  • order_confirm() przekazuje purchase_data_layer: null jawnie

Task Commits

No git commits created during APPLY (working tree changes only).

Files Created/Modified

File Change Purpose
autoload/controls/class.Tickets.php Modified buildPurchaseDataLayer() call przeniesiony do przelewy24(), usunięty z order_confirm()
templates/tickets/przelewy24.php Modified Dodany blok purchase dataLayer push na początku szablonu
templates/tickets/order-confirm.php Modified Usunięty blok purchase dataLayer push

Decisions Made

Decision Rationale Impact
Event na przelewy24, nie order-confirm Użytkownicy nie wracający z P24 nie byli trackingowani; zamówienie w DB to moment konwersji Pełne pokrycie analityczne zakupów
Bez deduplicacji eventu Strona przelewy24 jest odwiedzana raz per zamówienie; dodanie sesji/cookie to over-engineering GA4 może dostać duplikat przy odświeżeniu strony (edge case)

Deviations from Plan

None — plan wykonany zgodnie ze specyfikacją.

Issues Encountered

Issue Resolution
None

Next Phase Readiness

Ready:

  • Purchase event ma stabilny punkt wyzwalania pre-payment
  • GTM/GA4 używa beacon transport — event przeżyje nawigację do P24
  • Phase 3 (Cookie Consent) może teraz dodać Consent Mode v2 init przed GTM w layoucie

Concerns:

  • Odświeżenie strony przelewy24 przed zapłatą może spowodować duplikat eventu (akceptowalny edge case)
  • Warto skonfigurować tag w GTM z transport mode "beacon" dla pewności

Blockers:

  • None

Phase: 02-purchase-event-prepayment, Plan: 01 Completed: 2026-04-26