The project plan focused on implementing and migrating the Indiana data from the LNC (Libertarian National Committee) CiviCRM to a WordPress (WP) and CiviCRM instance in multisite mode owned and controlled by the Libertarian Party of Indiana (LPIN). This operates as a network of sites for its state and county affiliates. The network officially launched on August 30, 2023.
LPIN previously utilized the CiviCRM multisite at the LNC since the fall of 2020. Before that, they came from WildApricot which served as their membership management solution. During their use of CiviCRM, they saw significant uptick in fundraising with 2021 reaching $117,044. In 2022, the focus was on candidates, in particularly their SoS candidate fundraising so it came in at $72,184.
For their volunteer users, their weekly average user rate (WAU) ranged from 15-25 users; the highest in the country. And for their power users, their reliance on it to engage and cultivate members was essential.
As a previous co-creator of the LNC CiviCRM system, I knew LPIN consistently led the states in maximizing the use of CiviCRM and this was major asset to the project as a whole. Here’s why:
- Issue Detection: When an issue arose it was clearly defined so we could to take clear action on it.
- Feedback: Their feedback drove our enhancement and feature improvement roadmap.
- Training: Many other states sought training from their power users and they led the User Working Group in providing training to other states on a weekly basis.
- Being successful: Hard numbers don’t lie. LPIN understood how to use the tool and their fundraising proved it.
Being a SaaS-oriented solution, states relied on the LNC to maintain and provide support (directly or thru vendors) which had massive economics of scale benefits.
However, changes within the national party and a subsequent priority shift necessitated that LPIN consider an alternative. Even before this point, LPIN was already outgrowing the baseline level of support offered and in search of a higher level of support and control. Very simply, they desired a paid plan that allotted more access to WordPress and CiviCRM and additional support hours.
Without a CRM system, data is under-leveraged, scattered and can fall into a poor condition. By having state and local volunteers working within the same system, data sharing is instantaneous and data-silos are a thing of the past. When an interaction occurs at one level, all affiliate levels see it and do not have to sync data. And to be honest, manually syncing doesn’t last and leads to inconsistent results. It’s just not sustainable or a wise use of time.
This post will focus on how an open-source CRM solution was built to serve their chapter based organization and campaigns. The aim? To have full control over their CRM with similar functionality using the same WordPress and CiviCRM open source tools. The path was clear:
- Preserve their data
- Migrate WordPress and adapt it to the new CiviCRM
- Make targeted improvements
- Train LPIN to master their CiviCRM and the associated day to day tasks
- Immediate access at all levels for a relevant volunteer based upon their position the party
- Volunteers focus on “sales” and not on back office operations or system setup
- Leverage local volunteers to recruit and retain state party members
- Quicker outreach to new signups to invite them into local affiliate activities (events, campaigns)
- Maintain data under one umbrella encompassing county affiliates
- Build supporter data for future candidate campaigns
- Data retention and improvement (avoid changing systems every couple board terms that creates instability)
“The LPIN is no longer subject to the funding priorities or capabilities of the national office when it comes to the management, development, and usage of our CRM. By having our own self-hosted CRM we can decide what applications or functions we want turned on or off. We decide when to hire a developer for an enhancement or requested feature. Our support tickets get resolved within hours, not weeks or months because we are the first priority for our support team.”Evan McMahon, LPIN Chair
A fundamental challenge on scaling a system that has a wide range of users is properly permissioning various screens and actions. Their users still access CiviCRM admin, so simplifying user menus, CiviCRM search actions and building dynamic reports were critical to end user satisfaction.
The hierarchy chart below outlines the access levels:
|Level of Access||Relationship||Description|
|Administrator||N/A||For people in charge of the website including IT Director and Chair. Full system capabilities.|
|Super State Admin||Add relationship to their state affiliate||For people in charge of the website including IT Director and Chair. Cannot install extensions or plugins.|
|State Admin||Add relationship to their state affiliate||For power users performing administrative functions such as user access and reports. Full data administration capabilities|
|State Leader||Add relationship to their state affiliate||For all other state level users managing data and website content|
|District Leader||Add relationship to their regional affiliate||For officers of district affiliates, e.g. Congressional districts|
|County Leader||Add relationship to their county affiliate||For officers of county affiliates|
|County Volunteer||Add relationship to their county or affiliate||For newer volunteers and non-officers of county affiliates|
In short, the goal is to empower the most local volunteers to do effective outreach to new signups, current and former members and voters. From the CRM side, making filterable dashlets that can quickly pull up members, volunteers and new subscribers allows LPIN volunteers at all levels to engage their constituents collaboratively.
From a website side, making it simple to add local events and update content was a top priority.
The areas that involved the most permissioning are highlighted below:
CiviCRM Search Actions
Search actions, a place of great power and … potential data management woes. This split apart search actions into end user actions and admin actions and aligned them along the user levels with 4 levels of search action permissions.
For both Advanced Search and Search Kit searches, civicrm_searchTasks and civicrm_searchKitTasks hooks to control what types of actions can be done. Are you a county leader? You can log phone calls / other activities, generate email lists but you can’t batch update contacts, delete contacts or contribution data. TLDR: Data Admin type tasks that can have crippling effects if not used properly.
These types of measures are essential guardrails to ensure that data integrity remains high.
The major benefit of taking this approach via hooks versus configuring on each Search Kit Display is that the actions are dynamically available based on the access level and are globally enforced. Just set it and forget it. For extra security this is a WordPress MU plugin so there is little chance it can be deactivated accidentally.
WordPress menus were controlled again to split admin versus end user capability.
Contribution Access Control
Who can manage contributions is controlled depending on what access level you have. For example:
- Super State Admins can view, add and delete all contributions
- State Admins and State Leaders can add, view and edit all contributions
- District Leaders can view state contributions, edit their own and county affiliate contributions.
- County leaders can add county contributions but not edit state contributions
- County Volunteers can only view county, district and state donations
Additionally, candidates can add their donations and tag them to their campaign.
Multi-Level Permissioned Relationships
The LPIN has a state, district and county organizations structure. To have users only see the correct contacts at each level, the system exclusively uses the relationship approach via the Related Permissions extension. Contacts are assigned to the lowest level and inherited down through the hierarchy.
Custom WordPress Dashboard and Help Menus
We all know how not so useful the standard widgets and the WordPress welcome panel are on the website dashboard. In place of the normal WordPress dashboard is a custom WordPress Welcome Panel. This takes over the default welcome panel and provides quick links to WordPress content creation or reports that all users find beneficial.
In a similar vein, the help menus in the top right of each screen have custom messages based on the system architecture and ways to get support.
Multisite Global Searches
Network-wide menus items are added to make it easy to globally provide access to common reports to all county users on all their sites. These include members, donors, subscribers, volunteers, run for office inquiries. These leveraged the modern search UI with Search Kit and Form Builder.
Simplified Data Entry
Additionally, profile forms for creating new individuals, committees and candidates were built. To generate candidates in a simplified way we leveraged Caldera Forms to create relationships between the candidate and their individual profile. Note: I look forward to converting these to Form Builder as an enhancement down the line!
Voter and Candidate Data Capture
Customizing CiviCRM for political party purposes involved making a data model that is reflective of voter data and constituent activities. This involved creating voter registration fields such as Voter ID, registration status and an individual’s district boundaries. The system also allows detailed tracking of issues and yard signs.
L2 is a data append service that has been used consistently by the LPIN and the system is ready to accept this external data source.
On the candidate front, an extensive set of fields allow tracking of the campaign’s overview, results, and opposition. This is synced with the public, front-end directory so campaign data management is only necessary in one place.
As part of a custom workflow for granting user access, I implemented a strict process flow. First, a volunteer submits a request that details what district or county affiliate they are involved with along with core contact information. This auto-generates the contact and alerts admins of the new signup plus a dashlet report. Subsequently, this action automatically creates a Non-Disclosure Agreement (NDA) activity to be electronically signed by the user. To achieve this, strict controls to restrict the NDA field are put in place so it can only be “self-signed”. I once again leveraged Caldera Forms for this workflow.
Once a user signs an NDA, they show up on a user request report that allows a state admin (or any user with user management permissions) to generate the user directly from this screen only; the WordPress Add User screen is redirected to this page.
This prevents the unfortunate behavior on multisite of routinely creating a duplicate because the name and email did not match the defined dedupe rule. Therefore, we sidestep that issue entirely and let CiviCRM be the starting point for user creation.
CiviCRM Data Migration
It’s not typical to hear of a CiviCRM multisite to CiviCRM multisite migration, but we did it. Importantly, we exported out only the Indiana data set. From there it was migrated like any other system.
An area of great challenge was ensuring that the Stripe webhooks continued to process, as LPIN had over 583 recurring contributions to keep active and reporting back properly. This was a must-have requirement as the system would be too onerous to update manually. To that end, most of these were memberships, so linking the contributions to the memberships was essential. Piecing the data back together involved direct data manipulation and verification in MySQL; tying contributions, memberships and its history log, webhooks, Stripe customers all back together. You can import these separately, but the goal was to have minimal disruption or degradation of the data set. So, mirroring CiviCRM behavior achieved the following:
- Successful processing of membership recurring contributions
- Membership history log
- Event participants linked with associated contributions
Or put another way, a database that had no data loss. In total we migrated all contacts, their contributions, memberships, activities and relationships and their Mosaico email templates. A summary is below:
We hit some delays after having the contributions process but not trigger membership renewal. I sought external developer support in getting recurring membership contributions across the finish line. Our missing step was adjusting the CiviCRM line items for the recurring contributions that were imported; a small but critical detail!
With full control comes responsibility and caution. To empower LPIN we’ve started a training program so the LPIN’s IT Director and their team can manage the day to day tasks.
This involves generating contribution pages with progress bars, event pages using price sets, understanding Search Kit, list segmentation, email marketing, user management and data imports from candidates, the Secretary of State, L2 data append service and the LNC data dump to keep national membership data up-to-date.
LPIN is using the Managed CiviCRM support model, so CiviCRM updates are taken care of and any issues they need to escalate are handled by us. They are using Liquid Web Managed VPS hosting, and I actively monitor and intervene if there are any issues at that level.
“Andy Burns took the time to fully understand our immediate needs and limitations. He also worked with us to develop a process to keep our short and long term development/features goals moving forward at our pace. This ensures that implementations done today also consider the impacts on future planned enhancements.”Evan McMahon, LPIN Chair
Benefits of their CiviCRM Migration
- Full control of the system
- Full access to administering CiviCRM data (imports, Search Kit, Form Builder)
- Ability to maintain, adjust and rollout new features as they wish without any bureaucracy (asking a middle-man).
- Inspiring user confidence
- Connect county sites and payment processors
- County affiliates mass emailing
- A support model that is clearly defined and meets their needs
Having a CRM that aligns with your organizational processes and data needs is essential for success. Are you a Libertarian organization that wants to know more about the benefits and how the system works in more detail? Get in touch and I’ll be happy to extol the benefits of open source software like CiviCRM and how they can advance your mission.