Skip to main content
6756 Topics
Help Center

How to use custom fonts in sign-up forms

You will learn Learn how to design your sign-up forms with custom fonts so that your customers experience strong brand identity and consistency with the rest of your site. Creating a beautifully designed sign-up form is paramount to compelling them to follow through with the goal of your form. If your brand uses fonts that are not available natively in the sign-up form editor, adding in these custom fonts is an easy way to make your forms look cohesive with the rest of your site. After you’ve added your fonts, you can use your font to customize your sign-up forms as you see fit. Key terms Custom fontAny font that isn't provided by default in the Klaviyo editor. This includes: Google fonts Adobe fonts Imported fonts Web-safe fontA font that is stored locally on most devices, and therefore doesn't need to be loaded from an outside source in order to display. Fallback fontA web-safe font that is used if a page is unable to load the primary font. Adding custom fonts to your account From the main menu along the left side, navigate to the Content > Images & Brand. From there, click into the Fonts tab. You can add in a Google font, Adobe font, or an Imported font. If you add a custom font to Klaviyo that is already in use on your site, upload the exact font style (e.g., light, bold, or italic) and weight (e.g., 400) your site currently uses. If you upload a font and select a style or weight that differs slightly, the styles selected in Klaviyo may override some of your site’s existing font styles. Adding a Google font To add a Google font: Select the Font name dropdown to see a list of all available Google fonts, except for the fonts that you have already loaded in your account. Choose your desired font. Upon selecting, you will see a preview of the font below the dropdown, as well as the number of possible variants (e.g., bold, italic, etc.). If you want to add more than 1 variant, click the arrow next to the number of possible variants, and choose the fonts that you want to add. Select a Fallback font. Click Add font. Your added font will now display in the Your Fonts section at the bottom of the page.   From the Your Fonts section, you’ll be able to see the fonts that you have added to your account. To edit or delete any of your fonts in this section, select the three dots on the font. If you choose to use Google fonts, for GDPR purposes, please note that Google Fonts are hosted by Google. By including a Google font into your font library, you are using the Google font. Klaviyo has a selection of custom fonts that we use in our sign-up form templates available for you to easily import and use. View the list of Klaviyo-hosted fonts. Adding an Adobe font You must have an Adobe account to use Adobe fonts. To add an Adobe Font: Navigate to Adobe Fonts. Search for your Adobe font link, then select your font. Next to your font name, click the code icon. If needed, enter a new project name, then click Save. On the next modal, copy the https://use.typekit.net URL for the font that you want to add. Do not include the .css as part of the URL when you copy it. Navigate back to Klaviyo and paste the URL into the CSS Address field. Select Continue, then choose a Fallback font for the font you want to upload. Note that if a font is already available in your account, a green checkmark displays next to the font and its existing fallback font shows. Select Add font. Once you've added your font, it will be listed in the Your Fonts section at the bottom of the page. To edit any of your fonts in this section, select the three dots on the font. Adding an imported font If you've purchased or downloaded a custom font that's not hosted by a third-party source, you can still use it in a Klaviyo form. First, host the font files in a location that will be accessible to Klaviyo (for example, in your site’s assets or on a font hosting platform). Make sure to enable Cross-Origin Resource Sharing (CORS) by setting the Access-Control-Allow-Origin header to *, so the font can be accessed by your recipients’ devices. To add an imported font: Name your font. Specify a font-weight, style, and a source URL. The source URL must be a valid URL that ends in WOFF, WOFF2, TTF, EOT, or SVG. Optional: To add additional variants, select Add font variant, then repeat step 2 for this variant. Select Add Font to add this font to the Your Fonts section. From Your Fonts, you’ll be able to see the fonts that you have imported into your account. You can also delete or edit your fonts by selecting the 3 dots on the font. Edit a font To edit an existing custom font: Navigate to Content > Images & brand > Fonts. Find the font you'd like to edit in the Your Fonts section at the bottom of the page. In that font's card, click the 3 dots in the top corner. Choose Edit. From here, you will be able to: Edit the fallback font for any custom font.  For Google and Klaviyo-hosted fonts only,

Help Center

Constant Contact data reference

Our Constant Contact integration is no longer available for new installations. This reference details the data synced through the integration for existing customers. If you are a new customer, read our guide on how to migrate from Constant Contact manually. You will learn Learn about what data syncs from Constant Contact to Klaviyo through our integration. From Constant Contact, Klaviyo pulls in the following data: When someone opened or clicked an email. Profiles of recipients who have unsubscribed or bounced, added to the suppression list. Existing lists in Constant Contact (if you chose to create Klaviyo lists from your Constant Contact lists). Before you begin It is important to note the following: Data syncs from Constant Contact to Klaviyo once every hour. The Constant Contact sync pulls new contacts from Constant Contact into Klaviyo. If a contact is added to a Constant Contact list, that contact will be synced into Klaviyo. However, if a contact is deleted from Constant Contact, they will not be deleted in Klaviyo. While profiles are synced from Constant Contact to Klaviyo lists, consent is not synced to Klaviyo. Data synced to Klaviyo In Klaviyo, click the Analytics dropdown, then select Metrics. Filter by Constant Contact, and you should see Opened Email (Constant Contact) and Clicked Email (Constant Contact) metrics. While you may see the Received Email (Constant Contact) metric in your account, Klaviyo does not currently record any of these events. Additional resources How to migrate from Constant Contact Getting started with segments Understanding email deliverability  

Help Center

Understanding consent in profiles

You will learn  Learn how to understand consent in profiles and best practices for email and SMS compliance. Rules around customer consent vary between email and SMS. It is crucial to understand these differences to comply with international laws and maintain a positive relationship with your customers.  Viewing a profile’s consent status To see if a profile is able to receive messages and has provided consent, navigate to their profile. At the top of the Details tab of a profile page, you'll see the profile’s consent status and ability to receive messages by channel. The different statuses you may see are: The oldest consent record that can be set in Klaviyo is January 1, 1990. If you see this date is set as the timestamp for a consent record in Klaviyo, this is because an earlier date was set and the timestamp was updated to the minimum consent date possible in the system. SubscribedThe Subscribed status (represented by a green checkmark) indicates that the profile has provided explicit consent to receive marketing and is reachable through the channel. Unsubscribed Unsubscribed (represented by a red indicator) means that the profile is unable to receive marketing through the channel because they have explicitly opted-out. Note that consent status and suppression status are separate from each other. For example, a profile that is subscribed can be manually suppressed. Never subscribedNever subscribed (represented by a yellow exclamation) means the profile has neither subscribed nor opted out of email marketing. They are able to receive emails since they are not suppressed (e.g., an abandoned cart flow email), but you should exercise caution when contacting them. SMS consent is separated into SMS marketing and SMS transactional. In both cases, profiles need to provide express consent in order to receive messages. Profiles with a status of Unsubscribed or Never Subscribed for SMS are not able to receive messages through the channel until they opt in and will have a red indicator. Currently, if someone opts out of SMS marketing, it also opts them out of transactional (and vice versa). By expanding a channel, you can see additional details around the profile’s subscription status. If a profile is not able to receive messages because they are suppressed, there are details around their suppression at the bottom of the channel when expanded. Unsubscribed and spam complaints are not displayed as a suppression reason in this section. If these suppressions exist, the profile will always have an unsubscribed consent status. For more information on suppression and unsubscribes, see our guide on suppressed profiles in Klaviyo.  Profiles that have never subscribed  There are certain methods of adding a profile that results in a consent status of Never Subscribed. If this is the case and the person is not suppressed, the profile shows a yellow exclamation mark for that channel. For example, subscribers that provided their information when starting a checkout without opting in to email marketing, would have a consent status of Never Subscribed. You can only send emails to these profiles; you cannot send them SMS marketing, SMS transactional, or mobile push messages. And even with email, you should exercise caution when contacting them. Depending on your local regulations you may be permitted to email these profiles if you believe they have implied consent. Make sure to use good list cleaning practices and consider each contact’s engagement when deciding whether to send to them. Klaviyo recommends that you only email profiles with express consent to protect your deliverability and sender reputation. Email When someone subscribes to one of your lists (e.g., through a signup form) their consent status is marked as Subscribed in Klaviyo. This results in the creation of their profile in your account (if it does not already exist) and a green checkmark representing their subscription status. Consent vs. suppression status In Klaviyo, there are 2 key concepts to understand which contacts are reachable (i.e., suppression status) and which contacts have provided consent to receive marketing (i.e., consent status). Suppression and consent statuses are separate from each other. For example, an email profile that has provided consent and is subscribed can be suppressed by a user on the account, and still retain its consent status. This allows profiles to be suppressed billing purposes, and unsuppressed at a later date without having to provide consent again.  Due to this difference between suppression and consent statuses, when you export the email marketing consent property for a list or segment, you may see Subscribed for a customer who is suppressed. To get suppression status, export the Email suppressions property as well. GDPR In some cases, international laws will affect email consent. A prime example of this is GDPR, which governs residents of the EU. For information on how to remain compliant and access

Help Center

Understanding SMS consent collection

You will learn Learn about SMS consent, including what counts as SMS consent, how you can collect it, and how resubscribes work. SMS consent refers to whether someone is opted in (i.e., if they have agreed to receive marketing text messages from your brand).  For information on how to tell if a profile is consented to SMS, see this article on how Klaviyo stores consent.  Before you begin In Klaviyo, you must have 2 things before you can collect SMS consent: SMS turned on. An active sending number in the country where you want to collect SMS consent. The number may also need to be verified or registered. If you haven't enabled SMS, or don't have a sending number for that country, you cannot collect SMS consent.  You can only gather subscribers in countries where Klaviyo SMS is available. What counts as SMS consent SMS is more regulated than most other marketing channels. Due to this, there are stricter requirements on what counts as proper SMS consent. Below, we break down what you need to do for SMS.  Individuals must explicitly agree to receive SMS messages Someone must agree to receive SMS messages from your brand, regardless of whether you're sending marketing or transactional messages. Typically, someone subscribes by checking a box at checkout or signing up through a form.  SMS consent also must be collected separately from any other marketing channel. For instance, while you can collect both email and SMS consent in the same form, you must make it clear that SMS is optional (usually via a separate checkbox or button).   A single consent cannot be provided to multiple brands or organizations. Customers must provide consent to receive messages from your company explicitly. Lead generation, affiliate related, or purchased lists are not valid SMS consent. You cannot force SMS consent It’s illegal to force someone to sign up for SMS in order to make a purchase.  Additionally, providing consent for SMS cannot appear as if it’s required. Even if giving SMS consent is optional for your customers, you may face fines or compliance issues if SMS consent seems required. For instance, collecting both SMS and email consent on the same step of a sign-up form is not recommended, as customers may think they have to sign up for SMS if they want to sign up for email.  Use disclosure language wherever you collect SMS consent SMS subscribers must understand what they’re agreeing to before they sign up. To make this clear, include disclosure language wherever you collect SMS consent, whether that is on a checkout page, form, banner in an email, social media post, or a third-party quiz or form (when using APIs to send consent).  This goes for all opt-in methods, from sign-up forms to subscribe keywords. Any potential subscriber should understand what they're signing up before they click submit or text in a keyword.   Where should the disclosure language go in a form?  You should put the disclosure language above the SMS consent checkbox or button. That way, people see the disclosure language before they opt in.  Use double opt-in if using cart abandonment messages (US) While double opt-in is always recommended, it's also a carrier requirement in the US for any shopping cart abandonment flow (e.g., abandoned cart, added to cart, etc.).  With double opt-in, someone must take 2 actions before they're added as a subscriber in your account, such as entering their phone number and then confirming via text or clicking a button and then texting a keyword.  FAQs Does having someone’s phone number count as consent for SMS? No. If someone gave you their phone number, that does not mean they gave you permission to send them SMS. While you do need a phone number to text someone, they also must explicitly say they want to receive marketing text messages.  Does having consent for email count as consent for SMS? No. Having consent for email does not mean you have consent for SMS. Individuals must opt in to SMS marketing specifically; opting in to any other marketing channel (including email) does not count as consent for SMS.  Should I use the same opt-in checkbox or button for both email and SMS?  No. You risk falling out of compliance if you, for example, have a single checkbox to gather consent for both email and SMS. As a best practice, you should always use a separate checkbox or button for SMS consent.  Can I use a general “agree to marketing” checkbox or button for SMS?  No. It’s best to have a checkbox or button specifically for SMS. A general “agree to marketing” option is not considered sufficient for SMS in most countries.  Should I use a single-page or multi-step form when collecting both email and SMS consent? Multi-step forms that collect email consent on one step, followed by phone numbers on another step, are the best option for collecting both email and SMS consent because they allow you to collect consent separately for each channel.  Single-step forms may be used, but only with double opt-in an

Help Center

How to send consent to Klaviyo via Zapier

You will learn Learn how to create a custom Zapier webhook to send SMS consent to Klaviyo. You can easily modify the instructions in this guide to send email consent as well.  The steps below will help you create a Zap using a webhook (also called a catch hook) that triggers a Python script action. The script sends an API call to Klaviyo to subscribe email and phone numbers to a list. This feature is only available to users with Premium Zapier plans. About the integration This integration is not fully supported by Klaviyo, but can be used as a work around if needed. We recommend only using this integration if you have developers on your team who can support it. This guide uses a Zapier code action that runs a Python script when the trigger is detected. With this solution, you can map fields to the data types that Klaviyo endpoints require; specifically, the Subscribe Profiles and Unsubscribe Profiles endpoints. Set up Zapier webhook Log in to your Zapier account. From the main page in Zapier, select +Create, then select Zap. Enter a name for your new Zap (e.g., Klaviyo Webhook). Search for Webhook, then select Webhooks by Zapier from the Trigger menu. In the next menu, select Catch Hook from the Trigger Event options. Click Continue. Select the Test tab. Copy the webhook URL that Zapier provides for you to send your requests to. Before testing, you’ll need to send test data to your webhook. See our guide on How to send test data to Zapier for more information. Make sure to format phone numbers correctly when sending test data. Once you’ve sent the test data to the webhook, click Test trigger (on the Test tab). If the request is successful, you’ll see a success message, and the test data will populate below the success message, similar to the example below: Once your trigger is working, click Continue with selected record. Set up Zapier action In the Action menu, enter Code by Zapier in the search box and select the option from the list. Click Choose an event > Run Python. Click Continue. Set up field mapping and create script logic Set up field mapping to correlate the input data in the table below to the correct test data you previously sent.  Input data Test data mapped email 1. Email: <Test email> phone_number 1. Phone Number: <Test phone number> sms_consent 1. Sms_consent: true name 1. Name: <Test name> Add a script like the one below to the code box: import requests # configuring sms subscribe or unsubscribe call if (input_data["sms_consent"] == "true" or input_data["sms_consent"] == "True" or input_data["sms_consent"] == "TRUE"): url = "https://a.klaviyo.com/api/profile-subscription-bulk-create-jobs/" payload = { "data": { "type": "profile-subscription-bulk-create-job", "attributes": { "profiles": { "data": [ { "type": "profile", "attributes": { "email": input_data["email"], "phone_number": input_data["phone_number"], "subscriptions": { "sms": { "marketing": { "consent": "SUBSCRIBED" } } } } } ] } }, "relationships": { "list": { "data": { "type": "list", "id": "LIST_ID" } } } } } elif (input_data["sms_consent"] == "false" or input_data["sms_consent"] == "False" or input_data["sms_consent"] == "FALSE"): url = "https://a.klaviyo.com/api/profile-subscription-bulk-delete-jobs/" payload = { "data": { "type": "profile-subscription-bulk-delete-job", "attributes": { "profiles": { "data": [ { "type": "profile", "attributes": { "email": input_data["email"], "phone_number": input_data["phone_number"], } } ] } }, "relationships": { "list": { "data": { "type": "list", "id": "LIST_ID" } } } } } headers = { "accept": "application/json", "revision": "2024-05-15", "content-type": "application/json", "Authorization": "Klaviyo-API-Key your-private-api-key" } response = requests.post(url, json=payload, headers=headers) # Zapier requires an 'output' object output = {"response text": response.text} Replace your-private-api-keywith your Klaviyo private API key. Treat private API keys like passwords - keep them in a safe place and never expose them to the public. Replace the LIST_ID (in both locations) with the Klaviyo list ID you want to send your Zapier data to. You can find your list ID in Klaviyo by navigating to Audience > Lists & segments > Settings. If you wish to immediat