Forty percent of our delays came from one control
App builds kept bouncing back from Apple and Google. I counted the causes instead of firefighting them, and resolution time went from 7 days to 2.
- Company
- GoHighLevel · 2024
- My role
- Account Specialist — root cause analysis, documentation, redesign input
- Focus
- Root cause, Mobile, Process, Cross-functional
- Subject
- rejected again — my client is asking me why
Fourth bounce on this build. I'm the one on the phone with the client and I genuinely cannot tell them what went wrong or when it'll be live. I need an answer today.
Where it ended up
40%
Of app delays traced to a single control
7d → 2d
Resolution time on rejected builds
Down
Store rejection rate after the redesign
02
Context
Every whitelabel app we built had to pass Apple's and Google's review before an agency could launch. A rejection wasn't just a technical delay — it landed on an agency owner who had already promised their client a date.
I handled those escalations. That gave me a view nobody else had: I saw every rejection, in sequence, with the customer's reaction attached.
03
The problem
Rejections were being treated as individual incidents. Each one got diagnosed from scratch, fixed, and resubmitted — a full cycle of roughly a week between the bounce and the launch.
Because each was handled alone, nobody was asking whether they were the same failure repeating.
04
What I found
I went back through the escalation history and categorised the rejections by cause rather than by account. One cause accounted for 40% of them.
It was the colour picker. Agencies were selecting brand colours that failed the stores' contrast and asset guidelines — a dark logo on a dark background, text that didn't meet the required ratio. The interface let them pick a combination the store would predictably reject, and said nothing.
This was the same root as the customizer's preview gap, seen from the other end: the tool accepted input it knew would fail, and the customer discovered it a week later through a rejection notice with our name on it.
05
Options I weighed
I did the second immediately and pushed for the third. Documentation was something I could ship that week without anyone's roadmap, and it bought the time to make the case for the redesign properly.
- Fix faster — throw more support at the queue. Doesn't reduce rejections, just absorbs them, and it doesn't scale with account growth.
- Document the constraints and train the team — cheap, fast to deploy, but relies on humans catching it every time.
- Constrain the picker so store-violating combinations can't be submitted — the real fix, but it needed engineering time and a design decision about how hard to block.
06
What shipped
I wrote up the iOS and Android asset and contrast requirements as practical guidance — what the stores actually enforce, in language an agency owner could act on — and got it into the knowledge base and the support team's hands.
Then I took the 40% figure to the product manager and engineering team and worked with them on the picker redesign, so the constraint lived in the interface rather than in a document somebody had to remember to read.
07
Impact
The rejection rate fell, and time-to-resolution on the ones that still happened dropped from 7 days to 2 — because the team now recognised the failure on sight instead of diagnosing it fresh.
The compounding effect: an agency's launch date stopped being a coin flip. That's a retention story, not a support story.
08
What I'd do differently
I categorised the rejections manually, once, in a spreadsheet. It answered the question but it didn't keep answering it — the moment I stopped maintaining it, the visibility went with me.
The right move was to get a cause field onto the rejection record at the point of logging, so the distribution was always live and anyone could see the next 40% coming. Insight that depends on one person re-running it isn't infrastructure.