Answers.Body: <p>If you use the Summary Fields extension, then you may have some better search options, such as Lifetime donations &lt;1 etc and be able to use them in a single Advanced Search. I think then you  would add them to a Group, and then select that Group and search for Activities to try and find those who might have had some level of engagement such that you do want to keep them.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2016-04-01T02:50:02.307Z
Answers.LastActivityDate: 2016-04-01T02:50:02.307Z
Answers.UserDisplayName: petednz - fuzion
Answers.Body: <p>I have not tried this myself because I would then go to the database directly, but have you tried to achieve this with the search builder?</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2016-03-31T10:47:21.147Z
Answers.LastActivityDate: 2016-03-31T10:47:21.147Z
Answers.UserDisplayName: ErikH - CiviCooP
Answers.Body: <p>You could find them via groups (or tags) and the custom include/exclude search.</p>
  
  <p>If you have always used CiviCRM for everything then I think you should only need two groups or tags: </p>
  
  <ul>
  <li>All contacts </li>
  <li>All contacts with activities (as activites are created for contributions, membership and events)</li>
  </ul>
  
  <p>If you have migrated data from a previous system or imported contributions, memberships or event participants then you may need to create groups or use appropriate tags for the all of the following:</p>
  
  <ul>
  <li>All contacts</li>
  <li>All contacts who have made contributions</li>
  <li>All contacts who have memberships </li>
  <li>All contacts who have registered for events</li>
  <li>All contacts who have activities.</li>
  </ul>
  
  <p>Then go to <strong>Search > Custom searches > include/exclude search</strong>. You include <strong>All contacts</strong> and exclude the rest. </p>
  
  <p>You can delete contacts from the results screen.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2016-04-01T05:20:51.007Z
Answers.Text: While it involves more steps than the other two answers suggested, I think this is the most "correct" answer, short of writing a custom search.
Answers.UserDisplayName: Jon G - Megaphone Tech
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2016-03-31T14:27:55.377Z
Answers.LastActivityDate: 2016-03-31T14:27:55.377Z
Answers.UserDisplayName: JoAnne
Body: <p>At some time our CiviCRM/Drupal installation has had lots of spam accounts created. As these are over a period of time I can't isolate by date. One tell-tail sign that the accounts are spam is their Civi contact summary has no recorded touch points (activity, contributions, memberships and events). Is there a way to search for contacts that meet this criteria and delete? I've looked at the Find Contacts - Advanced Search but there doesn't appear to be an option for null values. I've also looked at modifying one of the Contact Report Templates which does allow null matches but haven't been able to find a setting that gives the spam accounts.</p>
  
Tags: <contacts><spam>
Title: Find and remove contacts based on no activity, contributions, memberships and events
ThreadText: # Find and remove contacts based on no activity, contributions, memberships and events
  
  (Asked by: username_0 on 2016-03-31)
  
  At some time our CiviCRM/Drupal installation has had lots of spam accounts created. As these are over a period of time I can't isolate by date. One tell-tail sign that the accounts are spam is their Civi contact summary has no recorded touch points (activity, contributions, memberships and events). Is there a way to search for contacts that meet this criteria and delete? I've looked at the Find Contacts - Advanced Search but there doesn't appear to be an option for null values. I've also looked at modifying one of the Contact Report Templates which does allow null matches but haven't been able to find a setting that gives the spam accounts.
  
  **Tags:** contacts, spam
  
  
  ---
  
  ## 3 answers
  
  ### Answer by username_3 on 2016-03-31. Score: 3 | Accepted answer
  
  You could find them via groups (or tags) and the custom include/exclude search.
  
  If you have always used CiviCRM for everything then I think you should only need two groups or tags:
  
  * All contacts
  * All contacts with activities (as activites are created for contributions, membership and events)
  
  If you have migrated data from a previous system or imported contributions, memberships or event participants then you may need to create groups or use appropriate tags for the all of the following:
  
  * All contacts
  * All contacts who have made contributions
  * All contacts who have memberships
  * All contacts who have registered for events
  * All contacts who have activities.
  
  Then go to **Search > Custom searches > include/exclude search**. You include **All contacts** and exclude the rest.
  
  You can delete contacts from the results screen.
  
  > **Comments:**
  > **username_4**: While it involves more steps than the other two answers suggested, I think this is the most "correct" answer, short of writing a custom search.  
  
  ---
  
  ### Answer by username_1 on 2016-04-01. Score: 0
  
  If you use the Summary Fields extension, then you may have some better search options, such as Lifetime donations <1 etc and be able to use them in a single Advanced Search. I think then you would add them to a Group, and then select that Group and search for Activities to try and find those who might have had some level of engagement such that you do want to keep them.
  
  
  ---
  
  ### Answer by username_2 on 2016-03-31. Score: 0
  
  I have not tried this myself because I would then go to the database directly, but have you tried to achieve this with the search builder?
  
  
  ---
  
  