You can set any Contact, Project or Task to be unbillable. You can set these up in your contact, project or task settings respectively.
Task rates override all other rates, so it can be useful to set up a task for irregular unbillable time, which you can assign to time entries at any point.
Just click edit on a task (or create a new one, eg #probono) and set its default hourly rate to $0.00 or uncheck the billable option on the Tasks tab.
Once you’ve done that you can start associating unbillable entries with this task and they’ll always be set to $0.00 on any invoices created - this means your Contact can still see that you’ve done the work, but that you’re giving it to them for free.
To include these unbillable entries, make sure to create a custom invoice when it’s time to bill the client. Learn more about custom invoices here