Микро-копирайтинг для форм: labels, ошибки, состояния
Точечный набор копий: labels, placeholders, hints, error messages, empty/success states. По одному примеру — пять разбора правил.
Напиши микро-копии для формы {{form_name}} в {{product}}. Тон: {{voice}}.
Принцип: микро-копия — это не "слова на кнопках". Это договор с пользователем: что произойдёт, что от него ждут, что делать если что-то пошло не так.
1. Labels
Правила:
- Один-два слова, без пунктуации в конце
- Что вводим, а не как
- Нет "Пожалуйста, введите ваш email" — это не label, это просьба
- Title Case или sentence case — выбери одно и держи
- Required-индикатор через "*" или
(required), но не "необязательное (опционально)" — лишний шум
Дай 6-10 примеров релевантных для {{form_name}}.
| Поле | Label |
|---|---|
| password | Password |
| ... | ... |
2. Placeholders
Правила:
- НЕ дублирует label
- Показывает формат или пример:
name@company.com,+7 999 123 45 67 - Не используй как замену label (исчезает при вводе → проблема)
- Пустой placeholder лучше плохого
| Поле | Placeholder |
|---|---|
| name@company.com | |
| phone | +7 999 123 45 67 |
| ... | ... |
3. Hints (текст под полем)
Правила:
- Используй только когда поле неочевидно: format constraints, последствия выбора
- 1 строка, ≤ 60 символов
- Объясняет ЗАЧЕМ или ЧТО будет
- Не повторяет очевидное
Примеры когда нужен hint:
- Пароль: "Минимум 8 символов, любые символы кроме пробелов"
- Workspace URL: "Можно изменить позже в настройках"
- API rate limit: "100 запросов в минуту на ключ"
- Phone: "Используем только для уведомлений о доставке"
Когда hint не нужен:
- Email: всем понятно
- Имя: всем понятно
4. Error messages — главный раздел
Правила (запомни):
- Что пошло не так + что сделать дальше. Не "Ошибка"
- Без вины пользователя когда возможно. Не "вы ввели неправильно", а "не подходит формат"
- Активный залог, прошедшее время для произошедшего, инфинитив для действия
- Без техно-жаргона. Не "Validation error in field email"
- Возле поля, не одним красным баннером сверху
Дай таблицу для типичных кейсов формы {{form_name}}:
| Кейс | Плохо | Хорошо |
|---|---|---|
| Пустое обязательное поле | "Это поле обязательное" | "Введите email чтобы продолжить" |
| Неверный формат email | "Невалидный email" | "Похоже на опечатку: проверьте @ и домен" |
| Email уже занят | "Email exists" | "Этот email уже зарегистрирован. [Войти] или [восстановить пароль]" |
| Короткий пароль | "Password too short" | "Нужно минимум 8 символов. Сейчас [N]" |
| Слабый пароль | "Weak password" | "Добавьте цифру или знак — пароль будет надёжнее" |
| Сетевая ошибка | "Network error" | "Не получилось отправить. Проверьте интернет и [Повторить]" |
| Сервер недоступен | "500 Internal Server Error" | "У нас сейчас сбой. Попробуйте через минуту или [написать в поддержку]" |
| Превышен лимит | "Rate limit exceeded" | "Слишком много попыток. Подождите 2 минуты" |
| Файл слишком большой | "File too large" | "Файл больше 10 МБ. Сожмите или загрузите другой" |
| Файл неверного типа | "Invalid file type" | "Поддерживаются PNG, JPG, WebP" |
| CAPTCHA не пройдена | "Captcha failed" | "Подтвердите что вы не робот" |
| Сессия истекла | "Session expired" | "Сессия закрыта для безопасности. [Войти заново]" |
Дай минимум 12 примеров.
5. Inline validation
Когда показывать ошибку:
- При onBlur для текстовых полей (не во время ввода — раздражает)
- Сразу для radio/checkbox/select
- Сразу для confirmation полей (повтор пароля) — пока не совпадает
- При submit — финальная проверка всех полей
Когда показывать успех (галочку):
- Только для полей с проверкой формата ИЛИ async-валидацией (доступность username)
- Не для всех полей подряд — теряется сигнал
6. Empty states (когда нет данных)
Структура:
- Картинка / иконка (опционально, лёгкая)
- Заголовок — что здесь будет, не "Пусто"
- Описание — почему пусто (это нормально / нужно действие)
- CTA — следующий шаг, если он есть
Дай 3 примера для контекстов в {{product}}:
## Empty state 1: [контекст]
Heading: ...
Description: ...
CTA: ...
## Empty state 2: [контекст]
...
## Empty state 3: [контекст]
...
7. Success states
Правила:
- Что произошло (глагол прошедшего времени)
- Что дальше, если нужно
- Не "Спасибо!" без контекста
Примеры:
- После signup: "Аккаунт создан. Проверьте почту — отправили ссылку для подтверждения"
- После сохранения: "Сохранено · [Откатить]"
- После удаления: "Удалено · [Восстановить]" (с таймером отмены)
- После отправки формы: "Получили запрос. Ответим в течение 24 часов на [email]"
8. Loading / pending состояния
- Кнопка submit во время отправки: "Сохраняем..." (глагол + троеточие)
- Не блокируй UI без индикатора
- Для долгого: прогресс или объяснение что происходит
Формат итогового вывода
# Микро-копии для формы {{form_name}}
## Labels
| Поле | Label |
|---|---|
## Placeholders
| Поле | Placeholder |
|---|---|
## Hints
| Поле | Hint |
|---|---|
## Errors (минимум 12)
| Кейс | Копия |
|---|---|
## Empty states (3)
...
## Success states
...
## Loading
...
Анти-паттерны
- "Что-то пошло не так" без подсказки что делать
- "Введите корректный email" — что значит "корректный"?
- Технические коды наружу: "ERR_VALIDATION_42"
- Стенд-ап юмор в ошибках платежа ("Упс! Денег маловато 😅")
- Все ошибки одним красным баннером сверху — пользователь не знает к чему относится
- Success-тост висит 0.5 секунды — никто не прочитал
Hero-копирайт для лендинга (3 варианта)
Три разных подхода к заголовку и подзаголовку: ценность, проблема, амбиция.
Прокачать CTA на странице
Найти все CTA, оценить и переписать с конкретикой и глаголами действия.
Микрокопии: формы, ошибки, пустые состояния
Тон голоса для всех маленьких текстов: подсказки, ошибки, плейсхолдеры, тосты, заглушки.