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

# Sending Semantics

> How Pocketflows decides whether to send or skip an email or SMS

When a campaign or trigger executes an email or SMS step, Pocketflows runs a
series of checks against the customer before sending. If any check fails, the
message is either **skipped** or **delayed** until conditions are met.

## Email

### Skipped

An email step will be skipped if any of the following are true:

* **Hard bounce on file.** A previous attempt to email this customer resulted in
  a hard bounce (e.g. the address does not exist or was permanently rejected by
  the provider).
* **No email address.** The customer's email address is blank.
* **Email validated as invalid.** A prior validation check flagged the address
  as invalid (e.g. malformed address or non-existent domain).

### Delayed

* **Outside the preferred sending window.** If the campaign has a preferred
  sending window configured and the current time falls outside of it, the email
  will be rescheduled for the next time the window opens.

## SMS

### Skipped

An SMS step will be skipped if any of the following are true:

* **Customer opted out of marketing SMS.** The customer has explicitly opted out
  of receiving marketing text messages (e.g. by replying STOP).
* **No phone number.** The customer's phone number is blank.
* **Unsubscribed from the sending number.** The specific business phone number
  attempting to send the message has this customer on its unsubscribe list.

### Delayed

* **Outside the preferred sending window.** Same as email — if the current time
  falls outside the configured sending window, the SMS will be rescheduled.
