We have been using CiviCRM's 'Campaign' functionality as a way of assigning additional information to contributions. It's how we have made CiviCRM more compatible with our Quickbooks, which makes extensive use of 'Classes'. So we match up 'Financial Types' from Civi with 'Accounts' in Quickbooks, and match 'Campaigns' in Civi with 'Classes' in Quickbooks. This has worked well as long as all financial types on a given Contribution page in CiviCRM were associated with a single 'Campaign'.

However we now have a need for contribution pages that not only record different financial types (through price sets), but also record different campaigns. The intention is to allow people to contribute towards multiple things with a single payment- for example: if I were to donate towards the 'Event Scholarship Fund', make a payment for my Membership, and make a donation towards the 'San Francisco Center', those would each have separate accounts and separate classes when they are entered into Quickbooks.

I would like to give donors the option to contribute towards many different areas and only have to enter their payment info once. As it currently is set up, I can only associate a single campaign with a contribution page. So the donor would have to visit multiple contribution pages and enter their payment info each time as it is currently set up.

Does anyone know of another way to accomplish this? To record both financial types and classes in CiviCRM?

I have considered adding a new financial type for each class and appending the class name to the end, but this would result in an unwieldy number of financial types. I thought about using custom fields in place of Campaigns, but couldn't figure out a clean way to use them to accomplish this same purpose. Campaigns work really well for us because of the way they are integrated throughout CiviCRM, but I can't figure out how to move forward with this and accept multiple donations on a single contribution page in a way that integrates with our accounting.

3 Answers 3


The big thing you need is a way to associate line items with campaigns. This would be fairly simple to do with an additional table in an extension. Then, so long as campaigns were appropriately named, the extension could provide a drop-down on each line in a price set allowing the donor to specify the campaign. I'd suggest we also add a new field for campaigns representing the text to be exported, since you might have class names in Quickbooks that aren't appropriate for the donors to see on your Contribution pages.

When exporting financial data, the extension could include the related campaign name for each bookkeeping entry.

HTH. Feel free to contact me offline for more information.


You could add a custom field for the donors to effectively pick the campaigns they wish to donate to, then you could reallocate behind the scenes is one option.

Another is to use shop items, these could result in separate contributions being created in CiviCRM for each item.

Either approach would need a bit more then just config so to speak.


Great use of campaigns. We've had similar situations and we've generally either written a custom search or a custom view(if you're using Drupal). I don't believe there is any built in functionality. It would be great to write a custom search and make it available in GitHub if you can make it generic enough.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.