Step 1. Get a huge email list
Step 2. Grep that email list for peter
Step 3. Do a custom audience in FB and run a Peter t-shirt campaign
I don't know any other way to do anything "dynamic" in Facebook Ads. And FB doesn't really like that advertisers creep out their audience, even though they can. I assume it's the reason behind their policy that you can't call out personal attributes. E.g. you can't say "Hey hetereosexual white person! Click here", but you have to write it as "Here's a fun website for hetereosexual white people".
I just double checked the policies and using a first name in the ad is actually not allowed, BUT I think you can get around that by having a general ad like "Cool name t-shirts" and then the image happens to have "Peter" printed on the t-shirt.
Source: https://transparency.fb.com/policies/ad-standards/objectiona...