At 09:12 on load-in day, a registration export lands in the ops channel. Row 412 has a note in the “Anything else?” field: “Need ASL for the 10:30 keynote, and maybe the workshop after.” That is the entire request. It is not attached to a session ID, a language pair, a duration, or a contact method. It is attached to a person who paid, traveled, and now has to trust that someone will read it in time.
This is not a registration problem. It is an intake schema problem. Free-text fields are excellent for nuance and terrible for obligations. An interpreter request is an obligation with a lead time, a cost, a qualified human, and a failure mode that is visible from the front row.
The fix is not a longer free-text box. It is a small, structured schema that captures the minimum viable facts, routes them to a named role, and stays reversible until the request is confirmed. This article gives you that schema, the failure modes it prevents, and a copyable artifact for the person who owns accessibility intake.
Why free-text fails at the exact moment it matters
Free-text accommodation fields fail in four predictable ways. None of them are the attendee’s fault.
1. No session binding. “The keynote” is unambiguous to the attendee and ambiguous to the scheduler. A conference with two keynotes, a simulcast overflow room, and a recorded stream has at least three places where “the keynote” could require interpretation. Without a session ID or a time block, the request cannot be scheduled against a room.
2. No language pair or modality. “ASL” is a language, not a service. A request may need American Sign Language, International Sign, a spoken-language interpreter, real-time captioning, or a combination. These are different vendors, different lead times, and different costs. A free-text field collapses them into one word.
3. No lead time. Qualified interpreters are booked, not summoned. A request that arrives 72 hours before doors open may be fulfillable; one that arrives 12 hours before may not be. If the intake field does not capture when the request was made and when it was acknowledged, you cannot tell the difference between a late request and a late response.
4. No owner. Free-text notes land in a spreadsheet that three people can edit and no one owns. The request is “in the system” and also nowhere. The failure is not that someone dropped it; the failure is that the schema never assigned it.
WCAG 2.2 is explicit that its success criteria are testable statements, and that conformance at any level does not address every user need (W3C, Web Content Accessibility Guidelines (WCAG) 2.2, W3C Recommendation, 12 December 2024). That is the honest frame for this work: a structured intake schema is not a compliance checkbox. It is an operational control that makes a specific obligation visible before it becomes a front-row failure.
The minimum viable schema
The schema below is deliberately small. Every field earns its place by preventing a specific failure mode. It is designed to be embedded in a registration form, a post-registration accommodation form, or a speaker portal, and to export cleanly to a spreadsheet or a ticketing system.
Core fields
| Field |
Type |
Why it exists |
request_id |
System-generated UUID |
One immutable handle for the request, independent of the attendee record. |
attendee_id |
Foreign key |
Links the request to the registration without duplicating personal data. |
submitted_at |
ISO 8601 timestamp |
Establishes lead time. This is the clock that matters. |
acknowledged_at |
ISO 8601 timestamp |
Separates “late request” from “late response.” |
accommodation_type |
Controlled vocabulary |
Sign language interpretation, spoken-language interpretation, captioning, assistive listening, other. |
language_pair |
Controlled vocabulary + free text |
Source and target language, e.g., English → American Sign Language. |
session_ids |
Array of session identifiers |
Binds the request to specific rooms and times. |
modality |
Controlled vocabulary |
In-person, remote, or hybrid delivery of the accommodation. |
duration_minutes |
Integer |
Drives vendor quoting and interpreter rotation planning. |
contact_method |
Controlled vocabulary + value |
How to confirm details without assuming email is read on site. |
status |
Controlled vocabulary |
Received, acknowledged, confirmed, unable to fulfill, cancelled. |
owner_role |
Named role |
The human accountable for the next action. |
notes |
Free text, optional |
Preserves nuance without carrying the obligation. |
Two design choices matter more than the field list.
First, accommodation_type and language_pair are separate. A single “ASL” checkbox conflates the service with the language. Separating them lets you route sign language interpretation to a vendor who staffs it and spoken-language interpretation to a different vendor, without re-reading the request.
Second, status is a controlled vocabulary, not a note. “Confirmed” and “unable to fulfill” are different operational states. If they live in prose, they cannot be counted, filtered, or escalated.
What not to collect
As a matter of practice, collect the service, the session, the language, and the contact method. Do not collect diagnosis, medical documentation, or a narrative justification. The obligation is to provide the requested accommodation, not to evaluate the requester.
Do not collect a home address or a personal phone number unless the attendee chooses to provide it for on-site coordination. A conference badge and a session ID are sufficient for most routing.
Routing: who owns the request at each state
A schema without an owner is a spreadsheet. The routing below assigns one accountable role per state. It is intentionally boring.
- Received → Accessibility Intake Coordinator. This role acknowledges the request within one business day and sets
acknowledged_at. The acknowledgment is a template, not a promise: “We have your request for [language_pair] at [session_ids]. We will confirm by [date].”
- Acknowledged → Program Operations Lead. This role checks session IDs against the published schedule and flags conflicts, such as a request for two concurrent sessions that require the same interpreter.
- Confirmed → Vendor Manager. This role books the interpreter or captioner, records the vendor confirmation, and updates
status to confirmed.
- Unable to fulfill → Accessibility Intake Coordinator. This role contacts the attendee with the specific reason and the closest available alternative, and records the outcome. The status is
unable_to_fulfill, not a silent deletion.
The handoff between Program Operations and the Vendor Manager is where most requests stall. The fix is a single rule: no request moves to confirmed without a vendor name and a confirmation timestamp in the record. If those two values are absent, the request is still acknowledged, and the owner is still the Program Operations Lead.
This is the same class of failure described in Why Hybrid Events Fall Apart at the Room-to-Chat Handoff: the handoff between two systems that each believe the other owns the next step. The difference here is that the cost of the dropped handoff is a person who cannot follow the session they paid to attend.
Lead times and thresholds
The numbers below are operational targets, not research findings. They are starting points you can test against your own vendor contracts and event size.
- Sign language interpretation: request at least 14 calendar days before the session. Below 7 days, treat as at-risk and begin contingency planning.
- Spoken-language interpretation: request at least 10 calendar days before the session for a single language pair; 21 days for three or more pairs.
- Real-time captioning: request at least 5 business days before the session for remote delivery; 10 business days for on-site delivery.
- Acknowledgment: within 1 business day of submission, regardless of lead time.
- Confirmation or inability-to-fulfill notice: within 5 business days of acknowledgment, or 3 business days if the session is within 14 days.
These thresholds exist to make the at-risk state visible. A request submitted 3 days before a keynote is not a failure of the attendee; it is a signal that the intake form did not surface the deadline. The fix is to put the deadline in the form, next to the field, in plain language: “Interpreter requests for this event close on [date].”
Privacy and data integrity
Accommodation data is sensitive by default. It reveals a disability, a language preference, or a health need. Treat it as you would treat payment data: collect the minimum, restrict access, and delete on a schedule.
Three concrete controls:
- Field-level access. The
notes field and contact_method value are visible only to the Accessibility Intake Coordinator and the Vendor Manager. The Program Operations Lead sees accommodation_type, language_pair, session_ids, and status, but not the free-text notes.
- Retention window. Delete accommodation records 90 days after the event closes, unless a legal or contractual obligation requires longer. The 90-day window is long enough to resolve post-event billing and short enough to limit exposure.
- Export discipline. Any export that leaves the registration system is a copy. Name the file with the event slug and the export date, store it in a single access-controlled location, and delete it when the retention window closes. Do not email accommodation exports as attachments.
WCAG 2.2 includes a section on privacy and security considerations, which is a useful reminder that accessibility data is not exempt from data protection obligations (W3C, WCAG 2.2, 2024). The schema above is designed so that the sensitive fields are separable from the operational fields. That separation is what makes field-level access possible.
Interoperability: exporting to the systems you already use
The schema is deliberately flat. It exports to CSV, JSON, or a ticketing system without transformation. Two practical notes:
Session IDs must match the published schedule. If your registration system uses a different session identifier than your program system, the session_ids array will not resolve. Pick one identifier and use it in both places. This is a one-time mapping exercise, not an ongoing integration project.
Status values must be a closed set. If your ticketing system has its own status vocabulary, map the five values above to it explicitly. Do not let a free-text status field reappear at the export boundary.
The ITU’s accessibility work includes guidelines for accessible meetings and remote participation, which are useful when the accommodation is delivered remotely rather than in the room (ITU-T, FSTP-ACC-RemPart: Guidelines for supporting remote participation in meetings for all, 2015). The schema does not change for remote delivery; the modality field records it, and the routing stays the same.
Testing before doors open
A schema that has never been tested is a hypothesis. Test it with three requests before the event, using the same form an attendee would use.
- Submit a request for a single session with a common language pair. Confirm that
request_id, submitted_at, and session_ids populate correctly.
- Submit a request for two concurrent sessions. Confirm that the Program Operations Lead sees the conflict and that the status does not advance to
confirmed until the conflict is resolved.
- Submit a request with a 3-day lead time. Confirm that the at-risk state is visible and that the acknowledgment template includes the specific deadline.
Each test should take under 10 minutes. If it takes longer, the form is doing too much or the routing is unclear. The goal is not a perfect schema; it is a schema that fails visibly in testing rather than silently on stage.
Reversibility
Every change described here is reversible. The schema can be added as an optional section of the registration form and removed if it does not work. The routing roles can be reassigned. The retention window can be shortened or extended. The only irreversible decision is to keep the free-text field as the sole intake mechanism, because that decision guarantees that the next interpreter request will arrive as a sentence in a spreadsheet.
The artifact below is the copyable version of the schema and the routing rules. It is written for the Accessibility Intake Coordinator, who owns the first acknowledgment and the final outcome.
Copyable artifact: Accessibility Accommodation Intake Schema v1.0
Owner: Accessibility Intake Coordinator
Review cadence: Before each event, and after any request that reaches unable_to_fulfill.
Storage: Registration system, field-level access as specified below.
Fields
request_id UUID, system-generated
attendee_id Foreign key to registration record
submitted_at ISO 8601 timestamp, system-generated
acknowledged_at ISO 8601 timestamp, set by coordinator
accommodation_type Enum: sign_language_interpretation | spoken_language_interpretation | captioning | assistive_listening | other
language_pair Object: { source: string, target: string }
session_ids Array of session identifiers
modality Enum: in_person | remote | hybrid
duration_minutes Integer
contact_method Enum: email | sms | badge_message | other
contact_value String, optional
status Enum: received | acknowledged | confirmed | unable_to_fulfill | cancelled
owner_role Enum: accessibility_intake_coordinator | program_operations_lead | vendor_manager
notes Free text, optional, restricted access
Routing rules
1. On submission:
- Set status = received
- Set owner_role = accessibility_intake_coordinator
- Send acknowledgment within 1 business day
- Set acknowledged_at
2. On acknowledgment:
- Set status = acknowledged
- Set owner_role = program_operations_lead
- Validate session_ids against published schedule
- Flag conflicts (concurrent sessions, same interpreter)
3. On conflict resolution:
- Set owner_role = vendor_manager
- Book vendor
- Record vendor name and confirmation timestamp
- Set status = confirmed
4. On inability to fulfill:
- Set status = unable_to_fulfill
- Set owner_role = accessibility_intake_coordinator
- Contact attendee with reason and closest alternative
- Record outcome in notes
5. On cancellation:
- Set status = cancelled
- Notify vendor manager
- Release vendor hold
Lead time thresholds (operational targets, not research findings)
sign_language_interpretation: 14 calendar days
spoken_language_interpretation: 10 calendar days (1 pair), 21 days (3+ pairs)
captioning: 5 business days (remote), 10 business days (on-site)
acknowledgment: 1 business day
confirmation_or_unable: 5 business days, or 3 if session within 14 days
Access control
accessibility_intake_coordinator: all fields
program_operations_lead: request_id, attendee_id, submitted_at, acknowledged_at,
accommodation_type, language_pair, session_ids, modality,
duration_minutes, status, owner_role
vendor_manager: request_id, accommodation_type, language_pair, session_ids,
modality, duration_minutes, contact_method, contact_value, status
retention: 90 days after event close, unless legal hold applies
Pre-event test checklist
[ ] Submit single-session request, common language pair
[ ] Submit concurrent-session request, confirm conflict flag
[ ] Submit 3-day lead time request, confirm at-risk state visible
[ ] Confirm acknowledgment template includes specific deadline
[ ] Confirm no request reaches confirmed without vendor name and timestamp
[ ] Confirm retention job is scheduled
FAQ
Does this schema replace the free-text field?
No. Keep the free-text field for nuance. The schema carries the obligation; the free-text field carries the context. The difference is that the obligation no longer depends on someone reading the context in time.
What if the attendee does not know the session ID?
Provide a session picker in the form that lists published sessions by title and time. If the schedule is not final at registration time, allow the attendee to select “all sessions” or “keynote only” and follow up after the schedule is published. The follow-up is a scheduled task, not a hope.
How does this interact with WCAG 2.2?
WCAG 2.2 provides testable success criteria for web content accessibility, including criteria relevant to forms and authentication (W3C, WCAG 2.2, 2024). The intake schema is an operational control that sits alongside those criteria. It does not replace conformance testing, and conformance testing does not replace the schema.
What about attendees who request accommodations at the door?
The schema still applies. Create the record at the registration desk, set submitted_at to the current time, and route it through the same states. The lead time thresholds will flag it as at-risk, which is accurate. The value of the schema is that the request is visible and owned, even when it is late.
Is 90 days the right retention window?
It is a starting point. Check your jurisdiction’s data protection rules and your vendor contracts. The principle is to keep the data only as long as it serves a specific operational or legal purpose, and to delete it on a schedule rather than by accident.
What is the single most important field?
owner_role. A request with a session ID and no owner is still a request that can be dropped. A request with an owner and no session ID is a conversation that can be completed. Assign the owner first.