Media Realm recently worked on a project for our friends over at Bible Society Australia, to support the rollout of their new CRM/ERP, as well as make some much needed enhancements to their online fundraising experience.

This article outlines the project, which was rolled out in early December across the Bible Society Australia, Eternity News, and CPX websites.

The Project

The key deliverable for us in this project was to connect the website donation forms to their new NetSuite CRM. Along with this, there was also a need to refresh a lot of the underlying architecture on the site, update the form designs, and implement Digital Wallets (Apple Pay & Google Wallet).

NetSuite + Gravity Forms

The NetSuite CRM rollout was being delivered by Annexa – a specialist in this area. We engaged in weekly meetings with their solution architects, and scoped out the integration requirements.

We made the choice to switch the website to Gravity Forms, replacing a legacy Ninja Forms solution. This change was made because Gravity Forms provided much better developer add-on integration, allowing us much more customisation.

We built a custom Gravity Forms Add-On which leveraged the NetSuite SOAP API via the PHP SDK. Through an iterative process with Annexa and Bible Society Australia, we landed on the right combination of data types and fields to send through. With NetSuite being such a large system, and the data constraints being unique to each database, this process took some time. Making sure Subsidiaries, Payment Methods/Options, Cash Sales, Customer Updates, etc. are all correct is very important for the ongoing use of the system.

Due to the sluggish nature of the NetSuite API, we made an early decision to store & queue all API calls so the end-user is shielded from any CRM issues at the time of transaction. We built a locking and background processing system in Gravity Forms, and all entries are typically sent to the CRM within 90 seconds of the initial transaction being made. If there is an API failure, the entries are retried with a failure back-off. Site administrators can also manually reprocess entries if needed.

Email receipts are triggered via the CRM, so making sure this process is nice and quick aids the end-user experience and adds confidence that their transaction was processed smoothly.

We built a status screen in WordPress, allowing administrators to track the status of each donation and view all processing details. There is detailed logging per-entry on the site, and failure email alerting too.

Perhaps most importantly, all of this is built as a very clean WordPress object oriented implementation allowing for easy and confident maintenance by the in-house web team who have taken on maintenance after the launch. No one wants to inherit a mess of code, and I’m very proud of the standard of code delivered on this project particularly. The multi-site rollout was aided by a common Git repository for all fundraising related code, which is merged in at deploy time via a Git Submodule link.

Gravity Forms + Apple Pay + Google Wallet

A big end-user win in this project was delivering Digital Wallet support on the donation forms. Gravity Forms doesn’t support Stripe Digital Wallet out of the box at the moment, so we built a custom add-on to extend the native Stripe add-on with a new payment method field.

This add-on leverages the standard Stripe Digital Wallet buttons, and hooks into the Payment Intents API to orchestrate the one-button payment experience in each browser.

Credit Card donations are made via Stripe Elements. PayPal donations are bounced to the modern PayPal Checkout flow before being returned to the website.

A fun little part of the project was ensuring the customer’s details were saved back to the correct form fields in Gravity Forms after submission via Digital Wallet or PayPal. We designed a bit of logic to ensure these details made it into the actual form fields, not just meta fields, so every submission could be treated the same when processing it.

NetSuite + Raisely

Bible Society Australia does most of their regular giving via Raisely. Part of my scope was to assist the Annexa folks integrate the Raisely Webhooks with a NetSuite RESTlet. They did the dev work, but I assisted with the data and getting setup on the platform.

The integration they built ensures Raisely pledges stay synced with NetSuite Purchase Orders.

Wrapping up

I’m thankful to have had the chance to work on another project for Bible Society Australia – particularly such a large one. I’m confident the technology we’ve rolled out will serve the organisation well into the future.

I’d also happily recommend NetSuite as a strong contender for mid to large sized not-for-profits. It combines financials with CRM and ERP functionality and is really an all-in-one solution in this space.