Integrations

Klaviyo

Sync every form submission to Klaviyo — list subscriptions, consent, and answers as profile properties — automatically and reliably.

Connect Klaviyo once and every form submission flows into your account as it happens: new profiles with email and phone, list subscriptions with consent recorded correctly, and every answer written onto the profile so you can segment and build flows on what shoppers actually told you.

Connect Klaviyo

Go to Settings → Integrations and find the Klaviyo card. There are two ways to connect:

  • Connect with OAuth — the recommended path. Click the button and you're sent to Klaviyo to approve the connection, then straight back to Formtoro. Formtoro never sees your private key, access refreshes automatically, and you can revoke it from inside Klaviyo at any time.
  • Connect with a private API key — paste a Klaviyo private API key (it starts with pk_). You can create one in Klaviyo under Account → Settings → API Keys. The field is masked, and the key is stored encrypted.

If you only see the API-key form, OAuth isn't available on your install — the API-key path syncs exactly the same data.

Pick a default list

Once connected, click Configure on the Klaviyo card and choose your default subscription list. Every submission that captures an email address subscribes the contact to this list — so pick one before your forms go live. The picker shows your lists fresh from Klaviyo, so a list you just created is always available.

Individual forms can override this default — see choose a list per form below.

Formtoro records consent the way Klaviyo (and the law) expects:

  • Email — subscribed on every submission that captures an email address. The consent disclaimer near your submit button is the opt-in mechanism, so keep it in place (the issues panel flags forms that are missing it).
  • SMS — never subscribed without explicit consent. SMS opt-in is detected automatically: when your form has a consent checkbox in SMS mode and the shopper both provides a phone number and checks the box, the contact is subscribed to SMS marketing. No checked box, no SMS subscription — ever.

There's nothing to configure for this; it follows from how you build the form. See the consent field in the fields reference.

Choose a list per form

Each form can sync to its own list — a giveaway form to a giveaway list, your welcome popup to your master list. In the builder, jump to the Integrations scope (Alt+K, or open the Klaviyo card in the form settings) and pick the list for this form. The card confirms with Syncing to: and the list name.

Forms without their own list fall back to the shop default, and the card shows which list is actually in effect. Changes apply to new submissions right away — you don't need to save a new version of the form.

Map answers to profile properties

The same panel shows how each field in your form maps to a Klaviyo profile property. Formtoro generates sensible defaults:

  • Email and phone fields map to Klaviyo's standard $email and $phone_number properties.
  • Every other question becomes a custom property prefixed with ft_, named after the step or the field's label — so "What's your skin type?" might land as ft_skin_type. The prefix makes Formtoro-sourced properties easy to spot in Klaviyo.

You can rename any custom property before saving. Two fields can't map to the same property — Formtoro blocks the save and tells you which fields collide, so answers never silently overwrite each other.

What lands in Klaviyo

For each submission, Formtoro:

  • Creates or updates the profile with the email and/or phone number captured by the form.
  • Writes every mapped answer as a profile property, visible on the profile card and usable in segments.
  • Subscribes the contact to the resolved list — email always, SMS only with explicit consent.
  • Records the discount code the shopper received (as ft_discount_code) so your flows can send or reference it.
  • Tracks a "Submitted Formtoro Form" event on the profile, tagged with the form, so you can trigger Klaviyo flows the moment someone completes a form.

When it syncs

Syncing happens automatically after each submission — usually within seconds. It's deliberately decoupled from the form itself: if Klaviyo is briefly down or rate-limiting, the shopper's submission still succeeds and Formtoro retries the sync automatically until it lands. Retries never create duplicate profiles or double-fire your flows.

Target Klaviyo segments

A connected Klaviyo account also unlocks audience targeting by Klaviyo segment — show a form only to shoppers in (or not in) a segment, like a VIP list or an engaged-subscribers segment. See target Klaviyo and Shopify segments.

If something goes wrong

The Klaviyo card in Settings → Integrations is your health check:

  • Last synced shows the most recent successful sync, in your shop's timezone.
  • If a sync hits a persistent problem, an error banner appears on the card with the reason.
  • If Klaviyo access expires or is revoked (for example, you removed the connection inside Klaviyo), the card switches to a Reconnect with OAuth prompt. Syncing pauses until you reconnect — reconnecting resumes it.

In the builder, the per-form Klaviyo card warns you when Klaviyo isn't connected or no list is selected, so you find out before launch — not after.

Disconnect or switch how you connect

Click Disconnect on the Klaviyo card to stop syncing. If submissions are still syncing when you disconnect, Formtoro warns you first so in-flight syncs aren't abandoned. Disconnecting doesn't touch anything already in Klaviyo.

To switch between OAuth and an API key, disconnect and reconnect with the other method — your default list and per-form settings are re-entered on the fresh connection.

Next steps