One of our clients recently upgraded to CiviCRM 4.7.29 and then their existing Contribution page started giving a 500 Server Error.
They asked us to debug and we found that the issue was a missing classname and we traced that to the Pay Later option. Then we found this Pay later not appearing as payment option which looked similar and says it was fixed for CiviCRM 4.7.30.
We upgraded their site and indeed their bug was fixed also.
CiviCRM is a fantastic tool right “out of the box” but there are also some important features not available in the core. Therefore we have CiviCRM Extensions, which are add-ons that give CiviCRM extended functionality. These extensions cover all kinds of features such as Webform integration, alerts, discounts, volunteer management, extended reporting and more. Almost all extensions work on Drupal and WordPress, and also Joomla.
The official directory maintains a centralized list of all “official” extensions and that’s here: Extensions Directory. But you don’t normally need to visit there because extensions can be installed from within your own CiviCRM site.
Installing Extensions
The basic procedure is quite easy. When your CiviCRM is set up correctly, extensions can be installed from within your site. Go to Administer > System Settings > Extensions. Then click on the Add New tab.
You should see there a list of extensions that are compatible with your version of CiviCRM. You may not see all the extensions that are in the official Extensions Directory as not all will be compatible with your particular version.
To install one, click on the Download link and then on the next page click on the Install link. The rest is automatic.
Developers
Check out the civix tool. The CiviCRM describes it like this:
The civix command-line tool is the community-endorsed method for building your CiviCRM extensions.
It sets up the basic structure for you, automatically, to build your own extensions.
We are often asked if CiviCRM can be installed in a subdomain and the answer is yes. For details how, just see our post called Nextcloud in a Subdomain.
In this post, we are going to clarify what CiviCRM is in very simple terms that anyone can understand.
Overview
CiviCRM is a free “CMS” (Constituent Management System) which means it’s a software package that allows you to manage a database of people, such as your donors, recipients, volunteers, parents, teachers, care-givers etc. You can view them, edit their details, email them, record activities and donations and more. They then can make contributions online, sign up online for events, sign up for memberships and more.
Basic Contacts Features
Each person in CiviCRM is called a Contact. Getting your contact list into CiviCRM is not a trivial matter and we discuss the basics of that process on our Quick Guide to Importing Contacts in CiviCRM page. Once you do have your contacts in, searching for the one you want is as simple as typing a few letters into the search box and then a list of matches pops up:
We click on the contact we want and then see all of that person’s details:
Now we click on the Edit button and can edit those details:
Events
Creating events in CiviCRM is easy and provides the option of allowing online registration as well. Here’s a look at part of the first step of the event creation process in CiviCRM:
Mailers
Bulk emails are a very popular feature of CiviCRM. You can send an email to one contact at a time, of course, or you can send a bulk email to all your contacts, or to just some of them. You can define groups of contacts and email them or search on criteria such as all contacts in the Boston area, and then send an email just to those contacts. Here is the first screen of the bulk mail creation process:
Contributions
Most NPOs need contributions. Of course you can manually record contributions in CiviCRM, but there’s an easier way also. Using the website to collect contributions automatically via a credit card is an effective way as your donors can give whenever it’s convenient for them. CiviCRM lets you create a contribution page, customized with whatever details you want, and then your contacts can visit there and donate. Here is the first screen of the contribution page creation process:
Other Features
There are lots of other features as well, such as campaigns and petitions and email tracking and reporting.
We hope this post, however, has given you an overview of the basics of what CiviCRM can do.
Outgoing email in CiviCRM on our servers works perfectly and it works “out of the box” with no configuration required. We also support bounce processing and other inbound email processing, but we will cover those in another blog post. Today’s post is about sending emails from your CiviCRM to your constituents.
Sending bulk mail involves two issues, from a technical standpoint. One is sending them out and the other is making sure the recipient receives them.
The second issue is usually easier, so let’s talk about that first. Every mail provider has its own policy with regard to incoming email. In general, to avoid the rate limits applied by some mail providers (such as Yahoo, Hotmail, Gmail, etc.), we recommend sending no more than 50-60 messages per minute. We would also recommend that messages are sent in batches of up to 2,000 per hour. Sending more than that can trigger anti-spam rules on some providers and then they block your emails.
Regarding sending all these emails from our servers, how precisely this works depends on the type of hosting you have with us, that being shared hosting or VPS.
Shared Hosting
We definitely don’t recommend sending more than 100 or maybe 200 outgoing emails per minute. Since our cron on shared hosting accounts runs only once every 15 minutes, that amounts to a maximum of 800 per hour.
You can configure your CiviCRM to send 100 (or 200) emails per batch by putting that number in the “Mailer Batch Limit” box on the CiviMail Settings page, which you can find in the menus under Administer — CiviMail — Mailer Settings.
VPS Hosting
On our VPS accounts, the cron can run every 5 minutes or even every minute. Since it runs more frequently, we definitely recommend that you set your CiviCRM batch throttle to be 60 or maybe 100. That is fine if all of your email addresses are valid. Our servers are configured, maintained and optimized for web hosting, not for bulk mail delivery. Thus if you would inject 8000 emails at once into the the mail queue, or clog up the queue with hundreds of messages with invalid addresses, we may be forced to delete the messages and/or suspend the SMTP service.
You would only be sabotaging yourself as a VPS is a private server, but no one, especially us, want to see that happen.
But if set your CiviCRM “Mailer Batch Limit” to 60 or 100 per minute and run it every 5 minutes or every minute, that should be fine.
Also, please keep in mind that we have a very strict anti-spam policy, and any email campaigns should be very carefully contained, meaning that you should not send messages to people that have not agreed to receive email from you.
Stuck with your CiviCRM? Looking for online documentation or a place to ask your questions?
There are a few such places.
The first two are the CiviCRM User and Administrator Guide which is an online book. You can read it online, and use the search features, or you can download your own copy.
The second place is the CiviCRM Documentation wiki, which is an online wiki with a lot of the same information, but in a different format. Since it’s a wiki, you can also get involved and help edit it if you find something that needs fixing.
Those are the main documentation locations.
For Q&A with real people, the CiviCRM Stack Exchange site is the place. The community is very active there, answering most questions within hours.
If that didn’t do it, the last place we can suggest is the CiviCRM Help page, which has the links above, plus a few more ideas.
Importing Contact data is one of the most common initial activities required for a new CiviCRM site (if you’re still wondering what CiviCRM is, however, see our What is CiviCRM page). The process usually is either fairly easy, or quite complicated. In this post, we will review the basic ideas and if you’re lucky enough to have the “fairly easy” kind of import, then this will be sufficient. If you get stuck, then you will need to find more in-depth resources.
There are two steps to importing data. First is to export the data from wherever it is and then the second is to import it into CiviCRM.
Export
This is a step that depends on what system or service you have your data in. The basic idea is that you must the data out in either CSV format or in Excel format. Most tools will have a feature that allows you to export your Contact data in one of those formats. If there is an option, you should choose to Yes show column headers in the first row.
If you have your export in Excel, then open that in Excel and then you can convert that to a text file via the Save As command. Click the File tab, and then click Save As. In the next window, choose the “CSV (Comma delimited)” format and then save.
Import
Within CiviCRM, click the “Contacts” menu and then click the “Import Contacts” option. Leave the “Data Source” alone and click “Browse” and choose your CSV file.
The rest of this page is fairly straightforward — you must read each item and decide what selections are appropriate for your particular situation.
When you’re ready, click “Continue” — don’t worry, nothing “real” will happen yet.
On the next page, you need to match up each column in your CSV file to a field in CiviCRM. If one column doesn’t match up to anything, you can skip it.
When you’re done, click “Continue” again, but still don’t worry, no data will be imported yet.
Now you are on a page called “Preview (step 3 of 4)” and you can see what is going to happen in the last and final step. On this page, you may see errors or warnings. Take those seriously and try to fix them if you can, and then use the “Previous” buttons to get things right.
When it seems as good as it can, click “Import Now.” This is going to actually import your data now.
On the last page “Summary (step 4 of 4)” you will see a summary of how it went.
This is the most common question we get about CiviCRM. For CiviHosting clients, our answer is very simple:
We will make a cron job for you!
But if prefer to do this yourself (or if we are not your host), we definitely recommend you do and below we will show you two ways how to do it. We recommend using the CLI method, but sometimes it fails to work for reasons not always clear. In such a case, you should try second method, the URL method.
Some of the details below are only relevant for CiviHosting clients — if you use a different host, just adjust those for your host’s Control Panel.
The CLI Method
There are two steps to this method — first we make a .sh file which is the “command” file that the server will execute, and the second step is to create the cron entry to actually execute that file.
Create the .sh File
We recommend putting this file in a private place, for a few reasons. One is so that it won’t get overwritten when you run a CiviCRM upgrade and the second is that we certainly don’t want anyone finding it even, because it has a username and password. To start, login to your hosting Control Panel and click on the File Manager tool. Then at the top of the file list, you will see:
Location: /home/username/www
where username is your login. Click on your username there. Now on the right side, click on the link “private”. Now you are in the private area of your account — any files here are not accessible in any way to the public.
The bottom box there is labeled “Create File:” Put in the box there civicron.sh and click the button “Create File”.
Now at the top you will see a button “Edit.” Click on that to edit your new file. In this file, we need to put some code.
For WordPress, use this:
#!/bin/sh
wp --user=admin --url=mysite.org --path=/home/username/www/www/ civicrm api job.execute auth=0
where you replace “mysite.org” with the actual URL of your site. The documentation page Scheduled jobs also mentions that you can add the –quiet parameter to that command to silence non-error output.
It is also possible to use the “cv” CiviCRM CLI Utility. To install it, you would use this code from the CLI:
cd ~/private
GET https://download.civicrm.org/cv/cv.phar > cv.phar
and then your cron job would look like this:
#!/bin/sh
cd ~/www/www
php ~/private/cv.phar api job.execute --user=admin
Go to the Cron Jobs section of your hosting Control Panel. In the section on that page called “Schedule a cron job” there is a small icon to the right of the first box. Click on that and a small window will popup. Click on “private” in that window and then on “civicron.sh” and then click the “Select” button.
Now in the box on the main page of the Control Panel you should see “/private/civicron.sh”
In the ‘Choose start time:” selector, you can choose “Every 15 minutes” or “Every 30 minutes” or “Every hour” and then click “Set cron.”
Testing
Now to test, click the “Run” button to the right of your new cron job. On the next page, you should see no output. That means it’s working. If it fails, then you may be able to determine the issue from the message — like if it says the username and password aren’t valid, then you must fix those. You can click on the link to the .sh file on the Cron Jobs page to edit.
But if you get another error, one easy trick is to try to switch to the URL method.
URL Method
Everything here is the same as above, except that the contents of the “/private/civicron.sh” file are a bit different. Here is what you should put there for WordPress:
#!/bin/sh
GET 'http://mysite.org/wp-content/plugins/civicrm/civicrm/bin/cron.php?name=admin&pass=MyPass&key=XXX'
and this for Drupal:
#!/bin/sh
GET 'http://mysite.org/sites/all/modules/civicrm/bin/cron.php?name=admin&pass=MyPass&key=XXX'
As noted in the comments below, if your site has SSL on it (and that comes free from Let’s Encrypt for all CiviHosting clients) then you would want to use https instead of http in the URL.
Now you must replace user with a CMS user that has full access to CiviCRM and pass with the password of that user. Then you must find your CiviCRM sitekey and replace XXX with the full sitekey.
To find your sitekey, you must first find your civicrm.settings.php file. For WordPress, it’s usually here:
wp-content/uploads/civicrm/civicrm.settings.php
For older sites, it may be in “wp-content/plugins/civicrm/civicrm.settings.php.”
For Drupal here, it should be here:
sites/default/civicrm.settings.php
So you must find that in the File Manager, and then click on it to edit it. A bit more than halfway through the file, you will find a line like this: