04 January, 2016

Last week was a busy one for the CiviEvent Widget plugin for WordPress.  Not only did it cross the 2,000 download threshold, but new features were added to help you display upcoming events in a flexible way.

First, an overview of the plugin.  I wrote CiviEvent Widget in response to the fact that CiviCRM sites on WordPress need an easy-to-use way to show their upcoming events.  Prior to CiviCRM 4.6, CiviCRM wouldn't render more than one instance of itself per page, including widgets; for example, you couldn't have CiviCRM list upcoming events in the sidebar alongside an individual event page....

Read more
02 June, 2015

I am Tahir Ramzan, pursuing Masters in Computer Science at Virtual University of Pakistan. I am working on refunds, partial refunds and partial payments development for CiviCRM. Parvez Saleh and Joe Murray are mentoring this project.

Refunds and Partial Refunds:

Often, we need to tackle situation where one needs to make partial or full refunds. After this project users will be able to make refunds with friendly user interface and proper database records.


  • How to represent an administrative fee for refund? Who will pay this, buyer or seller?
  • How to link the refund with the original contribution?
  • Which method to use for processing refunds?  Check, payment processor or both.

Partial Payments:

Partial payments on the other hand need to be done when someone pays a part of payment contribution in installments. This will be very useful for CiviCRM users for...

Read more
25 February, 2015
Filed under API, Documentation, Tips

Whether you're just getting started with customizing CiviCRM or you already think you know everything about it, I invite you to spend a few minutes playing with the new API Explorer in 4.6. You'll be glad you did.

New look

Building on Xavier's great previous work (thanks X for writing the original explorer) I rewrote the interface in 4.5 to reflect new api techniques and take advantage of new user-friendly UI widgets like select2. In 4.6 I've added even more goodies, so be sure to upgrade when it is released - some of the features listed below (marked with a *) are only in 4.6.

Interactive option lists

No need to type in secret codes, you can...

Read more
29 January, 2015
By Eileen
Filed under API

In general we try to keep the CiviCRM developer interface with CiviCRM as stable as possible. Ideally hooks, payment processor extensions and api calls should change as little as possible between releases.

In every release there are some improvements and additions. Generally the place to find out about these is the api change log - ie,


Unintentional changes can also happen. Our first line defence against these is the unit test suite. Basically if something is tested then with very few exceptions it should continue to work. So, if you want your code to be stable - get to know our tests!

Very very occassionally we make intentional changes to api behaviour. In 4.6 I have changed the behaviour of relationship api so that it will no longer fail if you try to update the contacts on an existing relationship. This error doesn'...

Read more
16 January, 2015

Do you use CiviCRM for contributions, pledges, and related financial data? Does your organization use the financial reports in CiviCRM? Does your organization export data from CiviCRM to your general ledger? Or do you want to start doing some of these things?  If so, your input is needed on CiviAccounts.  (You do not need to be a CPA to give input, but having a general understanding of how CiviCRM financial areas work currently is helpful)  

Give your input via the survey at: http://pogstone.com/civicrm/petition/sign?sid=15&reset=1    

(Thanks to the CiviCampaign component, I am using CiviPetition to handle my online surveys)

Background:  One of the bigger structural changes to CiviCRM in the last few versions has been CiviAccounts. CiviAccounts includes many things you may use day-to-day, such as using multiple financial types within a single priceset, partial...

Read more
15 January, 2015
Filed under API, Extensions

This week we have been working for MAF Norway to automate the sending of SMS, E-mail and PDF creation. What we have done in the past for them is that we created a Trigger/Action module to automate their donor journeys. The actions in the trigger/action module are API calls. But what was missing up-to-today was to functionality to send e-mail, or to create a PDF Letter or send an SMS by invoking an API Call.

Note: the trigger/action module is a very experimental module just developed for the MAF. At the same time we are developing a CiviRules modules which will work in a similair way as the Drupal Rules module.

This week we developed three extensions to accomplish this:


Read more
12 November, 2014
By Stoob
Filed under API, Extensions

CiviCRM has had an array of powerful import tools for as long as I can remember but the availble options have been limited. Contacts, Contributions, Participants, Memberships and Activities...sure....but what about the Events themselves? Sorry. What about Grants? Nope.

Enter the API CSV import GUI extension, created by awesome community member Eileen McNaughton! That's a whole lot of acronyms, but basically what it allows you to do is import potentially any entity into Civi. Grants? Yes. Events? Yes. Cases? Yes! Pledges? Why not?

Translations: For those that don't know, CSV is a common, simplified spreadsheet format that can be opened using Excel, Libre Office, etc. API is some programmer-speak and GUI just means you...

Read more
01 December, 2013
By totten
Filed under CiviCase, API, Extensions

CiviCase is generally described as "a container for activities". As a container, it's well-suited to two scenarios:

  • The activities in the case are identified and scheduled on an adhoc basis -- there's always a person (a case manager) making the decision about when to schedule the activities.
  • The activities are performed according to a fixed timeline based on a reference date -- e.g. the first meeting is scheduled 3 days after the case opens; the next meeting is 14 days after; etc.

However, a container of activities can be useful in other scenarios -- for example, consider the case of hiring a volunteer to work in the children's art program:

  • The director of the children's art program needs to meet with the volunteer to determine whether she has the proper skills and experience in art.
  • The HR manager needs to obtain consent and details from the volunteer for running a background check...
Read more
26 July, 2013
By Eileen
Filed under API, Architecture, CiviCRM

In New Zealand workplaces it's common to see a sign in the smoko* room saying "Your mother doesn't live here - do your own dishes".


People tend to follow this instruction as longs as: 

a) there is not already a pile of dirty dishes next to the sink

b) and they can see where to wash the dishes, and where to put them afterwards.

c) their colleagues aren't setting a bad example.


If they see a pile of washed cups beside the sink, another pile on a shelf above the sink and a third pile in a cupboard on the other side of the room if might not be obvious to them that the sign writer meant them to notice the new dishwasher recently installed below the sink & that was the correct place to put the dishes (and actually they didn't need to wash them first).


Code maintenance can be bit like that. If you tidy up a chunk of code people untidy it because

a) they are copying...

Read more
24 May, 2013
By totten
Filed under API, Architecture, Extensions

CiviCRM configuration is largely driven through the web interface and the database: if an administrator wants to add a new "report" or new "relationship type", he can accomplish this with a few clicks of the web interface. The new item is inserted into the database and immediately becomes live. This is great for web-based administration, but it's inconvenient for developers: if a developer writes a module or extension that registers something in the database, then he needs to write an installation routine to insert the item (and an uninstallation routine to delete the item). CiviCRM 4.2+ includes a better way: use the API and hook_civicrm_managed. This technique is already used in "civix" based extensions, but it also works with Drupal modules, Joomla plugins, etc.

Example Use-Case

As an example, suppose we are creating a module/extension called "fancyreports" which defines three new report classes. Each of these classes...

Read more