CiviCRM with WordPress or Drupal: how does the integration work?
CiviCRM can run alongside both WordPress and Drupal.
In either case, CiviCRM remains the CRM. It stores contacts, memberships, events, contributions, activities, relationships and other constituent data.
Where the two platforms differ is in how that data becomes part of the wider website.
For a relatively simple site, the difference may not matter very much. If you mainly need CiviCRM for event registration, donations or membership administration, both platforms can provide the website around it.
The distinction becomes more noticeable when the website itself needs to work extensively with CiviCRM data.
Using CiviCRM's own forms
The simplest approach on either platform is to use CiviCRM's own interfaces.
CiviCRM can provide forms for things such as:
- event registration
- contributions
- profiles
- membership-related processes
Those forms can be presented as part of the website while the data is stored directly in CiviCRM.
If that is all the integration you need, the choice between WordPress and Drupal may depend much more on the rest of the website.
Building your own forms
Things change when you want a form designed around a particular organisational process rather than around CiviCRM's standard screens.
A good example might be an application form that needs to:
- create or update a contact
- create a relationship
- record an activity
- add a membership
- capture custom fields
- use conditional questions
Drupal has a well-established integration between Webform and CiviCRM.
Webform provides the form-building and user-interface layer, while the CiviCRM integration can create and update CiviCRM records behind it.
This allows fairly complex processes to be presented as ordinary website forms without first copying the information into Drupal.
WordPress can also send form data into CiviCRM, but the current integration landscape is more plugin-specific.
Some older integrations still appear in CiviCRM documentation despite no longer being well maintained. There are more current options, including CiviCRM Profile Sync and integrations built around CiviCRM's Form Processor, but they need to be assessed individually for the particular workflow.
So the question is not whether WordPress can integrate forms with CiviCRM.
It can.
The issue is which integration provides the functionality you need and how actively that integration is maintained.
What about displaying CiviCRM data?
Suppose your CRM contains 500 organisations and you want to create a public directory.
You might want visitors to:
- search by organisation name
- filter by type
- filter by location
- sort results
- view individual records
- see related information
This is where Drupal's Views system becomes important.
Views is Drupal's general-purpose tool for querying structured information and turning the results into pages, blocks, tables, lists and other displays.
With CiviCRM Entity, CiviCRM records can be exposed to Drupal as entities.
That allows CiviCRM information to participate in Drupal tools such as:
- Views
- Entity Reference
- Search API
- facets
So, for example, a Drupal View can query CiviCRM organisations directly, filter them and produce a directory without creating a separate Drupal content item for every organisation.
The CRM record remains the underlying record.
Does WordPress have an equivalent to Drupal Views?
WordPress has the Query Loop block, which provides a way of selecting and displaying WordPress posts and custom post types.
There is some conceptual overlap with Views.
But there is an important difference when CiviCRM is involved.
A CiviCRM contact, membership or activity is not automatically a WordPress post or custom post type.
Query Loop therefore does not simply become a query builder for arbitrary CiviCRM records.
There are ways to bridge the two systems. CiviCRM Profile Sync, for example, can connect CiviCRM entities with WordPress and Advanced Custom Fields, and custom development can retrieve CiviCRM data through its APIs.
But that is an additional integration layer.
Drupal Views, when used with CiviCRM Entity, can work with CiviCRM entities as part of Drupal's general site-building system.
Membership and website access
Another common requirement is to make website behaviour depend on someone's CiviCRM membership.
For example:
Current member → allow access to member content
Both systems can do this.
WordPress has CiviCRM Member Sync, which can synchronise CiviCRM membership status with WordPress roles or capabilities.
Drupal can also use CiviCRM information as part of its permissions and application logic.
Again, the outcome may be very similar for the user even though the implementation is different.
SearchKit is another option
It is also worth remembering that the CMS does not have to build every interface.
CiviCRM's own SearchKit can query CRM information and create searchable and filterable displays.
That capability is available whether the surrounding website is WordPress or Drupal.
For some directories, reports and administrative interfaces, keeping the whole process inside CiviCRM may be the simplest solution.
For others, the information needs to become much more closely integrated with the wider website.
The difference becomes clearer as integration gets deeper
Consider three different requirements.
"We need people to register for CiviCRM events through our website."
Both platforms can do that quite naturally.
"Members should log in and gain access based on their CiviCRM membership."
Both platforms have ways of doing that too.
Now consider:
"We want CiviCRM organisations, contacts and events to appear in directories, filtered searches, forms, dashboards and relationships throughout the website."
That is a different level of integration.
Drupal provides a set of general site-building tools that can work directly with CiviCRM entities.
WordPress generally achieves the same kinds of outcomes through more specific integrations, synchronisation, plugins or custom development.
Neither approach changes where the underlying CRM data belongs.
It remains in CiviCRM.
The practical question when choosing between the two is therefore not simply:
Does CiviCRM work with WordPress or Drupal?
It does with both.
A more useful question is:
How much does the rest of the website need to understand and work directly with the data inside CiviCRM?