There are many possible issues, and I will try to list all those I have come across during my times when I wondered where my email is.
Contact is unsubscribed
If the contact you are trying to preview an email with is on one of the global unsubscribe lists, or has unsubscribed or bounced status in Salesforce Marketing Cloud, then you won’t receive the email. If you check test sends in Email studio Admin section, you will see it as one of the exclusion counts.
Column does not exist
If you request nonexistent data extension column, email might render but wont be delivered. Take a look at following AMPScript:
%%[ SET @fn = "Client" IF NOT EMPTY([First Name]) THEN SET @fn = [First Name] ENDIF ]%% <h4>Dear %%=v(@fn)=%%,</h4> /* use this instead */ SET @fn = AttributeValue('First Name')
To mitigate this issue, consider using the
AttributeValue function. Unlike directly setting
@column = column, which might throw an error if the column is not present in your data extension, the
AttributeValue function won’t trigger an error. This approach ensures the email can be previewed and sent successfully.
Double quotes in the inline AMPScript
Not receiving the email could also lead to the incorrect creation of the text version of a multipart email. Please review the text version and check for any AMPScript syntax errors.
/* this script %%=redirectto(Concat(@ProductUrl1, @qpp1,"&"))=%% rendered in text version as */ %%=redirectto(Concat(@ProductUrl1, @qpp1, /*For delivery in delivery logs visible on support side. They were able to see following error: ExactTarget.InvalidFunctionException: The function call does not end with the required close parenthesis [)]Function Call: redirectto(Concat(@ProductUrl1, @qpp1,,? */
It might just be a stroke of bad luck, but it happened to me when I used this function, and the email text version rendered incorrectly. Even though there were no visible AMPscript ‘leftovers,’ and it looked fairly good, the only thing off was that it did not remove attributes from the href tag. I initially thought it wouldn’t be an issue that prevents the email from sending, but boy, I was so wrong. No proof received. My text version generated looked like this:
https://martechnotes.com?a=b&c=d" class="..." title"...">
I do not know wether the inline AMPScript use of indexOf was causing the issue or comparison
>0 and had to use
!=0 instead. I will return to this issue and try more variants to see where it breaks in what combination.
Dynamic sender content block
Sometimes, based on certain configurations you might have missed in, for example, AmpScript or a data extension, it can be used to compute a dynamic sender, which may result in the email not being sent.
Most likely script content block used in dynamic sender profile throws error and this is not shown when you preview your email.
Are there any other cases when the email renders but nothing is actaully received? Let me know in the comments.
GOOD TO KNOW
Always check any anomalies in the text version of rendered email as those may be the reason why email has not been delivered.
SET @column = AttributeValue('column')instead of just
SET @column = column, which, in case the column is not present in your data extension, will throw an error.