---
title: "requestSignup(for:fields:message:emailConsent:smsConsent:termsAndConditions:)"
framework: proximityreader
role: symbol
role_heading: Instance Method
path: "proximityreader/customerengagementsession/requestsignup(for:fields:message:emailconsent:smsconsent:termsandconditions:)"
---

# requestSignup(for:fields:message:emailConsent:smsConsent:termsAndConditions:)

Opens a form so that the customer can share the contact information for the purpose of sign-up activity.

## Declaration

```swift
final func requestSignup(for purpose: CustomerEngagementSession.Purpose = .membership, fields: [CustomerEngagementSession.Field], message: String? = nil, emailConsent: CustomerEngagementSession.ConsentOption = .hidden, smsConsent: CustomerEngagementSession.ConsentOption = .hidden, termsAndConditions: String? = nil) async throws -> CustomerEngagement.SignUp
```

## Parameters

- `purpose`: An enum of pre-defined purpose of the form for .membership, .accountCreation, and .accountUpdate. The default is .membership.
- `fields`: An array of contact field types on the form. Only .emailAddress and .phoneNumber types are supported.
- `message`: A multi-line message text below the title.
- `emailConsent`: A consent option to allow or decline promotions and offers over email channel.
- `smsConsent`: A consent option to allow or decline promotions and offers over SMS channel.
- `termsAndConditions`: An optional markdown string to display during the sign-up flow.

## Return Value

Return Value CustomerEngagement.SignUp contact information shared by the customer.

## Discussion

Discussion note: CustomerEngagementSession.Error if the request fails.

## See Also

### Requesting and getting customer information

- [requestCustomerInfo(for:fields:message:)](proximityreader/customerengagementsession/requestcustomerinfo(for:fields:message:).md)
- [requestAddress(for:fields:message:)](proximityreader/customerengagementsession/requestaddress(for:fields:message:).md)
- [requestPayment(for:using:delegate:)](proximityreader/customerengagementsession/requestpayment(for:using:delegate:).md)
- [CustomerEngagementSession.Purpose](proximityreader/customerengagementsession/purpose.md)
- [CustomerEngagementSession.Field](proximityreader/customerengagementsession/field.md)
- [CustomerEngagementSession.ConsentOption](proximityreader/customerengagementsession/consentoption.md)
