How to Set Subject Line in SendGrid with Dynamic Templates
I recently ran into an issue where SendGrid wasn’t setting the subject line in my emails while using dynamic templates.
SendGrid with Node.js
I had SendGrid set up on the server-side using Node.js.
import sgMail from '@sendgrid/mail'
sgMail.setApiKey(process.env.SENDGRID_API_KEY);
const sendEmail = async (email, subject, text) => {
try {
await sgMail.send({
from: 'from@example.org',
personalizations: [
to: { email },
dynamicTemplateData: { subject, text }
],
templateId: 'd-f43daeeaef504760851f727007e0b5d0'
});
} catch (e) {
console.error(e);
}
}
However, the subject
field was not being populated in the email.
No subject line with dynamic templates
In order for the subject
line to be set, we need to set it in the template on the SendGrid website.
- Head over to the Dynamic Templates page under
Email API
- Edit the appropriate template
- Select
Settings
(gear icon on the left) - In the
Subject
field, add{{{subject}}}
Now after sending the payload, the subject
field in dynamicTemplateData
should populate the subject line.