# Tiendanube / Nuvemshop

Abandoned cart reminders and order created, paid and shipped notices for Tiendanube and Nuvemshop stores.

## Connect {#connect}

Portal › Integrations › Tiendanube › **Connect Tiendanube**: sign in to your store and approve the app. We create the webhooks `order/created`, `order/paid`, `order/fulfilled` and `app/uninstalled`. Every notice is checked with `x-linkedstore-hmac-sha256` (HMAC-SHA256 of the body with the app secret) and the order is read from your store's API.

**Abandoned carts** (Tiendanube does not send them) are read from `/checkouts` every few minutes, with their recovery link.

Uninstalling the app in Tiendanube disconnects the store and deletes the token.

| In the store | Event |
| --- | --- |
| Order placed | Order created |
| Payment `paid` | Order paid |
| Shipping `shipped` / `fulfilled` | Order shipped (tracking number and link when the store has them) |
| Unfinished checkout | Abandoned cart |

## Messages {#messages}

Portal › Integrations › the store: turn each event on and write its text (it starts in your language). Variables: `{first_name}` `{store}` `{order_number}` `{total}` `{currency}` `{items}` `{cart_url}` `{tracking_url}` `{tracking_number}` `{carrier}`. Links become tracked short links.

- **Abandoned cart**: N minutes (15–2880, default 60) after the cart last changed, if no order was placed. Marketing: your quiet hours and frequency caps apply.
- **Order created / paid / shipped**: transactional, once per order (even when the store repeats the notice or the order changes several times).
- Blacklisted and opted-out numbers never get SMS. **Test** mode: simulated SMS, never charged.

## Polling {#polling}

We read the orders and carts changed since the last read every 5 minutes (choose 5, 10, 15, 30 or 60). A failed read is retried over the same window: nothing is lost or sent twice. Only changes after you connected the store are read: older orders never get an SMS. We keep only what the SMS needs (phone, first name, total, cart link); every event is logged on the store page.

**Test connection** reads the store with the saved credentials and sends nothing. **Disconnect** deletes the credentials.
