This feature is currently in beta. Documentation for Version 1 templates is here

Vue State & Methods — The reactive ch object and available template methods.

See also: Template Markup & Structure | Styling & CSS Variables

State Objects

Primary State: ch

PropertyTypeDescription
ch.isLoadedbooleantrue when initial data is loaded
ch.isActivebooleantrue when user is in active queue
ch.isCountdownbooleantrue when queue hasn't opened yet
ch.isBlockedbooleantrue when user is blocked
ch.isRoomFullbooleantrue when queue is at capacity
ch.isErrorbooleantrue when an error occurred
ch.captchaRequiredbooleantrue when captcha must be completed
ch.positionnumber | nullCurrent queue position (1-based). null when checking in
ch.estimatenumber | nullEstimated wait in minutes
ch.etastring | nullEstimated time of arrival (formatted time string)
ch.titlestringEvent/room title
ch.messagestringCustom message from room config
ch.logostringURL to logo image
ch.stocknumber | nullAvailable stock (if configured)
ch.onsalestringISO date when queue opens
ch.requestedstringTimestamp of last API request
ch.sessionsExpirenumberWhether sessions expire (non-zero = true)
ch.sessionsTimeoutnumberMinutes until session timeout
ch.emailAvailablenumberWhether email notifications enabled (non-zero = true)
ch.announcementstringScreen reader announcement text
ch.progressnumberProgress bar percentage (0–100)
ch.nextPollnumberSeconds since last poll
ch.pollTTLnumberCurrent poll interval in seconds (default 60, variable)
ch.css.titlestringDynamic title size class ("", "ch-title-lg", or "ch-title-xl")

Token State: ch.token

PropertyTypeDescription
ch.token.valuestring | nullFull token value
ch.token.obfuscatedstring | nullPartially hidden token for display
ch.token.copiedbooleantrue momentarily after user copies token
ch.token.copy(event, ch)functionCopy token to clipboard

Email State: ch.email

PropertyTypeDescription
ch.email.valuestringEntered email address
ch.email.validbooleanWhether email format is valid
ch.email.submittedbooleanWhether email was successfully submitted
ch.email.submittingbooleantrue during submission
ch.email.changingbooleantrue when user is changing a previously submitted email

Priority Code State: ch.priority

PropertyTypeDescription
ch.priority.availablenumber | nullWhether priority codes enabled (non-zero = true)
ch.priority.codestring | nullEntered priority code
ch.priority.validboolean | nullWhether code format is valid
ch.priority.submittedbooleanWhether code was submitted
ch.priority.submittingbooleantrue during submission
ch.priority.successbooleantrue if code was accepted
ch.priority.errorbooleantrue if code was rejected

Countdown State: ch.countdown

Available when ch.isCountdown is true.

PropertyTypeDescription
ch.countdown.sHoursstringHours, zero-padded ("02") or "--" before init
ch.countdown.sMinutesstringMinutes, zero-padded ("05") or "--" before init
ch.countdown.sSecondsstringSeconds, zero-padded ("30") or "--" before init
ch.countdown.hoursnumberHours as number
ch.countdown.minutesnumberMinutes as number
ch.countdown.secondsnumberSeconds as number
ch.countdown.totalsecondsnumberTotal seconds remaining

Available Methods

formatDate Options

formatDate(ch.requested, 'toLocaleString')      // "1/27/2026, 2:30:00 PM"
formatDate(ch.requested, 'toLocaleDateString')   // "1/27/2026"
formatDate(ch.requested, 'toLocaleTimeString')   // "2:30:00 PM"
formatDate(ch.requested, 'dayMonth')             // "27 January"
formatDate(ch.requested, 'weekdayMonthDay')      // "Tuesday, Jan 27"
formatDate(ch.requested, 'iso')                  // "2026-01-27T14:30:00.000Z"
formatDate(ch.requested, 'YYYY-MM-dd HH:mm:ss') // "2026-01-27 14:30:00"