We had a Parenting Event recently where the attenders were asked when they registered for the event, what ages their children were. While we have some of this data in Rock, we didn't know for sure that everyone who would attend the event had info in our system, so we added a Registration Attribute to the sign-up to collect this information.

Upon arrival, each family was greeted by a volunteer who assisted with check in and each person received a Name tag and an Event Breakouts Info tag for their reference/use, and each family also had a Phase Cards tag printed, which displayed the ages of the children they claimed to have when they registered, for our volunteers to reference.


Why would the volunteers need the Phase Card tag for a person they were checking in? Well, each child age group had a printed card that would go into the attendee's swag bag for the event with info specific to that age/stage of life. So the volunteer took the Phase Card tag and at a quick glance could see which ages the person checking in had, and could drop the appropriate cards into the bag for the attender. It personalized the event and worked out great!

This whole process relied on us being able to pull Registration Attributes via lava into a Merge Field.

So if you have a similar event and need to pull a Registration Attribute into a tag, hopefully this guide can help show you how we did it, and how you can too!

I'm going to forgo the instructions on how to create a registration or how to add a registration attribute and assume you are already there. We will pick up at creating the Merge Field and the tag itself with it's required ZPL code.

Gathering Information

We will need a few items to make this work. Let's look up the following:

  • Registration Template ID number
  • Registration Attribute Keys

1) Go to "Tools - Event Registration" and navigate to your event in the list on the left.


2) Once your event name is clicked, your URL at the top will have your Registration Template ID in it. Make a note of that number.


3) Click the edit button to see the event forms.


4) Click the "Form(s)" dropdown and then choose the edit (pencil) icon next to the Registration Attribute you wish to use on your tag.


5) Make note of the Key for this Attribute and then click Cancel when done. Repeat steps 4-5 for each attribute, making note of all the Keys you want on your tag.


Creating the Merge Field

6) Go to "Admin Tools - Check-In - Label Merge Fields" and click the plus sign to add a new field.


7) Set your Value as "Parent Phase Cards" and enter your description as the following, replacing ## with your Registration Template ID number and EVENTNAME with your event name for your reference. This is just a description, so these values are for your benefit only and aren't required:

This pulls the registration attributes for registrationtemplateid ## (EVENTNAME) and sends ZPL code to draw a white square over any ages on the label that pull a null value for the registrant. So if a parent says they have a 2yo at registration, that would be left alone, but all other ages would have white squares.


8) Paste the following into the Merge Field, adjusting/replacing the Attribute names and template ID in the code to be what your info is. If you aren't using this many attributes on your tag, you will need to adjust the ZPL accordingly to remove what you don't need or move them around as needed. This code builds a grid of 18 squares (6 wide by 3 high) in a left to right, top to bottom order. We use 4" x 2" tags on Zebra LP-2844-Z and ZD500 printers at 203dpi (812 x 406). Once you have your Attribute names and RegistrationTemplateId changed, and have adjusted the ZPL as desired, click Save.

{%- assign entityWhereQuery = Person.Id | PersonById | Property:'Aliases' | Select:'Id' | Join:' || PersonAliasId == ' | Prepend:'PersonAliasId == ' -%}
{%- registrationregistrant where:'{{- entityWhereQuery -}}' -%}
	{%- for registrant in registrationregistrantItems -%}
	{% assign k1 = registrant | Attribute:'NewBaby' %}
	{% assign k2 = registrant | Attribute:'OneYearOld' %}
	{% assign k3 = registrant | Attribute:'TwoYearOld' %}
	{% assign k4 = registrant | Attribute:'ThreeYearOld' %}
	{% assign k5 = registrant | Attribute:'FourYearOld' %}
	{% assign k6 = registrant | Attribute:'Kindergarten' %}
	{% assign k7 = registrant | Attribute:'FirstGrade' %}
	{% assign k8 = registrant | Attribute:'SecondGrade' %}
	{% assign k9 = registrant | Attribute:'ThirdGrade' %}
	{% assign k10 = registrant | Attribute:'FourthGrade' %}
	{% assign k11 = registrant | Attribute:'FifthGrade' %}
	{% assign k12 = registrant | Attribute:'SixthGrade' %}
	{% assign k13 = registrant | Attribute:'SeventhGrade' %}
	{% assign k14 = registrant | Attribute:'EighthGrade' %}
	{% assign k15 = registrant | Attribute:'NinthGrade' %}
	{% assign k16 = registrant | Attribute:'TenthGrade' %}
	{% assign k17 = registrant | Attribute:'EleventhGrade' %}
	{% assign k18 = registrant | Attribute:'TwelfthGrade' %}
		{%- if  registrant.Registration.RegistrationInstance.RegistrationTemplateId == 32 -%}
			{%- if k1 == empty -%}
				^FO205,108 ^GB74,74,74^FS
			{%- endif -%}
			{%- if k2 == empty -%}
				^FO305,108 ^GB74,74,74^FS
			{%- endif -%}
			{%- if k3 == empty -%}
				^FO405,108 ^GB74,74,74^FS
			{%- endif -%}
			{%- if k4 == empty -%}
				^FO505,108 ^GB74,74,74^FS
			{%- endif -%}
			{%- if k5 == empty -%}
				^FO605,108 ^GB74,74,74^FS
			{%- endif -%}
			{%- if k6 == empty -%}
				^FO705,108 ^GB74,74,74^FS			    
			{%- endif -%}
			{%- if k7 == empty -%}
				^FO205,208 ^GB74,74,74^FS
			{%- endif -%}
			{%- if k8 == empty -%}
				^FO305,208 ^GB74,74,74^FS
			{%- endif -%}
			{%- if k9 == empty -%}
				^FO405,208 ^GB74,74,74^FS
			{%- endif -%}
			{%- if k10 == empty -%}
				^FO505,208 ^GB74,74,74^FS
			{%- endif -%}
			{%- if k11 == empty -%}
				^FO605,208 ^GB74,74,74^FS
			{%- endif -%}
			{%- if k12 == empty -%}
				^FO705,208 ^GB74,74,74^FS
			{%- endif -%}
			{%- if k13 == empty -%}
				^FO205,308 ^GB74,74,74^FS
			{%- endif -%}
			{%- if k14 == empty -%}
				^FO305,308 ^GB74,74,74^FS
			{%- endif -%}
			{%- if k15 == empty -%}
				^FO405,308 ^GB74,74,74^FS
			{%- endif -%}
			{%- if k16 == empty -%}
				^FO505,308 ^GB74,74,74^FS
			{%- endif -%}
			{%- if k17 == empty -%}
				^FO605,308 ^GB74,74,74^FS
			{%- endif -%}
			{%- if k18 == empty -%}
				^FO705,308 ^GB74,74,74^FS
			{%- endif -%}			
		{%- endif -%}
	{%- endfor -%}
{%- endregistrationregistrant -%}

9) Go to "Admin Tools - Check-In - Check-in Labels" and click the plus sign to add a new label.


10) Save the code below into a text file on your desktop and upload it to the new tag. First a few notes...


  • If you adjusted the code in the Merge Field, you will need to adjust the code here as well.
  • This tag prints slightly larger squares in a 6 by 3 grid than the ZPL code in the merge field does, in the same location as the merge field's squares. If there is a single square, it is printed black, but if there are two, the top one inverts over the other so it appears as a white smaller square in the middle of a larger black square (giving the appearance of an outlined empty square).
  • The merge field code in step 8 is asking if the Registration Attribute is empty and if so, it prints a second square (making the tag have a double, and thus white, square). If not, only the single square is printed and is thus black and "selected" on the tag.
  • This tag also has text that inverts accordingly so it is visible in black or white over the squares as needed. You can adjust the text labels to fit your needs (NB, 1, 2, 3, 4, K, 1st, 2nd... etc.)
  • The font size is determined by the ^CFU line where U is the font being chosen. You can learn more about ZPL fonts on page 139 of the ZPL manual about the ^CF code, found here: https://www.zebra.com/content/dam/zebra/manuals/printers/common/programming/zpl-zbi2-pm-en.pdf
  • If you do change the text or font, you may need to adjust the placement of the text in the ^FO#,# area as well to center it in your squares. A great way to check this is using this online viewer (http://labelary.com/viewer.html) where you can paste this ZPL, set your label size to 4" x 2" and see what it looks like on the screen. Click the "redraw" button to refresh to see any changes you make.
^FO202,105 ^GB80,80,80^FS
^FO302,105 ^GB80,80,80^FS
^FO402,105 ^GB80,80,80^FS
^FO502,105 ^GB80,80,80^FS
^FO602,105 ^GB80,80,80^FS
^FO702,105 ^GB80,80,80^FS
^FO202,205 ^GB80,80,80^FS
^FO302,205 ^GB80,80,80^FS
^FO402,205 ^GB80,80,80^FS
^FO502,205 ^GB80,80,80^FS
^FO602,205 ^GB80,80,80^FS
^FO702,205 ^GB80,80,80^FS
^FO202,305 ^GB80,80,80^FS
^FO302,305 ^GB80,80,80^FS
^FO402,305 ^GB80,80,80^FS
^FO502,305 ^GB80,80,80^FS
^FO602,305 ^GB80,80,80^FS
^FO702,305 ^GB80,80,80^FS

^FO212,120 ^CFU ^FDNB^FS
^FO329,120 ^CFU ^FD1^FS
^FO429,120 ^CFU ^FD2^FS
^FO529,120 ^CFU ^FD3^FS
^FO629,120 ^CFU ^FD4^FS
^FO729,120 ^CFU ^FDK^FS
^FO209,220 ^CFU ^FD1st^FS
^FO306,220 ^CFU ^FD2nd^FS
^FO409,220 ^CFU ^FD3rd^FS
^FO509,220 ^CFU ^FD4th^FS
^FO609,220 ^CFU ^FD5th^FS
^FO709,220 ^CFU ^FD6th^FS
^FO209,320 ^CFU ^FD7th^FS
^FO309,320 ^CFU ^FD8th^FS
^FO409,320 ^CFU ^FD9th^FS
^FO509,325 ^CFT ^FD10th^FS
^FO609,325 ^CFT ^FD11th^FS
^FO709,325 ^CFT ^FD12th^FS

^FO30,105 ^GB155,280,155^FS
^FO50,120 ^AGB,5,5^FDPHASE^FS
^FO120,120 ^AGB,5,5^FDCARDS^FS
^FO30,20 ^CFV ^FDName^FS

11) Change the "File Name" field to be whatever you want to name this tag. Then delete all the parsed "Merge Code" fields except for "Name" and "Cards" (map those to "Full Name" and "Parent Phase Cards" accordingly) and change the "Print for Each" to "Family" instead of the default "Person" option and then click "Save" on the tag.


Wrapping Up

That's all there is to it! Now you just need to add the tag to print for the event's check-in schedule (Admin Tools - Check-in - Check-in Configuration, choose your Area, Event, and add the label). Hopefully this gives you some ideas and helps you create a wonderful event check in experience for your guests, customized to each event as needed for that extra "wow" factor!