My old CRM (Sprout Studio) did this beautifully. When I send someone a booking link, they choose their date/time, sign their contract, and pay, THEN and only then is their appointment confirmed. The system pulls their information from the date/time/name/email/etc... auto populates that information into the contract, then they sign and pay. This way, I'm presenting ALL the client needs to do all in one place, all at one time.