The challenge
A MENA-based D2C fashion brand was running Shopify for orders, HubSpot for CRM, and Meta Ads for acquisition. Their growth team had no unified view of customer behaviour — LTV, order frequency, ad attribution, and email engagement all lived in separate tabs.
Every weekly growth meeting involved a spreadsheet that was already out of date by Monday.
What we built
A real-time data pipeline that:
- Pulls order, customer, and product data from Shopify every 5 minutes
- Enriches with HubSpot contact properties (lifecycle stage, email engagement score)
- Joins with Meta Ads conversion data via the Conversions API
- Writes to a Postgres warehouse and surfaces in a Metabase dashboard
The dashboard shows: customer LTV segments, cohort retention, top-performing ad sets by LTV (not just ROAS), and repeat purchase probability per customer.
Results
- 3 weeks from kickoff to live dashboard
- Real-time data, updated every 5 minutes (vs weekly manual export)
- 1 source of truth across Shopify, HubSpot, and Meta
- Growth team meetings went from "which number is right?" to making actual decisions
Stack
- Orchestration: Python + Apache Airflow (self-hosted)
- Warehouse: Supabase Postgres
- Visualisation: Metabase
- APIs: Shopify Admin API, HubSpot CRM API, Meta Marketing API
Timeline
- Week 1: Data audit, schema design, Shopify + HubSpot connectors
- Week 2: Meta integration, warehouse setup, initial dashboard
- Week 3: Testing, backfill, refinement, team training, go-live