Dynamic resource selection with placeholders
Dynamic resource selection lets you control which calendar resources are bookable based on customer choices, lead data, or business logic — using placeholder expressions and @if conditions instead of a fixed resource list.
TL;DR
Access: Edit booking form → Bookable resources section → "Or, enter bookable resources using placeholders". Enter an expression that evaluates to: resource IDs (comma-separated), resource names, email addresses, resource tag names, or default (fall back to static selection). Use @if(@select[field,slug] == value){Tag Name}@else{default}@endif for conditional routing. Empty result = no resources bookable (blocks booking). Always include a fallback to prevent accidental lockout.
4 things to know
What the expression can return
The placeholder expression must evaluate to one of: comma-separated resource IDs (1, 2, 3), resource emails (["john@example.com"]), resource names (John Smith, Sarah Johnson), resource tag names (Installation Team - North), the word default (use static dropdown), or empty (no resources → blocks booking). The expression overrides the static dropdown selection.
Department/service routing with @if
Route customers to the right resource team based on their form selection:
@if(@select[department,slug] == north){Installation Team - North}@endif @if(@select[department,slug] == south){Installation Team - South}@endif.
Or service-type specific: @if(@select[service_type,slug] == premium){John Smith}@else{default}@endif. Always include @else{default} so unmatched cases still show valid resources.
Finding resource tag names
Go to Calendar → Calendar settings → Teams and tags → Resource tags to see all tag names. Or use the hh-data.calendar-resource-groups component to retrieve them programmatically: <hh-data.calendar-resource-groups pluck="name,id"/>. Tag names are case-sensitive in expressions — copy exact spelling from the UI.
Combined with transit profiles
Dynamic resource selection and transit profiles work independently and complement each other: dynamic selection controls which resources are eligible, transit profiles control how far those resources can travel. Use both together for precise availability: select the right team, then let transit rules filter by travel distance. Test after configuration — if no times show, the combination of rules may be too restrictive.
Common searches
dynamic resource selection • conditional resources • resource routing • placeholder booking form • resource tag • @if resources • department routing
Was this article helpful?
That’s Great!
Thank you for your feedback
Sorry! We couldn't be helpful
Thank you for your feedback
Feedback sent
We appreciate your effort and will try to fix the article