We use SendGrid to send emails generated on a system on our side. The message body and list of recipients is uploaded via their API, and templated on their side with a very lightweight dynamic template. Originally one of my colleagues created the template which includes one image, our logo. He uploaded the image to SendGrid and placed it on the template design. This works as expected: Messages are templated correctly and they look fine.
Recently we decided that we didn't want an image with a src attribute pointing to a SendGrid CDN, but to a copy in our own domain, as some of our recipients have extremely paranoid spam and malware settings. Here's what I've done: I selected the Edit button on the template in the Design Library, rolled over the logo image, and selected the Edit Module HTML icon in the upper right. In that editor I replaced the value of the src attribute with the new one, and clicked Update.
This appeared to save correctly. Now when I, or any of my colleagues, sign in and view the image module in the template, the new src value is the one we see. When I create a single send from the template in the SendGrid web UI, the image has the new src value. But when we send messages via the API with the template, the messages that are sent still have the original CDN value. At first I wondered if the value was cached in some way, but it has been more than a week since the change, and the sent messages still have the original value. Can anyone explain why this is happening, or suggest a better way to effect the change we want?
The piece we didn't know was that you can't simply make changes to a dynamic template; you have to make a new version of the template under Email API, and mark that version Active. This makes sense once you understand it. You can work on changes to a template without committing to them before they're ready, and you can create a single send from the new version to try it out before it's active.