Making ads and offers creation simple and seamless for new users
Credits
Me · sole designer on ad creation: every flow, screen and prototype 1 product manager 1 UX researcher 1 content designer 1 engineering lead 1 data scientist 1 product operations lead Legal reviewers
Executive Summary
- Layers|One box asked five questions at once · and showed the return as a percentage few could read
- Minimize2|Three settings by default · budget, duration, more settings; five became three
- Store|50% of active locations · had never run an ad
- Maximize2|Full screen, budget first · the return shown as 5×
- Globe|Tested in two markets · then live for every web merchant
01
Context & Overview
The Product
- LayoutDashboard|Uber Eats Manager · the restaurant dashboard
- Megaphone|Ads · paid spots in the Uber Eats app
- Store|1.5M+ merchants · orders, menus, offers and ads
The Users
Single-location owner
Runs one restaurant with very little spare time No marketing background; ads are not top of mind Need - be told what to do and what comes back
Chain operator
Runs a small chain of up to 30 stores Plans marketing and has run ads before Need - control: audience, budget per store, slow hours
Who’s involved
__smb_who__
Rollout plan
- FlaskConical|Small version first · A/B test in two markets
- Timer|17 weeks of testing · lessons fed the full redesign
- Globe|Full redesign · every web merchant by Week 44
- Smartphone|Mobile · half of merchants at launch
Customer Goal
Start an ad with one decision and know what it returns.
- MousePointerClick|One decision · confirm the recommended budget
- TrendingUp|Return in plain words · “$5 for every $1”
- SlidersHorizontal|Nothing locked · every setting one click away
Business Goal
Get more merchants to finish an ad.
~50%
finished an ad once they opened the builder
50%
of active locations had never run an ad
~75%
finished on the Offers builder, the benchmark
~$130M
modelled upside if adoption rose · estimate
The business around it
Ads were paid. Offers were free. Both needed more merchants in.
~$1.3B
ads business when I joined · as I recall
~$2B+
after launch · many projects moved it, this one among them
__smb_more_business__
02
Problem Definition
The Problem
- Layers|Every decision at once · five settings, one modal
- Users|Audience first · the hardest choice came first
- Percent|Return as “500%” · merchants misread it
- CircleHelp|No way in · nothing explained ads or the tier
- Minimize2|No room · a half-screen box over the dashboard
Never ran ads
Dine-in comes first
A full room and a till to run; the ads dashboard sits idle on the counter. Delivery is extra money, not the business.
An offer feels safe
A chalkboard deal costs nothing until an order comes. Offers fit how an owner already thinks.
Ads feel like a bet
Ad spend on one side, revenue on the other. “Would I have got those sales anyway?”
Running ads
Set it and forget it
An account manager set it up. The dashboard shows a campaign the owner does not remember starting.
Keen to grow, unsure how
Busy counter, good trade. Would spend more for more, but cannot read the return or tune the settings.
Stopped
Costs felt too high
Bills on the table and no proof the ad paid. Staying afloat beats a gamble.
Design Question
How might we help a first-time owner start an ad with confidence, without taking control away from chains?
03
Design Principles
Principles
__smb_principles__
A
Make one decision the default
What changed
- Wallet|Budget first · recommended tier open and selected
- Calendar|Duration chips · Ongoing by default
- SlidersHorizontal|“More settings” · name and bidding, one click away
__smb_more_a__
B
Show the return before asking for money
What changed
- TrendingUp|Estimates always in view · update as you change
- Percent|Return as 5× · “$5 for every $1 you spend”
- Wallet|Max weekly spend · with its formula shown
__smb_more_b__
C
Guide without gatekeeping
What changed
- CircleHelp|“How do ads work?” · a short explainer, on request
- Layers|Three-step tour · budget, duration, more settings
- Ban|Always skippable · never blocks creating an ad
Two paths for a first-timer
An activation problem: get single-store owners to run a first ad.
- PanelRight|Side curtain · a panel over the page you are on; two budgets, Create ad, or “Customize” for the full page
- Wallet|Budget-only first run · the whole screen shows two budgets and the return; everything else under Advanced
- UserRound|First-timer · one store, never ran an ad, goes with the defaults
- Repeat|The rule · budget-only for the first 5–10 ad runs, then audience and the rest; it ends the first time they open Advanced
- Ban|Why neither shipped · two flows to maintain, two to explain, more support tickets
Side curtain
Pros
- CircleCheck|familiar; you stay on the page you were on
- CircleCheck|one or two choices, Create ad in a click; “Customize” opens the full page
Cons
- CircleSlash|400px leaves no room to explain, preview or show the return
- CircleSlash|worse on mobile, where a panel becomes a cramped sheet
- Gavel|Decision · dropped at the Week 10 crit; the full-screen page won, I argued for it
Budget-only first run
Pros
- CircleCheck|nothing to distract: three budgets and the return, that is the whole screen
- CircleCheck|matches the first-timer: budget and outcome are all they care about
Cons
- CircleSlash|a second flow to build, maintain and explain, next to the full page
- CircleSlash|the 5–10 run rule needs tracking per merchant; more support tickets expected
- Gavel|Decision · not shipped; the full page keeps minimal by default, with everything one click away under Advanced
04
Validation
Testing
- Users|Prototype test · experienced and churned merchants
- Layers|Four variants · desktop and mobile
- Percent|Failed first · “1000%” read as fake, so 5×
- CalendarX|Failed first · short runs, so duration chips
__smb_more_validation__
05
Handoff
Timeline
- Users|Weeks 1–3 · research with three merchant groups
- FileText|Week 6 · product requirements
- Scale|Week 10 · design crit, full screen chosen
- Gavel|Week 19 · legal sign-off on estimates
__smb_more_timeline__
What I would measure
- Gauge|Creation rate · started vs finished
- Repeat|Four-week retention · still running ads
- Wallet|Average spend · per advertiser
- Target|Recommended tier · how often it’s changed
06
Reflection
What I learned
- Lock|Ask for the readout early · none reached me
- Store|Chains need their own test · their budgets went untouched
- Sparkles|Next · per-store budgets in the default view
- BadgeDollarSign|Next · show extra sales in the estimate














