Context
Marketing spend was visible in four tools and nowhere as a single visitor journey. Arabic/English content and WhatsApp close the sale off-site, which breaks naive pageview attribution.
System boundary
In scope
- public site
- locale
- GA4/GTM/Meta
- WhatsApp handoff
- conversion events
Out of scope
ad creative production
Architecture
Laravel owns the request. Locale and content are first-class. Attribution IDs travel into WhatsApp so a conversation can still be tied to the session that produced it.
- Visitor
- Laravel
- Attribution
- Analytics
- WhatsApp / conversion
- Request owns identifiers
- Off-site handoff keeps the same IDs
- Visitor
- Laravel
- Attribution
- Analytics
- WhatsApp / conversion
Counts from the published record. They describe structure, not a measured result.
How does a visitor reach conversion?
entry
- externalVisitor
delivery
- serviceLaravel
- processAttribution
external
- interfaceAnalytics
handoff
- interfaceWhatsApp / conversion
- VisitorLaravel
- LaravelAttribution
- AttributionAnalytics
- AnalyticsWhatsApp / conversion
Critical flows
Visitor hits the site
Laravel serves locale-correct pages
attribution IDs are written
analytics pixels fire
WhatsApp/conversion systems receive the same identifiers.
Stages
Decisions
Locale is routing, not CSS
Arabic/English is a content and URL concern. RTL is a consequence, not a theme toggle.
Carry IDs off-site
WhatsApp is part of the funnel. If the click ID dies at the button, attribution is theatre.
One event vocabulary
GA4, Meta, and internal conversions share names. Three taxonomies is how numbers stop matching.
When it fails
| Condition | Detection | Response |
|---|---|---|
| Consent / pixel blocked | Tag load failure | First-party event still records; ads tags degrade |
| Locale mismatch | Accept-Language vs URL | Honor explicit URL; do not silent-swap content |
| WhatsApp ID stripped | Outbound URL audit | Fail the handoff link build; do not send a bare wa.me |
Infrastructure
- Nginx
- Laravel
- Cloudflare
- analytics tags
- WhatsApp deep links
- cache headers
- uptime checks
Outcome
A site where bilingual content and paid acquisition report against the same visitor identifiers, including WhatsApp.
Current state
Live. Attribution and performance work continue on the same request path.