{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-docs/email-api/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["admonition","tabs","tab"]},"type":"markdown"},"seo":{"title":"Tag Email Messages - Mailjet Send API v3","siteUrl":"https://dev.mailjet.com/","projectTitle":"Mailjet Developer Documentation","description":"Tag transactional emails in Mailjet Send API v3 with Mj-CustomID and Mj-EventPayload to trace messages in the system and correlate them with delivery events.","image":"https://dev.mailjet.com/og-image.png","lang":"en-US","keywords":["Mailjet API","Email API","Content API","SMTP Relay","transactional email","email delivery","Send API","email templates","developer documentation"],"meta":[{"name":"og:type","content":"website"},{"name":"og:site_name","content":"Mailjet Developer Documentation"},{"name":"twitter:card","content":"summary_large_image"},{"name":"robots","content":"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1"},{"name":"googlebot","content":"index, follow, max-snippet:-1, max-image-preview:large"}],"jsonLd":{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://dev.mailjet.com/#organization","name":"Mailjet","alternateName":"Sinch Mailjet","url":"https://www.mailjet.com","logo":"https://assets.mailjet.com/lib/images/mailjetLogo/mj_logo_with_text_color.png","parentOrganization":{"@type":"Organization","name":"Sinch","url":"https://www.sinch.com"}},{"@type":"WebSite","@id":"https://dev.mailjet.com/#website","name":"Mailjet Developer Documentation","description":"Official developer documentation for the Mailjet Email API, Content API and SMTP Relay.","url":"https://dev.mailjet.com/","inLanguage":"en-US","publisher":{"@id":"https://dev.mailjet.com/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://dev.mailjet.com/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]},"llmstxt":{"hide":false,"title":"Mailjet Developer Documentation","description":"Developer documentation for the Mailjet Email API, Content API and SMTP Relay - guides, API references and code samples for sending, templating and tracking email at scale.","details":{"content":"Mailjet (part of Sinch) provides APIs for sending and managing email.\n\nThis documentation covers four main areas:\n\n- **Email API** - the Send API (v3 and v3.1) for transactional and marketing email,\n  plus contact management, segmentation, campaigns, statistics, webhooks, the Parse API\n  and the Mailjet Templating Language.\n- **Content API** - programmatic management of email templates, template contents,\n  images, labels and authentication tokens (v1).\n- **SMTP Relay** - sending through Mailjet's SMTP servers, including custom headers.\n- **API Reference** - the complete, generated reference for every endpoint, built directly\n  from the OpenAPI specifications.\n\nBase URL for all REST APIs: `https://api.mailjet.com`.\nAuthentication uses HTTP Basic auth with an API key and secret key.\n\n## Machine-readable entry points\n\nPrefer these when you need the API surface in as few requests as possible:\n\n- `/openapi/openapi-mailjet.md` - the **complete** Email API reference (every endpoint,\n  grouped by resource) as a single Markdown document.\n- `/openapi/openapi-passport.md` - the **complete** Content API reference as a single\n  Markdown document.\n- `/_bundle/openapi/openapi-mailjet.yaml` - the raw, fully bundled OpenAPI 3 description\n  of the Email API.\n- `/_bundle/openapi/openapi-passport.yaml` - the raw, fully bundled OpenAPI 3 description\n  of the Content API.\n- `/sitemap.xml` - every indexable URL on this site.\n\nEvery page on this site is also available as clean Markdown by appending `.md` to its URL."},"sections":[{"title":"Email API","description":"Sending, contacts, campaigns, statistics, webhooks and templating.","includeFiles":["docs/email-api/**/*.md"],"excludeFiles":[]},{"title":"Content API","description":"Manage templates, template contents, images, labels and tokens.","includeFiles":["docs/content-api/**/*.md","docs/content-api.md"],"excludeFiles":[]},{"title":"SMTP Relay","description":"Send email through Mailjet's SMTP servers.","includeFiles":["docs/smtp-relay/**/*.md"],"excludeFiles":[]},{"title":"API Reference","description":"Complete generated reference for every Mailjet API endpoint.","includeFiles":["openapi/openapi-mailjet.yaml","openapi/openapi-passport.yaml","docs/api-reference/**/*.md"],"excludeFiles":[]},{"title":"Migrating from Mandrill","description":"Guides for switching from Mandrill to Mailjet.","includeFiles":["docs/mandrill/**/*.md"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The following adheres to Send API v3.0"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"tag-email-messages","__idx":0},"children":["Tag Email Messages"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Mailjet provides 2 properties to tag messages with your own custom information."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["These custom pieces of information are returned back in the events you registered to via our Event API and in the messages processed via our Parse API."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"send-an-email-with-a-custom-id","__idx":1},"children":["Send an email with a custom ID"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Sometimes you need to use your own ID in addition to ours to be able to trace back the message in our system easily. For this purpose we let you insert your own ID in the message. To achieve this, just pass the ID you want to use in the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Mj-CustomID"]}," property."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"example","__idx":2},"children":["Example"]},{"$$mdtype":"Tag","name":"Tabs","attributes":{"size":"medium"},"children":[{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"cURL","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"shell","header":{"controls":{"copy":{}}},"source":"# This call sends a message to one recipient with a CustomID.\ncurl -s \\\n\t-X POST \\\n\t--user \"$MJ_APIKEY_PUBLIC:$MJ_APIKEY_PRIVATE\" \\\n\thttps://api.mailjet.com/v3/send \\\n\t-H 'Content-Type: application/json' \\\n\t-d '{\n\t\t\"FromEmail\":\"pilot@mailjet.com\",\n\t\t\"FromName\":\"Mailjet Pilot\",\n\t\t\"Subject\":\"Your email flight plan!\",\n\t\t\"Text-part\":\"Dear passenger, welcome to Mailjet! May the delivery force be with you!\",\n\t\t\"Html-part\":\"<h3>Dear passenger, welcome to <a href=\\\"https://www.mailjet.com/\\\">Mailjet</a>!<br />May the delivery force be with you!\",\n\t\t\"Recipients\":[{\"Email\":\"passenger@mailjet.com\"}],\n\t\t\"Mj-CustomID\":\"PassengerEticket1234\"\n\t}'\n","lang":"shell"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"PHP","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"php","header":{"controls":{"copy":{}}},"source":"<?php\nrequire 'vendor/autoload.php';\nuse \\Mailjet\\Resources;\n$mj = new \\Mailjet\\Client(getenv('MJ_APIKEY_PUBLIC'), getenv('MJ_APIKEY_PRIVATE'));\n$body = [\n    'FromEmail' => \"pilot@mailjet.com\",\n    'FromName' => \"Mailjet Pilot\",\n    'Subject' => \"Your email flight plan!\",\n    'Text-part' => \"Dear passenger, welcome to Mailjet! May the delivery force be with you!\",\n    'Html-part' => \"<h3>Dear passenger, welcome to <a href=\\\"https://www.mailjet.com/\\\">Mailjet</a>!<br />May the delivery force be with you!\",\n    'Recipients' => [['Email' => \"passenger@mailjet.com\"]],\n    'Mj-CustomID' => \"PassengerEticket1234\"\n];\n$response = $mj->post(Resources::$Email, ['body' => $body]);\n$response->success() && var_dump($response->getData());\n?>\n","lang":"php"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"Node.js","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"javascript","header":{"controls":{"copy":{}}},"source":"/**\n *\n * This call sends a message to one recipient with a CustomID.\n *\n */\nconst mailjet = require('node-mailjet').connect(\n  process.env.MJ_APIKEY_PUBLIC,\n  process.env.MJ_APIKEY_PRIVATE\n)\nconst request = mailjet.post('send').request({\n  FromEmail: 'pilot@mailjet.com',\n  FromName: 'Mailjet Pilot',\n  Subject: 'Your email flight plan!',\n  'Text-part':\n    'Dear passenger, welcome to Mailjet! May the delivery force be with you!',\n  'Html-part':\n    '<h3>Dear passenger, welcome to <a href=\"https://www.mailjet.com/\">Mailjet</a>!<br />May the delivery force be with you!',\n  Recipients: [{ Email: 'passenger@mailjet.com' }],\n  'Mj-CustomID': 'PassengerEticket1234',\n})\nrequest\n  .then(result => {\n    console.log(result.body)\n  })\n  .catch(error => {\n    console.log(error.statusCode)\n  })\n","lang":"javascript"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"Ruby","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"ruby","header":{"controls":{"copy":{}}},"source":"Mailjet.configure do |config|\n  config.api_key = ENV['MJ_APIKEY_PUBLIC']\n  config.secret_key = ENV['MJ_APIKEY_PRIVATE']\n  config.default_from = 'your default sending address'\nend\nvariable = Mailjet::Send.create(\n  from_email: 'pilot@mailjet.com',\n  from_name: 'Mailjet Pilot',\n  subject: 'Your email flight plan!',\n  text_part: 'Dear passenger, welcome to Mailjet! May the delivery force be with you!',\n  html_part: '<h3>Dear passenger, welcome to <a href=\\\"https://www.mailjet.com/\\\">Mailjet</a>!<br />May the delivery force be with you!',\n  recipients:[{'Email' => 'passenger@mailjet.com'}],\n  'Mj-CustomID' => 'PassengerEticket1234')\n","lang":"ruby"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"Python","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"python","header":{"controls":{"copy":{}}},"source":"from mailjet_rest import Client\nimport os\napi_key = os.environ['MJ_APIKEY_PUBLIC']\napi_secret = os.environ['MJ_APIKEY_PRIVATE']\nmailjet = Client(auth=(api_key, api_secret))\ndata = {\n\t\"FromEmail\":\"pilot@mailjet.com\",\n\t\"FromName\":\"Mailjet Pilot\",\n\t\"Subject\":\"Your email flight plan!\",\n\t\"Text-part\":\"Dear passenger, welcome to Mailjet! May the delivery force be with you!\",\n\t\"Html-part\":\"<h3>Dear passenger, welcome to <a href=\\\"https://www.mailjet.com/\\\">Mailjet</a>!<br />May the delivery force be with you!\",\n\t\"Recipients\":[{\"Email\":\"passenger@mailjet.com\"}],\n\t\"Mj-CustomID\":\"PassengerEticket1234\"\n}\nresult = mailjet.send.create(data=data)\nprint result.status_code\nprint result.json()\n","lang":"python"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"Java","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"java","header":{"controls":{"copy":{}}},"source":"package MyClass;\nimport com.mailjet.client.errors.MailjetException;\nimport com.mailjet.client.errors.MailjetSocketTimeoutException;\nimport com.mailjet.client.MailjetClient;\nimport com.mailjet.client.MailjetRequest;\nimport com.mailjet.client.MailjetResponse;\nimport com.mailjet.client.resource.Email;\nimport org.json.JSONArray;\nimport org.json.JSONObject;\npublic class MyClass {\n    /**\n     * This call sends a message to one recipient with a CustomID.\n     */\n    public static void main(String[] args) throws MailjetException, MailjetSocketTimeoutException {\n      MailjetClient client;\n      MailjetRequest request;\n      MailjetResponse response;\n      client = new MailjetClient(System.getenv(\"MJ_APIKEY_PUBLIC\"), System.getenv(\"MJ_APIKEY_PRIVATE\"));\n      request = new MailjetRequest(Email.resource)\n\t\t\t\t\t\t.property(Email.FROMEMAIL, \"pilot@mailjet.com\")\n\t\t\t\t\t\t.property(Email.FROMNAME, \"Mailjet Pilot\")\n\t\t\t\t\t\t.property(Email.SUBJECT, \"Your email flight plan!\")\n\t\t\t\t\t\t.property(Email.TEXTPART, \"Dear passenger, welcome to Mailjet! May the delivery force be with you!\")\n\t\t\t\t\t\t.property(Email.HTMLPART, \"<h3>Dear passenger, welcome to <a href=\\\"https://www.mailjet.com/\\\">Mailjet</a>!<br />May the delivery force be with you!\")\n\t\t\t\t\t\t.property(Email.RECIPIENTS, new JSONArray()\n                .put(new JSONObject()\n                    .put(\"Email\", \"passenger@mailjet.com\")))\n\t\t\t\t\t\t.property(Email.MJCUSTOMID, \"PassengerEticket1234\");\n      response = client.post(request);\n      System.out.println(response.getStatus());\n      System.out.println(response.getData());\n    }\n}\n","lang":"java"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"Go","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"go","header":{"controls":{"copy":{}}},"source":"/*\nThis call sends a message to one recipient with a CustomID.\n*/\npackage main\nimport (\n\t\"fmt\"\n\t. \"github.com/mailjet/mailjet-apiv3-go\"\n\t\"os\"\n)\nfunc main () {\n\tmailjetClient := NewMailjetClient(os.Getenv(\"MJ_APIKEY_PUBLIC\"), os.Getenv(\"MJ_APIKEY_PRIVATE\"))\n\temail := &InfoSendMail {\n      FromEmail: \"pilot@mailjet.com\",\n      FromName: \"Mailjet Pilot\",\n      Subject: \"Your email flight plan!\",\n      TextPart: \"Dear passenger, welcome to Mailjet! May the delivery force be with you!\",\n      HTMLPart: \"<h3>Dear passenger, welcome to <a href=\\\"https://www.mailjet.com/\\\">Mailjet</a>!<br />May the delivery force be with you!\",\n      Recipients: []Recipient {\n        Recipient {\n          Email: \"passenger@mailjet.com\",\n        },\n      },\n      MjCustomID: \"PassengerEticket1234\",\n    }\n\tres, err := mailjetClient.SendMail(email)\n\tif err != nil {\n\t\t\tfmt.Println(err)\n\t} else {\n\t\t\tfmt.Println(\"Success\")\n\t\t\tfmt.Println(res)\n\t}\n}\n","lang":"go"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"C#","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"csharp","header":{"controls":{"copy":{}}},"source":"using Mailjet.Client;\nusing Mailjet.Client.Resources;\nusing System;\nusing Newtonsoft.Json.Linq;\nnamespace Mailjet.ConsoleApplication\n{\n   class Program\n   {\n      /// <summary>\n      /// This call sends a message to one recipient with a CustomID\n      /// </summary>\n      static void Main(string[] args)\n      {\n         RunAsync().Wait();\n      }\n      static async Task RunAsync()\n      {\n         MailjetClient client = new MailjetClient(Environment.GetEnvironmentVariable(\"MJ_APIKEY_PUBLIC\"), Environment.GetEnvironmentVariable(\"MJ_APIKEY_PRIVATE\"));\n         MailjetRequest request = new MailjetRequest\n         {\n            Resource = Send.Resource,\n         }\n            .Property(Send.FromEmail, \"pilot@mailjet.com\")\n            .Property(Send.FromName, \"Mailjet Pilot\")\n            .Property(Send.Subject, \"Your email flight plan!\")\n            .Property(Send.TextPart, \"Dear passenger, welcome to Mailjet! May the delivery force be with you!\")\n            .Property(Send.HtmlPart, \"<h3>Dear passenger, welcome to <a href=\\\"https://www.mailjet.com/\\\">Mailjet</a>!<br />May the delivery force be with you!\")\n            .Property(Send.Recipients, new JArray {\n                new JObject {\n                 {\"Email\", \"passenger@mailjet.com\"}\n                 }\n                })\n            .Property(Send.MjCustomID, \"PassengerEticket1234\");\n         MailjetResponse response = await client.PostAsync(request);\n         if (response.IsSuccessStatusCode)\n         {\n            Console.WriteLine(string.Format(\"Total: {0}, Count: {1}\\n\", response.GetTotal(), response.GetCount()));\n            Console.WriteLine(response.GetData());\n         }\n         else\n         {\n            Console.WriteLine(string.Format(\"StatusCode: {0}\\n\", response.StatusCode));\n            Console.WriteLine(string.Format(\"ErrorInfo: {0}\\n\", response.GetErrorInfo()));\n            Console.WriteLine(string.Format(\"ErrorMessage: {0}\\n\", response.GetErrorMessage()));\n         }\n      }\n   }\n}\n","lang":"csharp"},"children":[]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["From then, your ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CustomID"]}," is linked to our own ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Message ID"]},". You can also retrieve the message later by providing it to the /message resource ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CustomID"]}," filter."]},{"$$mdtype":"Tag","name":"Tabs","attributes":{"size":"medium"},"children":[{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"cURL","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"shell","header":{"controls":{"copy":{}}},"source":"# View : API Key Statistical campaign/message data.\ncurl -s \\\n\t-X GET \\\n\t--user \"$MJ_APIKEY_PUBLIC:$MJ_APIKEY_PRIVATE\" \\\n\thttps://api.mailjet.com/v3/REST/message?CustomID=PassengerEticket1234\n","lang":"shell"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"PHP","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"php","header":{"controls":{"copy":{}}},"source":"<?php\n/*\nView : API Key Statistical campaign/message data.\n*/\nrequire 'vendor/autoload.php';\nuse \\Mailjet\\Resources;\n$mj = new \\Mailjet\\Client(getenv('MJ_APIKEY_PUBLIC'), getenv('MJ_APIKEY_PRIVATE'));\n$filters = [\n  'CustomID' => 'PassengerEticket1234'\n];\n$response = $mj->get(Resources::$Message, ['filters' => $filters]);\n$response->success() && var_dump($response->getData());\n?>\n","lang":"php"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"Node.js","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"javascript","header":{"controls":{"copy":{}}},"source":"/**\n *\n * View : API Key Statistical campaign/message data.\n *\n */\nconst mailjet = require ('node-mailjet')\n\t.connect(process.env.MJ_APIKEY_PUBLIC, process.env.MJ_APIKEY_PRIVATE)\nconst request = mailjet\n\t.get(\"message\")\n\t.request({\n\t\t\"CustomID\":\"PassengerEticket1234\"\n\t})\nrequest\n\t.then((result) => {\n\t\tconsole.log(result.body)\n\t})\n\t.catch((err) => {\n\t\tconsole.log(err.statusCode)\n\t})\n","lang":"javascript"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"Ruby","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"ruby","header":{"controls":{"copy":{}}},"source":"# View : API Key Statistical campaign/message data.\nrequire 'mailjet'\nMailjet.configure do |config|\n  config.api_key = ENV['MJ_APIKEY_PUBLIC']\n  config.secret_key = ENV['MJ_APIKEY_PRIVATE']  \nend\nvariable = Mailjet::Message.all(custom_id: \"PassengerEticket1234\"\n)\np variable.attributes['Data']\n","lang":"ruby"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"Python","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"python","header":{"controls":{"copy":{}}},"source":"\"\"\"\nView : API Key Statistical campaign/message data.\n\"\"\"\nfrom mailjet_rest import Client\nimport os\napi_key = os.environ['MJ_APIKEY_PUBLIC']\napi_secret = os.environ['MJ_APIKEY_PRIVATE']\nmailjet = Client(auth=(api_key, api_secret))\nfilters = {\n  'CustomID': 'PassengerEticket1234'\n}\nresult = mailjet.message.get(filters=filters)\nprint result.status_code\nprint result.json()\n","lang":"python"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"Java","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"java","header":{"controls":{"copy":{}}},"source":"package com.my.project;\nimport com.mailjet.client.errors.MailjetException;\nimport com.mailjet.client.errors.MailjetSocketTimeoutException;\nimport com.mailjet.client.MailjetClient;\nimport com.mailjet.client.MailjetRequest;\nimport com.mailjet.client.MailjetResponse;\nimport com.mailjet.client.resource.Message;\nimport org.json.JSONArray;\nimport org.json.JSONObject;\npublic class MyClass {\n    /**\n     * View : API Key Statistical campaign/message data.\n     */\n    public static void main(String[] args) throws MailjetException, MailjetSocketTimeoutException {\n      MailjetClient client;\n      MailjetRequest request;\n      MailjetResponse response;\n      client = new MailjetClient(System.getenv(\"MJ_APIKEY_PUBLIC\"), System.getenv(\"MJ_APIKEY_PRIVATE\"));\n      request = new MailjetRequest(Message.resource)\n                  .filter(Message.CUSTOMID, \"PassengerEticket1234\");\n      response = client.get(request);\n      System.out.println(response.getStatus());\n      System.out.println(response.getData());\n    }\n}\n","lang":"java"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"Go","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"go","header":{"controls":{"copy":{}}},"source":"/*\nView : API Key Statistical campaign/message data.\n*/\npackage main\nimport (\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\tmailjet \"github.com/mailjet/mailjet-apiv3-go\"\n\t\"github.com/mailjet/mailjet-apiv3-go/resources\"\n)\nfunc main () {\n\tmailjetClient := NewMailjetClient(os.Getenv(\"MJ_APIKEY_PUBLIC\"), os.Getenv(\"MJ_APIKEY_PRIVATE\"))\n\tvar data []resources.Message\n\t_, _, err := mailjetClient.List(\"message\", &data, Filter(\"CustomID\", \"PassengerEticket1234\"))\n\tif err != nil {\n\t  fmt.Println(err)\n\t}\n\tfmt.Printf(\"Data array: %+v\\n\", data)\n}\n","lang":"go"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"C#","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"csharp","header":{"controls":{"copy":{}}},"source":"using Mailjet.Client;\nusing Mailjet.Client.Resources;\nusing System;\nusing Newtonsoft.Json.Linq;\nnamespace Mailjet.ConsoleApplication\n{\n   class Program\n   {\n      /// <summary>\n      /// View : API Key Statistical campaign/message data.\n      /// </summary>\n      static void Main(string[] args)\n      {\n         RunAsync().Wait();\n      }\n      static async Task RunAsync()\n      {\n         MailjetClient client = new MailjetClient(Environment.GetEnvironmentVariable(\"MJ_APIKEY_PUBLIC\"), Environment.GetEnvironmentVariable(\"MJ_APIKEY_PRIVATE\"));\n         MailjetRequest request = new MailjetRequest\n         {\n            Resource = Message.Resource,\n         }\n         .Filter(Message.Customid, \"PassengerEticket1234\");\n         MailjetResponse response = await client.GetAsync(request);\n         if (response.IsSuccessStatusCode)\n         {\n            Console.WriteLine(string.Format(\"Total: {0}, Count: {1}\\n\", response.GetTotal(), response.GetCount()));\n            Console.WriteLine(response.GetData());\n         }\n         else\n         {\n            Console.WriteLine(string.Format(\"StatusCode: {0}\\n\", response.StatusCode));\n            Console.WriteLine(string.Format(\"ErrorInfo: {0}\\n\", response.GetErrorInfo()));\n            Console.WriteLine(response.GetData());\n            Console.WriteLine(string.Format(\"ErrorMessage: {0}\\n\", response.GetErrorMessage()));\n         }\n      }\n   }\n}\n","lang":"csharp"},"children":[]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"send-an-email-with-a-payload","__idx":3},"children":["Send an email with a payload"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Sometimes, you need more than just an ID to represent the context to what a specific message is attached to. For this purpose, we let you insert a payload in the message which can be of any format (XML, JSON, CSV, etc). To take advantage of this, just pass the payload you want in the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Mj-EventPayLoad"]}," property."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"example-1","__idx":4},"children":["Example"]},{"$$mdtype":"Tag","name":"Tabs","attributes":{"size":"medium"},"children":[{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"cURL","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"shell","header":{"controls":{"copy":{}}},"source":"# This call sends a message to one recipient with an EventPayload.\ncurl -s \\\n\t-X POST \\\n\t--user \"$MJ_APIKEY_PUBLIC:$MJ_APIKEY_PRIVATE\" \\\n\thttps://api.mailjet.com/v3/send \\\n\t-H 'Content-Type: application/json' \\\n\t-d '{\n\t\t\"FromEmail\":\"pilot@mailjet.com\",\n\t\t\"FromName\":\"Mailjet Pilot\",\n\t\t\"Subject\":\"Your email flight plan!\",\n\t\t\"Text-part\":\"Dear passenger, welcome to Mailjet! May the delivery force be with you!\",\n\t\t\"Html-part\":\"<h3>Dear passenger, welcome to <a href=\\\"https://www.mailjet.com/\\\">Mailjet</a>!<br />May the delivery force be with you!\",\n\t\t\"Recipients\":[{\"Email\":\"passenger@mailjet.com\"}],\n\t\t\"Mj-EventPayLoad\":\"Eticket,1234,row,15,seat,B\"\n\t}'\n","lang":"shell"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"PHP","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"php","header":{"controls":{"copy":{}}},"source":"<?php\n/*\nThis call sends a message to one recipient with an EventPayload.\n*/\nrequire 'vendor/autoload.php';\nuse \\Mailjet\\Resources;\n$mj = new \\Mailjet\\Client(getenv('MJ_APIKEY_PUBLIC'), getenv('MJ_APIKEY_PRIVATE'));\n$body = [\n    'FromEmail' => \"pilot@mailjet.com\",\n    'FromName' => \"Mailjet Pilot\",\n    'Subject' => \"Your email flight plan!\",\n    'Text-part' => \"Dear passenger, welcome to Mailjet! May the delivery force be with you!\",\n    'Html-part' => \"<h3>Dear passenger, welcome to <a href=\\\"https://www.mailjet.com/\\\">Mailjet</a>!<br />May the delivery force be with you!\",\n    'Recipients' => [['Email' => \"passenger@mailjet.com\"]],\n    'Mj-EventPayLoad' => \"Eticket,1234,row,15,seat,B\"\n];\n$response = $mj->post(Resources::$Email, ['body' => $body]);\n$response->success() && var_dump($response->getData());\n?>\n","lang":"php"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"Node.js","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"javascript","header":{"controls":{"copy":{}}},"source":"/**\n *\n * This call sends a message to one recipient with an EventPayload.\n *\n */\nconst mailjet = require('node-mailjet').connect(\n  process.env.MJ_APIKEY_PUBLIC,\n  process.env.MJ_APIKEY_PRIVATE\n)\nconst request = mailjet.post('send').request({\n  FromEmail: 'pilot@mailjet.com',\n  FromName: 'Mailjet Pilot',\n  Subject: 'Your email flight plan!',\n  'Text-part':\n    'Dear passenger, welcome to Mailjet! May the delivery force be with you!',\n  'Html-part':\n    '<h3>Dear passenger, welcome to <a href=\"https://www.mailjet.com/\">Mailjet</a>!<br />May the delivery force be with you!',\n  Recipients: [{ Email: 'passenger@mailjet.com' }],\n  'Mj-EventPayLoad': 'Eticket,1234,row,15,seat,B',\n})\nrequest\n  .then(result => {\n    console.log(result.body)\n  })\n  .catch(error => {\n    console.log(error.statusCode)\n  })\n","lang":"javascript"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"Ruby","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"ruby","header":{"controls":{"copy":{}}},"source":"Mailjet.configure do |config|\n  config.api_key = ENV['MJ_APIKEY_PUBLIC']\n  config.secret_key = ENV['MJ_APIKEY_PRIVATE']\n  config.default_from = 'your default sending address'\nend\nvariable = Mailjet::Send.create(\n  from_email: 'pilot@mailjet.com',\n  from_name: 'Mailjet Pilot',\n  subject: 'Your email flight plan!',\n  text_part: 'Dear passenger, welcome to Mailjet! May the delivery force be with you!',\n  html_part: '<h3>Dear passenger, welcome to <a href=\\\"https://www.mailjet.com/\\\">Mailjet</a>!<br />May the delivery force be with you!',\n  recipients:[{'Email' => 'passenger@mailjet.com'}],\n  'Mj-EventPayLoad' => 'Eticket,1234,row,15,seat,B')\n","lang":"ruby"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"Python","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"python","header":{"controls":{"copy":{}}},"source":"from mailjet_rest import Client\nimport os\napi_key = os.environ['MJ_APIKEY_PUBLIC']\napi_secret = os.environ['MJ_APIKEY_PRIVATE']\nmailjet = Client(auth=(api_key, api_secret))\ndata = {\n\t\"FromEmail\":\"pilot@mailjet.com\",\n\t\"FromName\":\"Mailjet Pilot\",\n\t\"Subject\":\"Your email flight plan!\",\n\t\"Text-part\":\"Dear passenger, welcome to Mailjet! May the delivery force be with you!\",\n\t\"Html-part\":\"<h3>Dear passenger, welcome to <a href=\\\"https://www.mailjet.com/\\\">Mailjet</a>!<br />May the delivery force be with you!\",\n\t\"Recipients\":[{\"Email\":\"passenger@mailjet.com\"}],\n\t\"Mj-EventPayLoad\":\"Eticket,1234,row,15,seat,B\"\n}\nresult = mailjet.send.create(data=data)\nprint result.status_code\nprint result.json()\n","lang":"python"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"Java","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"java","header":{"controls":{"copy":{}}},"source":"package MyClass;\nimport com.mailjet.client.errors.MailjetException;\nimport com.mailjet.client.errors.MailjetSocketTimeoutException;\nimport com.mailjet.client.MailjetClient;\nimport com.mailjet.client.MailjetRequest;\nimport com.mailjet.client.MailjetResponse;\nimport com.mailjet.client.resource.Email;\nimport org.json.JSONArray;\nimport org.json.JSONObject;\npublic class MyClass {\n    /**\n     * This call sends a message to one recipient with an EventPayload.\n     */\n    public static void main(String[] args) throws MailjetException, MailjetSocketTimeoutException {\n      MailjetClient client;\n      MailjetRequest request;\n      MailjetResponse response;\n      client = new MailjetClient(System.getenv(\"MJ_APIKEY_PUBLIC\"), System.getenv(\"MJ_APIKEY_PRIVATE\"));\n      request = new MailjetRequest(Email.resource)\n\t\t\t\t\t\t.property(Email.FROMEMAIL, \"pilot@mailjet.com\")\n\t\t\t\t\t\t.property(Email.FROMNAME, \"Mailjet Pilot\")\n\t\t\t\t\t\t.property(Email.SUBJECT, \"Your email flight plan!\")\n\t\t\t\t\t\t.property(Email.TEXTPART, \"Dear passenger, welcome to Mailjet! May the delivery force be with you!\")\n\t\t\t\t\t\t.property(Email.HTMLPART, \"<h3>Dear passenger, welcome to <a href=\\\"https://www.mailjet.com/\\\">Mailjet</a>!<br />May the delivery force be with you!\")\n\t\t\t\t\t\t.property(Email.RECIPIENTS, new JSONArray()\n                .put(new JSONObject()\n                    .put(\"Email\", \"passenger@mailjet.com\")))\n\t\t\t\t\t\t.property(Email.MJEVENTPAYLOAD, \"Eticket,1234,row,15,seat,B\");\n      response = client.post(request);\n      System.out.println(response.getStatus());\n      System.out.println(response.getData());\n    }\n}\n","lang":"java"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"Go","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"go","header":{"controls":{"copy":{}}},"source":"/*\nThis call sends a message to one recipient with an EventPayload.\n*/\npackage main\nimport (\n\t\"fmt\"\n\t. \"github.com/mailjet/mailjet-apiv3-go\"\n\t\"os\"\n)\nfunc main () {\n\tmailjetClient := NewMailjetClient(os.Getenv(\"MJ_APIKEY_PUBLIC\"), os.Getenv(\"MJ_APIKEY_PRIVATE\"))\n\temail := &InfoSendMail {\n      FromEmail: \"pilot@mailjet.com\",\n      FromName: \"Mailjet Pilot\",\n      Subject: \"Your email flight plan!\",\n      TextPart: \"Dear passenger, welcome to Mailjet! May the delivery force be with you!\",\n      HTMLPart: \"<h3>Dear passenger, welcome to <a href=\\\"https://www.mailjet.com/\\\">Mailjet</a>!<br />May the delivery force be with you!\",\n      Recipients: []Recipient {\n        Recipient {\n          Email: \"passenger@mailjet.com\",\n        },\n      },\n      MjEventPayLoad: \"Eticket,1234,row,15,seat,B\",\n    }\n\tres, err := mailjetClient.SendMail(email)\n\tif err != nil {\n\t\t\tfmt.Println(err)\n\t} else {\n\t\t\tfmt.Println(\"Success\")\n\t\t\tfmt.Println(res)\n\t}\n}\n","lang":"go"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"C#","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"csharp","header":{"controls":{"copy":{}}},"source":"using Mailjet.Client;\nusing Mailjet.Client.Resources;\nusing System;\nusing Newtonsoft.Json.Linq;\nnamespace Mailjet.ConsoleApplication\n{\n   class Program\n   {\n      /// <summary>\n      /// This call sends a message to one recipient with an EventPayload.\n      /// </summary>\n      static void Main(string[] args)\n      {\n         RunAsync().Wait();\n      }\n      static async Task RunAsync()\n      {\n         MailjetClient client = new MailjetClient(Environment.GetEnvironmentVariable(\"MJ_APIKEY_PUBLIC\"), Environment.GetEnvironmentVariable(\"MJ_APIKEY_PRIVATE\"));\n         MailjetRequest request = new MailjetRequest\n         {\n            Resource = Send.Resource,\n         }\n            .Property(Send.FromEmail, \"pilot@mailjet.com\")\n            .Property(Send.FromName, \"Mailjet Pilot\")\n            .Property(Send.Subject, \"Your email flight plan!\")\n            .Property(Send.TextPart, \"Dear passenger, welcome to Mailjet! May the delivery force be with you!\")\n            .Property(Send.HtmlPart, \"<h3>Dear passenger, welcome to <a href=\\\"https://www.mailjet.com/\\\">Mailjet</a>!<br />May the delivery force be with you!\")\n            .Property(Send.Recipients, new JArray {\n                new JObject {\n                 {\"Email\", \"passenger@mailjet.com\"}\n                 }\n                })\n            .Property(Send.MjEventPayload, \"Eticket,1234,row,15,seat,B\");\n         MailjetResponse response = await client.PostAsync(request);\n         if (response.IsSuccessStatusCode)\n         {\n            Console.WriteLine(string.Format(\"Total: {0}, Count: {1}\\n\", response.GetTotal(), response.GetCount()));\n            Console.WriteLine(response.GetData());\n         }\n         else\n         {\n            Console.WriteLine(string.Format(\"StatusCode: {0}\\n\", response.StatusCode));\n            Console.WriteLine(string.Format(\"ErrorInfo: {0}\\n\", response.GetErrorInfo()));\n            Console.WriteLine(string.Format(\"ErrorMessage: {0}\\n\", response.GetErrorMessage()));\n         }\n      }\n   }\n}\n","lang":"csharp"},"children":[]}]}]}]},"headings":[{"value":"Tag Email Messages","id":"tag-email-messages","depth":1},{"value":"Send an email with a custom ID","id":"send-an-email-with-a-custom-id","depth":2},{"value":"Example","id":"example","depth":3},{"value":"Send an email with a payload","id":"send-an-email-with-a-payload","depth":2},{"value":"Example","id":"example-1","depth":3}],"frontmatter":{"title":"Mailjet Send API v3.0","seo":{"title":"Tag Email Messages - Mailjet Send API v3","description":"Tag transactional emails in Mailjet Send API v3 with Mj-CustomID and Mj-EventPayload to trace messages in the system and correlate them with delivery events."}},"lastModified":"2026-08-26T10:53:57.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/docs/email-api/send-api-v3/tag-email-mesages","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}