Hello {profile.first_name}, but first_name isn’t in the user profile or the Send API profile object, Courier throws a render error for that channel. Errors are visible in the template preview and in message logs:
Preview


Conditional Blocks
The check runs after all conditionals are evaluated and only inspects blocks that will actually be sent. If a block is hidden by a condition, its variables aren’t checked. For example:- You add a conditional on
profile.first_nameto a text block. - The block uses
{profile.first_name}. - The profile has no
first_name, so the block is hidden by the condition. - Throw on Variable Not Found does not trigger, and the message sends successfully.

Multiple Channels
Each channel is checked independently. If{profile.first_name} appears in your email template but not in your Inbox template, only the email channel fails; Inbox renders and sends successfully.