> ## Documentation Index
> Fetch the complete documentation index at: https://developers.redo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# MessageDecisionReason

> Why a message decision went the way it did.

| Value | Description |
| - | - |
| `AB_TEST_VARIANT` | The automation's A/B test put the shopper in one of its variants. |
| `AGENT_SENTINEL_BYPASSED` | The shopper agent reached out without first checking whether to, because this kind of outreach always goes ahead. |
| `AGENT_SENTINEL_PROCEED` | The shopper agent decided this was a good time to reach out to the shopper. |
| `AGENT_SENTINEL_REEVALUATE_LATER` | The shopper agent decided to wait and check again later before reaching out. |
| `AGENT_SENTINEL_SKIP` | The shopper agent decided not to reach out to the shopper this time. |
| `ALREADY_SENT` | Redo had already sent this message to the shopper, so it didn't send it again. |
| `ALREADY_TERMINAL` | Redo had already finished with this message, so nothing new was decided. |
| `ALREADY_UNSUBSCRIBED` | The shopper isn't subscribed or can't be messaged on this channel, so Redo didn't send the message. |
| `BROWSE_OUT_OF_STOCK` | The product the shopper last viewed is sold out, so Redo didn't send the browse reminder. |
| `CART_BELOW_MINIMUM` | The shopper's cart or checkout was under Recover's minimum value, so Recover didn't text them. |
| `CART_DISCOUNT_NOT_WORTHWHILE` | Recover's discount wouldn't help on the shopper's cart, so Recover didn't message them. |
| `CHECKOUT_OUT_OF_STOCK` | An item in the shopper's abandoned checkout is out of stock, so Recover didn't message them. |
| `CONDITION_FALSE` | The shopper didn't match the automation's condition, so they took its "no" path. |
| `CONDITION_TRUE` | The shopper matched the automation's condition, so they took its "yes" path. |
| `CUSTOMER_NOT_FOUND` | The shopper was in the campaign's audience, but Redo couldn't find their customer record when the campaign went out, so they weren't added. |
| `ENTERED` | The shopper met the automation's entry rules and started the automation. |
| `ENTRY_CONDITIONS_NOT_MET` | The shopper didn't meet the automation's entry conditions, so they didn't enter it. |
| `EXCLUDED_SEGMENT` | The shopper is in a segment or list this campaign excludes, so they weren't added to it. |
| `EXCLUDED_STATE` | The shopper is in a state where Recover can't text them without a phone number from the shipping address, so Recover didn't message them. |
| `EXISTING_REVIEW_WORK` | The shopper's conversation already has a message being written, reviewed or sent, so Recover didn't start another. |
| `EXTERNAL_SMS_PROVIDER` | The store's other text marketing provider handles this shopper, or Redo couldn't check that provider, so Recover didn't text them. |
| `FREQUENCY_CAP` | The automation's frequency cap kept the shopper from entering again, because they had entered it before. |
| `HANDED_OFF_TO_SUPPORT` | A person on the store's support team took over this shopper's conversation, so Redo didn't send an automated message. |
| `INITIAL_OUTREACH_COOLDOWN` | Redo messaged the shopper recently, so it didn't start new outreach. |
| `INVALID_CHANNEL_ID` | The shopper's email address or phone number isn't valid, so Redo didn't send the message. |
| `INVALID_PHONE_NUMBER` | The shopper's phone number can't receive texts, so Recover didn't message them. |
| `INVALID_SMS_DESTINATION` | The shopper's phone number isn't a valid US or Canada number, so Redo didn't text them. |
| `LOW_INVENTORY_OUT_OF_STOCK` | The low-stock product is now sold out, so Redo didn't send the low inventory message. |
| `MARKETING_CHANNEL_DISABLED` | Email marketing isn't turned on for the store, so the shopper agent didn't send the email. |
| `MARKETING_UNSUBSCRIBED` | The shopper opted out of the store's marketing on this channel, so Redo didn't message them. |
| `NOT_ENABLED` | The store hasn't turned on sending this kind of message on this channel, or the feature that sends it, so Redo didn't send it. |
| `NO_CHANNEL_ID` | Redo had no email address or phone number for the shopper, so it couldn't send the message. |
| `NO_EMAIL_RENDERED` | The email had nothing to show, like an abandoned cart email with no products, so Redo didn't send it. |
| `NO_SUBSCRIBED_CHANNEL` | The shopper isn't subscribed on this campaign's channel, so they weren't added to it. |
| `OPEN_SUPPORT_TICKET` | The shopper has an open ticket in the store's helpdesk, so Recover didn't message them. |
| `OPT_IN` | The shopper texted a keyword like START or YES and is now subscribed to the store's text marketing. |
| `OPT_OUT` | The shopper texted STOP or a similar word and is now unsubscribed from the store's text marketing. |
| `ORDER_TRACKING_BILLING_INACTIVE` | Order tracking billing isn't active for the store, so Redo didn't send order tracking messages for this order. |
| `PRE_SEND_LOGIC_FAILED` | The order came from a sales channel the store's messages skip, so Redo didn't send the message. |
| `PROCEDURE_SKIPPED` | The shopper agent's final review stopped this message before it went out. |
| `PURCHASED_BEFORE_TRIGGER` | The shopper bought something shortly before the automation started, so Redo didn't message them. |
| `PURCHASED_SINCE_TRIGGER` | The shopper bought something after the automation started, so Redo didn't message them. |
| `QUIET_HOURS` | It was outside texting hours where the shopper lives, so Redo is holding the text until texting hours start. |
| `RCS_CONFIRM` | The shopper replied YES to confirm their signup and is now subscribed to marketing messages. |
| `RCS_DECLINE` | The shopper said no when asked to confirm their signup, so Redo won't send them marketing messages or cart reminders. |
| `RCS_OPT_OUT` | The shopper texted STOP, so Redo will no longer send them marketing messages. |
| `RCS_START` | The shopper asked to start getting marketing messages, and Redo asked them to confirm unless they already had. |
| `RECOVER_DISCOUNT_USED` | The shopper already used their Recover discount code, so Recover didn't message them again. |
| `RECOVER_OPT_IN` | The shopper texted the Recover number to undo an earlier STOP, so Recover can text them again. |
| `RECOVER_OPT_OUT` | The shopper texted STOP to the Recover number, so Recover will no longer text them. |
| `RECOVER_UNSUBSCRIBED` | The shopper unsubscribed from Recover texts, so Recover didn't message them. |
| `SERVICES_NOT_ENABLED` | The store doesn't have the Redo feature this message needs turned on, so Redo didn't send it. |
| `SKIP_CONDITIONS_MET` | The shopper matched this step's skip conditions, so Redo skipped the step and moved on. |
| `SMART_SENDING` | The shopper got a text or marketing email from the store very recently, so Redo skipped this one to avoid messaging them too often. |
| `SMART_SENDING_SKIPPED` | The shopper got another message from the store very recently, so Redo skipped this one to avoid messaging them too often. |
| `SOURCE_NUMBER_UNAVAILABLE` | The store's sending phone number is no longer available, for example after it moved to another provider, so the text couldn't be sent. |
| `STEP_DISABLED` | This automation step is turned off, so Redo skipped it and moved on to the next step. |
| `SUBSCRIBE_KEYWORD` | The shopper texted one of the store's signup keywords and is now subscribed to text marketing. |
| `SUCCESS` | Redo sent the message. |
| `SUPPORT_V2_OUTBOUND_WORKFLOW_FAILED` | Redo tried to send the text through the store's support inbox, and that send failed. |
| `SUPPRESSED` | The shopper's address is on a do-not-contact list, for example after a bounce, a spam complaint or the store blocking it, so Redo didn't send the message. |
| `TEXT_TO_SUBSCRIBE` | The shopper sent the signup text from one of the store's signup forms and is now subscribed to text marketing. |
| `UNKNOWN_FAILURE` | Redo tried to send the message, but it failed for an unexpected reason. |
| `UNREACHABLE_INTERNATIONAL_DESTINATION` | Recover only texts US and Canada numbers, so it didn't message this shopper. |
| `UNSUPPORTED_INTERNATIONAL` | The shopper's phone number is in a country Redo can't text, so the message wasn't sent. |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.