> For the complete documentation index, see [llms.txt](https://docs.channel360.co.za/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.channel360.co.za/api-usage/concepts/tags-vs-the-api.md).

# Tags vs. the API

Learn when template tags apply and why API sends do not use them.

Tags fill a template's blanks for campaigns sent from the web app. The API never uses them: you put the values in the request.

## Tags only apply to web-app campaigns

{% hint style="info" %}
The Channel360 web app and the API are separate sending methods. The API ignores template tag settings.
{% endhint %}

A tag is a web-app setting on a template placeholder. It tells a campaign where to get that placeholder's value.

A campaign is a bulk send to a group of subscribers from the web app.

| Tag source               | What a campaign does                                        |
| ------------------------ | ----------------------------------------------------------- |
| **hard-coded**           | Uses the same fixed value for every recipient.              |
| **subscriber-field**     | Uses each subscriber's stored detail, such as a first name. |
| **csv**                  | Uses a value from an uploaded spreadsheet column.           |
| **on-campaign-creation** | Asks the campaign creator for a value.                      |

## API sends use `components`

When you send `POST /org/<ORG_ID>/notification`, provide every placeholder value in `components`.

* You can leave tags unset for templates used only through the API.
* Campaign tags never change or break API sends.
* Fix an incorrect API value in the request body.

**Tags fill blanks for web-app campaigns. `components` fills blanks for API sends. They never mix.**

The template must still exist under your organisation and be approved by WhatsApp.

## Setting tags up (web-app campaigns only)

You can set a tag on each header, body and button placeholder. Tags are numbered by `index`, starting at 1, in placeholder order: the tag with `index` 1 fills `{{1}}`.

| Tag type               | What to set                                                                                          |
| ---------------------- | ---------------------------------------------------------------------------------------------------- |
| `hard-coded`           | `value`: the fixed text used for every recipient.                                                    |
| `subscriber-field`     | `fields`: the subscriber field to use. Available fields are `mobileNumber`, `firstName`, `lastName`. |
| `csv`                  | `fields`: the spreadsheet column, and `url`: the uploaded file. Not available for headers.           |
| `on-campaign-creation` | `value`: the prompt shown to whoever creates the campaign.                                           |
| `image`                | `url`: the image's public `https://` link, hosted on your own storage.                               |
| `video`                | `url`: the video's public `https://` link, hosted on your own storage.                               |

Most teams set tags in the web app when they configure the template.

{% content-ref url="/pages/c4Sj6xnEfMJgvleT4DeJ" %}
[Template Configuration](/channel360-guide/templates/template-configuration.md)
{% endcontent-ref %}

## Related

{% content-ref url="/pages/Pvr9fMGmTMGuq2mIeqER" %}
[Filling template placeholders](/api-usage/send-a-template-notification/filling-template-placeholders.md)
{% endcontent-ref %}
