Orange · B2C · 8 min read

Fibre purchase flow · Orange

+7% conversion · ~€2.5M new recurring revenue · Corporate standard

Case study by , Senior Product Designer.

Overview

Orange · B2C

Several squads. Five versions of the same form. No owner.

The brief was to improve conversion in the fibre purchase flow. Auditing it showed something else: metrics nobody was reviewing, user tests filed away, and an address field built five different ways by squads that had never coordinated. Everything was there, in data nobody had read as a whole.

In 30 seconds

In 30 seconds

Problem
Five versions of the address field, each from a different squad, and the real price at the end of the flow. Users dropped out right after filling in their details.
My role
Sole UX designer on the squad. I proposed showing the price before asking for details and used data to align the squads on unifying the address field.
Result
+7% conversion in the flow, measured in production, and the standard for Orange’s entire commercial website.
Role
Product Designer · UX Architect · sole UX designer on the squad
Year
2020
Duration
3 months
Team
1 PM · 1 front-end-oriented UI designer
Context
Online fibre purchase flow for new customers. B2C product in production at one of Spain’s three largest telcos, with analytics available and no systematic process to use them.
Fibre purchase flow: beforeFibre purchase flow: after
Before and after

Impact

  • +7% Flow conversion — Concentrated in the final steps. Measured in production by Orange; Orange’s base rate isn’t public; for the estimate I use ~2.5%, typical for the industry.
  • ~€2.5M New recurring revenue — Conservative estimate: ~200,000 visits a month, ~2.5% base conversion and ~€600 average yearly revenue per customer (about €50 a month). The +7% means ~350 more contracts a month, about 4,200 new customers a year.
  • 1 squad → all of Orange Corporate standard — The flow and the unified address component became the reference for the whole commercial site.

A note on the financial figures: the ~€2.5M is a conservative estimate based on public data from Orange Spain and industry benchmarks. It is not an internal figure published by Orange.

“Vicente didn’t stop at the screens: he understood the business, proposed what to measure and defended his decisions with data. He’s the designer you want at the table when it’s time to decide.”

— Álvaro García, Product Manager at Orange (Translated from Spanish)

The problem

I joined as the squad’s only UX designer and, before designing, I started reading. I audited the whole flow in production, the available metrics and the user tests from previous months. The information existed, but it was disconnected.

Orange is a large corporation. Every squad had its own tools, its own analytics, its own inherited patterns. The accumulated result was a purchase flow with disorganised forms, steps mixed together that should have been separate, and five variants of the address selector, the most critical field in the process, built independently by teams that had never coordinated.

The drop-off data showed users leaving at the end of the flow, after investing time and filling in their details. The real price appeared too late.

It was a flow architecture problem, and it had been visible in the data for a while.

Research

Before defining any solution, we needed two things: to know how real users behaved in the flow, and to understand where we stood against the competition.

  1. Qualitative research with an external agency. We commissioned the interviews from an external agency specialising in user research. Eight sessions with people who had signed up, or tried to sign up, for fibre online in the previous six months, with a mix of ages, digital experience and previous provider. We wanted to see the flow without bias before touching it.

I thought the price I was seeing was the final one. When I got to the summary it was different. I didn’t trust it anymore.

Participant, qualitative research session
  1. Functional benchmark of 15+ providers. We analysed the sign-up flow of more than fifteen national and international telcos. We looked at how they worked: when does the price appear? How many steps does the checkout have? How do they ask for the address? Is there a real-time calculator?
Our own benchmark, built on functional criteria.
Our own benchmark, built on functional criteria.
Our own benchmark, built on functional criteria.
Our own benchmark, built on functional criteria.

The pattern was consistent: no provider with low drop-off hid the price until the end. Orange Spain was the only one of the fifteen analysed that didn’t show a price until the personal details were complete. The research explained it through behaviour. The benchmark confirmed it through the competition. With both sources, the hypothesis became a solid argument for the product team.

The flow followed the order in which the company collected data. The buyer needed a different one.

Decisions

Three decisions, and the most important one was made outside Figma.

Convincing several squads they had the same problem

The hardest decision of the project was made in a meeting. There were five variants of the address selector in production and each squad owned its own. None saw it as their problem, because their variant, on its own, “worked”. You could only see it from outside a single squad. My argument was the data: the error rate on the address field was among the highest in the flow, and it was where most users dropped out because of technical friction.

With that on the table, the conversation changed: we were no longer talking about design taste, but about a variant that was costing contracts and that we could measure.

Result: The standardised component was adopted as the reference pattern for Orange’s entire commercial site. The negotiation took longer than the design.

Showing the price before asking for details

The original architecture followed a data-collection logic: name, ID, contact details and, at the end, the final price. The argument for keeping it was a business one: “if users see the real price earlier, they may leave without giving us their details”.

My argument was the opposite: if they leave at the end, we’ve burned their time, ours, and a session that marketing data counts as qualified interest. The drop in the final steps was evidence that this was already happening, at scale, every day. The research said it clearly: users were more bothered by the surprise than by the price.

I proposed reorganising the flow so the monthly cost calculator was visible from the moment a plan was selected, updating in real time with the extras chosen.

Result: Drop-off in the final steps fell visibly. It was the most counter-intuitive change for the business and the most predictable for the user.

Introducing process where there was none

The first time I presented wireframes before moving to UI, the PM asked whether “that extra step” was necessary. The UI team was used to receiving finished screens, not architecture. The change wasn’t welcome at first.

What changed the dynamic was the first real handoff with specified behaviour. For the first time, the development team received a document with defined states, error flows and component logic. The feedback was direct: it was the first time they didn’t have to assume behaviour on their own. No open questions were left in implementation, and no design decisions were made in code.

Result: That was enough for the process to stop being “how this designer works” and become the reference for Orange’s commercial web design.

My product role

I was the only UX designer on the squad, so the proposal to show the price before asking for details was mine, and so was the argument to defend it: the qualitative research, the benchmark of fifteen operators and the drop-off data. The hardest part wasn’t designing it, but getting the business to accept showing the price before having the user’s details. With the address field I did the same: I took the error data to the squads so they could see that their variant, on its own, was costing contracts.

What remained after the +7%

The brief was to improve conversion in the fibre flow. That happened, but the most lasting impact came from elsewhere.

  1. The flow became a corporate standard. Orange runs multiple commercial products online. When the team showed that a structured process produced measurable results, management decided to apply it as the reference for the rest of the commercial site. One squad’s work became everyone’s method.
  2. The unified address component permanently reduced accumulated debt. Five variants in production means five implementations to maintain, five possible sources of errors, five different friction points depending on where the user came in. A single, well-built implementation removes the problem at the root.
  3. The data got an owner. The analytics and user tests existed before I arrived. What didn’t exist was someone reading them systematically before designing. Part of the process we left behind was never starting a design cycle without first reviewing the available data.

Process

With the audit and research as a foundation, we worked in phases. Validation with 22 users on clickable prototypes confirmed the central hypothesis (seeing the price from the start reduced anxiety when deciding) and revealed an unexpected problem: some users took the calculator as the final price before confirming coverage, and got frustrated when availability changed the amount. We had to communicate the state of the price better.

We solved it with an explicit “estimated / confirmed” price indicator, visible and persistent throughout the flow. A small copy and state change that removed a source of confusion that wasn’t in any brief and only appeared when we put the prototype in front of real users.

Process wireframe
Process wireframe
  1. Audit of the flow in production + analysis of drop-off metrics per step
  2. Qualitative research with an external agency: 8 sessions with real users
  3. Functional benchmark of 15+ national and international providers
  4. Information architecture ordered around how the user decides
  5. Wireframes and clickable prototype
  6. Validation with 22 users + adjustment of the estimated / confirmed price state
  7. Handoff to the UI team + definition of the unified address component as a corporate standard

What I’d do differently

I’d check coverage earlier. Validation showed that the price changed when coverage was confirmed, and that this frustrated people. We solved it with the estimated / confirmed indicator, but today I’d ask for the address before showing the calculator, so the first price the user sees is already the real one.

And I’d bring the squads in from the start. I convinced them with data in a meeting. Today I’d involve them from the audit, so the problem was theirs from the beginning and not an argument of mine.

Closing

On this project, the answer was in data everyone had and nobody had read as a whole.

In a large organisation, designing well also means knowing where the information is, who owns each piece and how to build the argument that aligns different teams.

Working on something similar?

Let’s talk for 20 minutes. Book 20 min · hola@vicentemolero.com

Contact

{{T.mRole}}
{{T.contact}}
{{c.mLabel}}

{{T.sub}}

Madrid {{clock}}

{{viewTitle}}

{{viewSub}}

{{mHeroLabel}}{{w.sp}}

portada · vídeo o imagen
{{c.lockTxt}}
{{c.client}} / {{c.list}}
{{c.list}} {{c.clientYear}}
{{c.pos}} {{c.metric}}
{{soonT}} {{soonN}}
{{c.lockTxt}}
{{c.list}} {{c.client}}

{{T.mStatement}}

Vicente Molero

{{T.bio1}}

{{T.bio2}}

{{T.bio3}}

{{T.bio4}}

{{PR.title}}

{{pr.p}}

{{pr.e}}

{{pr.proof}} {{PR.link}} →

{{expT}}

{{x.period}}
{{x.role}} {{x.company}}{{x.company}}

{{x.desc}}

{{tmAbout.o}}{{tmAbout.body}}{{tmAbout.c}}
— {{tmAbout.who}}{{tmAbout.trL}}

{{LT.intro}}

{{LT.empty}}

{{LT.emptyNote}} ·

{{lb.title}}
{{lb.title}}{{lb.statusL}}
{{lb.what}}
{{cs.eyebrow}}

{{tp.t}}

{{cs.sub}}

{{cs.pill}}
{{cs.cta}}
{{csHeroTm.o}}{{csHeroTm.body}}{{csHeroTm.c}}
— {{csHeroTm.who}}{{csHeroTm.trL}}
{{cs.clientsL}}
{{cl.alt}}{{cl.name}}

{{cs.s1.t}}{{cs.s1.g}}

{{sy.s}} {{sy.c}}

{{cs.s2.t}}{{cs.s2.g}}

{{cp.name}}

{{cp.text}}

{{cp.delivLine}}

{{cp.proof}} {{T.lockTxt}}

{{cs.s3.t}}{{cs.s3.g}}

{{of.tag}}
{{of.title}}
{{of.meta}}

{{of.desc}}

{{of.note}}

{{cs.incL}}
{{ic}}
{{cs.idealL}} {{of.ideal}}
{{cs.talkL}}

{{cs.offersNote}}

{{cs.notFor.t}}

  • {{nf}}

{{cs.s4.t}}{{cs.s4.g}}

{{cs.privLine}}

{{csCsTm.o}}{{csCsTm.body}}{{csCsTm.c}}
— {{csCsTm.who}}
{{cs.pubL}}

{{csTmT}}

{{tm.o}}{{tm.body}}{{tm.c}}
— {{tm.who}}{{tm.trL}}

{{cs.s5.t}}{{cs.s5.g}}

{{st.n}} {{st.l}} {{st.d}}

{{cs.s6.t}}{{cs.s6.g}}

{{fq.a}}

Vicente Molero {{cs.direct}}

{{cs.closeT}}

{{cs.reply}}

{{T.footer}}{{T.colophon}}
{{cp.client}}{{cp.list}}
{{cp.pos}}
portada del caso · vídeo o imagen
[{{s.num}}]

{{tp.t}}

{{b.eyebrow}}{{b.readSr}}

{{tp.t}}

{{b.lede}}

{{b.flabel}}
{{fi.k}} {{tp.t}}
{{T.ba}}
{{T.before}} {{T.after}}
{{T.zoomHint}}
{{it.l}} {{it.note}}

{{tp.t}}{{tp.t}}

“{{b.text}}”
— {{b.cite}}
{{b.tm.o}}{{b.tm.body}}{{b.tm.c}}
— {{b.tm.who}}{{b.tm.trL}}

{{b.text}}

{{it.l}}
{{b.label}}
↳ {{fd.n}}

{{tp.t}}

{{pp}}

{{mi.label}}
{{mi.cap}}
{{b.cap}}

{{dc.title}}

{{pp}}

{{b.dv.beforeK}}
{{b.dv.beforeT}}
{{br.t}}{{br.n}}
{{b.dv.beforeNote}}
{{b.dv.afterK}}
{{b.dv.afterT}}
{{b.dv.decT}}{{b.dv.decD}}
{{b.dv.decTag}}
{{b.dv.decNote}}
{{b.dv.tab1K}}
{{b.dvTab0}}{{b.dvTab1}}{{b.dvTab2}}
{{b.dv.diag}}{{b.dv.diagS}}
{{b.dv.ubic}}
{{b.dv.veh}}{{b.dv.vehS}}
{{b.dv.sin}}
{{b.dv.doc}}{{b.dv.docS}}
{{b.dv.aseg}}{{b.dv.asegS}}
{{b.dv.tab2K}}
{{b.dvTab0}}{{b.dvTab1}}{{b.dvTab2}}
{{b.dv.visor}}
{{b.dv.danos}}↔ {{b.dv.sync}}
{{b.dv.sub}}
{{b.dv.mano}}
{{b.dv.est}}
{{b.dv.otros}}
{{b.dv.dp}}
{{b.dv.dg}}
{{pt.n}}
{{pt.t}}

{{pt.d}}

{{al.note}}
{{al.alt}}{{al.alt}}
{{b.dv.mkAlt}}
{{b.dv.mkList}}
{{b.dvC0}}{{b.dvC1}}{{b.dvC2}}

{{b.mkHint}}

“{{dc.quote}}”
— {{dc.cite}}
{{dc.outcome}}
{{st.n}} {{st.label}}
Ejemplo — sustituir por captura real
{{T.f1a}}{{T.f1b}}
{{br.l}}
{{br.a}}
{{br.b}}
Grises · borde
{{g}}
7 grises para el mismo borde
Botón primario Guardar GUARDAR Guardar cambios Guardar
4 primarios para la misma acción
Estado de error
No se pudo guardar el siniestro
Error al guardar
!Fallo de guardado
3 estilos para el mismo error
{{b.tx.head}}
{{b.tx.prim}}
{{b.tx.sem}}
{{sm}}
{{b.tx.mean}}{{b.tx.theme}}
{{mn.n}}
{{b.tx.uses}}
{{b.tx.approve}}
{{b.tx.damage}}
{{b.tx.ok}} {{b.tx.foot}}
{{sc.label}}
{{sc.name}}
{{nv.t}}
4821 LMKPóliza PL-2024-118803 · Exp. 55-20931
En revisión
IA · Posible daño previo en paragolpes traseroRevisar
PiezaDañoSeveridadAcción
{{rw.p}}{{rw.t}}{{rw.sev}}{{rw.a}}
Aprobar peritación
{{al.label}}
Daño estructural detectadoRevisa el larguero delantero antes de aprobar.
bold / text-on-bold{{al.ratio}}
{{dcv.n}}{{dcv.v}}
{{dcv.t}}{{dcv.s}}
Ethos · Componentes
{{cm.n}}{{cm.st}}
{{b.tlabel}}

{{b.tintro}}

{{hd}}
{{r.a}} {{r.q}} {{r.e}} {{r.n}}

{{b.text}}

  • {{tp.t}}
{{b.h0}}{{b.h1}}
{{g.a}} {{g.k}} {{g.v}}
{{b.cap}}
{{b.cap}}

{{b.text}}

{{tp.t}}

{{T.ctaQ}} {{T.ctaS}}

{{moreT}} {{moreN}}
{{m.list}} {{m.client}} · {{m.sub}} {{m.readSr}}
{{toast}}