# Учебная логика события принятой заявки

Фрагмент не отправляет форму и не определяет успех по одному коду 200. Разработчик передаёт accepted только после проверки согласованного ответа приложения. analyticsAllowed берётся из действующего механизма согласия. before/after сверяются на стенде; реальные заявки без разрешения не создаются.

```js
function recordAcceptedRequest({accepted, analyticsAllowed, recorded, counterId}) {
  if (!accepted || !analyticsAllowed || recorded) return false;
  if (typeof window.ym !== 'function') return false;
  window.ym(counterId, 'reachGoal', 'request_accepted');
  return true;
}
```

Это только иллюстрация условий перед вызовом. Значение true означает вызов метода, а не доказанную доставку события, создание CRM-записи или продажу. recorded и защита повторов должны управляться приложением по согласованному жизненному циклу обращения; обновление страницы требует отдельной проверки. counterId должен быть действительным собственным номером счётчика. Пример не перехватывает и не изменяет реальную форму сайта.

| Сценарий | Принятая заявка | Событие аналитики |
| --- | --- | --- |
| Ошибка валидации | Нет | Нет |
| Отказ приложения | Нет | Нет |
| Принятие при доступной аналитике | Да | Один вызов |
| Нет согласия | Да | Нет |
| Метрика недоступна | Да | Может отсутствовать |
| Повторный клик в ожидании | Не новое принятие | Не дублировать |
