Webotic
Free audit
Back to case studies
/ 06 · ouiglassServices90 days
CASE STUDY · SERVICES · 2026

OuiglassHow we cut the local CPL by 42% across all 25 Ouiglass branches.

A national windshield repair and replacement network, 25 outlets, 25 distinct catchment zones. In 90 days Webotic rewired local acquisition: geo-targeted Meta, Google call-only, server-side call tracking, offline conversions piped back into the bidding algorithms. The outcome: local CPL divided by 1.7 and +120% qualified calls.

SCOPEMeta Ads · Google Ads · Local SEO · 25 branches · 90 d
−42%Local CPLvs Q4 2025
+120%Qualified calls25 branches · 90 d
−30%Intervention CPAper branch
25Branches syncedCasa · Rabat · MA
STACK
  • Meta Ads
  • Google Ads (Search + Call-only)
  • Google Business Profile
  • GTM Server-Side
  • Meta CAPI
  • Google Offline Conversion Import
  • Call Tracking Metrics
  • GA4 + BigQuery
  • Looker Studio
01

The challenge · Ouiglass before Webotic

Ouiglass operates 25 windshield repair and replacement centres spread across Casablanca, Rabat, Marrakech, Tanger, Fès, Agadir and six secondary cities. Each branch has its own catchment zone — a motorist in Maarif will never drive to Aïn Sebaa to get a windshield fixed, and vice versa. On paper digital acquisition looked centralised: a single national Google Ads account, a single national Meta account, a media budget split pro-rata to each branch's revenue. On the ground three structural failures were compounding. First, the 25 Google Business Profiles were under-optimised: incomplete categories, missing attributes, zero posts per month, photos dating back to 2021. The Google local pack surfaced Ouiglass only once in six on high-intent queries like "windshield repair Rabat" or "broken glass Casablanca". Second, the conversion chain was blind to the phone. On this vertical, 73% of qualified prospects call before they ever walk in — no form, no cart, just a phone call asking for a quote and a turnaround time. Without call tracking, those calls didn't exist for Meta or Google. The algorithms optimised on micro-events (clicks, contact-page views) that had zero correlation with real margin. Third — and the most expensive failure — offline conversion was never measured. A quote requested on Monday became a paid intervention four days later in a completely different interface (the workshop ERP), with no link back to the lead source. Out of every 100 leads generated, roughly 35 turned into paid interventions — but Meta and Google never knew it. Consequence: bids anchored to cost-per-click, not cost-per-intervention. Average CPL across all branches sat at 178 MAD in Q4 2025, with massive variance between the strong branches (Rabat-Agdal at 95 MAD) and the weak ones (Marrakech-Guéliz at 290 MAD). HQ was piloting blind.

  • 25 under-optimised GBPs: Google local pack only surfaced Ouiglass 1 time in 6.
  • 73% of prospects call — no call tracking, signal invisible to Meta + Google.
  • Offline conversion (paid intervention) measured nowhere — algos optimising on the click.
  • Q4 2025 CPL: 178 MAD median, branch variance from 95 to 290 MAD.
02

The approach · 25 zones, 25 numbers, one brain

The plan we shipped rested on four decisions, in this order. First decision: treat each branch as its own account, with its own ad sets and its own target KPIs, while keeping a central control layer at HQ. Concretely, the Google Ads account was restructured into 25 geo-targeted Search campaigns, each with an 8 to 15 km radius around the outlet, and 25 dedicated phone numbers (one per branch) wired into a call-tracking platform. Same logic on Meta: 25 geo-targeted ad sets by catchment neighbourhood and localised creative (branch photo, neighbourhood name in the copy, unique phone number on each asset). Second decision: deploy Google Ads Call-only on 60% of Search budget. On this vertical the phone converts 4× better than the web form, and Call-only ads — which trigger a direct call straight from the SERP — cut cost-per-call by 2.3× compared with classic Search. Third decision: rebuild tracking server-side. A GTM Server hosted on a Webotic subdomain captures every web and phone event (call duration, words spoken via transcription, branch dialled), normalises them, and forwards them to Meta CAPI and Google Offline Conversion Import. Qualification rule, simple: call > 90 seconds AND quote request = qualified lead. Fourth decision: close the offline loop. The workshop ERP (which tracks appointments, interventions and payments) was wired to BigQuery through a Make connector. Every night, paid interventions from the previous 7 days are matched by phone number back to their source leads and pushed to Meta CAPI and Google OCI as a Purchase event with the real value (in MAD). The algorithms then start bidding on margin, not the click. What we rejected: the temptation to consolidate everything into one Meta account with a national lookalike audience. Too wide, too diluted — CPL came out 30% higher than with the neighbourhood split.

  • 25 geo-targeted Google Search campaigns, 8-15 km radius per branch.
  • 25 dedicated phone numbers + AI call transcription tracking.
  • Google Call-only on 60% of Search budget: cost-per-call −2.3×.
  • Offline loop: workshop ERP → BigQuery → Meta CAPI + Google OCI every night.
03

The execution · D+0 to D+90

Weeks 1-2: full audit and restructure. Real catchment-zone mapping for all 25 branches (using historical intervention postcodes per branch, not theoretical radii), audit of the 25 GBPs, rollout of the 25 dedicated tracking numbers. First rule set: no optimisation until tracking is reliable at 95%. Weeks 3-4: server-side tracking deployment. GTM Server stood up on a dedicated subdomain, container configured with web events (page view, scroll to quote form, phone tap) and call events (call received, duration > 90s, positive transcription). Meta CAPI and Google Enhanced Conversions wired in parallel, with a 24-hour reconciliation window on the hashed phone. By D+28 the new tracking was surfacing 31% more signal than the legacy client-side pixel. Weeks 5-6: creative rebuild and launch. 25 geo-localised creative sets produced by Webotic: real branch photos (no stock), copy naming the neighbourhood ("Windshield cracked in Maarif? We come to you in 90 min"), unique phone number overlaid on each branch's assets. Google Search + Call-only launched first, then Meta on the zones where audience size justified it (Casablanca-Anfa, Casablanca-Maarif, Rabat-Agdal, Rabat-Hassan, Marrakech-Guéliz, Tanger-centre). Weeks 7-9: learning phase and first signals. CPL stabilised at 130 MAD around D+45, against a 178 MAD baseline. Call volume +60%. The offline loop started feeding the first paid interventions back to Meta and Google. Weeks 10-12: full-speed optimisation. The algorithms now had 90 days of quality signal (lead + intervention) and switched bidding to Maximize Conversion Value instead of Maximize Conversions. Final D+90 CPL: 103 MAD median, −42% vs baseline. Inter-branch variance compressed: the range narrowed from 95-290 MAD to 78-145 MAD. HQ now runs on a single Looker Studio dashboard with, per branch: CPL, qualified call volume, quote→intervention conversion rate, estimated net margin, and acquisition cost per MAD of revenue.

  • W1-W2: real catchment-zone mapping (historical intervention postcodes).
  • W3-W4: server-side tracking at 95% reliability — +31% signal recovered.
  • W5-W6: 25 geo-localised creative sets, neighbourhood copy, dedicated number per branch.
  • W7-W12: shift to Maximize Conversion Value — final CPL 103 MAD (−42%).
04

The results · 90-day numbers

Across the full 90 days, measured to the dot in Looker Studio with BigQuery data cross-referenced against the workshop ERP: median local CPL fell from 178 MAD to 103 MAD, −42% across the network. Qualified call volume (calls > 90s with a quote request) climbed 120%, from 1,340 calls/month to 2,950 calls/month aggregated across the 25 branches. Intervention CPA (the cost of acquiring a paying customer) dropped 30% on average per branch — from 410 MAD to 287 MAD. Inter-branch dispersion compressed significantly: pre-Webotic, the ratio between the best branch (Rabat-Agdal, CPL 95 MAD) and the worst (Marrakech-Guéliz, 290 MAD) was 3.05. After 90 days that ratio fell to 1.86 (78 MAD vs 145 MAD), proof that the rig also works on historically weaker branches. The Google local pack surfaced Ouiglass 4 times in 6 on high-intent queries instead of 1 in 6, largely thanks to the 25 GBP rebuild (weekly posts, fresh photos, complete attributes, proactive review management with average response time down to 6 hours). On media ROAS, crossing real spend against ERP intervention margins: ×3.8 on Google spend and ×2.6 on Meta spend, against an aggregate ×1.4 before the rebuild. Finally — and this is the operational KPI that matters most to Ouiglass — the average lead-to-paid-intervention delay fell from 5.2 days to 3.1 days, because call tracking now lets HQ identify in real time which branches are throttled operationally (appointments booked too far out, quotes not called back) and reallocate demand internally. Attribution stopped being a debate — it became a dashboard.

  • Local CPL: 178 MAD → 103 MAD (−42%) — inter-branch range tightened 3.05 → 1.86.
  • Qualified call volume: 1,340 → 2,950/month (+120%) across 25 branches.
  • Intervention CPA: 410 MAD → 287 MAD (−30%) — calculated on ERP net margin.
  • Media ROAS: Google ×3.8 · Meta ×2.6 · vs ×1.4 before the rebuild.
  • Quote → intervention delay: 5.2 → 3.1 days (data-driven internal reallocation).

Webotic transformed our local digital presence. Every branch now generates its own leads autonomously, while we keep a coherent brand identity at national level.

Ouiglass leadershipOuiglass network · 25 branches across Morocco

FREQUENTLY ASKED QUESTIONS

Does the playbook transpose to a 5-10 branch network?
Yes, and the cost/benefit ratio is actually better below 15 branches, because the central control layer (GTM Server, BigQuery, Looker Studio) costs the same whether you run 5 or 50 outlets. The minimum threshold to amortise call tracking and the server stack is roughly 3 branches with combined media spend of 25,000 MAD/month.
How long before measurable results?
Server-side tracking and the offline loop start surfacing usable signal at D+28 to D+30, as soon as Meta and Google have 100 to 150 qualified conversions to exit their learning phase. A clear CPL drop shows up at D+45 (median on Ouiglass: −22% at half-way), then full effect by D+90 (−42%).
What's the minimum media budget for this kind of result?
Technical floor: 8,000 MAD/month per branch in a moderately competitive urban zone (Tanger, Fès, Agadir), 15,000 MAD/month in a highly competitive zone (Casablanca-Maarif, Casablanca-Anfa, Rabat-Agdal). Below that threshold, weekly conversion volume stays under 50/week and CPL variance exceeds ±60%, which makes statistical pilot impossible.
Why is call tracking non-negotiable on this vertical?
Because 73% of windshield prospects call — no form, no cart. Without a dedicated number per branch and automatic call transcription, those conversions don't exist for Meta or Google. The algorithms then optimise on weak proxies (clicks, contact-page views) that have zero correlation with real margin. Plugging in call tracking typically claws back 50 to 70% of additional quality signal.
Have you worked with other multi-branch networks?
Yes — on the local multi-outlet services segment, Webotic shipped this same playbook for a dental clinic network (12 practices, Casa-Rabat-Marrakech), an auto service chain (8 workshops), and a home services brand (18 zones). The method is stable; what shifts is the offline reconciliation window: 24 hours for Ouiglass, 14 days for dental (longer decision cycle).
FREE AUDIT · 30 MIN

A multi-branch network to scale? We review your setup in 30 minutes

You give us read-only access to your Meta, Google and back-office accounts. We come back within 48 hours with a short note: where you're losing signal today, what your real CPL looks like per branch and per city, and the sequential 90-day plan to divide it by 1.5 to 2. No pitch — just the numbers and the plan.

Request my audit