---
title: "Tag order when webhook received"
description: "A ready-made Shopify Flow workflow: when an external system calls your webhook with an order number and a tag, add that tag to the order. Download the .flow file and import it."
canonical: "https://docs.workflow-webhooks.app/template-tag-order"
---

# Tag order when webhook received

When an external system calls your webhook with an order number and a tag, add that tag to the order. Lets a 3PL, ERP or no-code tool mark orders as shipped, invoiced or reviewed without Admin API access.

One trigger from Workflow Webhooks and Shopify's built-in actions, no other app needed.

![The workflow in Shopify Flow: Tag order when webhook received](https://cdn-dev.eu.codecreationlabs.cloud/crm-tool/uploads/SjJ78gKLnLlocopCui3Cs62dJbGZ7F1n/d9c0b1f5f458fdd8.jpg)
*The complete workflow as it looks in Shopify Flow.*

## What it needs

A webhook in Workflow Webhooks with this payload mapping. See [Payload mapping and Flow variables](https://docs.workflow-webhooks.app/payload-mapping.md).

| Field | What to map to it |
| --- | --- |
| `fieldOne` | The order number, for example `#1001` |
| `fieldTwo` | The tag to add, for example `shipped-by-3pl` |

A call to the webhook then looks like this:

```bash
curl -X POST https://<your webhook URL> \
  -H "Content-Type: application/json" \
  -d '{"orderNumber": "#1001", "tag": "shipped-by-3pl"}'
```

> [!WARNING]
> **More than one webhook?**
> The Webhook Trigger fires for every webhook in your store. If you have more than one, add a condition on `webhookId` **Equal to** this webhook's id right after the trigger, so only this webhook tags orders.

## Get the workflow

1. Download the `.flow` file attached at the bottom of this page.
2. In your Shopify admin open **Flow**, click **Import** and choose the file.
3. Check the steps, then click **Turn on workflow**.

The file is an export from Shopify Flow itself. Do not edit it by hand; change the workflow in Flow after importing it.

## How it works

1. **Webhook Trigger** starts the workflow each time your webhook URL is called and hands it the mapped fields.
2. **Get order data** looks up the order with the query `name:{{fieldOne}}` and keeps at most one result.
3. **For each** runs once for the order it found, and not at all when no order matches.
4. **Add order tags** adds `{{fieldTwo}}` to that order.

## Make it yours

- Replace `{{fieldTwo}}` with a fixed tag such as `shipped-by-3pl` if the caller cannot send a tag.
- Add **Add order note** or **Update order metafield** after the tag step to store more of what the caller sent.

## Next steps

- [Create your first webhook](https://docs.workflow-webhooks.app/getting-started.md) - create the webhook this workflow listens to.
- [Workflow templates](https://docs.workflow-webhooks.app/workflow-templates.md) - all templates.
- [History and troubleshooting](https://docs.workflow-webhooks.app/history-and-troubleshooting.md) - check that the webhook reached Flow.
