What I have tried :
1) I already have a Campaign Member custom field (Using Formula Text) showing QR code on the detail page tied to their respective Campaign Member Id
E.g. IMAGE('http://api.qrserver.com/v1/create-qr-code/?size=200x200&qzone=1&data=<Force.com site> + Id, 'QR Code')
.
Then from there I will call using merge field on the HTML Email Template like {!CampaignMember.QrCode__c}. When testing it by getting it to send to my personal email inbox, by right it should have shown the QR Code image generated but instead just shows the string "QR Code
"
2) I have seen many answers online telling me I should upload it to Documents. However, if I have >100 Campaign Members, I would then need to upload >100 Qr code generated images with unique IDs on Documents? (So definitely can't go with this approach)
3) Making the html tag dynamic in HTML Email Template itself like
<img src="http://api.qrserver.com/v1/create-qr-code/?size=200x200&qzone=1&data=http%3A%2F%2Fvictorng-dev-ed--c.ap2.visual.force.com%2Fapex%2FCampaignMemberQRCodeAttendance_Std%3Fid%3D"
+ {!CampaignMember.QRCode__c}>
But when scanning the QR code it will open the url https://victorng-developer-edition.ap2.force.com/TestVF?id=
without the Campaign Member Id. Is there a way to concat the id with the url?