# Tags

> Attach name/value tags to an email for categorization and reporting.

Attach metadata to an email with the `tags` array — a list of `{ name, value }` pairs. Tags travel with the message, where they can be used to segment metrics and feed your own reporting. After the email is sent, its tags are also included on the [webhook](https://www.mailblastr.com/docs/webhooks/overview) events emitted for that email.

Common uses are associating an email with a customer id from your application, labelling a plan tier like `free` or `enterprise`, or noting the category of message such as `welcome` or `password_reset`.

## Tag fields

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `name` | string | Yes | The tag name (e.g. `category`). May contain ASCII letters, numbers, underscores, or dashes only. |
| `value` | string | Yes | The tag value (e.g. `welcome`). May contain ASCII letters, numbers, underscores, or dashes only. |

> **Note:** You can attach up to **75 tags** per email. Tag names and values are restricted to ASCII letters, numbers, underscores, and dashes.

## Example

**Node.js**

```js
import { MailBlastr } from 'mailblastr';

const mb = new MailBlastr('mb_xxxxxxxxx');

const { data, error } = await mb.emails.send({
  "from": "Acme <hello@yourdomain.com>",
  "to": ["delivered@example.com"],
  "subject": "Welcome aboard",
  "html": "<p>Glad to have you.</p>",
  "tags": [
    { "name": "category", "value": "welcome" },
    { "name": "tier", "value": "free" }
  ]
});
console.log({ data, error });
```

**Ruby**

```ruby
require "mailblastr"

Mailblastr.api_key = "mb_xxxxxxxxx"

Mailblastr::Emails.send({
  "from": "Acme <hello@yourdomain.com>",
  "to": [
    "delivered@example.com"
  ],
  "subject": "Welcome aboard",
  "html": "<p>Glad to have you.</p>",
  "tags": [
    {
      "name": "category",
      "value": "welcome"
    },
    {
      "name": "tier",
      "value": "free"
    }
  ]
})
```

**PHP**

```php
$mailblastr = Mailblastr::client('mb_xxxxxxxxx');

$mailblastr->emails->send([
  'from' => "Acme <hello@yourdomain.com>",
  'to' => [
    "delivered@example.com"
  ],
  'subject' => "Welcome aboard",
  'html' => "<p>Glad to have you.</p>",
  'tags' => [
    [
      'name' => "category",
      'value' => "welcome"
    ],
    [
      'name' => "tier",
      'value' => "free"
    ]
  ]
]);
```

**Python**

```python
import mailblastr

mailblastr.api_key = "mb_xxxxxxxxx"

mailblastr.Emails.send({
  "from": "Acme <hello@yourdomain.com>",
  "to": [
    "delivered@example.com"
  ],
  "subject": "Welcome aboard",
  "html": "<p>Glad to have you.</p>",
  "tags": [
    {
      "name": "category",
      "value": "welcome"
    },
    {
      "name": "tier",
      "value": "free"
    }
  ]
})
```

**Go**

```go
import "github.com/shekhu10/mailblastr-sdks/mailblastr-go"

client := mailblastr.NewClient("mb_xxxxxxxxx")

params := &mailblastr.SendEmailRequest{
    From:    "Acme <hello@yourdomain.com>",
    To:      []string{"delivered@example.com"},
    Subject: "hello world",
    Html:    "<p>it works!</p>",
}
sent, err := client.Emails.Send(params)
```

**Rust**

```rust
use mailblastr::{Mailblastr, CreateEmailBaseOptions};

let mb = Mailblastr::new("mb_xxxxxxxxx");

let email = CreateEmailBaseOptions::new(
    "Acme <hello@yourdomain.com>",
    ["delivered@example.com"],
    "hello world",
).with_html("<p>it works!</p>");
let _sent = mb.emails.send(email).await?;
```

**Java**

```java
import com.mailblastr.*;

Mailblastr mailblastr = new Mailblastr("mb_xxxxxxxxx");

SendEmailRequest request = SendEmailRequest.builder()
    .from("Acme <hello@yourdomain.com>")
    .to("delivered@example.com")
    .subject("hello world")
    .html("<p>it works!</p>")
    .build();
mailblastr.emails().send(request);
```

**.NET**

```csharp
using Mailblastr;

IMailblastr mailblastr = MailblastrClient.Create("mb_xxxxxxxxx");

var resp = await mailblastr.EmailSendAsync(new EmailMessage
{
    From = "Acme <hello@yourdomain.com>",
    To = "delivered@example.com",
    Subject = "hello world",
    HtmlBody = "<p>it works!</p>",
});
```

**cURL**

```bash
curl -X POST 'https://api.mailblastr.com/emails' \
  -H 'Authorization: Bearer mb_xxxxxxxxx' \
  -H 'Content-Type: application/json' \
  -d '{
  "from": "Acme <hello@yourdomain.com>",
  "to": ["delivered@example.com"],
  "subject": "Welcome aboard",
  "html": "<p>Glad to have you.</p>",
  "tags": [
    { "name": "category", "value": "welcome" },
    { "name": "tier", "value": "free" }
  ]
}'
```

> **Note:** Tags you set are stored on the email and returned by [GET /emails/:id](https://www.mailblastr.com/docs/api/emails-get) in the `tags` field.
