Fíonta frequently works with clients with a need to share data between their Salesforce instance and their open source website (such as WordPress or Drupal). As an example, an organization’s events may “live” in Salesforce, but there is interest in having event information displayed and searchable on their website. Or, an organization may wish to allow its constituents to log into a members-only area of a website, update their contact information and enable that updated contact information to automatically sync back to Salesforce. To solve these challenges, Fíonta has developed a utility that we call Baja, which:
- Displays and/or syncs Salesforce data with a website
- Lives independently of Salesforce and a website, eliminating common integration headaches
- Can be maintained and modified inexpensively, at any time
Overview of Integration Approaches
As covered in a previous blog on WordPress / Salesforce integration, there are a variety of methods of allowing for data from Salesforce to display on a website, be updated, and written back to Salesforce. In the nonprofit / association world, common scenarios include the display on a website or password-protected areas of a website of funders, grantees, a member directory / membership information, event calendar / list, resource directory, staff lists or a history of transactions (such as donations, events attended, or volunteer-related).
While Salesforce has an Application Programmers Interface (API), programming website / Salesforce integration using the API is not for the faint of heart! Existing tools have provided simplified integration for specific kinds of scenarios (such as Soapbox Engage) – but what if there is no tool that provides control over the look-and-feel or specific data to integrate? Another approach often taken is to duplicate data in Salesforce in the CMS with a synchronization process in between. This approach requires both complex, database extensions to the CMS and also requires Salesforce API calls to ensure the data is kept in sync. What if all you really needed was an easier way to leverage the Salesforce API to have maximum flexibility with minimal effort? Enter Baja.
What is Baja?
Baja is middleware – a small service application that runs independently – which exposes (i.e., makes available) Salesforce data to an external system. It is primarily intended to integrate Salesforce with a Content Management System (CMS) like WordPress or Drupal, but it can be used with any system to synchronize data between Salesforce and a third-party system. Baja removes the complexity and fragility of a traditional data sync by offloading some of the complex functions involved in system integration and data manipulation from the host system. Interactions with Baja are a simple request and response, and it does not require extensions to the CMS data structure or mechanisms in the host system. In other words, your website can behave like a website, and not be heavily customized to perform functions for which it is not well-suited.
Baja allows complete customization of the look and feel of the data coming from Salesforce and displayed on a website. Most integration solutions are configuration-driven and offer limited options for custom instructions to modify the data in between its retrieval from Salesforce and its use / display on the website or in another system. For example, states may be stored by their full name in Salesforce (Alabama, Arkansas…) but displayed with initials on the website (AL, AR…). Baja is designed to provide full control through custom instructions / custom code in addition to configuration. By excising integration logic and placing it in Baja, the resulting integration is fully customizable, flexible, and easily adjusted at any point in the future – unlike traditional direct integrations.
Case Study: Mid-Size Membership Association
One of Fíonta’s association clients had an existing WordPress website that was already quite heavily customized and difficult to maintain. and the organization needed to add a significant, highly customized, Salesforce integration to display Salesforce data dynamically on the website. The integration needed to expose several Salesforce object types, with each object record type handled individually. Read and write access needed to be governed, not only at the object or record type but also at the individual record level.
Rather than take an already complex implementation and make it even more complex, Baja was able to offload the majority of work from the website CMS, and simplified the integration in the situations where syncing was required. This separation allowed the client’s web development team to focus on their specialty, CMS development while exposing Salesforce data in a minimally invasive way. The client’s hosting configuration also allowed Fíonta the ability to deploy Baja without the need for any additional infrastructure.
Fíonta has seen increased interest in data integrations across our portfolio of nonprofit and association clients. Much of this interest is driven by system proliferation, a common scenario in which data becomes spread across various systems, creating data “siloes”. Additionally, organizations have become frustrated with typical data integration solutions, such as Drupal and WordPress modules that connect directly to Salesforce. These integrations can be disappointing in their brittleness and rigidity. These types of syncs are generic, while an organization’s needs are specific.
Baja avoids most historical problems with existing CMS / Salesforce integrations by acting as a passthrough to Salesforce, performing lookups (i.e., data retrievals) in real time – eliminating the need to store data in the CMS in addition to in Salesforce. Baja can also support requirements unique to the organization itself – for example, which records are synced (perhaps not just Contact records, but only Contact records of active members to be displayed on the website), or support a volume and pattern of syncing that would have overwhelmed a traditional sync. A traditional sync might run into Salesforce’s API limits or limits placed by a web host. Baja provides a drop-in solution that solves common challenges but still allows you to solve problems that cannot be addressed through configuration alone. And Baja’s processing speed allows it to fit seamlessly within the host website as if the content were natively present.
Perhaps most importantly, Baja aligns with a major trend in best practices for web-enabled systems: the “separation of concerns”. An organization’s technology ecosystem works best when each element of the system has a clear, defined role: a website handles content and transactions, a CRM handles constituent data, and a service (Baja) brokers data between the two. Traditional syncs and integrations that live within a website are often not compatible with modern, optimized hosting services, such as Pantheon or Acquia. If an organization is on such a host with these types of restrictions, the only choices are to move the website to a new web host, or abandon an integration altogether.
When is Baja a Good Fit?
Baja can support any or all of the following scenarios:
- A website (or other system) needs to retrieve and display data from Salesforce in real time, or at regular intervals
- Data must be synced between the website and Salesforce and between Salesforce and the website (bidirectional)
- Data must be transformed in some fashion during a sync
- Requirements for integrating systems may evolve over time and need to be able to be updated inexpensively
When Should I Consider a Different Approach?
An organization may be better off with an existing off-the-shelf integration solution if:
- The desired integration consists of simple logic that an existing module can handle perfectly, with little likelihood of future change
- Data must be truly local to a particular system
Salesforce integrations need not feel like an overwhelming challenge, nor should they be constrained to pre-built modules that may not fit an organization’s needs. The Baja approach – placing a lightweight broker in between Salesforce and another system(s) – provides real efficiencies and benefits for any organization looking to integrate. If this sounds intriguing and you’d like to discuss further, please let us know!