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
Subjectfield, add{{{subject}}}
Now after sending the payload, the subject field in dynamicTemplateData should populate the subject line.