# Texts Layout sends

Every text Layout sends a person on behalf of your application, word for word, when it goes out and whether you can turn it off.

Each comes from Layout's number, and none carries anything your application wrote. In sandbox nothing is texted, except where a row says otherwise.

## Setting a person up

| Text | When Layout sends it | Can you turn it off |
| --- | --- | --- |
| Verification code, application named | `POST /v1/users/:id/verify/start`, when Layout has a name for your application. `Layout: 123456 is your code to link this number to <App>, which can then place orders for you. It expires in 3 minutes. Didn't ask? Ignore this text.` | No |
| Verification code, existing account | `verify/start`, when the person already has a Layout account and your application is named. `Layout: 123456 is your code to connect <App> to your existing Layout account, and <App> can then place orders for you. It expires in 3 minutes. Didn't ask? Ignore this text.` | No |
| Verification code, generic | `verify/start`, when Layout has no name for your application. `Layout: 123456 is your code to verify this number for an app you are connecting to Layout. It expires in 3 minutes and does not sign you in. Didn't ask? Ignore this text.` | No |
| Connect approval | The person already signs in to Layout on this number, your application is approved, and you did not ask for the link (`connectDelivery: "developer"`). `<App> wants to place food orders for you through Layout. Tap to approve: <link>` An application that is not approved shows as `A partner app`. | Yes: ask for the link with `connectDelivery: "developer"` and send it yourself |

A code is good for 3 minutes and 5 tries. A number can be sent a code every 30 seconds and 5 times an hour. A number that replied STOP receives none of these, and `start` answers `409 texts_blocked` until the person replies START. See [Sign-up protections](https://developer.layout.link/reference/provisioning#sign-up-protections) and [Users and texts](https://developer.layout.link/reference/limits#users-and-texts).

## Confirming an order

| Text | When Layout sends it | Can you turn it off |
| --- | --- | --- |
| Order code | A production confirm that needs the person's code, when [a code is due](https://developer.layout.link/reference/how-it-works#when-a-code-is-due). `Layout: 123456 approves $18.40 at Acme Burgers on your Visa ending 4242. Sharing this code places the order. It expires in 10 minutes. If you did not just order, ignore this text.` The total, store and card are the cart's own. While a first order also gives your application standing to order without a code, the second sentence says so and how to disconnect it. | No |

## About an order

Every text about an order your application started, over REST or MCP, for a user you provision or through an OAuth client you created.

| Text | When Layout sends it | Can you turn it off |
| --- | --- | --- |
| The cart, to reply YES | A ready cart that nothing confirmed or canceled about 15 seconds after it landed (see [If the card is missed](https://developer.layout.link/reference/mcp#if-the-person-misses-the-card)). Layout answers the person's YES in the same conversation. | Yes, with **Cart-ready text** |
| Cart reminder | Once, a few minutes later, when that cart is still waiting. | Yes, with **Cart-ready text** |
| Approval link | The restaurant's checkout asks the person to approve the purchase, and `order.challenge` is sent. It names the total and the store. If the person asks for a change on that page and it cannot be made, Layout texts that nothing was ordered or charged. | No |
| Order placed | The order is placed. It says so, with the pickup details Layout has at that moment. | Yes, with **Order texts** |
| Pickup time | The pickup time arrives after the order was placed (see [Pickup time](https://developer.layout.link/reference/api#pickup-time)). One text with the time. | Yes, with **Order texts** |
| Order did not go through | The order failed, or its cart failed while it was building. | No |

Both settings are on the App details page of the console, are on for every application, and cover every order your application starts. A change applies to every text not sent yet, including for orders already in flight.

Turning **Order texts** off leaves Layout's receipt email and push notifications. A person you provisioned who has no email on their Layout profile and no Layout app hears nothing from Layout about the order, so tell them yourself from `order.placed`, `order.updated` and [GET /v1/orders/:id](https://developer.layout.link/reference/api#get-v1-orders-id).

No setting stops an order code, an approval link or the text saying an order did not go through. Two orders are always texted whatever the setting: an order Layout already texted a failure for that is placed after all, and an order the person confirmed by replying YES.

## The card page

A [card link](https://developer.layout.link/reference/card-links) opens a page and texts no code. Sending the link is yours to do.
