This documentation refers to an older version of CiviCRM (3.4 / 4.0). View latest version.

Skip to end of metadata
Go to start of metadata
This page refers to CiviCRM 3.4 and 4.0, current STABLE version.

Documentation Search

CiviCRM 3.4 and 4.0 Documentation

Support and Participation

Developer Resources

CiviCRM books!

Make sure to check out the FLOSS Manual Understanding CiviCRM as well! You can also support this project by ordering a hard copy.

Or support us by buying an eBook or hard copy of Using CiviCRM from Packt Publishing.

Before you start, make sure your extensions are enabled

You need to configure a directory, where your extensions will be stored if you haven't done so already. To do that, you need to go to: "Administer -> Configure -> Global Settings -> Directories", fill in "CiviCRM Extensions Directory" field and click "Save" at the bottom of the page. It's best to choose a directory outside of $civicrm_root, to avoid potential problems during upgrade.

1. Choose unique key for your extension

Every extension has unique name called extension key. It's built using Java like reverse domain naming to make it easier with identifying unique extensions and giving developers more flexibility on providing different extensions. So for example, if your website is and you're developing custom search showing only event payments, you can choose: as the key.

2. Create extension directory

Go to your extensions directory and create the directory named after your key. This will the the place where you'll put all the extension related files - it will be also put into zip archive when you're done, for further distribution.

3. Create info.xml file

Now you need to create a file which will be describing your extension. It needs to be called info.xml. For more information, visit Extension info file specification page.

4. Develop your extension!

Depending on the type of extension that you're building, you will need to follow different instructions. Please refer to separate manuals:

5. Test your extension

Make sure your extension works as planned! Once you have the info.xml file, you will be able to turn the extension on and off in Manage CiviCRM Extensions screen - use that to see what errors you're getting and react accordingly.

6. Package your extension

Once done with developing and testing, you need to put all the contents of your extensions directory into a zip file.

7. Submit your extension for public distribution

We are working on extension submission system, but in the meanwhile, just get in touch with us via project forum, Extensions board and put the info.xml file there. We'll do some testing and if everything works fine, we'll put your extension into public distribution. Once there, everyone will be able to install it once they get to "Manage CiviCRM Extensions" screen.

  • None