IOSOR База знаний

Reject шаблона: без тихого fallback burn

Fail path: rejected template останавливает send — без тихого SMS/session burn без именованной fallback-политики, которую видят product и finance.

Rejected template — жёсткий fail path, не жёлтый чип, который всё равно шлёт. Когда review вернул Rejected — или Live ID ушёл mid-flight — prepaid не должен тихо сжигать SMS segments или session units «чтобы пользователь всё же получил код». Silent fallback без именованной политики — wallet melt с зелёным UI. Эта страница — контракт fail-path, не гайд по выбору канала и не «какой OTP rail, когда не Live».

Rejected значит stop, не изобретать другой класс

Rejected, Retired и неизвестные ID fails closed. Send не идёт на rejected ID и не переписывается в другой message class или unit class, пока нет именованной fallback-политики — owner, trigger, Approved target ID, unit class и debit tag записаны до языка volume. Soft USD 1 000/мес считает «упали в коде» долгом volume; USD 20 доказывает: Rejected не дебетует без политики.

Как выглядит silent fallback burn

Событие Честный путь Anti-pattern silent burn
Rejected на send Status rejected; release hold / нет debit SMS или session всё равно уходит
ID нет в каталоге Fail closed; экспортный reject Rewrite в «любой OTP» ID
Reject mid-flight Стоп оставшихся попыток; честный статус Продолжают mint под старым ID
Политики нет Нет fallback; stop Hero-тред изобретает SMS backup

Именованный fallback или ничего

Fallback — опциональный design, не невидимый default. Если политика разрешает secondary path, она называет класс reject, Approved target ID, unit class, debit tag и применяются ли wallet stop-lines (стоп-линии кошелька до production-трафика). Любое пустое поле = no send.

Статусная правда для product и finance

Один export-ряд на intent: template ID + review state на момент решения, brand-safe класс reject, fallback policy ID или «none», суммы hold/release/refund, unit class если debit был, correlation ID. Soft USD 1 000/мес делает тихий SMS/session burn видимым; USD 20 доказывает один коридор, где Rejected никогда не рисует sent.

Чеклист покупателя: reject без тихого burn

  1. Rejected / Retired / unknown ID заблокированы от production send?
  2. Любой fallback требует именованной политики с Approved target + unit class?
  3. Нет тихого SMS или session debit, пока политика пуста?
  4. Открытый hold при reject снимается или refund с экспортируемым статусом?
  5. Abuse и wallet stops fails closed и на secondary path?
  6. Soft volume language blocked, пока reject-path в draft?

Начните с IOSOR

Проверьте в консоли IOSOR статус отправки сообщений по шаблонам и убедитесь, что отклоненные (Rejected) или устаревшие (Retired) идентификаторы мгновенно блокируют вызов без переключения на SMS по умолчанию. Настройте вебхук отказов и сопоставьте его с политикой fallback, чтобы любые резервные маршруты требовали явного указания Approved target ID и класса юнита.

Итог IOSOR

Этот материал доказал, что молчаливая подмена отклоненного шаблона альтернативным каналом без явной политики резервирования приводит к финансовым потерям и неконтролируемому изменению класса сообщений. Если шаблон отклонен, отправка должна немедленно останавливаться, сохраняя честный статус в журналах продукта и финансов.

Был ли материал полезен?

Связанные гайды