Context
A standard WooCommerce theme would have opened on a catalogue. Happy U sells a transformation practice, not a pile of SKUs. The store also had to clear UAE merchant approval: Telr, policy pages, and a checkout a bank would sign. Paid traffic and WhatsApp close off-site, which is where naive store attribution dies.
System boundary
In scope
- brand and content architecture
- shop
- cart and checkout
- Telr
- bilingual English/Arabic
- merchant policy set
- GA4 / Google Ads conversion
- GCLID capture
- WhatsApp CTA attribution
- production deploy
Out of scope
- warehouse operations
- the Allyship pairing programme itself
Architecture
WordPress and WooCommerce own catalogue and checkout. The first screens are philosophy, journey, and Allyship — products arrive after the position is clear. Locale is a first-class path, so RTL is a consequence of Arabic, not a theme toggle. Telr sits on the payment boundary. Click IDs are written on arrival and handed into WhatsApp so a later conversation can still be tied to the session that produced it.
- Ads / GCLID
- Brand story
- WooCommerce
- Telr
- EN / AR
- GA4 / Ads
- Request owns identifiers
- Off-site handoff keeps the same IDs
- Ads / GCLID
- Brand story
- WooCommerce
- Telr
- GA4 / Ads
- EN / AR
Counts from the published record. They describe structure, not a measured result.
How does a visitor reach conversion?
acquisition
- externalAds / GCLID
delivery
- processBrand story
- processEN / AR
commerce
- serviceWooCommerce
- interfaceTelr
handoff
- interfaceWhatsApp
- interfaceGA4 / Ads
- Ads / GCLIDBrand story
- Brand storyWooCommerce
- Brand storyEN / AR
- WooCommerceTelr
- WooCommerceWhatsApp
- Ads / GCLIDGA4 / Ads
- WhatsAppGA4 / Ads
Critical flows
A visitor arrives (often from ads)
GCLID and locale are written
the story and Allyship land before the catalogue
a journal or box enters the cart
Telr takes AED payment
WhatsApp and conversion events carry the same identifiers.
Stages
Decisions
Story before SKU
The catalogue is not the homepage. Journals and boxes make sense only after the practice is explained.
Locale is a path, not a stylesheet
English and Arabic are content and URL. RTL follows the language. A mirrored theme is not localization.
Merchant approval is part of the build
Telr, server authorization, and the policy set (terms, privacy, cookies, delivery, refund, return, cancellation) are launch criteria, not legal leftovers.
Carry the click off-site
WhatsApp is in the funnel. If GCLID dies at the button, the ad report is fiction.
When it fails
| Condition | Detection | Response |
|---|---|---|
| Telr decline or authorization hold | Gateway status / merchant test | Keep the order local; do not mark paid; surface retry |
| Locale / RTL mismatch | URL language vs rendered direction | Honor the explicit locale; do not silent-swap copy |
| WhatsApp or conversion ID stripped | Outbound URL audit | Fail the handoff build; do not send a bare wa.me |
| Policy page missing in bank review | Required-document checklist | Block merchant go-live until the set is complete |
Infrastructure
- WordPress / WooCommerce host
- Telr
- bilingual cache
- analytics tags
- WhatsApp deep links
- production deploy for happyu.ae
Outcome
A store that is also a brand system: storytelling, AED commerce, UAE compliance, localization, and paid-acquisition identifiers on one path.
Current state
Live. Commerce, locale, Telr, and attribution continue on the public host.