I use CiviCRM for a non-profit organization that, among other things, organizes a yearly funweek for children. This year, we introduce event badges with a barcode. I was hoping to be able to use this to quickly register the actual attendance for each day.
The barcode value is entered into the External ID field of each child's contact record. On the event registration I have custom fields for each day of the week.
Our plan was to have one of the volunteers scan each barcode as the children enter the building, then I could easily add the event id, presence and an indicator of the day to this list as that would be the same for each line.
Unfortunately this doesn't seem to work, because it doesn't seem to be possible to update event registrations unless I know the event registration id. Knowing the External ID and Event ID is apparently not enough to make a match. I find this odd as I think it is illogical to have one person register twice for the same event.
Is there a way around it except by exporting all attendees and using the export as a lookup-table to add the event registration id to the import-file?

4 Answers 4


Maurice - we did something similar for a large event this year with multiple series of workshops running simultaneously.

Every participant was pre-registered in Civi. Each workshop was added as a separate Event in Civi. We printed barcodes of the participants' Internal Contact ID onto cheap Avery mailing labels - something like 3 inches by 2 inches - using the Event Badge template in Civi, and just pasted the labels on the back of the registration badge holder.

We then created a shared spreadsheet in Google Drive, with a worksheet for each workshop, and set up a volunteer at the entrance of each workshop with a wifi-connected laptop and a USB barcode scanner.

All the volunteer had to do was scan each bar code into the worksheet. It worked pretty well. One hitch was the size of the bar code produced from Civi is a little small, and we used cheap (we got them for about $10 each) old CueCat USB scanners I found through eBay. We then just imported the Participant IDs and updated the Event status for each workshop Participant as Attended.

Just in case, we had plain old paper sign in sheets for each workshop available and used those in some instances.

The biggest challenge of this technique is having enough volunteers, with available laptops, set up in advance with the USB scanner (and the correct driver software!) and decent wifi. Wifi isn't required but it was handy to have the scanned-in Internal Contact IDs for each Participant appear live in Google Drive while they were scanned in for the workshop.

  • Joe - in case you didn't spot it above, another time, for your more manual back-up plan, you could also use the recipe at fuzion.co.nz/blogs/…
    – petednz - fuzion
    Commented Aug 14, 2015 at 5:38
  • Peter, thanks, had not seen that blog post before. Commented Aug 14, 2015 at 6:09

Not addressing the main point but to help others who find this due to looking for 'barcode' there have been previous efforts in this regard, check





Also, in the hope of helping others, since the question refers to 'quickly entering attendance' i thought it would be helpful to provide a link to this recipe which allows a Drupal user to tick people off as then enter, and then submit those updates via VBO to register them as 'attendees'.

  • Pete, this is great, thanks for the link! Commented Aug 12, 2015 at 0:47
  • 1
    your welcome. still not sure on SE etiquette versus the old forum. But I hope we can use it so we don't 'only' answer the question but can also provide related links to fellow voyagers who may yet pass this way ;-)
    – petednz - fuzion
    Commented Aug 12, 2015 at 2:06

You don't say if you already have a participant record for the kids so my answer may not be quite what you want, but we can get there I think.

Most basically you will need to have a little bit of custom code to look up the contact using your external id. (Next time consider using the contact id itself in the barcode). From that lookup you will have the contact id. With that and the event id which you say you know you should be able to use the api to look up the specific participant record you need.

Of course if you aren't preregistering, then you could just generate the registration right then.

  • Sorry I forgot to mention that. Yes, the kids are pre-registered for the event. The reason that we can't use the contact ID for the barcode is that we are using pre-printed barcode cards which we hope to use again next year, but can't guarantee that the same kid will get the same card. Removing all the external ID's is easier. We simply don't have the money to buy a cardprinter. Unfortunately I have never done anything with the API, so I'm not sure if that is something I will be able to get my head around and have a working solution before August 24. Thanks for your help.
    – Maurice
    Commented Aug 13, 2015 at 3:09

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.