Using Caldera Forms CiviCRM (CFC) for Membership Registration and Donations
As of version 0.4.4 there are three new processors in CFC: Membership, Line Items and Order Processors. With these new processors you can setup forms using Caldera Form’s conditional logic and layout options, map the data to CiviCRM, and take payments using either the Stripe or Authorize.net add-on plugins. A more detailed outline of what’s new in this version can be found on the civicrm.org blog. Here we provide a simple tutorial for how you can set up a similar form on your website.
For this solution to work, you will need this version of Caldera Forms plugin until it is updated to 1.7.3 on the WordPress.org plugin repository. The latest changes to CFC are in master branch here.
To get started, you need to have already set up your Memberships Type(s) and a Contribution page as you normally do in CiviCRM. The CFC processor retrieves the information from the Membership tab of the Contact record and makes that data available as line items that can be added as fields when building the Caldera form. This also becomes useful when using the Email Receipt option. Additionally, you can create Price Sets if you need to create a variety of pricing fields to be used on your CFC form.
Once everything has been setup in CiviCRM it’s time to build the form using CFC. Start by creating the layout of the form. Below is an example where we’ve added a few pricing fields:
Now that we’ve set up our pricing fields in CiviCRM, we can use the Auto-Populate or Bulk Insert / Preset option made available in the Caldera Form field settings. Which option to choose will depend on how granular we want the form to be and whether we’ll need the field options to be used as conditions for displaying additional form fields.
We’ll stick to our simple form for this example. Here we’ll use the Bulk Insert option; when using this method, the drop down displays a list showing all our CiviCRM price sets available for selection.
When we select the option that we want to use for this field we see something like the following:
- Label: By default, the Label is set to whatever the CiviCRM field name is + the price. We can edit the Label to reflect what we want our visitor to see. This is the only field you should edit on this form (the following two fields connect back to CiviCRM when the form is submitted).
- Value: This is the value of the field in the CiviCRM database; the data will be passed back to CiviCRM.
- Calculation Value: The original value is pulled from the CiviCRM database; this field is used to add up totals from the form before it’s submitted.
We’ll repeat this process for each pricing/costs fields that we want to include on the form.
Once we have the form setup and the pricing fields in place, we use the Caldera Forms Calculation Field to add it all up. This grand total is also used to process credit card payment and pass order details into CiviCRM once payment is made.
Now let’s setup the CFC processors needed to map our collected information back to CiviCRM. In our example form, we included (1) membership options (regular or student), (2) a subscription to a publication (which is already set up as a Membership Type in CiviCRM) and (3) a field to solicit an optional donation.
No matter what type of form we are building, the first processor we need is always the Contact Processor. The Contact Processor creates the connection between any activity being recorded by the form and the contact in the CiviCRM database. You can include up to 10 contacts on each form.
For our example form we’ll also need:
- two Membership processors: one for the member dues and the other for the subscription;
- three Line Item processors: to map the memberships to the contribution record and pass the financial data back to CiviCRM;
- Payment processor: to take online payments, in this case we are using the Stripe processor, but the Authorize one will work as well; and
- one CiviCRM Order processor to consolidate everything into a single contribution record.
Membership Processor
The Membership processors are where we set up the data that will be sent back to CiviMember. The setting fields for the processor include:
- Is a paid membership
- Use CiviMember’s default “renew” behavior, or “create a new membership”
- When creating a new membership record, you can preserve the oldest date of the first membership (i.e., the date the member first joined)
- Link to the appropriate Contact processor
- Map the magic tag used for selection in the CFC field
- Map CiviMember core and custom fields as needed.
If a price selection is not required and we don’t want $0 records included as part of the Contribution, we can use the Conditions tab to denote when the processor should be applied. The conditions will be applied across all the processors being used. For example, in our form the subscription is not required, so we set the condition for the Membership and Line Item processors to only pass information to CiviCRM if the subscription has been selected.
Line Item Processor
The Line Item processor is where each price set field is mapped and a relationship is set between the membership and contribution records. Each Membership processor adds system generated magic tags that looks something like this {civicrm_membership:processor_id:fp_11525405} and can be selected in the Line Item Processor as seen here:
If we use multiple Membership processors, we’ll need to add a Line Item for each one and map them accordingly. Each Line Item processor’s settings will look like this:
We also need to add one more Line Item for the donation and map it to an “Allow Other Amount” field or a text price set field. In this case we’ll use the Allow Other Amount field of a Contribution page.
We can repeat this process as many items as needed to map each of the subscription/donation options we made available for selection on our form.
Order Processor
The Order processor is the last one used (after the Payment processor). It takes the information from each line item to create the contribution record in CiviCRM. Here’s an example of how the Order Processor might look using Stripe.
Once the form is setup and tested, we can accept membership dues and donations. A new contribution record, along with all its associated membership details, will be created in CiviCRM.