Mobile Personalisation
The first integration project after Swrve was acquired by MessageGears: bringing simple, marketer-friendly personalisation into a platform where personalisation meant writing code.
Swrve was acquired by MessageGears in early 2023. One of the reasons we were bought was the workspace we’d built for marketers — thousands of people used it every day to send highly personalised messages without needing help to do it.
On paper both companies did the same thing. In practice they did it in opposite directions. Swrve was a cloud platform that ingested customer data and shaped it. MessageGears sat on top of the customer’s own database and touched none of it — no formatting, no management, just reading it to send campaigns.
The wider project was bringing Push Campaigns into the combined platform. My piece was narrower and harder: bring the ease of personalising a message into a product where personalisation was expressed as code.
The challenge
I had a personalisation pattern that already worked. I’d watched marketers use it without trouble, so I had no interest in reinventing it. But the new environment carried complexity the old one never had to expose — setting an audience, choosing a personalisation type, recipient data, fallbacks, Freemarker templating, proprietary functions, letter typecasing.
Here is what a marketer was actually looking at. A first name with a fallback and a capitalisation rule:
And anything conditional meant writing template logic:
MessageGears’ existing customers were mostly marketing operations people who were fluent in this. We wanted to keep serving them while extending the same capability to marketers who would never write a recipient field by hand, let alone an if/else.
What I did
Before designing anything I went looking for evidence of how the advanced personalisation was actually being used. I talked to sales engineers and customer success colleagues and collected real examples from real accounts.
The answer decided the project: six customers were using the existing push product, and not one of them was using advanced personalisation. After talking it through with the team we made a deliberate call — optimise for the marketer who wants ${first.name}, not for the specialist writing template logic. That turned a sprawling problem into a narrow one, and from that point we knew exactly which flows we were designing and who for.
Then a series of working sessions with my PM, critiques and workshops with the design team, and validation with the same stakeholders I’d interviewed at the start. The pattern had to hold across every touchpoint in the product where personalisation could be applied, not just push.
The technical customers didn’t lose anything. They kept a direct route to Freemarker and the proprietary functions, with worked examples they could copy rather than recall.
What I took from it
Scoping is a research outcome, not an administrative one. Six customers and zero advanced users is the finding the whole project turned on, and it took a few conversations to get. Everything downstream was easier because we’d narrowed the problem honestly instead of designing for a user we’d assumed into existence.
This was also the first project the two companies ran together, which made the working relationship part of the deliverable. I paid as much attention to how we collaborated — who I brought in, when, and how the design team showed its work — as to what shipped, because those relationships had to outlast this milestone.
And I took the pattern further than the brief needed. I mapped how it would extend to the channels we knew were coming, and started on a version that teaches as it goes, so a marketer meeting conditional logic for the first time could learn it in the place they’d use it.