For more than 141 years, The Salvation Army, has been helping millions of people to access a range of social services in the United States. The organization’s services for more than 30 million people nationwide each year includes feeding, clothing, sheltering, disaster relief, and more. Overall, eighty-two cents of each dollar The Salvation Army receives goes directly to programming in the community of the donor.
After completing several successful projects together, The Salvation Army and ClearScale decided to partner again to modernize the nonprofit’s mobile processing application, “Kettle Pay".
"ClearScale has proven to be an incredibly valuable partner as The Salvation Army expands its capacity to meet the needs of donors, and thereby, the needs of the people we serve,” said Dale Bannon, director of national community relations and development at The Salvation Army. “2020 and the COVID-19 pandemic really highlighted the need to remain flexible and efficient in a changing environment, and ClearScale helped us do that last year by providing additional ways to give at the iconic Red Kettle."
Previously, ClearScale built a serverless donation processing solution for The Salvation Army so that the nonprofit could collect cashless gifts. As part of the solution, ClearScale enabled access to the nonprofit’s web application via QR codes and NFC tags. ClearScale also set up sophisticated Business Intelligence (BI) reports in Google Analytics so that the nonprofit could track success.
After this round of work, The Salvation Army identified additional modernization opportunities. For instance, the organization found that its NodeJS runtime environment and other front-end components were no longer receiving automatic security updates or performance patches. More specifically, the application used jQuery instead of new-age JS frameworks, like Vue, React, or Angular. As a result, the solution was inefficient. The organization also had trouble updating or extending its digital donation forms.
Another issue The Salvation Army found was that its payment gateway, Braintree, could only handle 25 requests per second. Therefore, the nonprofit couldn’t ensure that all donations were collected successfully. In addition, Braintree did not support newer payment methods, like Microsoft Pay and Samsung Pay.
On top of these challenges, The Salvation Army couldn’t identify where donors made their gifts. The application attributed donations to the donor’s billing address, making it hard to distribute funding to specific collection sites or areas.
Given these specific issues, The Salvation Army reached back out to ClearScale for help.
ClearScale took a four-step approach to address each of The Salvation Army’s needs:
First, ClearScale set out to replace The Salvation Army’s jQuery environment with a modern framework. The team built a single-page application (SPA) based on VueJS, Sass, and Bootstrap. The framework was rewritten from scratch following existing style guides and best practices.
Immediately, The Salvation Army saw a significant performance boost at a stable 60/120 FPS, depending on the hardware. Consequently, ClearScale was able to incorporate attractive animations, smooth screen transitions, and other elements that improved the overall user experience. Every component is dynamic, and the state is shared across multiple views.
The ClearScale team used Vuex to maintain a single source of truth for transactions, safeguard sensitive information, and save both metadata and user preferences for future reference. ClearScale also replaced Google Analytics with Adobe Analytics without changing the existing data ingestion interface - Google Tag Manager.
The same constructs are responsible for automatic extraction of identifiers from both QR codes and NFC tags. They are attached to the payment's metadata, and then expanded to the donation's site coordinates in order to properly distribute funds to places the user actually wants to support, not ones that correspond to their billing addresses.
Step 1. Modern Donations Collection - VueJS
ClearScale chose Stripe as the best payment solution to supersede Braintree. Every donation is now tied to a unique key, which helps ensure that no charges get duplicated, even if connectivity fails or another issue prevents a transaction from executing successfully.
After users select their preferred payment method and donation amount, API Gateway makes a REST API call to the back end. A single AWS Lambda function controls the business logic and transfers a package of necessary information to Stripe.
One of the most significant advantages of Stripe is that the payment gateway supports near-infinite scaling. The platform uses exponential backoff in the case of throttling to preserve pending transactions. Stripe also supports credit cards and recurring payments, differentiating the solution from products which only support one-time donations and only with Apple Pay or Google Pay.
Additionally, Stripe uses a smart retries system based on machine learning that increases collection rates. When one-time donations or subscriptions go through successfully, Stripe automatically sends email receipts to individuals with The Salvation Army’s branding.
Step 2. Modern Donations Collection - Stripe and AWS
On the internal side of the location tracking front, ClearScale implemented a specialized utilities portal, backed by Amazon Cognito for user management, authentication, and authorization and used identity access management (IAM) roles to prevent actions by unauthenticated identities. New user profiles can only be created with Cognito Console.
This portal simplifies the generation of unique QR codes, as well as the encoding of NFC tags for Salvation Army's field workers. All operations are exposed via GraphQL (i.e., AWS AppSync) and backed by a NoSQL datastore, Amazon DynamoDB. The ClearScale team used AWS Amplify for JS to connect everything together, simplify provisioning, and cut down on costs. Any saved data can also be exported in batches with DSL-like queries.
In conjunction with the donation form, capable of decoding metadata from labels and attaching it to payments being processed, The Salvation Army can now track where donations were actually made without compromising the overall application or user security.
Step 3. Donations Location Tracking
The last major update that ClearScale provided involved setting up a sophisticated reporting capability for The Salvation Army. ClearScale used Stripe Donation Reports in combination with metadata collected from various sources to distribute funds appropriately.
Stripe sends a daily message to a dedicated Webhook about any newly available data, which initiates a workflow to process payouts made in the last 40 days. Here, AWS Step Functions is crucial for orchestrating complex exception handling, automated retries, and data processing before information gets passed to analytical reports.
All data is stored in a serverless relational database, Amazon Aurora Serverless, that can run queries quickly and on-demand, allowing for automated capacity scaling. Aurora is also a fully managed service, which means The Salvation Army’s tech team does not have to worry about back-end administrative tasks, like provisioning servers.
When all data is ready, a special Lambda function generates analytical reports that can process 100,000 records per minute with 50MB of RAM at peak usage. Reports are stored in Amazon S3 with server-side encryption.
Step 4. Stripe Donations Reports - Serverless Data Analytics
Once the solution was setup and operating, The Salvation Army immediately began looking for ways to make its mobile donation application even better by extending the options through which donors can make gifts. ClearScale and The Salvation Army added PayPal and Venmo as additional payment methods accessible through the Red Kettle. The Salvation Army’s donation app now covers all of the most popular payment options, which will improve Red Kettle financial metrics like gathered funds, donor conversions, and retention rate.
PayPal and Venmo Donation Methods
Main Architecture Diagram
After re-engaging with ClearScale, The Salvation Army was able to modernize its mobile donation application further and improve performance dramatically. Now, the organization's donation solution is built on top of VueJS and provides a seamless user experience regardless of the type of device in use.
With Stripe, The Salvation Army can sustain 4,000+ donations per second, far exceeding Braintree’s 25 donations per second. Patrons can also donate via Apple Pay, Google Pay, and credit cards with one-time or recurring payments. The Salvation Army also has the flexibility to easily add new payment methods in the future, like Microsoft Pay.
After one year in production, the new solution helped double the amount of funds collected through the Kettle Pay app. Meanwhile, no new bugs were detected, ensuring that technical obstacles did not prevent anyone from donating.
On the location tracking side, The Salvation Army can identify where donations were actually made and save metadata through a new utilities portal. This information can be packaged up in reports and distributed automatically to analytics teams daily.
Together, these updates enable the nonprofit to raise even more money for those in need, as well as dig further into donor trends at individual sites. At a time when mobile use is rapidly increasing, The Salvation Army can empower its mission by providing donors what they need for a seamless giving experience.