top of page

Case Study: Enhancing Customer Engagement and Retention in a Digital Account Opening Platform

  • Writer: Stephen Dawkins
    Stephen Dawkins
  • Jan 2
  • 3 min read

Background

As a product manager for a bank's digital account opening platform targeting business customers, I identified a significant engagement issue. Many new accounts were opened with the minimum deposit of $100 but remained inactive until they automatically closed. While my primary focus was on account opening metrics, my KPIs also encompassed subsequent deposits and overall account activity.


Most of our customers resided within the bank's branch footprint. I hypothesized that connecting these customers with local market managers could foster relationships, encourage account usage, and improve retention rates. However, implementing this idea required creativity, as my control was limited to the account opening platform.


Solution


The account opening platform was built on Salesforce using the Lightning Web App. I developed a Salesforce trigger to connect business account owners with the nearest market manager based on geographic proximity. The solution involved:

  1. Geolocation Matching: Using the business owner's address, I calculated the geolocation and identified the closest branch.

  2. Market Manager Assignment: The system assigned the account to the corresponding market manager for the nearest branch.

  3. Email Notifications:

    • Sent an introduction email to the customer, personalized to appear as if it came from the market manager.

    • Sent a notification email to the market manager with the customer’s details for follow-up.


Implementation

Below is a representation of the Salesforce trigger and the associated logic to achieve this:


trigger AssignMarketManager on Account (after insert) {
	for (Account acc : Trigger.new) {
        // Ensure the account is for a business and has an address
        if (acc.Type == 'Business' && acc.BillingAddress != null) {
            // Calculate geolocation of the business owner
            GeoLocation businessLocation = GeoLocationService.getCoordinates(acc.BillingAddress);
		   // Find the nearest branch
            Branch nearestBranch = BranchService.getNearestBranch(businessLocation);

		if (nearestBranch != null) {
                // Assign the market manager
                acc.MarketManager__c = nearestBranch.MarketManagerId;
                update acc;

               // Send email notifications
                EmailService.sendCustomerEmail(acc, nearestBranch);
                EmailService.sendManagerNotification(acc, nearestBranch);
            }
        }
    }

Supporting Code Snippets

  1. GeoLocation Service:


public class GeoLocationService {
	public static GeoLocation getCoordinates(Address address) {

        return new GeoLocation(address.latitude, address.longitude);

    }
}
  1. Branch Service:


public class BranchService {
	public static Branch getNearestBranch(GeoLocation location) {
		List<Branch> branches = [SELECT Id, Name, Latitude, Longitude, MarketManagerId FROM Branch];
        Branch nearestBranch;
        Double shortestDistance = Double.MAX_VALUE;

        for (Branch branch : branches) {
            Double distance = GeoUtils.calculateDistance(location, branch);
            if (distance < shortestDistance) {
                shortestDistance = distance;
                nearestBranch = branch;
            }
        }

        return nearestBranch;
    }
}

3. Email Service:

public class EmailService {
    public static void sendCustomerEmail(Account acc, Branch branch) {
        Messaging.SingleEmailMessage email = new Messaging.SingleEmailMessage();
email.setToAddresses(new String[] { acc.OwnerEmail });
        email.setSubject('Welcome to Your Local Branch');
        email.setPlainTextBody('Dear ' + acc.OwnerName + ',\n\nYour local market manager, ' + branch.MarketManagerName + ', will be reaching out to assist you.\n\nThank you!');
        Messaging.sendEmail(new Messaging.SingleEmailMessage[] { email });
    }

    public static void sendManagerNotification(Account acc, Branch branch) {
        Messaging.SingleEmailMessage email = new Messaging.SingleEmailMessage();
        email.setToAddresses(new String[] { branch.MarketManagerEmail });
        email.setSubject('New Business Account in Your Area');
        email.setPlainTextBody('A new account has been opened by ' + acc.OwnerName + '. Please follow up.');
        Messaging.sendEmail(new Messaging.SingleEmailMessage[] { email });
    }
}

Results


While the initiative did not directly lead to increased deposits, it significantly improved customer retention, with retention rates rising by 60%. This demonstrated the value of fostering personal relationships with customers through local market managers.

Conclusion


This project highlights the importance of creative problem-solving and leveraging existing tools to address challenges. By implementing a simple yet effective geolocation-based trigger, I enhanced customer engagement and retention in a measurable way. This approach can be replicated or adapted for similar scenarios in other industries.


Recent Posts

See All
bottom of page