The app was missing Zelle and customers were leaving. I merged four scattered ways to move money, plus Zelle, into one hub.

Woodforest National Bank's mobile app offered four separate ways to move money: transfers, Send Money, bill pay, and Western Union, each with its own menu item and only three of them with a quick-action icon. The clutter was real, but the urgency came from the one that wasn't there: Zelle had no integration in the app, and not even a history in Online Banking.

I owned every design decision for Transfer & Pay Hub, the app's single destination for all money movement: a quick-action menu for all five features, a common-actions shortcut layer, and a consolidated cross-account transaction history the app had never offered. The last two were cut before the hub launched in July 2026; both are designed and still waiting on a build.

5 in 1 Ways to move money in one hub: the four the app had, plus the Zelle it never did
10+ Branches visited, every one reporting customers leaving over missing Zelle
First Cross-feature, cross-account view of money movement in the app (designed, not yet built)
2 weeks For Zelle to move more transactions than the two hub features it can be measured against, in a quiet August 2026 launch

Role: Senior UX Designer · Sole Designer

Contribution: Interaction Design, Information Architecture, Dev Specs, MVP Dev Handoff, Stakeholder Presentation, Cross-Functional Negotiation

Constraint: Research funding already gone when this started, and an aggressive Zelle deadline, so design critique and the design system became the evidence standard.

Four Features, Scattered

The old Woodforest mobile app menu. Transfer, Bill Pay, and Send Money sit together in one group, while Western Union is stranded four rows below in a separate group between Tax Documents and Account Alerts. Zelle appears nowhere.

One Hub

The Transfer & Pay hub as designed for MVP: a quick-action row of Zelle, Transfer, Bill Pay, Western Union and Send Money above FAQs for four of the five features. Zelle is ringed as the one that did not exist before.

The Problem

Woodforest customers had been using Zelle through its standalone app. When Zelle retired that app in April 2025, integration became the only route left, the bank didn't have one, and customers started closing accounts over it.

The crisis sat on top of a problem customers had lived with all along. Four ways to move money meant knowing which one you needed before you could start, and the closest thing to paying a friend was the weakest: Send Money, the bank's legacy P2P product, could send to anyone with a U.S. bank account, but nobody outside Woodforest could pay you through it, and it wasn't instant. Splitting a dinner bill meant the person on the other end waited a day or more for money Zelle would have moved in minutes. Consolidating the four arrived as a directive rather than a finding: our Director of Digital Channels wanted every money-moving feature behind one destination with Zelle among them, the pattern the large banking apps had already settled on.

The churn found us before we went looking for it. Our Director of Product Development and Customer Experience had sent the whole design team, UX and marketing both, into branches with no agenda attached, so I set my own: in more than ten of them, solo and on group trips, I asked about the kiosk and Banking GPS, the two products I was leading. Branch staff answered, then turned a question back on me: when was Zelle coming? They had been losing customers over our own app not having it, and every branch told me a version of the same thing. Customer support was fielding the question constantly. Our executives were seeing the same lost customers, in customer data and in what branches sent up. The directive had landed partway through these visits, when only a handful had happened, so what the rest of them changed was not whether the hub got built but what had to be first inside it.

The bank's monthly reporting later lined up with what the branches told me. For the eight months before that shutdown, the customer base was close to flat. It turned two months after, and it has fallen in every quarter since, with account closures up and openings down by about the same amount. That is timing rather than proof, and the branches are what supply the reason.

This wasn't a polish project; it was retention risk with a deadline.

Users & Audience

Prospective customers were comparing Woodforest against banks that already had Zelle, and branch managers and staff told me its absence was disqualifying for many of them. Existing customers relied on transfers: in the ranking I had from our Director of Digital Channels, it sat second behind deposit and first among the ways to move money. It had to stay first-class. Small business customers would stay on the legacy Send Money product longer than planned: our Zelle vendor doesn't support small business payments yet and has put them on its roadmap without a date, so Send Money is where we point those customers in the meantime.

Those first two needs pulled in opposite directions, and consolidation is what made them collide. Transfers had its own home-screen icon and its own menu item; both now route through Transfer & Pay, so the most-used way to move money costs one tap more than it did. What it buys is a fixed address for every way to move money: one destination in the same place on the home screen, in the menu, and on account details, instead of four features scattered across two menu groups. The home-screen slot transfers vacated went to Find a Branch, which had only ever been a menu item. Inside the hub only one feature can be first, and that slot went to the one customers were leaving over, with transfers second on the same row at the same size.

Process

Step 1: Mapping the fragmented state

I started by mapping the current-state architecture, and what the map showed was an app with no shared mental model of "money movement" and no Zelle anywhere in it. Why start here: I had a mandate and no inventory. The map is what fixed the list.

Step 2: Designing the full vision

I stacked the full vision as three deliberately severable layers on one screen: each stood on its own, so a layer could be pulled without the one above it losing its meaning. At the top of the hub, a quick-action menu: the icons of all five features, following our established design-system pattern. Below it, common actions: list-item shortcuts for tasks shared across features (send a payment, manage recipients). At the bottom, a consolidated transaction history: every upcoming and past transaction across all five features, filterable by account and groupable by feature. I drew all of it as a component library for the feature rather than as one-off screens, which is the set below. That is how the design system works here: a feature's components start as their own set, and once the feature is confirmed for ship the set is folded in, so what sits below is a portion of that system rather than a parallel one. Why the full vision first: nothing in the app offered that view at any level; team and stakeholder response was immediately positive.

Step 3: What critique caught

I ran every decision through our design critique cycle with my manager and peer designers, grounded in the design system. It changed the work: my first pass at filtering the transaction history by account was too involved, and a peer's suggestion to make it a dropdown simplified the whole interaction. The component library went through the same cycle. Why critique carried the full weight: it was the best evidence we had, and it made the design better without being able to tell us what customers would do with it.

The Full Vision

The complete Transfer & Pay Hub as designed: a quick-action menu of all five features, a list of common actions (send a payment, manage recipients, schedule, settings), and a transaction activity feed under an account dropdown and upcoming and history tabs, running months deep

The Component Library Behind the Full Vision

The Transfer & Pay component library in Figma: eleven labeled component sets covering the quick action menu, common actions, payment status, payment card headers, payment cards, transaction payments, transaction activity, FAQs, the main menu, the account dropdown, and the complete hub screen in both its designed and shipped scopes, each built out across its pay types and states

Step 4: Losing the scope argument

PI planning in February 2026 set a May launch, and the dev team flagged the transaction history and common actions as too heavy a lift alongside Zelle integration. In a room with dev leads, product owners, and department heads, I argued hard for multiple reduced versions of the transaction history and for keeping even one or two common actions. Our Director of Digital Channels made the final call after full discussion: hub and quick-action menu for MVP; everything else to a fast follow after launch. The launch still slipped, from May to mid-July, and Zelle landed a month after that, which is the part worth saying out loud: the cut did not buy the date. Why the call went against me: my case rested on design expertise and enthusiastic stakeholder reaction, and the business priority was explicit: customers get Zelle, and the transfer flow itself stays untouched.

Step 5: Rescoping the MVP

Two of the three layers came out and the hub still read as a hub, which is what designing them severable was for. In that same session I proposed pulling the FAQs for four of the five features into the hub itself, a fraction of the lift of the layers we had just cut, and the Director confirmed it into scope. I had already designed the components those two layers are built from, which is most of the set above, and specified them to a build-ready standard: flows drawn tap by tap, states defined, developer notes on the interactions. The fast follow starts from a finished library rather than an empty file. Why FAQs: the cut layers were about speed and visibility. The gap I went after was a different one. Nothing in the hub said how Zelle and Send Money differ: Zelle moves money both ways with people at other banks, in minutes, while Send Money can only pay them, and not instantly.

The MVP That Shipped

The Transfer & Pay Hub as it shipped: the quick-action menu of all five features, then an FAQs section with rows for Zelle, Bill Pay, Western Union, and Send Money, and the Zelle transaction-limit disclaimer at the bottom

Zelle History in Online Banking, With the Chevron I Proposed

Zelle history in Woodforest's Online Banking: a read-only table of sent and received payments, each row showing date, the other party, account, amount, whether it was approved or rejected, and the chevron marking the row as selectable.

Solution

Decision 1: One hub, and demand sets the order. Problem tackled: Nothing had ever forced the four money-moving features to be ranked as a set. Putting them behind one menu did, and the one customers asked for most wasn't in the app at all. How: A quick-action menu at the top carries the five features in a three-then-two grid, and the order is an argument rather than an inventory. Zelle takes the first slot, the feature customers were closing accounts over. Transfers follows as the most-used way to move money, then bill pay. Western Union drops to the second row as the least-used of the four the app had, and Send Money takes the last slot, because Zelle is what replaces it for consumers. Why: The hub only works if the thing customers came for is the thing they see first, and getting there meant moving two live products down. Product owners expected Zelle to overtake transfers outright, so the first slot is a bet on where usage is going rather than a record of where it has been.

Decision 2: Designing for the customer who can't use it yet. Problem tackled: Every eligibility rule behind the quick-action menu has a failing side, and the service behind it can fail outright. Left unspecified, either one puts a customer in a hub that offers money movement and then refuses it. How: The eligibility rules came from the product owner. What did not exist was the behavior for them. I designed the menu's arrangements at five, four, three, two, and one feature so it stays composed at every entitlement count, and designed what the customer sees in every account state those rules produce. Then the message for each way a customer can be turned away: an ineligible account, a failed connection, multi-factor authentication not set up or still inside its waiting period, and an unverified email address. Each one names what happened and what to do next. Why: At a bank, the customer who can't use the feature isn't an edge case, they're a segment, and the moment they're turned away is the moment they call support. It is also what made the hub buildable: the dev team needed a defined outcome for every state, not just the happy path.

The Zelle screen for a customer whose account is not eligible: a line reading Contact Customer Experience Center to use this feature, above a button that does exactly that.
Account Not Eligible
The same screen for a customer without multi-factor authentication: what it is needed for, a button to set up SMS authentication, and a second paragraph offering an authenticator app instead.
No MFA Set Up
The same screen during the authentication waiting period, with the date and time it becomes available left as placeholders for the system to fill.
Inside the Waiting Period
The same screen for a customer whose email address is not verified: what is required, a button to update contact info, and a note that they can add a new address or finish verifying an existing one.
Email Not Verified

Decision 3: Answers inside the hub, not only in the help section. Problem tackled: The support calls were customers asking whether Zelle was coming, being told it wasn't, and being pointed at Send Money instead. Once Zelle arrived, the app carried five ways to move money, two of them overlapping on the same job. How: The hub's FAQ set is the help section's own content, one component surfaced in two places, covering four of the five features. Transfer has no FAQs, so I designed the empty state for the one customer entitled to Transfer and nothing else: a written route to the rest rather than a blank panel. I built the wording from the bank's approved copy library, rearranging cleared phrases to fit, and "click here" came with them; a descriptive link label is the next change I would make. Why: The overlap is not a transition wrinkle. Send Money stays until our vendor supports small business, so it and Zelle sit side by side in the hub, and will for a while yet. Telling them apart is a question customers meet in the hub, so that is where the answers go.

The in-hub FAQ section with four rows: Zelle, Bill Pay, Western Union and Send Money, each opening to its own answers.
Four Features, Four Rows
The same section for a customer entitled to Transfer alone: no rows, and a line saying there are no FAQs for Transfer with a link through to the FAQs for the other features.
Transfer Only

Decision 4: Common actions and transaction history: cut, not abandoned. Problem tackled: Frequent tasks like sending a payment or managing recipients required entering a feature and walking its full flow every time, and nowhere in the app could a customer see money movement across features or across accounts: history lived inside one account's activity screen at a time, filterable only by deposits and withdrawals. How: The common actions layer carries four rows. Tap "Send a Payment", choose the feature, done. Sending a payment reaches four of the five, every one but bill pay; "Settings" reaches two. For the history, three controls do the work, and the one that changes how the feed reads is the sort: by date, or grouped by feature. Why: Together they turn the hub from a menu into somewhere a customer can act and account for their money in motion. Both were cut for dev capacity, not design merit, and both now run in a prototype I built for this case study.

Live Prototype The cut layers, running inside the hub Choosers into each feature's own flow, the Zelle flow they hand off to, and the history under both sorts Built in Claude Code
Upcoming payments ordered by date, with the sort set to Date, the account filter on All Accounts and the Upcoming tab active. Under a January heading, Bill Pay, Send Money and Transfer payments run interleaved in date order, each row carrying its accounts, amount and status.
Ordered by Date
The same upcoming payments with the sort set to Pay Type and the same account filter and tab. Now a Zelle heading carries only Zelle payments, capped with a See More control, and Transfer begins its own group below it.
Grouped by Feature

Impact

Transfer & Pay Hub shipped in mid-July 2026 and Zelle arrived in it in August, so the numbers here are early. What the work settled, and how I will know whether it worked, are not.

What the Zelle dashboard shows:

86.5% to 92.4%

Zelle payments completing rather than coming back rejected, one day in each of the three weekly reports I have so far. That is the integration settling in, not the flow.

Zelle against the two features in the bank's monthly reporting: In its first two weeks Zelle moved more transactions than Send Money, the legacy product beside it, moved in the whole of August, and more than bill pay did. Send Money gave up about a fifth of its volume that month, while payments across Zelle and Send Money together rose by nearly half in count and only single digits in dollars: Zelle is adding smaller, more frequent payments, not only absorbing the old ones.

What the daily counts show: Zelle was climbing before anyone promoted it. It moved about one and a half times as many transactions in its second week as in its launch week. By the third, the first week of September and the first with a Zelle card on the bank's homepage, it was about double.

What's true now:

  • The component set is no longer this feature's. It is in the design system, so the next team to build money movement inherits my states, not my screens
  • Cutting the two layers cost no rework of what stayed, so the price of reopening them is a meeting, not a redesign

What it unlocks next: The fast follow for the transaction history and common actions. It is agreed in principle and not sequenced, so it is a case I re-make every other week in our UX and product owner meeting, against everything else competing for the same capacity.

Business outcome: The closures. Branches surfaced customers leaving over a feature the app didn't have, so the number that answers the problem is the closure rate. Before launch, what we had was what branch staff told us and what our executives were seeing in customer data. The bank counts closures every month, so the baseline exists, and two weeks into Zelle it has not moved. That is what two weeks should look like: the last time this number shifted, it took months of averaging before the shift was visible at all. It moves for more reasons than this hub, so I take it directionally.

North star metric: Zelle adoption relative to the other four money-moving features, which is the metric the org settled on. Only two of those four are counted on a basis I can set beside Zelle's. Western Union is counted in a different system, and transfers is not counted at the app's level at all. Zelle lives nowhere else in the app, so adoption on its own cannot tell me the consolidation worked; it tells me the integration landed. What it does settle is part of the order: whether the first slot belonged to Zelle ahead of the two features counted in the same monthly reporting. And transfers is the comparison I made the call on. Adoption is also the leading indicator on the closure rate: it moves first, and if it stays flat the closure rate has no reason to move either. The hub ran for a month before Zelle arrived, which would have been the baseline a same-day launch could never have given me: the other four inside the hub, before Zelle. I asked for it, and that month was never recorded. And Zelle arrived quietly, with no banner, no email, and no campaign, so the August number is a floor, not the ceiling. Whether customers could find the hub once it was there is a different question, and it is the one I cannot answer.

Supporting signals:

  • Zelle completion, week over week: if it stalls, that points at our flow rather than the network
  • The two channels that asked for Zelle in the first place: call volume about which of the overlapping features to use, which is the test of the in-hub FAQs, and branch visits where the Zelle question stops coming back

What I asked for and could not get: The app records no customer usage of its own. I pushed for it from the start of this project; there was no budget, and before I asked, nobody had. That cost three reads I would still ask for: where customers enter the hub from, whether someone who comes for Zelle leaves having used something else, and what the extra tap into the hub costs transfers.

So what is left is the bank's own monthly reporting, its Zelle dashboard, and what comes back by phone and from the branches.

Who reads it: Reporting sits with our AVP of Product Development and Customer Experience, one level under the Director who sent us into the branches where this surfaced. The north star was not handed down to us: it was settled in conversation, and design was in that conversation because I pushed to be part of the reporting. The adoption read starts from Zelle's August launch. The closure rate takes longer: thirty days is noise there, and ninety is a first read rather than an answer.

Learnings

Learning 1: I made the most-used way to move money harder to reach on purpose, and I still can't prove I got the trade right. I thought the cost at least had a number on it: transfers usage. The app logs none, so it doesn't. What it bought has none either, and what it was worth has none: no number will tell me a customer found bill pay faster because the hub existed. So I call it a trade, not a simplification. I would put the events in the dev spec beside the feature next time: a measurement plan with no line in the build is only a preference.

Learning 2: The naming collision wasn't in our product, it was in the one we were adding. The bank's legacy P2P feature is called Send Money, a verb and a noun, and "send money" is what Zelle's own screens say throughout. Apart, that was survivable. In the same menu, one product's name reads as the other product's instruction, and the customer most likely to be caught is the one arriving for Zelle who has never used either. Neither name was mine to change, so I argued for the only lever left, a qualifier, and kept arguing until it shipped: "Send Money", with "(Woodforest P2P)" on the line beneath. I check for that collision at the start of an integration now, because the vocabulary you inherit is the part you can't design your way out of later.

Learning 3: I had nothing but enthusiasm, and enthusiasm is not an argument. When dev said the transaction history couldn't be scoped alongside Zelle, I had nothing to answer with: no usage number, no support volume, nothing but the reaction in the room, and nobody in it was a customer. The argument for Zelle had branch visits behind it, staff counting customers they had already lost; the transaction history had my conviction and a mockup. The feature I most wanted to build is the one I brought the least to, and I would reverse that.

Learning 4: I was in the room when the date was set, and I didn't ask what the team could actually ship. We had the project a few weeks before PI planning, so I walked in with designs ready to discuss, and that head start is why I could re-scope quickly when the cut came. The May date was set against the business need. What nobody put next to it, me included, was what the team had been delivering per increment. I ask that question before I agree to a date now, in that room, because once a date is in trouble the only thing left to trade is the design.