h3. Tasks * FEā1: BulkTagButton component * FEā2: BulkTagModal component * BEā1: Bulkātags endpoint + permission guard * DBā1: Index on contact_id/tag_id * Testā1: Unit + integration + Cypress E2E * Docsā1: Help article & release notes * Opsā1: Feature flag, monitoring, logs
h3. Acceptance Criteria # Toolbar displays a āBulk Tagā button for users with the BulkTag permission. # Users can select multiple contacts (checkboxes, shiftāclick). # Clicking the button opens a modal with a searchable multiāselect dropdown for tags. # āApplyā sends a single API request: POST /api/v1/contacts/bulk-tags. # Success toast shows count and an Undo link (available 10 s). # Partial failures display a detailed error overlay. # All interactions are keyboardāaccessible and screenāreader friendly. # Analytics events `feature_meYD_908_open`, `feature_meYD_908_apply_success`, `feature_meYD_908_apply_error`, `feature_meYD_908_undo` are emitted. MEYD-908
h3. Description *Problem*: Users must tag contacts oneābyāone, which is timeāconsuming. *Solution*: Introduce a bulkātag UI (toolbar button ā modal) that lets users select multiple contacts and apply one or more tags in a single operation. # Success toast shows count and an Undo