Skip to content

Salesforce data storage woes

by Dave Manelski on October 29th, 2009

Data storage is what is on my mind these days.  Like a gathering storm on the horizon, storage is a finite resource that is fast being consumed by my non-profit clients. The more successful the clients in their outreach efforts, the faster they are running out of space.

The number one culprit is popular blast email platform VerticalResponse (VR). Out of the box, VR creates a 2KB record associated with every contact or lead on a campaign used to generate an email list.  For organizations with relatively small lists, using campaigns & VR works great, it’s a fantastic platform integration.  For organizations with larger lists however, those 2KB records really add up fast.  Most non-profit organizations are under 50 user accounts and are allotted the minimum amount of data storage – 1GB – which isn’t a great deal of storage space no matter how you slice it.

Compounding the problem, on October 20th of this year, Salesforce began assessing 1KB per each new Campaign Member record. Up until now, Campaign Member records did not impact your data storage. Thought of as a second-class object, Campaign Member lived in a separate table in one of the older and cobweb infested corners of the database. If you wanted to keep track of a person’s meal preferences for an event, or manage an automated email drip campaign in Salesforce, you were out of luck. It was impossible to add custom fields to Campaign Member, fire an apex trigger or workflow rules. With the Summer ’09 Release however, came a slew of exciting new improvements to Campaign Member, now a first-class object in the database complete with custom fields, apex triggers, and workflow rules.   And with the Winter ’10 Release, Salesforce introduced even more improvements like roll-up summary fields to Campaign and Campaign Member record types. These new features come with a cost — it takes storage space for custom fields and additional processor cycles for workflow and triggers — I get why, I really do.

But here’s the rub…

Screen shot 2009-10-29 at 9.06.55 AMOver the course of time, Campaign Member records are always being created.  Growth is linear and the growth pattern is far steeper than that of contacts or accounts.  The size of your constituency, while (ideally) growing, is going to be correlated directly with the size of your organization’s user base.  Chances are if the number of contacts in your database increases from 10,000 to 100,000, so too is the size of your staff (user base) and the allotted data storage to house all of these new records.  And the opposite holds true, if your organization is not growing, data storage needed for the contacts and accounts in your database remains constant.

I work with environmental organizations, whose primary focus is engaging people in building a more sustainable society.  These organizations leverage tools like Salesforce and VerticalResponse to reach a large audience on very lean budgets and with relatively few staff.  As a consultant, I teach these organizations to use campaigns to track their touches with constituents over time, preserving the rich history of engagement.  With this ever-increasing mountain of campaign data, they can take advantage of Salesforce’s powerful reporting features to better target communications, reach out more effectively, and keep growing their lists. The more successful the organization in these efforts, the faster they run out of data storage, but their success still precludes most of my clients from being able to afford purchasing additional storage at $1,500 annually per 500MB chunk.

It’s a data storage nightmare.  Deleting or archiving campaigns isn’t really an option as that really defeats the purpose of having a high-functioning CRM like Salesforce.

The only real solution is steadily increasing the data storage allotment over time. I know that massive Oracle clusters aren’t cheap, but Salesforce should be adding servers and increasing the data storage allotment for each instance, each year. Now that they’re charging for Campaign Member records, it’s only a matter of time before more customers start feeling the pinch.  In the meantime, you can do your part by voting up this idea on the IdeaExchange.

From →

  1. Evan Callahan permalink

    I absolutely agree that Salesforce should pony up more storage over time – or offer some other solution to mitigate this problem.

    I do wonder, however, if we shouldn’t also look to some creative solution to the fact that we are storing a lot of redundant data – or at least a lot of records that will rarely be used individually. Perhaps there would be a way to archive older records, then restore them temporarily when you wanted to report on them in Salesforce. Or replace reporting on old records with some sort of analytic snapshot that would provide the history without having all the data there all the time.

  2. You can use S-Drive for unlimited, economical data storage in Also you don’t need to pay the price per GB, you just pay per use. You can refer to for more information and to install it from AppExchange.

    • While S-Drive looks like it would solve file storage issues, it does not cover data storage issues.

Leave a Reply

Note: XHTML is allowed. Your email address will never be published.

Subscribe to this comment feed via RSS