How to Collect Customer Info Without Creating User

I’m building a customer-facing booking form. When customers begin the booking process, they are not users, they’re simply visitors on my site. The first step of the booking form is basic contact info (first name, email address). When the visiting customer clicks “Next” to go to step 2, I have a workflow which creates a new data type called “Visitor” and saves the first name and email address they’ve entered as data fields under the “Visitor” data type. I also have it create a unique ID and send that along as a URL parameter to step 2.

In step 2, the visitor provides their street address. I want this street address added as a data field under the “Visitor” data type. I would think that I would create a workflow that targets “Visitors” whose unique ID matches the unique ID in the url parameter and change it’s “Street Address” data field, but I can’t seem to set that up.

The reason I can’t create a user in the first step is because a visiting customer might click “next” which would save their email address. If they then exit out of their browser and return to the first step to enter their email address, I suspect they won’t be able to because that email address will already be tied to a user. So pretty much I want to collect all of the visitors information and then use that information to create a user, but only if the visitor complete the booking.

Please help!

Can you find another app who supports this logic? That feels like an unusual behavior. If I’m not registered at Pizzahut.com, but start to order a pizza as a guest…if I close the browser before I finish, I definitely have to start over. Is this really a problem?

Well Chipotle.com serves as a decent example. You can order a burrito as a guest.

In my case, customers book their house cleaning service online. Not everyone who books a service will want to create an account, especially if they’re just using the online booking form to receive a quote.

It would be nice if the form just collects temporary data and only converts it into an actual user if they complete the final step.

Cool, makes sense. Hadn’t used a site that works like that before, thanks for sharing. I think this is doable, what have you tried so far?

You can save data to the current user even if they haven’t signed up.

1 Like

Also true, good point. I forget about that until I spend 3 hours working around it :slight_smile:

Yes, there’s so much going on in Bubble that I forget about it’s most basic options.

I thought there were complication with using current user when the user isn’t created/logged in, but I can’t articulate what I thought those complications were, I’m going to mess around with it some more.

So I tried just using “current user” without creating a logged in/signed up user. I took it into preview mode and completed the first step with a first name of Customer1 and an email address of customer1@testing.com . I then reset the app to try a second customer. This time I put Customer2 as the first name and customer2@testing.com as the email address.

But when I look in my app data, there is only one entry. The entry has the email address of customer1@testing.com but a first name of customer2. So it seems that if a second customer comes along, his first name replaces the original customers first name, but is still tied to the original customers email address.

Am I doing something wrong, or is this expected behavior?

I think you should try this in incognito mode, or in another browser. “Current user” is tied to (I believe) the cookies that get saved on the browser. I bet if you try in incognito mode, you’ll see a second entry.

2 Likes

Another way of doing this now is via custom states in the workflow. Depending on your needs, it can be cleaner and less problematic than using the cookies associated with the current user. (i.e. If the same user needs to submit multiple entries, or if you are creating things (e.g. a single form submission) with a long list of fields you don’t care to clutter up the “user” data type with.)

Ex:

When “input X’s” value is changed > set “Response” of “input X” to “input X’s” value.
When “input Y’s” value is changed > set “Response” of “input Y” to “input Y’s” value.

When button “Submit” is pressed > Create data >
[field name] = “input X’s” value
[field name] = “input Y’s” value

Rinse & Repeat.