Some time ago, a university approached me with a project to build an application portal integrated with Salesforce Marketing Cloud. The university had started accepting scholarship applications and I thought that leveraging Marketing Cloud (Journey Builder) and CloudPages would be the best solution to receive applications from the students, have criteria that should automatically reject a scholarship, and have the internal portal for their team to review, accept and reject the applications – all automated.
Here is the solution that I developed for the university. which is working out well for them several months after go live, with some planned extension of the portal’s functionality in the coming months. Although this was for an education client, the portal can be used for across other verticals that require an application review process and log in page – let this be a blueprint for you!
Requirement 1: Automatically Reject Applications
If an application falls under the certain criteria, automatically reject it.
Solution: Journey Builder
We created a journey in Journey Builder. All the new sponsorship applications would go through this journey as soon as they enter into the system.
Using the decision split, we would check if the sponsorship application falls under the specific criteria. If the application falls under the criteria (as per the requirement), we would send the “Application Reject“ Email and would update the ”Application Status“ Attribute in the data extension as ”Rejected“.
The applications that did not get rejected automatically by the journey would be available in the internal portal to be reviewed by the internal team.
Requirement 2: Internal Portal to Review Applications
Build an internal portal where the team can review, accept and reject the applications.
The internal portal should be secure so we first started building a login page using AMPscript
See live demo of login page here
use username : scholarship-user
use password : scholarship-pass
Login Page Process Flow:
Username and password would be posted to the same login page and would be fetched using AMPscript Requestparameter function. AMPscript would confirm if its the correct username and password combination.
If you need multiple usernames and passwords for different users, here you can use a for-loop to validate the provided username and password with all the combinations available in the data extension.
AMPscript of our Login Page:
|set @username = RequestParameter('username')|
|set @password = RequestParameter('password')|
|if RequestParameter("submitted") == "submitted" then|
|if @username == "scholarship-user" and @password == "scholarship-pass" then|
|alert("Incorrect username or password!");|
|<form action="" method="post">|
|<img src="https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png (https://www.salesforceben.com/wp-content/uploads/2015/09/THEDRIP_banner_new-1.png)" alt="Avatar" class="avatar">|
|<input type="text" placeholder="Enter Username" name="username" required="">|
|<input type="password" placeholder="Enter Password" name="password" required="">|
|<input id="submitted" type="hidden" name="submitted" value="submitted">|
|<div class="container" style="background-color:#f1f1f1">|
|<button type="button" class="cancelbtn">Cancel</button>|
|<span class="psw">Forgot <a href="#">password?</a></span>|
If the validation is successful, the user would be redirected into the portal (Dashboard).
First, however, we would check if the Referrer URL set in Httpheader is our login page URL, only if its true we would let user see the content. If its false, we would redirect the user back to the login page.
AMPscript for our Dashboard:
|set @referrer = HTTPRequestHeader("Referer")|
|if @referrer == "https://pub.s10.exacttarget.com/tzbuzdds5h2" then|
To enhance the security, the username and password provided can be encoded using AMPscript functions and could be appended to the redirect URL. See the AMPscript encode functions here.
On the dashboard (page 2), we can decode the Queryparameter to get the username and password
Now along with the referrer URL we can also validate the username and password.
Once the users passes the login page, we display all the applications which did not get rejected by the Journey on the dashboard, like this:
Once reviewer clicks any specific application, we display all the details submitted by the applicant. Here the reviewer can accept or reject the application:
Once the reviewer click either Accept or Reject, we ask the reviewer to provide the reason which would be saved into the data extension:
As soon as the application gets either accepted or rejected:
- We update the application status in the data extension accordingly.
- We send an immediate triggered email to the applicant updating them with the status of their application. We trigger our Triggered Send Email Definition using AMPscript. Zuzanna Jarczynska did a brilliant article on this which can be found here .
So far, this solution is working out well for the university. Currently we are using all Salesforce native functionality, however in the next release we are planning on extending the portal using third party frameworks and analytics tools.
We have been reaching out to a few random students every month asking them their feedback for the internal portal. We have received some insightful and constructive feedback and we are planning our next enhancements accordingly.
There are few enhancements we have planned for the next release:
- Moving from Triggered Send Email Send API to the new and lightening fast Transactional Messaging API. More details on Transactional Messaging API can be found here
- Setting up reCAPTCHA on CloudPages to protects it from spam and abuse.
- Currently we are using the CloudPages inbuilt perform tracking feature but we are planning to integrate Google Analytics to get better performance reports.