{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-docs/email-api/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["admonition","tabs","tab"]},"type":"markdown"},"seo":{"title":"Personalization - Mailjet Send API v3.1","siteUrl":"https://dev.mailjet.com/","projectTitle":"Mailjet Developer Documentation","description":"Personalize transactional emails in Mailjet Send API v3.1 using the templating language with Variables, contact data, and the {{var:NAME}} substitution syntax.","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":[]},"priority":0.8},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"personalization","__idx":0},"children":["Personalization"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"content-formatting","__idx":1},"children":["Content Formatting"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Mailjet offers a templating language that allows you to personalize your transactional messages. It enables you to insert data in your text or HTML parts."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To do so, use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["{{DATA_TYPE:DATA_NAME}}"]}," where:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DATA_TYPE"]},": var for Variables specified in the API call or data for contact data, which is already available in the Mailjet system"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DATA_NAME"]},": name of the data you want to insert"]}]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["NOTICE: The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["TemplateLanguage"]}," property should be set to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["true"]}," to force Send API to interpret the template language (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["X-MJ-TemplateLanguage"]}," in case you are using SMTP)."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Visit our Transactional templating guide to learn about additional substitutions, modification functions and conditional statements you can use to personalize your messages."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"user-vars-and-custom-vars","__idx":2},"children":["User vars and custom vars"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["By using ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Variables"]}," in conjunction with the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["{{var:VAR_NAME}}"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["{{var:VAR_NAME:DEFAULT_VALUE}}"]}," , you can modify the content of your email with variables, pushed in your Send API call."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DEFAULT_VALUE"]},"is the default value that will be used, if the variable is not defined in the API call."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"example","__idx":3},"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 a recipient with global personalisation.\ncurl -s \\\n\t-X POST \\\n\t--user \"$MJ_APIKEY_PUBLIC:$MJ_APIKEY_PRIVATE\" \\\n\thttps://api.mailjet.com/v3.1/send \\\n\t-H 'Content-Type: application/json' \\\n\t-d '{\n\t\t\"Messages\":[\n\t\t\t\t{\n\t\t\t\t\t\t\"From\": {\n\t\t\t\t\t\t\t\t\"Email\": \"pilot@mailjet.com\",\n\t\t\t\t\t\t\t\t\"Name\": \"Mailjet Pilot\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"To\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"Email\": \"passenger1@mailjet.com\",\n\t\t\t\t\t\t\t\t\t\t\"Name\": \"passenger 1\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"Variables\": {\n\t\t\t\t\t\t\t\t\"day\": \"Monday\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"TemplateLanguage\": true,\n\t\t\t\t\t\t\"Subject\": \"Your email flight plan!\",\n\t\t\t\t\t\t\"TextPart\": \"Dear passenger, welcome to Mailjet! On this {{var:day}}, may the delivery force be with you!\",\n\t\t\t\t\t\t\"HTMLPart\": \"<h3>Dear passenger, welcome to <a href=\\\"https://www.mailjet.com/\\\">Mailjet</a>!</h3><br />On this {{var:day}}, may the delivery force be with you!\"\n\t\t\t\t}\n\t\t]\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 a recipient with global personalisation.\n*/\nrequire 'vendor/autoload.php';\nuse \\Mailjet\\Resources;\n$mj = new \\Mailjet\\Client(getenv('MJ_APIKEY_PUBLIC'), getenv('MJ_APIKEY_PRIVATE'),true,['version' => 'v3.1']);\n$body = [\n    'Messages' => [\n        [\n            'From' => [\n                'Email' => \"pilot@mailjet.com\",\n                'Name' => \"Mailjet Pilot\"\n            ],\n            'To' => [\n                [\n                    'Email' => \"passenger1@mailjet.com\",\n                    'Name' => \"passenger 1\"\n                ]\n            ],\n            'Variables' => [\n                'day' => \"Monday\"\n            ],\n            'TemplateLanguage' => true,\n            'Subject' => \"Your email flight plan!\",\n            'TextPart' => \"Dear passenger, welcome to Mailjet! On this {{var:day}}, may the delivery force be with you!\",\n            'HTMLPart' => \"<h3>Dear passenger, welcome to <a href=\\\"https://www.mailjet.com/\\\">Mailjet</a>!</h3><br />On this {{var:day}}, may the delivery force be with you!\"\n        ]\n    ]\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 a recipient with global personalisation.\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.post(\"send\", {'version': 'v3.1'})\n\t.request({\n\t\t\"Messages\":[\n\t\t\t\t{\n\t\t\t\t\t\t\"From\": {\n\t\t\t\t\t\t\t\t\"Email\": \"pilot@mailjet.com\",\n\t\t\t\t\t\t\t\t\"Name\": \"Mailjet Pilot\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"To\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"Email\": \"passenger1@mailjet.com\",\n\t\t\t\t\t\t\t\t\t\t\"Name\": \"passenger 1\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"Variables\": {\n\t\t\t\t\t\t\t\t\"day\": \"Monday\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"TemplateLanguage\": true,\n\t\t\t\t\t\t\"Subject\": \"Your email flight plan!\",\n\t\t\t\t\t\t\"TextPart\": \"Dear passenger, welcome to Mailjet! On this {{var:day}}, may the delivery force be with you!\",\n\t\t\t\t\t\t\"HTMLPart\": \"<h3>Dear passenger, welcome to <a href=\\\"https://www.mailjet.com/\\\">Mailjet</a>!</h3><br />On this {{var:day}}, may the delivery force be with you!\"\n\t\t\t\t}\n\t\t]\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":"# This call sends a message to a recipient with global personalisation.\nrequire 'mailjet'\nMailjet.configure do |config|\n  config.api_key = ENV['MJ_APIKEY_PUBLIC']\n  config.secret_key = ENV['MJ_APIKEY_PRIVATE']  \n  config.api_version = \"v3.1\"\nend\nvariable = Mailjet::Send.create(messages: [{\n    'From'=> {\n        'Email'=> 'pilot@mailjet.com',\n        'Name'=> 'Mailjet Pilot'\n    },\n    'To'=> [\n        {\n            'Email'=> 'passenger1@mailjet.com',\n            'Name'=> 'passenger 1'\n        }\n    ],\n    'Variables'=> {\n        'day'=> 'Monday'\n    },\n    'TemplateLanguage'=> true,\n    'Subject'=> 'Your email flight plan!',\n    'TextPart'=> 'Dear passenger, welcome to Mailjet! On this {{var:day}}, may the delivery force be with you!',\n    'HTMLPart'=> '<h3>Dear passenger, welcome to <a href=\\'https://www.mailjet.com/\\'>Mailjet</a>!</h3><br />On this {{var:day}}, may the delivery force be with you!'\n}]\n)\np variable.attributes['Messages']\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":"\"\"\"\nThis call sends a message to a recipient with global personalisation.\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), version='v3.1')\ndata = {\n  'Messages': [\n\t\t\t\t{\n\t\t\t\t\t\t\"From\": {\n\t\t\t\t\t\t\t\t\"Email\": \"pilot@mailjet.com\",\n\t\t\t\t\t\t\t\t\"Name\": \"Mailjet Pilot\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"To\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"Email\": \"passenger1@mailjet.com\",\n\t\t\t\t\t\t\t\t\t\t\"Name\": \"passenger 1\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"Variables\": {\n\t\t\t\t\t\t\t\t\"day\": \"Monday\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"TemplateLanguage\": True,\n\t\t\t\t\t\t\"Subject\": \"Your email flight plan!\",\n\t\t\t\t\t\t\"TextPart\": \"Dear passenger, welcome to Mailjet! On this {{var:day}}, may the delivery force be with you!\",\n\t\t\t\t\t\t\"HTMLPart\": \"<h3>Dear passenger, welcome to <a href=\\\"https://www.mailjet.com/\\\">Mailjet</a>!</h3><br />On this {{var:day}}, may the delivery force be with you!\"\n\t\t\t\t}\n\t\t]\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 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.ClientOptions;\nimport com.mailjet.client.resource.Emailv31;\nimport org.json.JSONArray;\nimport org.json.JSONObject;\npublic class MyClass {\n    /**\n     * This call sends a message to a recipient with global personalisation.\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\"), new ClientOptions(\"v3.1\"));\n      request = new MailjetRequest(Emailv31.resource)\n\t\t\t.property(Emailv31.MESSAGES, new JSONArray()\n                .put(new JSONObject()\n                    .put(Emailv31.Message.FROM, new JSONObject()\n                        .put(\"Email\", \"pilot@mailjet.com\")\n                        .put(\"Name\", \"Mailjet Pilot\"))\n                    .put(Emailv31.Message.TO, new JSONArray()\n                        .put(new JSONObject()\n                            .put(\"Email\", \"passenger1@mailjet.com\")\n                            .put(\"Name\", \"passenger 1\")))\n                    .put(Emailv31.Message.VARIABLES, new JSONObject()\n                        .put(\"day\", \"Monday\"))\n                    .put(Emailv31.Message.TEMPLATELANGUAGE, true)\n                    .put(Emailv31.Message.SUBJECT, \"Your email flight plan!\")\n                    .put(Emailv31.Message.TEXTPART, \"Dear passenger, welcome to Mailjet! On this {{var:day}}, may the delivery force be with you!\")\n                    .put(Emailv31.Message.HTMLPART, \"<h3>Dear passenger, welcome to <a href=\\\"https://www.mailjet.com/\\\">Mailjet</a>!</h3><br />On this {{var:day}}, may the delivery force be with you!\")));\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 a recipient with global personalisation.\n*/\npackage main\nimport (\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\tmailjet \"github.com/mailjet/mailjet-apiv3-go\"\n)\nfunc main () {\n\tmailjetClient := NewMailjetClient(os.Getenv(\"MJ_APIKEY_PUBLIC\"), os.Getenv(\"MJ_APIKEY_PRIVATE\"))\n\tmessagesInfo := []mailjet.InfoMessagesV31 {\n      mailjet.InfoMessagesV31{\n        From: &mailjet.RecipientV31{\n          Email: \"pilot@mailjet.com\",\n          Name: \"Mailjet Pilot\",\n        },\n        To: &mailjet.RecipientsV31{\n          mailjet.RecipientV31 {\n            Email: \"passenger1@mailjet.com\",\n            Name: \"passenger 1\",\n          },\n        },\n      Variables: map[string]interface{}{\n      \"day\": \"Monday\"},\n      TemplateLanguage: true,\n      Subject: \"Your email flight plan!\",\n    TextPart: \"Dear passenger, welcome to Mailjet! On this {{var:day}}, may the delivery force be with you!\",\n    HTMLPart: \"<h3>Dear passenger, welcome to <a href=\\\"https://www.mailjet.com/\\\">Mailjet</a>!</h3><br />On this {{var:day}}, may the delivery force be with you!\",\n    },\n  },\n\tmessages := mailjet.MessagesV31{Info: messagesInfo }\n\tres, err := m.SendMailV31(&messages)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"Data: %+v\\n\", res)\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 a recipient with global personalisation.\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         {\n            Version = ApiVersion.V3_1,\n         };\n         MailjetRequest request = new MailjetRequest\n         {\n            Resource = Send.Resource,\n         }\n            .Property(Send.Messages, new JArray {\n                new JObject {\n                 {\"From\", new JObject {\n                  {\"Email\", \"pilot@mailjet.com\"},\n                  {\"Name\", \"Mailjet Pilot\"}\n                  }},\n                 {\"To\", new JArray {\n                  new JObject {\n                   {\"Email\", \"passenger1@mailjet.com\"},\n                   {\"Name\", \"passenger 1\"}\n                   }\n                  }},\n                 {\"Variables\", new JObject {\n                  {\"day\", \"Monday\"}\n                  }},\n                 {\"TemplateLanguage\", true},\n                 {\"Subject\", \"Your email flight plan!\"},\n                 {\"TextPart\", \"Dear passenger, welcome to Mailjet! On this {{var:day}}, may the delivery force be with you!\"},\n                 {\"HTMLPart\", \"<h3>Dear passenger, welcome to <a href=\\\"https://www.mailjet.com/\\\">Mailjet</a>!</h3><br />On this {{var:day}}, may the delivery force be with you!\"}\n                 }\n                });\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(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":"use-contact-properties","__idx":4},"children":["Use contact properties"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If the contact you are sending an email to is already existing in the Mailjet system with some contact data, you can leverage this information to personalize your email."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["{{data:METADATA_NAME}}"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["{{data:METADATA_NAME:DEFAULT_VALUE}}"]}," to insert data in your content."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DEFAULT_VALUE"]}," is the default value that will be used if no data is found."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Refer to the Personalization section for more information on how to add contact properties."]},{"$$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 the a recipient with contact property personalisation.\ncurl -s \\\n\t-X POST \\\n\t--user \"$MJ_APIKEY_PUBLIC:$MJ_APIKEY_PRIVATE\" \\\n\thttps://api.mailjet.com/v3.1/send \\\n\t-H 'Content-Type: application/json' \\\n\t-d '{\n\t\t\"Messages\":[\n\t\t\t\t{\n\t\t\t\t\t\t\"From\": {\n\t\t\t\t\t\t\t\t\"Email\": \"pilot@mailjet.com\",\n\t\t\t\t\t\t\t\t\"Name\": \"Mailjet Pilot\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"To\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"Email\": \"passenger1@mailjet.com\",\n\t\t\t\t\t\t\t\t\t\t\"Name\": \"passenger 1\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"TemplateLanguage\": true,\n\t\t\t\t\t\t\"Subject\": \"Your email flight plan!\",\n\t\t\t\t\t\t\"TextPart\": \"Dear {{data:firstname:\\\"passenger\\\"}}, welcome to Mailjet! May the delivery force be with you!\",\n\t\t\t\t\t\t\"HTMLPart\": \"<h3>Dear {{data:firstname:\\\"passenger\\\"}}, welcome to <a href=\\\"https://www.mailjet.com/\\\">Mailjet</a>!<br /> May the delivery force be with you!\"\n\t\t\t\t}\n\t\t]\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 the a recipient with contact property personalisation.\n*/\nrequire 'vendor/autoload.php';\nuse \\Mailjet\\Resources;\n$mj = new \\Mailjet\\Client(getenv('MJ_APIKEY_PUBLIC'), getenv('MJ_APIKEY_PRIVATE'),true,['version' => 'v3.1']);\n$body = [\n    'Messages' => [\n        [\n            'From' => [\n                'Email' => \"pilot@mailjet.com\",\n                'Name' => \"Mailjet Pilot\"\n            ],\n            'To' => [\n                [\n                    'Email' => \"passenger1@mailjet.com\",\n                    'Name' => \"passenger 1\"\n                ]\n            ],\n            'TemplateLanguage' => true,\n            'Subject' => \"Your email flight plan!\",\n            'TextPart' => \"Dear {{data:firstname:\\\"passenger\\\"}}, welcome to Mailjet! May the delivery force be with you!\",\n            'HTMLPart' => \"<h3>Dear {{data:firstname:\\\"passenger\\\"}}, welcome to <a href=\\\"https://www.mailjet.com/\\\">Mailjet</a>!<br /> May the delivery force be with you!\"\n        ]\n    ]\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 the a recipient with contact property personalisation.\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.post(\"send\", {'version': 'v3.1'})\n\t.request({\n\t\t\"Messages\":[\n\t\t\t\t{\n\t\t\t\t\t\t\"From\": {\n\t\t\t\t\t\t\t\t\"Email\": \"pilot@mailjet.com\",\n\t\t\t\t\t\t\t\t\"Name\": \"Mailjet Pilot\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"To\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"Email\": \"passenger1@mailjet.com\",\n\t\t\t\t\t\t\t\t\t\t\"Name\": \"passenger 1\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"TemplateLanguage\": true,\n\t\t\t\t\t\t\"Subject\": \"Your email flight plan!\",\n\t\t\t\t\t\t\"TextPart\": \"Dear {{data:firstname:\\\"passenger\\\"}}, welcome to Mailjet! May the delivery force be with you!\",\n\t\t\t\t\t\t\"HTMLPart\": \"<h3>Dear {{data:firstname:\\\"passenger\\\"}}, welcome to <a href=\\\"https://www.mailjet.com/\\\">Mailjet</a>!<br /> May the delivery force be with you!\"\n\t\t\t\t}\n\t\t]\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":"# This call sends a message to the a recipient with contact property personalisation.\nrequire 'mailjet'\nMailjet.configure do |config|\n  config.api_key = ENV['MJ_APIKEY_PUBLIC']\n  config.secret_key = ENV['MJ_APIKEY_PRIVATE']  \n  config.api_version = \"v3.1\"\nend\nvariable = Mailjet::Send.create(messages: [{\n    'From'=> {\n        'Email'=> 'pilot@mailjet.com',\n        'Name'=> 'Mailjet Pilot'\n    },\n    'To'=> [\n        {\n            'Email'=> 'passenger1@mailjet.com',\n            'Name'=> 'passenger 1'\n        }\n    ],\n    'TemplateLanguage'=> true,\n    'Subject'=> 'Your email flight plan!',\n    'TextPart'=> 'Dear {{data:firstname:\\'passenger\\'}}, welcome to Mailjet! May the delivery force be with you!',\n    'HTMLPart'=> '<h3>Dear {{data:firstname:\\'passenger\\'}}, welcome to <a href=\\'https://www.mailjet.com/\\'>Mailjet</a>!<br /> May the delivery force be with you!'\n}]\n)\np variable.attributes['Messages']\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":"\"\"\"\nThis call sends a message to the a recipient with contact property personalisation.\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), version='v3.1')\ndata = {\n  'Messages': [\n\t\t\t\t{\n\t\t\t\t\t\t\"From\": {\n\t\t\t\t\t\t\t\t\"Email\": \"pilot@mailjet.com\",\n\t\t\t\t\t\t\t\t\"Name\": \"Mailjet Pilot\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"To\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"Email\": \"passenger1@mailjet.com\",\n\t\t\t\t\t\t\t\t\t\t\"Name\": \"passenger 1\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"TemplateLanguage\": True,\n\t\t\t\t\t\t\"Subject\": \"Your email flight plan!\",\n\t\t\t\t\t\t\"TextPart\": \"Dear {{data:firstname:\\\"passenger\\\"}}, welcome to Mailjet! May the delivery force be with you!\",\n\t\t\t\t\t\t\"HTMLPart\": \"<h3>Dear {{data:firstname:\\\"passenger\\\"}}, welcome to <a href=\\\"https://www.mailjet.com/\\\">Mailjet</a>!<br /> May the delivery force be with you!\"\n\t\t\t\t}\n\t\t]\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 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.ClientOptions;\nimport com.mailjet.client.resource.Emailv31;\nimport org.json.JSONArray;\nimport org.json.JSONObject;\npublic class MyClass {\n    /**\n     * This call sends a message to the a recipient with contact property personalisation.\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\"), new ClientOptions(\"v3.1\"));\n      request = new MailjetRequest(Emailv31.resource)\n\t\t\t.property(Emailv31.MESSAGES, new JSONArray()\n                .put(new JSONObject()\n                    .put(Emailv31.Message.FROM, new JSONObject()\n                        .put(\"Email\", \"pilot@mailjet.com\")\n                        .put(\"Name\", \"Mailjet Pilot\"))\n                    .put(Emailv31.Message.TO, new JSONArray()\n                        .put(new JSONObject()\n                            .put(\"Email\", \"passenger1@mailjet.com\")\n                            .put(\"Name\", \"passenger 1\")))\n                    .put(Emailv31.Message.TEMPLATELANGUAGE, true)\n                    .put(Emailv31.Message.SUBJECT, \"Your email flight plan!\")\n                    .put(Emailv31.Message.TEXTPART, \"Dear {{data:firstname:\\\"passenger\\\"}}, welcome to Mailjet! May the delivery force be with you!\")\n                    .put(Emailv31.Message.HTMLPART, \"<h3>Dear {{data:firstname:\\\"passenger\\\"}}, welcome to <a href=\\\"https://www.mailjet.com/\\\">Mailjet</a>!<br /> May the delivery force be with you!\")));\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 the a recipient with contact property personalisation.\n*/\npackage main\nimport (\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\tmailjet \"github.com/mailjet/mailjet-apiv3-go\"\n)\nfunc main () {\n\tmailjetClient := NewMailjetClient(os.Getenv(\"MJ_APIKEY_PUBLIC\"), os.Getenv(\"MJ_APIKEY_PRIVATE\"))\n\tmessagesInfo := []mailjet.InfoMessagesV31 {\n      mailjet.InfoMessagesV31{\n        From: &mailjet.RecipientV31{\n          Email: \"pilot@mailjet.com\",\n          Name: \"Mailjet Pilot\",\n        },\n        To: &mailjet.RecipientsV31{\n          mailjet.RecipientV31 {\n            Email: \"passenger1@mailjet.com\",\n            Name: \"passenger 1\",\n          },\n        },\n        TemplateLanguage: true,\n        Subject: \"Your email flight plan!\",\n      TextPart: \"Dear {{data:firstname:\\\"passenger\\\"}}, welcome to Mailjet! May the delivery force be with you!\",\n      HTMLPart: \"<h3>Dear {{data:firstname:\\\"passenger\\\"}}, welcome to <a href=\\\"https://www.mailjet.com/\\\">Mailjet</a>!<br /> May the delivery force be with you!\",\n      },\n    }\n\tmessages := mailjet.MessagesV31{Info: messagesInfo }\n\tres, err := m.SendMailV31(&messages)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"Data: %+v\\n\", res)\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 the a recipient with contact property personalisation.\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         {\n            Version = ApiVersion.V3_1,\n         };\n         MailjetRequest request = new MailjetRequest\n         {\n            Resource = Send.Resource,\n         }\n            .Property(Send.Messages, new JArray {\n                new JObject {\n                 {\"From\", new JObject {\n                  {\"Email\", \"pilot@mailjet.com\"},\n                  {\"Name\", \"Mailjet Pilot\"}\n                  }},\n                 {\"To\", new JArray {\n                  new JObject {\n                   {\"Email\", \"passenger1@mailjet.com\"},\n                   {\"Name\", \"passenger 1\"}\n                   }\n                  }},\n                 {\"TemplateLanguage\", true},\n                 {\"Subject\", \"Your email flight plan!\"},\n                 {\"TextPart\", \"Dear {{data:firstname:\\\"passenger\\\"}}, welcome to Mailjet! May the delivery force be with you!\"},\n                 {\"HTMLPart\", \"<h3>Dear {{data:firstname:\\\"passenger\\\"}}, welcome to <a href=\\\"https://www.mailjet.com/\\\">Mailjet</a>!<br /> May the delivery force be with you!\"}\n                 }\n                });\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(response.GetData());\n            Console.WriteLine(string.Format(\"ErrorMessage: {0}\\n\", response.GetErrorMessage()));\n         }\n      }\n   }\n}\n","lang":"csharp"},"children":[]}]}]}]},"headings":[{"value":"Personalization","id":"personalization","depth":1},{"value":"Content Formatting","id":"content-formatting","depth":2},{"value":"User vars and custom vars","id":"user-vars-and-custom-vars","depth":2},{"value":"Example","id":"example","depth":3},{"value":"Use contact properties","id":"use-contact-properties","depth":2}],"frontmatter":{"title":"Mailjet Send API v3.1","seo":{"title":"Personalization - Mailjet Send API v3.1","description":"Personalize transactional emails in Mailjet Send API v3.1 using the templating language with Variables, contact data, and the {{var:NAME}} substitution syntax.","priority":0.8}},"lastModified":"2026-08-26T10:53:57.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/docs/email-api/send-api-v31/personalization","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}