We gather the first name of a customer in two ways:
In your Lists, you can pass us a customer's first name just as simply as you can pass us a customer's email address. We can gather the customer's first name via data you push to use via the API, or when you update a List with customer data.
To see how to do this via our API click here.
To see how to do this via our List Update click here.
With Rejoiner you have full-site tracking. This allows us to see what inputs are filled by your customers. Using this, you can tell us which inputs to track as the places where a customer may add their first name.