CocoaCRM ® - Help Documentation for the macOS Version

Below, you will find full Documentation for the 2.0 release of the macOS version of CocoaCRM®.

If you already own a license of CocoaCRM®, please know that the information within the App's Help section is identical to what you will find here. In other words, if you need additional assistance - if you are looking for additional answers beyond what we provide within the App's Help section - please just call or email us.


CocoaCRM® is a Customer Relationship Management (CRM) solution introduced to meet the needs of sales people who work in relatively independent fashion. It offers a variety of features and conveniences, we hope in support of improving your sales productivity.

Back to Top

How Organizations, Contacts and Notes Relate to Each Other

CocoaCRM® allows you to manage your sales activity in a straight-forward manner - its core functionality makes it easy for you to create and associate data records representing Organizations, Contacts and date-stamped Notes.

An Important Point: You can create Contact Records either within an Organization Record or alternatively, you can create Contact Records unaffiliated with Organization records. However, you can only create Note Records within Contact Records.

Another: You can customize the text fields associated with Organization Records, or Contacts Records. You cannot customize the text fields associated with Note Records. For how to customize Organization or Contact text fields, see How to Customize Field Names).

Back to Top

Navigating the App

CocoaCRM® initially presents three tables. The topmost lists Organization Records.

Below that you will find a table which lists all Contact Records for a selected Organization.

Below that you will find a table listing all Note Records for a selected Contact.

Back to Top

3 Different Perspectives

CocoaCRM® supports viewing records in three different perspectives: An Organizations Perspective, a Contacts Perspective, and a Notes Perspective. You can toggle between these Perspectives by tapping the Office Building button, the Person button, or the Notes button, each at the top of the App.

Adding & Deleting Organizations

CocoaCRM® supports adding and deleting Organization Records.

Back to Top

Adding & Deleting Contacts

CocoaCRM® supports adding and deleting Contact Records.

Back to Top

Adding & Deleting Notes

CocoaCRM® supports adding and deleting Contact Notes.

Back to Top

Entering Information and Auto-Completion

CocoaCRM® supports entering information in table row text fields presented by its initial Table Views, and in text field presented by subsequent views.

Auto-Completion of text is supported for some text fields where it makes sense, but not for other fields where we believe it does not. For instance Auto-Completion is supported for entering City, State, Zip Code and Country values, while not for entering preceding Street Address values.

Note as well that Auto-Completion of entered text is supported for the User Defined fields provided for Organization records - our thought is that your customization of these fields may tend to be to customize them to represent categorical values for which Auto-Completion will be appropriate (for how to customize these fields and others, see How to Customize Field Names).

Back to Top

Entering Tabs and Line Breaks

The Tab Key is what you use to navigate from one field to the next in either an Organization Detail View or a Contact Detail View. So how do you enter a tab key in a field if you wish too? Try Option-Tab.

How can you enter line breaks within your field data? The Return Key can be used for entering line breaks in multi-line fields, while you can tap Option-Return Key to enter a line break in a single line field.

Note that if you enter more text within a single line field than it can display, the field will truncate its information by ending in an elipsis ("..."). But on the other hand, if you do choose to add line breaks, this will cause the field to thereafter appear as a multiline field for the record in question - at least to the degree that screen space will allow (though it will still require use of Option-Return Key, rather than Return Key, for entering additional line breaks).

That said, you should probably avoid entering line breaks within single line fields, or at least doing so randomly, so that you maintain consistency in how your data will appear one record to the next.

Back to Top

Applying an Organization Address to a Contact

Both Organization and Contact records contain address fields ("Address Line 1", "Address Line 2", "City", "State", "Zip Code" and "Country"). Sometimes you will need to specify address information for a Contact as different from that of his or her Organization. Often however, it will be the same address, and you needn't have to enter the same data twice. For this purpose, there is the Copy Address Button, which becomes visible in a Contact Record when it has no address information, and when at least partial address information also does exist for the parent Organization record:

Back to Top

Changing the Color Scheme and Font Scheme

CocoaCRM® supports selecting any one of multiple alternative color schemes and font schemes to change its appearance. Some people like lighter color schemes, other people like darker. And font size also matters a great deal to many people. So we believe it's important to provide choices.

To change our App's Color Scheme, from the CocoaCRM Menu you can select Preferences. Then within Preferences, you can select a Color Scheme which will be applied when you exit Preference by clicking the Apply Button. This will change the color scheme applied to all views in the App - likewise your selection here will remain as your default choice for future sessions of the App.

Also from within Preferences, you can select a Font Scheme which will be applied when you click the window's Apply Button, and which will also remain as your default choice in future sessions of the App.

Back to Top

Configuring Table View Columns

The fields which table columns presented for both the Organizations Table View and the Contacts Table View are in fact configurable. To quickly change the fields that columns display, tap the Columns Button: This will open the Change Columns Window: From within this Window, you can show the "Middle Name" field - a useful field in some countries but not in all (if in your country, you have many contacts with names such as \"Vincent van Gogh\", placing the \"van\" in the "Middle Name" field will support sorting or filtering on just \"Gogh\" as the "Last Name"). You can also quickly change the fields represented by individual columns: And choose to hide columns if you want to see less: Whatever choices you make, you will see them applied, and you will see them retained between your sessions of using the App.

Back to Top

How to Customize Field Names

To customize the Organization or Contact fields presented by your App, from the CocoaCRM Menu select Customize, to open a window where many fields can be edited. Once you apply any changes you make, the App will present your revised field names instead of its defaults. Any field name which you change will change its associated label in any detail view where it is presented. When you attempt to configure columns, your revised field will also appear as a column option, alternative to its original definition. When you attempt to filter records, you will also see your revised field label. And records you export and import will thereafter employ the revised field name as a either a csv header record label, or a json element label.

Back to Top

Backing Up and Restoring Records

CocoaCRM® supports exporting records as either .json or .csv files. As a best practice, for purposes of supporting the backup and potential restoration of your data, you should export all records as a single .json file. For exporting records for importation into other applications, you will more often need to export .csv files.

Tip: It is also a good idea to get into the habit of backing up data to an offsite location, rather than just to a local folder. As one option for this, CocoaCRM® supports exporting your data directly to a personal Dropbox® account you may already have in place, or choose to establish for this purpose. After reviewing the basic mechanics for both importing and exporting data from CocoaCRM®, be sure to consider this possibility, as described in How to Import and Export Records using a Dropbox® Account).

Back to Top

How to Import Records

CocoaCRM® supports importing records representing Organizations, Contacts and Notes. You can import records either from an appropriately formatted .json file or an appropriately formatted .csv file.

Importing a .json File

The best way to back up your App records is to export them as a .json file. Consistent with this, the best way to restore backed up records is to import them from such a file. As well though, you may wish to import a .json file produced by a third party system, or even a .json file that has been hand-authored.

Preparing for Importing .json Records

This all said, please know that:

Back to Top

Importing a .json File - Step-by-Step

To import a .json file - which may contain Organizations, Contacts and Notes:

  1. Select the File Menu, select Import, then select the .json file you wish to import, then click Import.
  2. If the records you are attempting to import do not match existing records in the App, the import process will now continue to completion, and you will see a message describing how many records were imported.
  3. If the records you are attempting to import do match existing records in the App, the import process will allow you to choose to Skip or Merge records towards completing the process.

Back to Top

Importing a .csv File

An alternative way to export your App records is to export them within separate .csv files - one for Organizations, one for Contacts, and one for Notes. Consistent with this, you can restore backed up records from .csv files - importing them back in, in any order (organization records first, then contact records, then note records - or any other order of the three - the App will merge them accordingly).

More often though, you will find yourself wanting to import .csv files produced by third party applications, or even .csv files that have been hand-authored. For backing up CocoaCRM®, importing and exporting data as .json will always be less tedious, so you will find yourself making use of the .csv import facility most typically for bringing in data from other sources.

You may want to import .csv files that were created by any number of currently available software applications - SalesForce®, SugarCRM®, Daylite®, FileMaker®, Act!®, Maximizer®, GoldMine®, etc... or even legacy applications such as Bento®, Now®, etc.

You may have some combination of records representing organizations, contacts and/or notes in any one of these or other systems, and exporting records as .csv files is your common option for getting such records out.

If you do wish to import .csv files created by other applications, you will need to read the sections of this document that follow. We very much want you to be able to import data that has been created with other applications - but there is no "magic" to address data hygiene issues. As described in great length in this documentation, you will need to first assure that any such file has:

The good news is that once you understand what is required for assuring the quality of any third-party .csv file, you will then be able to routinely import data from most any other relevant application. Most all do export .csv in one form or another.

Back to Top

Preparing for Importing .csv Records

Best practices for preparing for importing .csv records should begin with a couple of high level recommendations:

Tip: If in completing the above recommendations, you find that you cannot import data that you have imported into and then exported from a spreadsheet application such as Excel, you will need to understand whether or not your spreadsheet application is exporting UTF-8 encoded files, how it is encoding characters, etc. Please see additional sections of this documentation to understand these points better.

Please also note that, again, as with .json file records:

Back to Top

Importing a .csv File - Step-by-Step

To import .csv files - one for Organizations, another for Contacts and another for Notes:

  1. Select the File Menu, select Import, then select whichever .csv file you wish to import first, then click Import. Please note that if you wish to import three separate files - one containing organization records, one containing contact records and one containing note records - you can import them in any order - though it is probably a good habit to import them in a consistent manner of first organizations, then contacts, then notes.
  2. If the records you are attempting to import do not match existing records in the App, the import process will now continue to completion, and you will see a message describing how many records were imported.
  3. If the records you are attempting to import do match existing records in the App, the import process will allow you to choose to Skip or Merge records towards completing the process.

Regarding how matches will be detected, please notes that:

Back to Top

Supported .csv Record Formats

CocoaCRM® supports importing three (3) different types of Comma Separated Value (.csv) record formats. CocoaCRM supports separately importing Organization Records, Contact Records or Note Records - each within a separate .csv file.

The structure of any one of the three types of files must include a header record, defining field names, followed by individual records. As is normal for a .csv file, each record must separate its values with commas, and each record must be separated from its preceding record, by a line break.

When you attempt to import a .csv file, CocoaCRM will try to recognize which one of the three types of record types the file contains - Organizations, Contacts or Notes - and process it accordingly. How can CocoaCRM determine which type of records are contained in a given .csv file it is asked to import?

A .csv File Representing Organization Records

A .csv File representing Organization records that is formatted as follows can be imported successfully (this example represents 3 organizations, and intentionally lacks data for various fields):

"Organization","Type","SubType","Focus","Analysis","Address Line 1","Address Line 2","City","State","Zip Code","Country","Phone","Email","Web Site","Source of Lead","Priority","Paid to Date","Invoices Outstanding","Revenue Earned","Expected Revenue","User Defined A","User Defined B","User Defined C","User Defined D","User Defined E"
"Advanced Taffy","Food","Candy","","","100 Elastic Lane","","Santa Clara","CA","95050","","","","","Candy World 2012","Medium","0","0","0","0","","","","",""
"Magic Gum","Food","Candy","","","1200 Wicks Road","","Chicago","IL","60018","","312-333-3333","","","","High","0","0","0","0","","","","",""
"NY Candy Company","Food","Candy","","","100 Candy Way","","New York","NY","10001","","","","","Candy Show 2015","Highest","0","0","0","0","","","","",""
"äöüß","Food","","","","Wilhelm-Leuschner Straße 100","","Frankfurt","","","","","","","","Highest","0","0","0","0","","","","",""

And a more simple example (with less fields and associated values) that will also import would be this:

"Organization","Type","SubType","Address Line 1","Address Line 2","City","State","Zip Code","Country","Phone","Email","Web Site","Source of Lead","Priority"
"Advanced Taffy","Food","Candy","100 Elastic Lane","","Santa Clara","CA","95050","","","","","Candy World 2012","Medium"
"Magic Gum","Food","Candy","1200 Wicks Road","","Chicago","IL","60018","","312-333-3333","","","","High"
"NY Candy Company","Food","Candy","100 Candy Way","","New York","NY","10001","","","","","Candy Show 2015","Highest"
"äöüß","Food","","Wilhelm-Leuschner Straße 100","","Frankfurt","","","","","","","","Highest"

A .csv File Representing Contact Records

A .csv File representing Contact records can be formatted as follows and then imported successfully (this example like those preceding, also intentionally lacks data for various fields - and it does not include a "Middle Name" element or values, which you could also choose to add):

"First Name","Last Name","Title","Department","Mr./Ms.","Address Line 1","Address Line 2","State","City","Zip Code","Country","Cell Phone","Office Phone","Ext","Email","2nd Email","Ideas Given","Next Steps","Last Contact","Next Contact","Referred By","Referrals","Expectations","College","Advanced","Interests","Biography","Source","Initiatives","Forecast","Justification","Organization"
"Ted","Thompson","President","","","100 Elastic Lane","Suite 111","CA","Santa Clara","95050","US","","408-444-4444","101","","","","","","","","","","","","","","","","","","Advanced Taffy"
"Melissa","Madison","CEO","","Ms.","","","IL","Chicago","60018","","","312-333-3333","3","","","","","","","","","","","","","","","","","","Magic Gum"
"Tom","Smith","Quality Assurance Manager","Quality Assurance","Dr.","100 Candy Way","Suite 200","NY","New York","10001","US","","212-222-2222","","","","","","","","","","","","","","","","","","","NY Candy Company"
"Renard","Strauss","","","","","","","","","","011-49-89-0000-1","","","","","","","2015-01-25 09:07:31 AM","2015-04-25 09:07:31 AM","","","","","","","","","","","","äöüß"

And a more simple example (with less fields and associated values) that will also import would be this:

"First Name","Last Name","Title","Department","Mr./Ms.","Address Line 1","Address Line 2","State","City","Zip Code","Country","Cell Phone","Office Phone","Ext","Email","2nd Email","Next Steps","Last Contact","Next Contact","Organization"
"Ted","Thompson","President","","","100 Elastic Lane","Suite 111","CA","Santa Clara","95050","US","","408-444-4444","101","","","","","","Advanced Taffy"
"Melissa","Madison","CEO","","Ms.","","","IL","Chicago","60018","","","312-333-3333","3","","","","","","Magic Gum"
"Tom","Smith","Quality Assurance Manager","Quality Assurance","Dr.","100 Candy Way","Suite 200","NY","New York","10001","US","","212-222-2222","","","","","","","NY Candy Company"
"Renard","Strauss","","","","","","","","","","011-49-89-0000-1","","","","","","2015-01-25 09:07:31 AM","2015-04-25 09:07:31 AM","äöüß"

A .csv File Representing Note Records

A .csv File representing Note records can be formatted as follows (this example shows all fields and values that need to be specified - it ignores additional fields related to supporting email records as Notes):

"Creation Date","Details","Organization","First Name","Last Name"
"2015-01-02 18:00:30 +0000","JJohnson met with Tom Smith. Introduced myself to Tom.","NY Candy Company","Tom","Smith"
"2015-03-24 20:04:39 +0000","JJohnson spoke with Tom Smith. Discussed the future of Candy.","NY Candy Company","Tom","Smith"
"2015-01-12 16:20:50 +0000","Met Renard auf der Konferenz diskutiert und sein Interesse an der neuen Technologie Süßigkeiten. Einverstanden, wir sollten mehr in die Zukunft zu sprechen.","äöüß","Renard","Strauss"

A .csv File Representing An Email Note Record

Should you wish to import notes that represent email, you can alternatively specify the full set of Note fields, as described in the example below, which would import a single email record:

"Creation Date","Type","Details","Title","To","Cc","Bcc","state","Organization","First Name","Last Name"
"08/25/2016","Email","Tom, Greetings Sincerely, Todd Todd Saunders Saunders Engineering 313-555-5000 x2","Hello","","","","SENT","Edison Lighting","Tom","Edison"

In fact, when you export any Note records (as .csv or .json), you will now see these additional fields for each record - though they will be put to use only for those for which "Type" equals "Email".

Back to Top

Potential Issues with .csv Files Created with Third-Party Applications

There are various issues that can be encountered with a .csv file that was created outside of CocoaCRM®, that will lead to our App not being able to parse it:

  1. The .csv file may not contain "html encoded" characters where it should. For example, it may contain commas that have not been html encoded and so are being treated as record element separators.
  2. The .csv file may lack a correct header record, containing the fields our App expects.
  3. The .csv file not represent empty values correctly - it may have one or more data records that have either more or less fields than the header record, rather than the same number of fields. In other words, looking at the .csv file in a spreadsheet, you will see that one or more rows created has either more or less columns than the header record.
  4. The .csv file may not represent dates in one of the 20+ date formats that CocoaCRM® supports.
  5. The .csv file itself may not be "UTF-8" encoded - it may be encoded in an alternative format that the App cannot process. In other words, the .csv file may have been exported from an application that does not encode files using "UTF-8".

Back to Top

Html Encoding Characters

Let's say you want to import a .csv file that is supposed to represent a single contact record for someone named "Joe Smithfield", who works for "XYZ, Inc.". Note that in this example, there is a comma in the company name. And also note that in this example, no other data fields for the contact are yet known. Minimally, the .csv file must contain the following:

"First Name","Last Name","Organization" "Joe","Smithfield","XYZ, Inc."

Note that the above html encodes the comma in the company name as , because otherwise it would be treated as a record element separator.

Back to Top

Representing Empty Values

Note also that your more typical .csv will contain records where the header record defines many elements where values are not defined for every record. Below is an example of representing the same exact record, but with many more record fields specified. It is critical here that the record contain empty values as shown for each record field:

"First Name","Last Name","Title","Department","Mr./Ms.","Address Line 1","Address Line 2","State","City","Zip Code","Country","Cell Phone","Office Phone","Ext","Email","2nd Email","Ideas Given","Next Steps","Last Contact","Next Contact","Referred By","Referrals","Expectations","College","Advanced","Interests","Biography","Source","Initiatives","Forecast","Justification","Organization" "Joe","Smithfield","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","XYZ, Inc."

Back to Top

Date Formatting

CocoaCRM® can import and export date/time information, particularly for representing date stamped notes, Contact "next contact" dates and Contact "last contact" dates. When the App exports dates, it will export them formatted as follows:

    2015-07-12 12:28:21 PM

This is the preferred format for either importing or exporting date representations. However, the CocoaCRM® import process is very accepting of other date formats, given the wide variety of potential third-party sources for data you may wish to import. All supported date formats are as follows:

  1. 2015-07-12 12:28:21 PM
  2. 2015-07-12 12:28:21 +0000
  3. 2015 07 12
  4. 2015-07-12
  5. 2015/07/12
  6. 07 12 2015
  7. 07-12-2015
  8. 07/12/2015
  9. 07 12 15
  10. 07-12-15
  11. 07/12/15
  12. 07 12 2015 12:28:21 PM
  13. 07-12-2015 12:28:21 PM
  14. 07/12/2015 12:28:21 PM
  15. 07 12 15 12:28:21 PM
  16. 07-12-15 12:28:21 PM
  17. 07/12/15 12:28:21 PM
  18. 2015 07 12 12:28:21
  19. 2015/07/12 12:28:21
  20. 2015 07 12 12:28:21 PM
  21. 2015/07/12 12:28:21 PM

Encoding Files

Files today are generally "encoded" as "Unicode (UTF-8)", which by default, is what our file import process supports. However, you may also find yourself working with .csv files that were saved or exported with other older encodings, such as "Western (Mac OS Roman)", "Western (Windows Latin 1)" or "Western (ISO Latin 1)". Our standard import facility allows you the option of importing a file using any of these three mentioned alternative encodings as an alternative to the default of Unicode (UTF-8). Please note though that at this time, other older encodings are not supported, and another important modern encoding - "Unicode (UTF-16)" - necessary for supporting Asian languages for instance - is also not supported.

Distinct from the issue of file encoding, is also the issue of line separators. Plain text files (such as .csv files or .json files), may contain Unix line feeds (LF), Windows carriage return line feeds (CRLF) or Classic Mac (CR) carriage returns. Please know that CocoaCRM® "prefers" LF, but can also convert CRLF or CR - and this is without requiring your intervention.

So back to the issue of file encoding. If you have a file that is not UTF-8, how do you override our import process' default setting?

Let's say you have a .csv file that is not encoded as UTF-8, but as Western (Mac OS Roman). If you try to import it as UTF-8, our App will reject it as an "Improperly Formatted File".

The easiest solution is to toggle the encoding option within our Import Window to try Western (Mac OS Roman).

And likewise, just as a second illustration, for handling a file that uses an older Windows encoding, here we toggle the App to expect a Western (Windows Latin 1) file.

Alternative to the above, of course, you can also change the encoding of the file itself, ahead of having our App try to work with it. To do this, you simply open the .csv file in Apple's TextEdit, which every macOS system includes, and resave it.

Also note that alternatives to TextEdit, such as Bare Bone's BBEdit®, make changing encoding even easier. With BBEdit® for instance, you can simply toggle a file preference to fix line feeds or carriage returns, as well as toggle a file preference to UTF-8 encoding.

And critically, ahead of addressing these potential issues, you can identify them better. After all - what we have not addressed so far is how to determine what encoding a file has in the first place? You may know what it is or be able to determine what it is, through utilities of the App in which you created it... Then again, you may not...

Below are screenshots of where to both identify and toggle file encoding and line return settings for a text file in BBEdit® (Version 10.5.13):

Back to Top

Import Performance

The performance of this version of CocoaCRM® in importing records can been characterized as follows:

Back to Top

How to Export Records

CocoaCRM® supports exporting records representing Organizations, Contacts and Notes.

You can export Organizations, Contacts and/or Notes records as either .json or .csv files.

You may wish to export records from the App for any one of a number of reasons:

Options for exporting include:

Back to Top

Exporting .json or .csv Files

To export records:

Back to Top

How to Import and Export Records using a Dropbox® Account

Dropbox® has become a popular solution for backing up personal data in the cloud, and it can be leveraged for backing up data from CocoaCRM®, or even sharing data between multiple installations of it. At the time of this release of CocoaCRM®, Dropbox® continues to offer a free account that offers 2GB of storage - this will be more than enough storage for many CocoaCRM® users, for supporting backing up or exchanging data.

A Simple Way

One way you can choose to use Dropbox® in support of CocoaCRM®, is to access it through CocoaCRM's' standard Import and Export facilities. For instance, you can choose to set up a "CocoaCRM", folder within your Dropbox folder, and then within CocoaCRM®, choose the File Menu, then Import or Export, and for either, then specify the Dropbox® "CocoaCRM" subfolder as the folder to employ. There is nothing more to it than that - you import or export data just as described in the previous sections of this document - just to a Dropbox® folder.

A Dedicated Way

Alternatively, you can import and export to Dropbox from separate facilities within CocoaCRM® than its standard Import and Export options. From the File Menu, you can select Import from Dropbox® or Export to Dropbox®. The first time you try one of these options, note that you will be prompted to login to Dropbox® - only the first time.

What are the advantages to this approach? One is that you will become more conscious of when you are choosing to import or export to Dropbox®, as opposed to a local folder. This is not trivial, and not least because you will always see a reminder that only UTF-8 encoded text files can be imported from Dropbox... CocoaCRM® supports importing other file encoding types only locally.

It is also beneficial to use this approach because maybe you want to place your data in Dropbox® only under specific conditions, while you still want to backup your work locally, routinely. If so, you will want CocoaCRM® to protect you from yourself - it is too easy to apply the last path specified to a dialog (provided as its default), and not confirm that a destination folder is what you want it to be each time.

But perhaps, more significantly, if you employ Import from Dropbox or Export to Dropbox, you will also allow CocoaCRM® to enforce that the folder within it that you interact with is in fact "CocoaCRM". If your purpose in exporting to Dropbox is offsite backup (an important purpose), you do want to be sure you place your exported files in a consistent, easily identifiable location.

Obviously, you can use Dropbox® to share records between separate installations of CocoaCRM® - you can grant access to the Dropbox account to multiple CocoaCRM® users and encourage them to import and export files to the "CocoaCRM" folder for this purpose. This is no real-time data synchronization solution - but it can be an appropriate way of exchanging data between members of a team who need to exchange data periodically.

Back to Top

How to Import from the Apple® Contacts App

CocoaCRM® supports importing Contact records from Apple's Contacts App - interpreting Apple Contacts to create CocoaCRM® Contact Records (not interpreting them to create Organization Records, though some of your Apple Contacts might in fact represent Organizations).

From the File Menu you can select Import from Apple® Contacts. In response, you will be presented with a window in which you can select one or multiple records from the Contacts App (or address book) that you wish to import. Once you have selected one or more records, an Import Button will become enabled. If you tap this button, the import process will proceed essentially as it does when you import a .json or .csv file.

Please note that:

Back to Top

How to Export to the Apple® Contacts App

CocoaCRM® supports exporting records to Apple's Contacts App.

From the File Menu you can select Export to Apple® Contacts. In response, you will be presented with a window in which you can choose to export, to Apple® Contacts, either information related to all contact records in CocoaCRM®, or only those within Organizations currently selected. Please note that only some information you have stored in CocoaCRM® will be exported for each contact record - Apple's Contact App does not support the many fields of data supported by CocoaCRM® and likewise Apple's Contact App supports some fields which CocoaCRM® lacks data to populate.

Back to Top

How to Import LinkedIn® Records

CocoaCRM® does support importing records that have been exported from LinkedIn® - within some limitations...

To export records from LinkedIn®:

  1. Lower your expectations. LinkedIn® only supports exporting some minimal information - it does not support exporting the "resume" content that is its focus. Follow the remainder of these steps only to export name, title, department, and some basic contact information - and only if your LinkedIn® contacts have in fact chosen to publicly share contact information (Perhaps once you have done this, and then imported this information into CocoaCRM®, maybe then you will choose to manually copy and paste from individual LinkedIn records into the basic records you will have created...)
  2. Still want to do this? Okay, on your LinkedIn® home page, move your cursor over "Connections" at the top of the page, and select "Keep in Touch".
  3. Click the LinkedIn® "Settings" icon near the top right to reach the "Contact Settings" page.
  4. Under "Advanced Settings" on the right of the LinkedIn® "Settings" page, click "Export LinkedIn® Connections".
  5. Select the file type of "Microsoft Outlook(.CSV file)" and click "Export". NOTE: Do not select an alternative .CSV format option.
  6. In Apple's Finder, change the extension of the generated file from ".csv.txt" to just ".csv".

Then, import the .csv file you exported:

  1. From the File Menu select Import LinkedIn® Records.
  2. Now select the .csv file containing the records you exported from LinkedIn® and click Import.
  3. Follow the remaining steps typical of the CocoaCRM® record import process.

Tip: If things should go wrong, please also review the sections of this document describing the formatting for a .csv file that is expected. For CocoaCRM® to import ANY .csv file, regardless of how it was created, it must be formatted correctly both in terms of data structure and file encoding. We do explain in detail how to get formatting right.

Back to Top

How Syncing Between Devices is Supported


Multiple installations of CocoaCRM®, if on Apple devices logged into a common iCloud account, can sync data records, and also sync record field customizations. For a single iCloud user, syncing (maintaining data consistency) is supported between a total of 2-5 iOS and/or macOS CocoaCRM® installations.

CocoaCRM® syncing will work well for a single user sharing data with himself or herself, consciously switching between devices. On the other hand, please know that the "peer-to-peer" syncing capability provided by our App cannot be satisfactorily pressed into service for multiple users (who might, creatively, choose to share a common iCloud account, and then exchange data unpredictably - we recommend against this).

Back to Top

Enabling Syncing

If as a single user, you will be employing CocoaCRM ® on multiple devices, and if you do wish to sync records, then to enable syncing, you must arrange the following:

Use the iOS Settings App (for the iOS version of CocoaCRM®), and the Mac System Preferences App (for the macOS version of CocoaCRM®), both to enable iCloud, and to assure that you have iCloud Drive storage available (the Apple Manage Storage option).

To enable the Syncing Preference for a given iOS installation of CocoaCRM ®, within the App, tap the Side Menu button, and then tap Syncing is Disabled. This will open a view within which you can then toggle a switch and enable syncing. To enable syncing for a given macOS installation of CocoaCRM ®, within the File Menu, tap the Sync Menu Item. This will open a window within which you can likewise toggle a switch and enable syncing.

Please note that on each of your devices that you wish to keep in sync, you will need to enable syncing separately. This will be because your preference to sync records is a preference that will NOT itself sync between devices - this is how we allow you to keep syncing disabled for one or more devices, should you desire to do so permanently or temporarily (this is different from other preferences, which will be synced across devices, as long as iCloud is available).

Back to Top

Best Practices for Supporting Syncing

Once you have enabled syncing between installations of CocoaCRM ®, there are still many things you need to understand about how and when it will work:

Some Fundamentals

When Syncs Will Occur

Syncing and Importing

Syncing Deletion of Records

Disabling Syncing

Back to Top

Addressing Syncing Failures

What to Do if Syncing Does Not Appear to Be Occurring

As said, syncing should occur every 30 seconds or so - at least when the App is in the mode of presenting a list of records (rather than a record detail view or some other view), and as long as no filter is applied (a filter, for example, being "show only companies beginning with the letter "m").

Also as said, when syncing is occurring, a "spinner" should usually (though not always) appear - on an iOS version of the App, between the sidebar control and the perspective controls, and on a macOS version, to the lower right of the primary window.

Generally, if you don't see the spinner appear for some time, this is okay - it may simply mean that the underlying cloud connection is temporarily unavailable. But if you truly become convinced that syncing is never going to occur, then try quitting and re-opening the App (for the iOS version of the App, the means dismissing it and then removing it from background). If this does not do the trick, more reluctantly, you can try disabling and re-enabling syncing. But as stated in the previous section of this document, be cautious about this - disabling and re-enabling randomly can lead to either records going missing, or duplicate records appearing, depending on when you choose to disable syncing in relation to syncs not yet started or completed.

What to Do if Syncing Appears to be Occurring - But Records Don't Transfer

What if the spinner does appear routinely, but actual changes to records do not result, over the course of, say, more than twenty minutes or so? If all of your devices have network connections, and all have access to iCloud, (in other words, if connectivity is not the problem), then here is what you can try:

  1. First, export all of your records from each device as a separate JSON file - in other words, backup all your records. Really, do not skip this step.
  2. Now delete all of your records from all of your devices.
  3. Wait at least ten or twenty minutes.
  4. Import your records back in - to only one device.
  5. Wait patiently for the records to sync from that device to your other devices.

Usually, the above steps should solve any problem. But if they don't, then you can also try taking things slightly further:

  1. Either make sure you still have your JSON backup files from the last series of steps, or take care to backup all of your data now.
  2. Delete the App from all of your devices, except the one with the most records.
  3. Download the App from the AppStore again onto the devices from which you just deleted it (no, Apple will not charge you again for this).
  4. Open the copies of the App you just reinstalled, and enable syncing within them.
  5. Now wait patiently for your records to sync from the device you didn't remove the App from, to these devices.
  6. Once syncing of these records has occurred, import back in any records which were not on this first device, onto any one of your devices, and wait for the records to then sync to the others.

Recovering From a Failure to Sync Record Field Customization

What if you have customized field names for your Organization or Contact records, but syncing has not shared the customization across your devices? The solution here is to customize the field names on your devices separately - when syncing does eventually occur, your having done so should not cause a conflict.

Back to Top

How to Classify Records

To classify records, you select the records you wish to classify in the Organization Table View, then select the Classify Button (the button beneath that Table View, presenting a tree of filled circles). This button opens up a view in which you can select a specific Organization field, and then define a common value to be applied to that field for all selected records.

Note that this approach does not support changing values for every field the App presents - see the previous section, "How to Change Values for Multiple Records at Once", for an alternative method for addressing alternative fields.

Back to Top

How to Switch a Contact to a Different Organization

To change the Organization record with which a Contact record is associated, you can select the Edit Button (the Pencil image) next to the grayed out organization name within the Contact record. Having selected this, you will then be presented with a list of Organizations within the App. If you select an Organization listed and click the Apply Button, the Contact in question will be removed from association with its current Organization, and added to the Organization you have selected.

Alternatively, if you tap the None Button, and then the Apply Button, you will be able to disassociate the Contact from any Organization, should you wish to make it unaffiliated.

Note that if you wish to change the Organization to one which is not yet in the App, you should just first create the new Organization record desired, and then you can make an association to it here.

Back to Top

How to Sort and Filter Records

To sort records (either Organizations, Contacts or Notes), select the header for the table column which you wish to serve as the basis for sorting. You can sort by any column, or reverse the order of the sort back and forth.

To filter records (either separate from or in combination with sorting them):

Note, as shown above, that all Organizations will be returned where at least one Contact has a Next Contact Date value that matches the criteria.

Note also that as a related convenience, each Contact with a Next Contact date equal to the current date will always appear with a colored star to its left in the Contacts Table View - to allow you to distinguish each easily. This feature is in fact independent of the filtering capability - these stars will appear regardless of whether you are filtering your records in any manner or not - to always indicate that a Contact has a Next Contact Date equal to the current date. Here we see this after having filtered for the Next Contact equals the current date.

Back to Top

Creating Reports

CocoaCRM® supports generating Reports that provide different summaries of data gathered across your records.

Back to Top

The Productivity Window

CocoaCRM® provides the Productivity Window for viewing charts that support analyzing your productivity as a sales person across time, at least as reflected in the quantity of notes you author. This window provides bar charts for quickly reviewing how many notes you are creating across different time frames - the last 7 days, the last 30 days, the last 90 days and the last 365 days.

Back to Top

The Dashboard

CocoaCRM® provides the Dashboard Window for viewing charts that support analyzing the nature of your business. For only those organizations for which you have chosen to assign a priority value:

Back to Top

How to See Records on a Map - and Also Create New Records from Map Locations

In the primary window, in the Organizations Perspective, if you select as many as 50 Organization records which have address values, and then tap the Drop Pin Button, you can then see them on a map, with a red star indicating the location of each. Likewise, in the Contacts Perspective, you can select as many as 50 Contact records (for which you have set address values). And when viewing an individual Organization's details, or an individual Contact's details, you will also find a Drop Pin Button to the right of the country field.

When viewing records on a Map, as one option, you can choose to display other nearby organizations. This can be helpful for instance if you are planning business travel, and wish to identify other clients nearby a client you already plan to visit.

As another option, you can choose to display any number of nearby points of interest identifiable through Apple's map services, either by toggling checkbox options, or entering a filter value of your choice into a search field. Furthermore, for locations you discover as nearby, you can instantly creating new Organization records if you desire. Think of the potential convenience of this, if for instance you are prospecting in an industrial park...

Back to Top

Auto-Dialing Phone Numbers

If you tap on one of the Phone Buttons to the right of a phone number in CocoaCRM®, the phone number can be dialed via FaceTime (which in turn leverages your iPhone). Alternatively, you may be able to dial a land line if you have an appropriate helper App installed - though at this time, we ourselves have not tested this.

Back to Top

Creating an Email applying your Personal Information

To supply some information about yourself to the App, from the CocoaCRM Menu you can select Personal Information. Then within the window that appears, you can enter your name, address, etc.

Why would you want to do this? Well, to save yourself typing when using the App to create records. When you create a Note, if you set its type value, you can choose to have it autofill with some basic language that you might type routinely.

Let's consider the case that you have chosen to supply the App with some information about yourself, and that you are now adding a new Note for one of your contacts... and that you now toggle the type for this Note to "Email". The following is what will result. You can then of course choose to edit the template. Then you can supply a Subject field value - which will cause the Send Button to become enabled (we are enforcing a strict usage - that every email must have a "Subject" as well as a "To" address value). If you then tap the Send Button, the draft email will be transferred over to a new window in your Apple Mail (we are presuming that you do have an email account configured with Apple Mail). And then when you return to CocoaCRM®, after having sent the email through Apple Mail, you will be asked to confirm if you did in fact send it. If you confirm that the email was sent, then you will see the record toggle from being labeled as "DRAFT" to being labeled as "SENT", and going forward, unlike other records in CocoaCRM®, it will no longer be editable. So, yes... we are thinking about adding more functionality to CocoaCRM® relating to creating and managing email... this is just the first bit we are introducing...

Back to Top

How to Work with Apple's Calendar

CocoaCRM® offers what we think are some innovative features for working with Apple's Calendar App. Our thinking is that:

Towards supporting the above goals, we provide a Calendar Window, accessible either from the Reports Menu or accessible from a Calendar button found within each Contact Record:

From within the window that appears, you can:

Filtering Calendar Events

To filter Calendar Events, you can choose to toggle which of your personal Calendars will contribute to the events displayed. You can also toggle the date range for Events shown, either using a preset choice (such as "The Next 30 Days"), or specify a date range. And powerfully, you can choose to toggle that events only be included if they include particular text. Preset options here include 'Only mentioning' the currently selected Organization or Contact, and even more powerfully, "only mentioning a known Organization".

Let's consider that last point more fully. We imagine that if you practice good data hygiene, and you always properly label Calendar Events with names of your Contacts and client Organizations (which our App makes easy - see the next section for "Adding a Calendar Event"), then filtering for "only mentioning a known Organization" will let you easily filter your Calendar to view just your work related schedule - past as well as present. And we even let you export what you filter as a .csv file, should you wish to examine and analyze your work Calendar in a spreadsheet for instance.

Adding a Calendar Event

If you select the Calendar from the Calendar button accessible with a given Contact record, then the Pane it presents for adding a new Calendar Event will pre-populate with data from that record. Likewise, if you click the Calendar Menu item from the Reports Menu, it will pre-populate with data from any selected Contact Record.

Note that in either case, it will format the Title field text for you, assuming that you want to "Call" the contact on a given day - if instead, for instance, you want to "Meet" the contact, you will need to edit the title (we thought "Call" would be the more useful default).

If you do choose to add a Calendar Event for the currently selected Contact record, note that you will see an Alert that will ask you if you want to also set your Next Contact Date for the Contact to match the start date you have specified for the Event. Obviously, we think you should always do this - excepting when you add a Calendar Event for a Contact that is further in the future than one or more already scheduled nearer term.

Editing One or More Calendar Events

Within our Calendar Window, you can easily select any scheduled Apple Calendar Event, and modify it as you like. But also consider that you can search for, and then select and edit multiple Calendar events quite easily...

Many people who choose to acquire a CRM App such as ours, do so only after running their businesses without any CRM solution for some time. A new small business person for instance, might recognize the need for some sort of CRM functionality, only after seeing that too much of his or her business interactions are documented just across email, calendars, etc.

With this in mind, our Calendar Window enables selecting multiple Calendar Events at once, and choosing to edit some of their fields in batch. This means that you can use our App to standardize historical data in your calendar, and make it easier for our App to subsequently filter it for you. An example will help explain this. Let's say that ahead of obtaining our product, over the past year, you have been working with your client, Jane Jones, at the XYZ Company. In consequence, you may have various Calendar Events such as "Met Jane", Met with Jane Jones", "Visited XYZ", etc. We allow you to:

If you choose to use our App for this sort of Calendar cleanup, then going forward, your work related events will be more easily accessible. And as well, they will conform to patterns for new Calendar Events you subsequently create through our App, allowing your Calendar to remain consistently accessible across all time.

Back to Top

Creating Tasks and Workflows for Sales Process Management - Using the iOS Version of the App

Not yet available in the macOS version of CocoaCRM®, but available in the iOS version, is functionality for creating and assigning either individual Tasks or sets of Tasks to your Contacts. Applying a set of Tasks - a Workflow - supports Sales Process Management (also commonly referred to as Opportunity Management, Sales Stage Management, or Sales Pipeline Management). With the iOS version of CocoaCRM®, which you can use in combination with the macOS version, you can:

Back to Top

In Summary

As originally stated, the intention of CocoaCRM® is to deliver a Customer Relationship Management solution for sales people who work in relatively independent fashion. Our thinking is that for sales people who don't need to share data in real time, a standalone desktop App - in combination with a standalone mobile App - can be a solid alternative to a CRM web service.

If your requirements align with those that we are attempting to address, we hope you will work with our Apps and work with us. And as you grow your business using our Apps, please let us know - as much as possible - how they meet your needs, and how we might improve them to do so more. We very much want to be as responsive as we can in continuing to advance what we offer. Please email us your thoughts - we will be glad to have your ideas and insights. We can always be reached by email at

Back to Top