I have CiviCRM deployment in which many events are created each week with unique price-sets. The staff using the back-end often goes in and makes typos, edits, and generally tweaks price-sets often. Each time they make an edit, the price-set is saved as a copy, and they piling up in a serious way.

The price-set listing page takes minutes to load, and has no pager, and the drop down to select a price-set in the Event Configuration page is becoming quite unusable.

Some questions: 1. Is it necessary for Price sets to be duplicated on each edit? 2. Can price sets be deleted without consequence to the events, registrations, and payments (IE, how do price sets work?) 3. Is there a "safe" way to purge these old, unused price-sets, without having to go through each one, perhaps via direct DB manipulation? We would be willing to simply purge all price sets if we could do it without losing event,registration,payment data.

Any ideas would be much appreciated!

1 Answer 1


Price-sets are referenced by events and contribution pages. They are independent from events but can be referenced by them. They are similar to locations or option-sets - if you delete one then anything refering to it will be unreferenced. You can use the API (or API-explorer) to delete them faster than the UI but be very careful with SQL as you can break a lot if you are not careful. 1. No, there is no need to duplicate price sets, but it may be convenient 2. Safest way is to de-reference a price set and then delete it (or delete old events that refer to it.) 3. API, extension or (in drupal) using civicrm_entity you can create rules or bulk editing via views (ask as a separate question if you need help.)

  • Sonicthoughts - when you mention de-referencing are you saying remove from the link table (civicrm_price_set_entity)? Commented Sep 26, 2019 at 16:12

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.