# Shopify recipes

> Text customers when an order is placed or shipped, from the shop’s own number.

Three recipes for Shopify. Each names its trigger and the BlueBot step, lists the fields to map and says how to test it with your own number before anyone else gets a text.

## How Shopify connects

- **[Zapier](https://usebluebot.com/docs/zapier)**: BlueBot’s Zapier app has a Send Text action and instant triggers for incoming texts and every change of state.
- **[Text Hook](https://usebluebot.com/docs/text-hooks)**: A Text Hook is a BlueBot address the app posts its own webhook to. You map its fields to a recipient and a template, and each post becomes a text.

## Thank customers for their order

| Part             | What it is                       |
| ---------------- | -------------------------------- |
| Trigger          | When an order is paid in Shopify |
| Action           | BlueBot’s **Send Text** action   |
| Connects through | [Zapier](https://usebluebot.com/docs/zapier)           |

### Steps

1. Start a Zap with Shopify’s trigger for a new paid order.
2. Add a Filter by Zapier step so it goes on only when the order has a phone number.
3. Add BlueBot’s Send Text action and map the order’s phone to To.

### Map the fields

| BlueBot field                  | Map it to                                                                                                                                    |
| ------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------- |
| To                             | The person’s mobile number from Shopify. US numbers can leave off the +1.                                                                    |
| Text                           | Hi {{first_name}}, thanks for your order #{{order_number}}! We’ll text you when it ships.                                                |
| `{{first_name}}` in the text   | Shopify’s first name field.                                                                                                                  |
| `{{order_number}}` in the text | Shopify’s order number field.                                                                                                                |
| Metadata                       | `source` set to `shopify`, and `record_id` set to the record’s id, so the status and reply webhooks for this text can find the record again. |
| Service                        | Auto, the default: iMessage when the person uses it, otherwise SMS through your iPhone.                                                      |

### Test it

Put your own number in **To** and press **Test step**. A text arrives on your phone from your own number, and Zapier shows the message BlueBot returned with `state: "queued"`. Then map Shopify’s field back into **To** and turn the Zap on.

## Tell customers their order shipped

| Part             | What it is                            |
| ---------------- | ------------------------------------- |
| Trigger          | When an order is fulfilled in Shopify |
| Action           | BlueBot’s **Send Text** action        |
| Connects through | [Zapier](https://usebluebot.com/docs/zapier)                |

### Steps

1. Start a Zap with Shopify’s trigger for a fulfilled order.
2. Add BlueBot’s Send Text action and map the order’s phone to To.
3. Write the text with the order number and tracking link mapped in.

### Map the fields

| BlueBot field                  | Map it to                                                                                                                                    |
| ------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------- |
| To                             | The person’s mobile number from Shopify. US numbers can leave off the +1.                                                                    |
| Text                           | Good news, {{first_name}}: order #{{order_number}} is on its way. Track it here: {{tracking_url}}                                      |
| `{{first_name}}` in the text   | Shopify’s first name field.                                                                                                                  |
| `{{order_number}}` in the text | Shopify’s order number field.                                                                                                                |
| `{{tracking_url}}` in the text | Shopify’s tracking url field.                                                                                                                |
| Metadata                       | `source` set to `shopify`, and `record_id` set to the record’s id, so the status and reply webhooks for this text can find the record again. |
| Service                        | Auto, the default: iMessage when the person uses it, otherwise SMS through your iPhone.                                                      |

### Test it

Put your own number in **To** and press **Test step**. A text arrives on your phone from your own number, and Zapier shows the message BlueBot returned with `state: "queued"`. Then map Shopify’s field back into **To** and turn the Zap on.

## Text yourself each new order

| Part             | What it is                                          |
| ---------------- | --------------------------------------------------- |
| Trigger          | Shopify’s webhook for order creation                |
| Action           | A BlueBot **Text Hook** turns each post into a text |
| Connects through | [Text Hook](https://usebluebot.com/docs/text-hooks)                       |

### Steps

1. Make a Text Hook in BlueBot with your own number as the recipient.
2. Add its address in your Shopify admin as a JSON webhook for order creation.
3. Place a test order, then map the order number and total from the payload BlueBot kept.

### Map the fields

| Text Hook setting | Set it to                                                                                                     |
| ----------------- | ------------------------------------------------------------------------------------------------------------- |
| Recipient         | The field in Shopify’s post that holds the person’s phone number, written as a path such as `{{body.phone}}`. |
| Text              | New order #{{body.order_number}} for ${{body.total_price}} from {{body.first_name}}.                    |
| Metadata          | `source` set to `shopify`. BlueBot adds the hook’s id by itself.                                              |

### Test it

Post a sample to the hook’s address with your own number in the phone field, as below. A text arrives on your phone, and the hook’s page lists the post.

```bash title="A test post shaped like Shopify’s"
curl -X POST "https://usebluebot.com/h/YOUR_HOOK_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"phone":"+15555550123","order_number":"sample order number","total_price":"sample total price","first_name":"Maria"}'
```

## Before you turn it on

- Text only people who asked to hear from you. Anyone who replies STOP goes on your stop list, and BlueBot cancels texts to them. [Stop words](https://usebluebot.com/docs/concepts/stop-words)
- A text that can’t go yet waits with a hold rather than failing: quiet hours, your Mac away, a daily limit. [Holds](https://usebluebot.com/docs/concepts/holds)
- [Shopify with BlueBot](https://usebluebot.com/integrations/shopify) on the integrations page says what else the two do together.
