Historical: Tendenci Open Source Donor Management Roadmap

It is beautiful to read how much tendenci the open source AMS software has evolved since 2013 – when this article was released. Enjoy reading and it is never late to transition to open source with Tendenci! -S.R🐾

Tendenci has come a long way since it was started in 2001. I didn’t have a choice back then so thus began (at the time – we are now open source) a proprietary system. But we work mostly with Associations and Non Profits. They/You (and I can attest first hand after volunteering with several nonprofits over the years) don’t want proprietary – you want OPEN SOURCE!

So what is our roadmap for Tendenci, now completely open source, for donor management?

I have to say we weren’t feeling the urgency on the donor management part until recently. Why? Because Blackbaud (Nasdaq BLKB) acquired Convio and removed the only viable option. And now they are shutting down Common Ground. Not cool. (Side bar: Word is Convio used to advertise “Common Ground, because we’re not Raiser’s Edge.” If that is true or not, it’s still funny and was always a comment that came up at NTEN or Techsoup meetings over the years.)

Tendenci is written in Django and Python and will remain open source. We are adding a basic GPL CRM with modifications for donor management first. More importantly we are integrating Tendenci with the Salesforce Foundation and the NON-Profit Starter pack through their open source connectors and well documented API.

We are prepared and qualified. We have a former employee who now works at Salesforce, we use Salesforce ourselves, and quite frankly they seem to care about the non-profit world. We at Schipul are “all in” as they say as are Tendenci powers the majority of our clients are non-profits.

What can you do now to get ready?

If you want to get ready to fully integrate your Tendenci site, hosted with us or self hosted with the open source community version, a good jumping off point would be contact the TendenciDEV Team for a free consultation! Tendenci’s Fundraising and Donor Management is all you need so you can start accepting online charitable donations now! Everything you need in one system.

I’ll try to keep everyone more up to speed on our roadmap, it’s been a crazy year. But make no mistake, we are building an open system that will reduce the costs of advocacy and non-profit associations and foundations by a factor of 10 compared to Raiser’s Edge. (WE HAVE DONE THIS ALREADY!) All you need is tendenci, and tendenci is also 100% customizable and flexible.

There is hope. (Programmer? – join us on github! http://github.com/tendenci/tendenci ) And in case you can’t tell, I’m excited about this! – Ed Schipul, 2013

Historical: HOW TO USE DJANGO-SQL-EXPLORER IN TENDENCI MMS

tendenci6megamenu.png

December 28, 2025
This wonderful insightful blog post about how to leverage the Django SQLExplorer on your Tendenci site was written back in 2015 when Tendenci v6 was released. What tendenci version is your site on? Yes, you can access the data you need with Tendenci’s SQL Explorer Data Analysis Tool right from your website! Read this blog to learn about it. -S.R.

February 7, 2015
Tendenci 6 ships with the excellent django-sql-explorer from ePantry. This means you can export anything at any time and build any report you want whenever you want. Absolute 100% anytime freedom of access to your data. #JOY #FREEDOM #ROCKS

First a warning. If you choose to use a direct query tool know they are dangerous. You are doing so at your own risk and could possibly corrupt your database beyond repair up to and including requiring a dba to come in and repair it at a cost of thousands of quid. So…. BE CAREFUL.

SQL explorer is a way to directly query your site through the user interface. It is for superusers only and we recommend disabling it by default (see disclaimer above.) But if you are still reading here is the lightning version.

  1. Login to your Tendenci6 site at /accounts/login/
  2. Navigate to /explorer/
  3. Click on playground and test out some queries. For example here are two
    1. “select tablename from pg_tables” – without the quotes to list all 300 tables in your database
    2. “select * from articles_article” – list all articles including expired and inactive etc.
  4. If you like the queries click “new query” and name and describe them and click save.
  5. Click on the SQL explorer icon top left and your back at the dashboard with icons to download the results of your queries.

Visually when you add the URL /explorer/ to the end of your site path you will see something very similar to this.

django-sql-query-dashboard.png

First note the icon on the right to Download CSV so you can download all of whatever that query is for.  If you don’t see any, no worries – that’s what this post is about!

So let’s write a basic sql statement.

django-sql-playground.png

And then when you click “New  Query” you will find this interface and you can carefully name and describe your query so you know what it does later.

creating-new-tendenci-query-for-csv-download.png

 

1) ALL Interactive users:

SELECT  u.first_name, u.last_name, u.email, u.username, u.is_staff,  u.is_superuser, p.salutation, p.company, p.position_title, p.phone,  p.address, p.address2, p.member_number, p.city, p.state, p.zipcode,  p.country, p.url, p.sex, p.address_type, p.phone2, p.fax, p.work_phone,  p.home_phone, p.mobile_phone, p.notes, p.admin_notes FROM auth_user u  INNER JOIN profiles_profile p ON u.id=p.user_id WHERE u.is_active=True  AND p.status=True AND p.status_detail='active'

Copy Paste Version:

SELECT u.first_name, u.last_name, u.email, u.username, u.is_staff, u.is_superuser, p.salutation, p.company, p.position_title, p.phone, p.address, p.address2, p.member_number, p.city, p.state, p.zipcode, p.country, p.url, p.sex, p.address_type, p.phone2, p.fax, p.work_phone, p.home_phone, p.mobile_phone, p.notes, p.admin_notes FROM auth_user u INNER JOIN profiles_profile p ON u.id=p.user_id WHERE u.is_active=True AND p.status=True AND p.status_detail=’active’

2) ALL memberships:

SELECT u.first_name, u.last_name, u.email, u.username, u.is_staff, u.is_superuser,
    p.salutation, p.company, p.position_title, p.phone, p.address, p.address2, 
    p.member_number, p.city, p.state, p.zipcode, p.country, p.url, p.sex, 
    p.address_type, p.phone2, p.fax, p.work_phone, p.home_phone, p.mobile_phone,
    m.membership_type_id, m.renewal, m.certifications, m.work_experience,
    m.referer_url, m.referral_source, m.join_dt, m.expire_dt, m.renew_dt,
    m.primary_practice, m.how_long_in_practice, m.application_approved,
    m.application_approved_dt, m.areas_of_expertise, m.home_state,
    m.year_left_native_country, m.network_sectors, m.networking,
    m.government_worker, m.government_agency, m.license_number,
    m.license_state, m.status_detail
FROM auth_user u
INNER JOIN profiles_profile p
ON u.id=p.user_id
INNER JOIN memberships_membershipdefault m
ON m.user_id=u.id
WHERE u.is_active=True
AND p.status=True
AND m.status_detail <> 'archive'

Copy Paste Version:

SELECT u.first_name, u.last_name, u.email, u.username, u.is_staff, u.is_superuser, p.salutation, p.company, p.position_title, p.phone, p.address, p.address2, p.member_number, p.city, p.state, p.zipcode, p.country, p.url, p.sex, p.address_type, p.phone2, p.fax, p.work_phone, p.home_phone, p.mobile_phone, m.membership_type_id, m.renewal, m.certifications, m.work_experience, m.referer_url, m.referral_source, m.join_dt, m.expire_dt, m.renew_dt, m.primary_practice, m.how_long_in_practice, m.application_approved, m.application_approved_dt, m.areas_of_expertise, m.home_state, m.year_left_native_country, m.network_sectors, m.networking, m.government_worker, m.government_agency, m.license_number, m.license_state, m.status_detail FROM auth_user u INNER JOIN profiles_profile p ON u.id=p.user_id INNER JOIN memberships_membershipdefault m ON m.user_id=u.id WHERE u.is_active=True AND p.status=True AND m.status_detail <> ‘archive’

3) ALL corporate members:

SELECT cp.name, cp.address, cp.address2, cp.city, cp.state, cp.zip, cp.country,
    cp.phone, cp.email, cp.url, cp.number_employees, cp.chapter, cp.tax_exempt,
    cp.annual_revenue, cp.annual_ad_expenditure, cp.description, cp.expectations,
    cp.notes, cp.referral_source, cp.ud1, cp.ud2, cp.ud3, cp.ud4, cp.ud5, cp.ud6, 
    cp.ud7, cp.ud8, cm.corporate_membership_type_id, cm.renewal, cm.renew_dt,
    cm.join_dt, cm.expiration_dt, cm.approved, cm.admin_notes, cm.status_detail
FROM corporate_memberships_corpprofile cp
INNER JOIN corporate_memberships_corpmembership cm
ON cp.id=cm.corp_profile_id
WHERE cm.status_detail <> 'archive'

Copy Paste Version:

SELECT cp.name, cp.address, cp.address2, cp.city, cp.state, cp.zip, cp.country, cp.phone, cp.email, cp.url, cp.number_employees, cp.chapter, cp.tax_exempt, cp.annual_revenue, cp.annual_ad_expenditure, cp.description, cp.expectations, cp.notes, cp.referral_source, cp.ud1, cp.ud2, cp.ud3, cp.ud4, cp.ud5, cp.ud6, cp.ud7, cp.ud8, cm.corporate_membership_type_id, cm.renewal, cm.renew_dt, cm.join_dt, cm.expiration_dt, cm.approved, cm.admin_notes, cm.status_detail FROM corporate_memberships_corpprofile cp INNER JOIN corporate_memberships_corpmembership cm ON cp.id=cm.corp_profile_id WHERE cm.status_detail <> ‘archive’

4) All users in a specific group (replace <YOUR GROUP ID> with your group id)

SELECT ug.name, u.first_name, u.last_name, u.email, u.username, u.is_staff, u.is_superuser, p.salutation, p.company, p.position_title, p.phone, p.address, p.address2, p.member_number, p.city, p.state, p.zipcode, p.country, p.url, p.sex, p.address_type, p.phone2, p.fax, p.work_phone, p.home_phone, p.mobile_phone FROM auth_user u INNER JOIN profiles_profile p ON u.id=p.user_id INNER JOIN user_groups_groupmembership ugm on u.id=ugm.member_id INNER JOIN user_groups_group ug on ug.id=ugm.group_id WHERE ug.id=<YOUR GROUP ID> AND ugm.status=True AND ugm.status_detail='active'

Copy Paste Version:

SELECT ug.name, u.first_name, u.last_name, u.email, u.username, u.is_staff, u.is_superuser, p.salutation, p.company, p.position_title, p.phone, p.address, p.address2, p.member_number, p.city, p.state, p.zipcode, p.country, p.url, p.sex, p.address_type, p.phone2, p.fax, p.work_phone, p.home_phone, p.mobile_phone FROM auth_user u INNER JOIN profiles_profile p ON u.id=p.user_id INNER JOIN user_groups_groupmembership ugm on u.id=ugm.member_id INNER JOIN user_groups_group ug on ug.id=ugm.group_id WHERE ug.id=<YOUR GROUP ID> AND ugm.status=True AND ugm.status_detail=’active’

 

Contribute back your brilliance to the rest of us? Have you written some good queries for Tendenci using the amazing  django-sql-explorer from ePantry? Post them on the Tendenci Community Site for others to learn and share with!

Please do be careful. Remember the warnings above. Using a live sql tool on a relational database for anything besides SELECT queries is ill-advised. It really is your live data on a live site SO BE CAREFUL!

We believe this level of access to the superusers on Tendenci sites is empowering. We like knowing people can download any of their data when they need it. And perhaps contribute back some suggested new reports to the Tendenci Community as a whole!

Because Tendenci is part of the Django community and we couldn’t have brought this functionality to you without others in the community “giving first.” We may have added it to Tendenci, but that’s ONLY because of the generosity of building and making it available by others. Explorer is brought to you by the power of collaborative open source software (THANK YOU ePantry!)

Note this is a cross post from our help files. See the Help File for the latest accurate info at: https://www.tendenci.com/help-files/how-use-django-sql-explorer-tendenci/

Tendenci Transformation – The Right Choices for the Future

May 17, 2015

The future is bright for Tendenci! We’ve had a lot of crucial conversations lately about decisions that we made between 2006 and 2010. Yup, really. We are explaining now about how we are possibly too far ahead of the curve and why if you give it a bit of time, it will make you look like a rock-star.

MobileGeddon being a great example of how our early adopters are benefiting the absolute most!

 

Top39-Programming-Trends-700.4
Python for the Win!

Source: Python is Now the Most Popular Introductory Teaching Language at Top U.S. Universities

We started using Python, the programming language named after Monty Python, in 2004 if not earlier. We first tested Pinax in 2008 if not earlier under J who was running our programming team.

We used Python extensively in our old environment to move files and push out content to our sites. Tasks that are now done by Puppet and Chef and Docker-Compose. We rolled our own using Python on Windows.

So for the curious, that explains why we have this huge depth of knowledge on Python programming dating back to when nobody heard of it. We’ve had to train numerous graduates of Tech, UofH, Aggies, Rice, Penn State, etc, what Python even was!

But that is all ancient history. Why? Because Python is now number 1!

Top39-Programming-Trends-700.4

It’s hard to predict the future. We started out writing our own compete web framework in ASP. We were too early in 2001. PHP soon arrived and, being basically identical but open source, the outcome was PHP won. It should have, and did, win. We were too early. But with timing there is also a bit of luck.

I’ll do another post about GIS and mapping and why our move to strictly Postgres with GIS enabled is working out so well. Another post. And I’ll edit this one with links soon. Just needed to get the content out.

Screen Shot 2015-05-12 at 3.28.36 PM

Bootstrap3. – Because we know that we take gambles on technology and they have an impact. On you. And that is serious business. We take it seriously as evidenced by our decision to shut down Windows in line with Microsoft’s EOL policies. These are hard choices. Crucial Conversations. We’re the messenger.

And we CARE about YOU. Our clients. The future is bright. We picked our technology future amazingly well. Too well, so now perhaps our problems is more one of resources. And we’ll work through that.

Thank you. If I can leave you with one thought – it is this. THANK YOU! For those who stuck with us, WOW, um… our position for search and the future is crazy good. Open Source means freedom. Results mean donations and sales. Software means sustainable business models.

We appreciate you. Yes closure for some was hard. We wish you the best. We appreciated your time with us while it lasted longer than a Honda. As some depart and some charge forward, I’m especially excited about those who chose to charge forward.

We, you and us, we didn’t “guess” right. We did our homework and validation came ironically on April 21, the same day mobilegeddon hit and our Tendenci 6 clients jumped up in the search rankings. Luck? Hard work? I don’t know.

What do I know? I know how to serve. I serve y’all.

#peace

Ed

 

Welcome to Tendenci Open Source Community AMS Blog!

Ed Schipul and Tendenci

Community blog for Open Source AMS Makers

tendenci logo
Tendenci Open Source

Wuff, you’re here! This is Tendenci Open Source Association Management Software (AMS) Community Blog!

This is the community space where we share the latest updates and new features in Tendenci software — along with insights on association management, technology trends, events, marketing tips, and more! As we continue to contribute, fork, and help Tendenci grow, we want you to be the first to know. This blog is an easy way for us to stay connected and keep you informed.

Use Tendenci in all your devices and enjoy 100% responsiveness.

But don’t forget — we want to hear from you, too! Feel free to comment here, or even better, call or email us anytime at communications@tendenci.com. We’d love to discuss your questions, ideas, or suggestions to make your Tendenci experience even better.

Paw-sitive thanks open source community friends! 🐾

Upgrade to the Latest: Tendenci OSS v15.3.5 on GitHub

tendenci v15.3.5

Tendenci OSS v15.3.5 Released – July 3, 2025
We’re excited to share the latest updates in Tendenci OSS version 15.3.5! This release brings improvements to newsletters, donations, memberships, events, and more. Here’s a quick overview:

Newsletter Enhancements

  1. Admin backend now makes newsletters searchable.
  2. Cloned newsletters now automatically assign an owner.
  3. Newsletter generator updated to toggle group vs. members-only views.

Donations & Payments

  1. Updated donation form for a cleaner, consistent design.
  2. Combined “donate to entity” and preset amounts into a single list.
  3. Added regional tax options.
  4. New setting to specify required fields on donations.

Membership Updates

  1. Corporate membership add/edit forms refreshed.
  2. Exports now include membership type and profile names.
  3. Membership auto-renewal fixes to prevent missing numbers or duplicate entries.
  4. Added 20 new UD fields for corporate membership applications.

Event & Directory Improvements

  1. Converted datetime spans to semantic time elements in event views.
  2. Added registration_open filter for event lists.
  3. Committees settings added for root URLs and labels.
  4. Directory pricing now supports label fields.

Other Enhancements

  1. Staff access added to report links in the top menu.
  2. Invoice view now shows “bill to company” for corporate memberships.
  3. File add process now waits for required fields before blocking UI.
  4. Other small fixes and performance improvements.

This update v15.3.5 continues our focus on improving usability, reporting, and data management for Tendenci users. Special thanks to JennyQ for maintaining and safeguarding the software for over 15 years, and to all other contributors for their valuable work.
Woof! 🐾🤓🩵

NEW Tendenci version bump 15.3 & 15.3.1

Tendenci version bump 15.3.1

New Tendenci Version Alert!
The latest version of Tendenci, 15.3.1, is now available! 🐾🤓 As an Open Source platform, all of the code is fully visible and accessible to everyone. Developers, please ensure your Tendenci projects are upgraded to take advantage of the latest features, improvements, and security updates.

Tendenci’s updates boost security, streamline reporting, and add valuable features, ensuring a smoother and more efficient experience for all users!

All of the code is located on GitHub. The ChangeLog serves as the repository where you can find all software versions and their corresponding details. Open Source also signifies that it requires a collective effort to make significant changes in the world. The TedenciDEV Team (the creative women-led team behind the software) holds immense respect for everyone contributing to the improvement of Tendenci software. We wouldn’t be here without you.

Upgrade today to Tendenci 15.3.1 to stay ahead! Read the Docs https://tendenci.readthedocs.io/en/latest/upgrade/upgrade-to-tendenci.html

Later, fur-riends! Woof woof

TendenciDEV Team

Exciting Tendenci software updates!

Yes to a software upgrade! Developers, please ensure that your Tendenci project(s) are upgraded to the latest version. Tendenci 14.8.2 [2024-02-21].

Check out some of the cool stuff in the latest Tendenci version bump!

1️⃣ Region filter in the Memberships Member Quick List Report. Finding members just got easier with the new region filter option, thanks to the brilliant suggestion from @rob-hills!

2️⃣ Streamlined Event Registration Add-ons: We’ve enhanced the event registration process by removing checkboxes, adding helpful text, and automatically clearing quantities after processing. Woof woof!

3️⃣ Enhanced Event Experience: Attendees, good news! Now, if your Zoom meeting is set up for the event, the registration confirmation email features a direct “Join Zoom Meeting” link. You can use the QR code for event check-ins.

All of the code is located on GitHub. The ChangeLog serves as the repository where you can find all software versions and their corresponding details. Open Source also signifies that it requires a collective effort to make significant changes in the world. The TedenciDEV Team (the creative women-led team behind the software) holds immense respect for everyone contributing to the improvement of Tendenci software. We wouldn’t be here without you.

Sniff you later, fur-riends! Woof woof

BECAUSE PER USER AND ADMIN PRICING ENCOURAGES YOU NOT TO GROW YOUR ORGANIZATION

Ed Schipul and Tendenci

At Tendenci we don’t believe in charging by the user or admin. Tendenci is built on the concept of distributed authoring. There are multiple people on your board and many committee chairs. Shouldn’t each leader in your organization have the ability to post their own articles and manage their own events? Certainly! This sets us apart from other AMS options in the market, as we do not charge any admin or user fees because we want you to grow.

Leverage Tendenci, the only Open Source software solution that enables you to populate your CRM with prospective members, industry contacts, supporting partners, and existing members without worrying. Achieve maximum engagement through your Tendenci website, which offers affordable and transparent AMS options – specifically tailored for Non-Profits and Associations around the world.

Read more here: ➡️ https://www.linkedin.com/company/60615/admin/feed/posts/

Are your users having issues with reCAPTCHA?

reCAPTCHA image from Google

Seems like there are occasions when our hosting clients are experiencing trouble on their Tendenci site due to reCAPTCHA. This doesn’t necessarily mean it is a Tendenci software problem but rather a Google issue. It is a service provided by Google to protect websites from automated bots and spam. If you are experiencing issues such as your users having difficulty completing the verification process or encountering errors on your Tendenci site, it is typically related to the Google reCAPTCHA service.

Our suggestion is the following: Make sure the browser is up to date and try disabling extensions. Here is an article with more details https://www.businessinsider.com/guides/tech/chrome-recaptcha-not-working.

If you haven’t already, get in touch with us so our team can set up reCaptcha V3 on your Tendenci website to better protect your site against spam, and at no cost. If you continue to run into issues, please don’t hesitate to contact us via our support team for further assistance.

Stay groovy,
TendenciDEV Team
blog@tendenci.com

Tendenci AMS Logo

Tendenci AMS Software Market Projection Continues to Thrive Worldwide

It is great to see yet again HTF Market Intelligence Consulting Private Limited – an independent third party rank Association Management Software from a global perspective! As a part of the Tendenci AMS Community, we will let the summary from HTF on market growth and Tendenci’s Global Share speak for itself. 

Tendenci – The Open Source AMS continues to grow globally, we believe, because it is a community much more than anything else. Open Source is the voice of the people – a shared language that brings us together. 

Source: http://www.marketjournal.co.uk/association-management-software-market-to-see-huge-growth-by-2025-personify360-tops-professional-raklet/99646/

View here the comparison from prior months growth

THANK YOU to all of the developers out there who are contributing, translating, updating and maintaining a very complex piece of software. AMS software that is inclusive of other languages and cultures, and a team that believes in security and privacy. Lets continue to do good today, and tommorrow even more, together. 

All of the code is on github, documentation on readthedocs, and translation is crowd-sourced on Transifex. Self host or host with us, your choice, your data, your association.