Answers.Body: <p>Adding the Summary Fields extension is the way to go. Use Advanced Search to find contacts with zero lifetime donations to create a smart group or list of people who have never given. Subsequent donations from those contacts will automatically remove them from the smart group.</p>
  
  <p>If you are interested in finding people who have given at some point, but not since a specific date, you use Advanced Search and Summary Fields to exclude anyone who has a non zero life time contribution, but who's last contribution was before your cutoff.
  Here's an example of the search entries.
  <img src="https://i.sstatic.net/CKD7o.png" alt="Advanced Search summary fields"> </p>
  
  <p>You can get the summary fields extension by installing from Administer > System Settings > Manage Extensions, and can find more information about it at
  <a href="https://civicrm.org/extensions/summary-fields" rel="nofollow noreferrer">https://civicrm.org/extensions/summary-fields</a></p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2015-04-14T18:21:01.377Z
Answers.LastActivityDate: 2015-04-15T02:27:23.927Z
Answers.LastEditDate: 2015-04-15T02:27:23.927Z
Answers.UserDisplayName: PTP Mark
Answers.Body: <p>For contacts with no gifts <em>ever</em>, use Search Builder. Include contacts where >Contribution > Contribution ID > Is Null.</p>
  
  <p>For contacts who didn't give within a specific timeframe, I can only come up with one front-end way. It's kludgy but may get the job done. Create a custom text field for contacts, let's call it "Special Use". Create a group that includes all contacts who gave before OR after the timeframe. Use Batch Update via Profile to edit all contacts in this group, setting the text of Special Use to "Exclude". Now use Search Builder to look for contacts where >Contact > Special Use > Is Empty (or Is Null). Not pretty at all, but no code required.</p>
  
  <p>It would be nice if Search Builder had a NOT option, so we could exclude people who meet certain criteria. Or if we could use CiviMail's Include/Exclude group functionality to build our list and save the result as a new group without actually sending the email (like Raiser's Edge users do with the Quick Letters feature). Maybe one day!</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2015-03-26T21:53:06.470Z
Answers.Text: CiviCRM's search facilities are relatively weak IMO in respect of trying to find records where things haven't happened or omitting a set of records from a search result. I used to use FileMaker years ago, and that had some useful, and user-friendly tools in this regard.
Answers.UserDisplayName: Graham
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2015-03-26T20:18:52.317Z
Answers.LastActivityDate: 2015-03-26T20:18:52.317Z
Answers.UserDisplayName: Nicholai
Answers.Body: <p><a href="https://civicrm.org/extensions/summary-fields" rel="nofollow">Summary Fields</a> is a very cool extension that can do what you're talking about. </p>
  
  <p>Once you set it up, you can search by many aggregate parameters including "total lifetime contributions". </p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2015-03-26T17:58:39.980Z
Answers.Text: Cool! However I am also(!) wondering about the possibility to search for no contributions in a certain time span...
Answers.UserDisplayName: Flying
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2015-03-26T17:48:58.473Z
Answers.LastActivityDate: 2015-03-26T17:48:58.473Z
Answers.UserDisplayName: Sean
Answers.Body: <p>I know you said "no code", buuuut... just in case anyone else might be wondering, here's the SQL that would do it (including the date range you mentioned in your comment) </p>
  
  <pre><code>select 
    contact.id, 
    contact.display_name
  from civicrm_contact as contact
  left join civicrm_contribution as contrib on 
    contrib.contact_id = contact.id and 
    contrib.receive_date between '2015-01-15' and '2015-02-15' 
  where 
    contrib.id is null;
  </code></pre>
  
  <p><a href="http://wiki.civicrm.org/confluence/display/CRMDOC/Create+a+Custom-Search+Extension" rel="nofollow">Building a custom search</a> from a query like this is actually one of the easier types of customizations to make. </p>
  
  <p>Or if you're in a pinch, you could use an application like <a href="https://www.mysql.com/products/workbench/" rel="nofollow">MySQL Workbench</a> to run this code and inspect the results through a nice visual interface. </p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2015-04-14T16:09:05.843Z
Answers.Text: yes, but you can use the sql to get your developer to write a custom search extension and hence is a good starting point
Answers.UserDisplayName: Donald Lobo
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2015-03-26T19:14:31.767Z
Answers.Text: Thanks, nice reference. But SQL is not especially helpful for low-tech backend staff...:-)
Answers.UserDisplayName: Flying
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2015-03-26T18:48:15.530Z
Answers.LastActivityDate: 2015-03-26T18:48:15.530Z
Answers.UserDisplayName: Sean
Answers.Body: <p>You can do it in two steps:</p>
  
  <ul>
  <li>Search for all contacts, and put these in a tag (or group).</li>
  <li>Do a second search, for all contacts WITH a donation. And then remove these from you tag (or group) using action <code>Untag Contact</code> (or <code>Remove contact from group</code>).</li>
  </ul>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2015-03-27T21:23:48.763Z
Answers.LastActivityDate: 2015-04-14T20:37:57.913Z
Answers.LastEditDate: 2015-04-14T20:37:57.913Z
Answers.UserDisplayName: Tom B.
Body: <p>Is there a non-code way to search for contacts with no contributions recorded?</p>
  
  <p>(A search in search builder will only result in contact with contributions with null values, which is not the same as no contributions at all.)</p>
  
  <p>It could be a search, or a report, or even an extension. But how do you find contacts with no contributions?</p>
  
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2015-04-14T16:09:41.677Z
Comments.Text: Wonder if you can do this using Drupal Views?
Comments.UserDisplayName: Donald Lobo
Tags: <contributions><civireport><search>
Title: How do I search for contacts with no contributions?
ThreadText: # How do I search for contacts with no contributions?
  
  (Asked by: username_0 on 2015-03-26)
  
  Is there a non-code way to search for contacts with no contributions recorded?
  
  (A search in search builder will only result in contact with contributions with null values, which is not the same as no contributions at all.)
  
  It could be a search, or a report, or even an extension. But how do you find contacts with no contributions?
  
  **Tags:** contributions, civireport, search
  
  > **Comments:**
  > **username_1**: Wonder if you can do this using Drupal Views?  
  
  ---
  
  ## 5 answers
  
  ### Answer by username_6 on 2015-03-27. Score: 10 | Accepted answer
  
  You can do it in two steps:
  
  * Search for all contacts, and put these in a tag (or group).
  * Do a second search, for all contacts WITH a donation. And then remove these from you tag (or group) using action `Untag Contact` (or `Remove contact from group`).
  
  
  ---
  
  ### Answer by username_2 on 2015-04-14. Score: 7
  
  Adding the Summary Fields extension is the way to go. Use Advanced Search to find contacts with zero lifetime donations to create a smart group or list of people who have never given. Subsequent donations from those contacts will automatically remove them from the smart group.
  
  If you are interested in finding people who have given at some point, but not since a specific date, you use Advanced Search and Summary Fields to exclude anyone who has a non zero life time contribution, but who's last contribution was before your cutoff.
  Here's an example of the search entries.
  ![Advanced Search summary fields](https://i.sstatic.net/CKD7o.png)
  
  You can get the summary fields extension by installing from Administer > System Settings > Manage Extensions, and can find more information about it at
  <https://civicrm.org/extensions/summary-fields>
  
  
  ---
  
  ### Answer by username_3 on 2015-03-26. Score: 4
  
  For contacts with no gifts *ever*, use Search Builder. Include contacts where >Contribution > Contribution ID > Is Null.
  
  For contacts who didn't give within a specific timeframe, I can only come up with one front-end way. It's kludgy but may get the job done. Create a custom text field for contacts, let's call it "Special Use". Create a group that includes all contacts who gave before OR after the timeframe. Use Batch Update via Profile to edit all contacts in this group, setting the text of Special Use to "Exclude". Now use Search Builder to look for contacts where >Contact > Special Use > Is Empty (or Is Null). Not pretty at all, but no code required.
  
  It would be nice if Search Builder had a NOT option, so we could exclude people who meet certain criteria. Or if we could use CiviMail's Include/Exclude group functionality to build our list and save the result as a new group without actually sending the email (like Raiser's Edge users do with the Quick Letters feature). Maybe one day!
  
  > **Comments:**
  > **username_4**: CiviCRM's search facilities are relatively weak IMO in respect of trying to find records where things haven't happened or omitting a set of records from a search result. I used to use FileMaker years ago, and that had some useful, and user-friendly tools in this regard.  
  
  ---
  
  ### Answer by username_5 on 2015-03-26. Score: 4
  
  [Summary Fields](https://civicrm.org/extensions/summary-fields) is a very cool extension that can do what you're talking about.
  
  Once you set it up, you can search by many aggregate parameters including "total lifetime contributions".
  
  > **Comments:**
  > **username_0**: Cool! However I am also(!) wondering about the possibility to search for no contributions in a certain time span...  
  
  ---
  
  ### Answer by username_5 on 2015-03-26. Score: 2
  
  I know you said "no code", buuuut... just in case anyone else might be wondering, here's the SQL that would do it (including the date range you mentioned in your comment)
  
  ```
  select 
    contact.id, 
    contact.display_name
  from civicrm_contact as contact
  left join civicrm_contribution as contrib on 
    contrib.contact_id = contact.id and 
    contrib.receive_date between '2015-01-15' and '2015-02-15' 
  where 
    contrib.id is null;
  
  ```
  
  [Building a custom search](http://wiki.civicrm.org/confluence/display/CRMDOC/Create+a+Custom-Search+Extension) from a query like this is actually one of the easier types of customizations to make.
  
  Or if you're in a pinch, you could use an application like [MySQL Workbench](https://www.mysql.com/products/workbench/) to run this code and inspect the results through a nice visual interface.
  
  > **Comments:**
  > **username_0**: Thanks, nice reference. But SQL is not especially helpful for low-tech backend staff...:-)  
  > **username_1**: yes, but you can use the sql to get your developer to write a custom search extension and hence is a good starting point  
  
  ---
  
  