How to update contact in a DOI (double opt in) list

  • 18 February 2022
  • 5 replies

Badge +2

Hi, I’m subscribing visitors to double opt-in lists using non-klaviyo forms, and I’m required to get the email on the first and the phone number on the second page.

However, the phone numbers are not getting into the profile. My suspicion is that until the DOI verification is done, the contact is in the dark. Is it so?

Do you plan to enable contact update while DOI is in progress? Mailchimp does.


Best answer by alex.hong 7 March 2022, 19:54

View original

5 replies

Badge +1

Hi @alex.hong,

We send data on server-side and using the Subscribe endpoint.

On a multi-page popup the visitor fill out the email field on the first page and the data we send:

profiles: [
email: ''

The DOI email received, BUT don’t confirm it.

On the second page fill out the last name, first name, phone number fields and this is the data:

profiles: [
email: '',
first_name: 'John',
last_name: 'Doe',
phone_number: '+36301231231'

THEN confirm the subscription via DOI email.

After that only the email appears on the Klaviyo List for the new subscription, no first name, no last name, no phone number.

What should be the correct way to update a DOI subscription until confirm?




Userlevel 7
Badge +58

Hi there @peterfodor,

Thanks for the question and I hope I’m understanding your methods correctly.

Unfortunately, this is expected behavior when double optin is enabled. Since only one double optin email gets sent despite having two POST calls to subscribe, you will receive the double optin email only for the 1st request. Any updates you make on the profile will not go through until the double optin email is accepted. 
On an additional note, you will not need to make a PUT request with the Profiles API. By default, making a POST request to the /subscribe endpoint will update the existing profile by overwriting the values of existing properties with the new ones. 

An idea that could be worth exploring is, instead of sending two subscribe requests, you could send only one request at the end of the 2nd step regardless of whether or not the 2nd step has been submitted. If it is submitted, then great - include the name in the request as well as the email address. If it hasn't been submitted and a certain amount of time has passed - then just send the request with the email address only. 

I would try the alternative and see if that works for you.


Thank you!

Userlevel 7
Badge +58

Hi @nandorhargita,

Thanks for posting your question to the Community.

Do you mind sharing what non-klaviyo form/integration you are using? Unfortunately since it is a custom form we wouldn’t have the most support for it and I would recommend inquiring with that team to see how their forms interact with Klaiviyo. 

In our platform we do have native multi-step forms you could use to collect names and phone numbers. 

Double opt-in is the process through which a new subscriber must confirm their subscription before being subscribed to your list, via email or SMS. When double opt-in enabled, new subscribers will receive a confirmation message immediately after signing up. This message will prompt them to confirm their subscription. Only subscribers who confirm their subscription will be successfully added to the list. If someone provides both their email and SMS, confirming their consent by text will opt them into SMS and email. If they do so by email, they will only be opted into email. You will find the option to enable single opt-in for your list in the list settings tab.

Please let us know your integration and setup so we can better understand what might be causing this.




Badge +2

Dear Alex!


Thanks for having me. I’m with OptiMonk, a conversion optimisation company and we have multiple integrations wit providers from Klaviyo, Mailchimp to Emarsys - covering ecommerce merchants with various size, and providing them ways to do subscription and other campaigns.

We have our own multi-page sign-up forms, and as I mention, we experience that with a standard email+phone setup, the flow is the following:

  1. visitors signs up with email » email gets sent immediately to Klaviyo from OptiMonks backend.
  2. visitors signs up with phone number too » phone (and email from the previous page) gets sent immediately to Klaviyo from OptiMonks backend.
  3. visitors confirms their email » email consent is visible in their Klaviyo profile but phone number is “blank”. It’ LOST in the process, because the phone was sent while the profile with the email was still not confirmed.

Although when I’m collecting email and phone on the same page, and send them in ONE request for the first time, when the email is confirmed, the phone number is added to the profile, although not to the channels but to the contact (I know, because the phone is not verified yet)


My questions is: is it intentional that in a multi-page signup, the phone is lost when it is not sent together with the email?

In other words, is it intentional that a Klaviyo profile before the email is verified, “rejects” any update?

Or I’m doing sg wrong?

Userlevel 7
Badge +58

Hi there @nandorhargita,

Since it sounds like the single page form (when recording email and phone number) is working correctly, this leads me to think that you may not be properly identifying your users on the second step of the form. My assumption is that the phone numbers logged on the second part of your custom multi-step form are not being linked correctly to the profile that was created on step one. Essentially this has to do with how a form is setup.  When your customers fill out the second step, I am assuming the form you made never applied the original Identification of the email and just pushing "phone" on a separate call/record. 

I'm also wondering if you are creating phone number only profiles because we do allow both email and phone number to be identifiers. I suspect that each form fill may be creating 2 profiles, one for email only and the second for phone number only profile which would not be linked with one another.

Here are some related docs I recommend checking out:

Javascript for API and Tracking

Identity API Resource

Getting Started with Track and Identify

Also I would definitely recommend reaching out to our Partners if you are having further trouble as we do not support custom forms.


Thank you,