# Reports ## Simple reports There are a number of simple reports available as direct buttons from the administration dashboard page. Some of them are "verification reports", such as finding people who have not registered or misconfigured sessions. Those reports will have their button highlighted if they have any data in them. ## Attendee reports Attendee reports allow for the creation of custom reports of almost anything related to attendees. For fields, pick the fields you want. For filtering, different filters can be added by selecting the type of filter in the dropdown list. The filter will be added to the bottom of the current list. Filters are grouped into filterblocks. Within each filter block, filters are *AND*ed together if there are multiple filters. The different filterblocks are then *OR*ed with each other to produce the final results. When filtering on a text field, a value can be entered to do a substring search for it. If the field is left empty, it is only searched for not null/not empty (depending on filter) and any rows that exist will be returned. To explicitly search for null fields, enter the string *\N* (backslash-N). And finally, this field can also take *>* and *<* to indicate that the value should be greater/smaller (for numbers) or after/before (for dates). Once you are done building your filter, click *Query data*. This will runt he query against your filter, and show you a count of attendees matching. Once you have done this once, a second form appears, which allows you to pick some more fields, but you can also update your filters and re-query the data as needed. You can specify a title if you want one on the report, mainly for printing. In *Additional columns* specify extra column headers with comma between them. This is particularly useful if for example generating an attendee list to tick off people on -- make an empty column for the tick-mark! Finally, click *Generate report*, which will then open the resulting report in a new tab. Note that this will *not* req-query the database for new attendees, so if more attendees now match the filter definitions you made earlier, they will not be included in the report. This is intentional to make sure the report is predictable. ### Dynamic report fields For reporting purposes, dynamic fields can be added to all registrations for a conference, and then be set as part of report generation. These fields can be used to store persistant data about the results of reports, and can then be used later on when filtering new reports. To use this feature, first declare which fields should be available for the conference on the [conference](configuring) page. Once this is done, the fields become available for filtering and for including in reports. Note that all fields are always stored and treated as text, and there is no way to store an empty string (storing an empty string will remove the field, thus it will only match the NULL value using the `\N` filter). ## Badges For badge printing, it's often very useful to use the dynamic fields system, as this will allow "batching" of badges being generated. This can be built off a generic filter for "all confirmed but not canceled attendees", with an additional dynamic field for `badgesprinted` (or pick any name you prefer). To print this, set the following entries for your filter: * `Payment confirmed at` (leave the field empty) * `Canceled at` set to `\N` (to explicitly filter for non-canceled registrations) * `badgesprinted` set to `\N`(to filter for attendees that have not yet had the badge printed) Set `Format` to `Badge`, and press *Generate report*. Once you have verified that the badges look OK, chose the `badgesprinted` field and pick a value for it under *Set field*, and press *Set dynamic field on matching attendees*. It is important that this is done before a query is re-run, to ensure it has exactly the same set of attendees as were in the report. You can pick any value you want to set it to, as the filter is only on "any value exists", but a good suggestion can be something identifying the batch such as the date of printing. You can also generate badges for individual registrations by clicking the *Preview Badge* button on the registration page, or for multiple manually selected badges by marking them on the registration list and generating from there. These are useful for smaller sets of badges, whereas the report method is more usable for large sets. ## Time reports The time reports can be used to draw graphs relative to the time of conference for a number of things. In particular, they can be used to compare rates between different instances of conferences. Time reports are only available to superuser and conference series administrators. For series administrators, all conferences in the series will always be available.