Solved

How to get Shopify language Data to Segment List?

  • 18 February 2021
  • 23 replies
  • 3555 views

Badge +2

We want to use klaviyo for sending newsletter. Currently our shopify store has 2 languages, french and english. Customers and subscribers are added in a klaviyo list automatically, however there is no language information...?

Inside shopify, there are filters to segment customer into different language lists, but this data doesnt seem to get transfered to klaviyo…?
 


We need to somehow get the language information for each customer/subscriber in order to send them newsletter in the correct language… How can this be done? What is the easiest method to achieve this?

We are using shopify native multi language feature, but will also be adding a language addon to better control/manage translations. We would be using one of the addon that officially support the native shopify language feature here : https://apps.shopify.com/collections/apps-for-store-languages
Any recommendations? Would one of these allow us to more easily get the language data in shopify?

icon

Best answer by Omar 20 February 2021, 23:04

View original

23 replies

Userlevel 5
Badge +8

Hi there,

It may make sense to make a call to Klaviyo’s Identify API to tag user profiles with a property indicating their preferred language. Langify is one example of an app used by some Shopify merchants to allow site visitors to switch between languages. Langify in particular does include the selected language within the “note_attributes” property on some of the events that come into Klaviyo; however, Langify does not actually tag profiles in Klaviyo with selected language.

I am not aware of a Shopify language app that automatically tags profiles in Klaviyo with the selected language, but other merchants might be able to make more detailed recommendations of other Shopify apps to help with this.

Within Klaviyo, you would likely want to maintain two separate segments or lists for English and French, based on the language preference profile property that has been set either by an Identify API call or a Shopify language app.

Best,

Caroline

Userlevel 7
Badge +43

Hi @Loons,

There are a couple of ways to go about this.

Separate sites - separate accounts
For the end user I think this creates the best experience.
Why? Let's say you're target audience 1 is from France and second is from UK or USA or maybe even another EU country.
Trying to do all with 1 Shopify shop will i.e. add a lot of irrelevant payement options or just simply because in France it's 10€ while in most other EU countries it's €10. These small differences have a big impact on specific country related relevant differences. Having 2 sites and 2 separate Klaviyo accounts will also keep things much clearer. Each country is different and tailoring and being relevant to specific countries just increases your conversions. Also, Klaviyo can set 1 default currency which is getting used, multicurrency, without some fancy updating and customized work will probably be an issue since dynamic products have 1 price which is the main price of the shop.

 

That being said if you do feel you want to go the one account for klaviyo and shopify route you could add the question in signup forms which language they prefer and also adding that in a welcome flow to gather some additional info.

If you're using multilanguage that also changes the URL for each language (/EN/ or /FR/) you could use this as a way of filtering people. Even maybe adding a flow that adds a custom profile tag with latest language used.

Last you could use something like Tagmanager (or just code it in your site) to send an event or profile property with the latest language use.


Hope it helps.

Omar

 

 

Badge +2

Hi Omar,

Thanks for the reply, some comments:

  • Concerning using separate stores for separate countries. Maybe its something we will do in the future but this doubles all costs and we are trying to avoid it if possible for now. Also, in this specific case, FRENCH and ENGLISH are both official language for Canada.
     
  • Adding the language in the form is a potential solution, but we’d like to avoid it again… people are already browsing the website in their preferred language, so it’s unnecessary to ask them to pick a language for the newsletter imho.
     
  • We do have multi-language that changes the DOMAIN… I didnt think this would work with Klaviyo display filtering rules but i tested it and it works! I can create a EN popup and a FR popup with filtering for domains. The problem is, i cannot add any automatic tag to subscribers from either popup… so the FR popup will add contacts to the list but it wont add any tag/data to say that this person has the French language… This would force me to have 1 list for FR and one list for EN… Also, this would only be possible for klaviyo embedded forms / popup… so for example it wouldnt work when people subscribe during checkout.
     
  • Not sure exactly how it would work for tag manager, by default i know shopify doesnt let you embed the tag manager script… but there are workarounds. Nevertheless, i dont see how tag manager would send language value to klaviyo about each contact / subscribers. Might be possible, but i have no idea what this involves exactly.
Userlevel 1
Badge +4

Hi there,

The solutions above sound very helpful but I wonder, if someone has managed to find a way to add/edit  a custom property just based on the information provided by Langify?
As Caroline mentioned, Langify includes the a language tag in the events but I wonder if there’s a way how to use that on Klaviyo’s end?

Our current setup is a Standard Shopify shop, two languages with Langify (de/en) and Klaviyo.
For signing up we have separate sign-up forms that are displayed based on the URL (if the URL includes  …/de → use the German form and add a custom property “DE” to the user, if not use the English form and include property “EN”).
Within our flows we have a conditional split based on this property.

However, this tag is only set when signing up for the specific forms, any other collected data have the langify attribute but not the tag, same for the customers that sign up during the checkout process.

Has anyone the same problem or maybe even a solution?

Thanks
Stephan

Userlevel 7
Badge +60

Hello @stephan,

I would suggest reaching out to Langify if they have any capability to pass this attribute as a profile property instead. If they do not, you may want to consider to see if you can leverage Klaviyo’s API to build this custom connection to allow collect this data from Langify’s attribution as a custom property to tag your profiles with. 

To learn more about building this custom solution, I would recommend taking a look at the following resources Klaviyo offers on using its API. I would also suggest working with a developer or finding a Klaviyo partner who can further help you in accomplishing this custom solution.

If other Community members have another solution to this, I would love to hear their ideas and strategies surrounding this as well :) 

Thanks for being a Klaviyo Community Member!

David

Userlevel 1
Badge +4

Thank you @david.to  for the quick reply. I have reached out to Langify with that request and will post the reply as soon as I get one.
Also thank you for the second proposal – and if anyone has another idea, happy to hear about those.
I think the setup Shopify + Langify + Klaviyo is more and more common one and it would be great to share experiences.
A more general question out of curiousity: How come that a property like language is not a “standard” property? Multilingual email-marketing must be a challenge for many users? Or is this individualization rather done based on the location of the users?
Thanks

Userlevel 1
Badge +4

Actually I got a fast reply @david.to :

You can access locale codes like "en" or "de" via liquid via {{ request.locale.iso_code }}
Is that something I can use within Klaviyo?
Thanks, Stephan
 
Userlevel 7
Badge +60

Hey @stephan,

Property such as “language” wouldn’t be a standard Klaviyo property as it would typically be a preference of your customers rather than factual data such as your customers location; which is identifiable via Klaviyo’s geoIP location method. For this reason we typically recommend collecting this language preference via a signup form or a manage preference page as @Omar has previously mentioned. You can learn more about properties from the Guide to Properties Help Center Article Klaviyo offers.

Since it sounds like this locale data is being shared, how you decide to use it would once again depend on how you are pushing this data to Klaviyo for use. From the sounds of it, you may be able to leverage Klaviyo’s Identify API to amend and apply a custom profile property if your customer is identified through this {{ request.locale.iso_code }} liquid tag on your site.

David

Userlevel 1
Badge +4

Understood, thanks @david.to . I’ll look into the proposed approach…
Stephan

Badge +1

Hi @stephan, haven’t implemented it myself yet, but you should have the possibility to fetch the locale through shopify webhooks, e.g. if you want to build your own abandoned cart automation in Klaviyo and respect the cart locale, this is the webhook data: https://www.integromat.com/en/integrations/klaviyo

 

You could use software like Integromat to listen to that webhook, and then shoot that data up again to Klaviyo in order to update a profile there with a custom attribute “Language”. Use that attribute to create custom segments or split flows as you describe above.

 

Alternatively you can at least approach it this way without any external work-around:

 

If a customer enters Klaviyo through a signup form, then we know already (as you say yourself). E.g. German signup form is only shown on website.com/de/* or website.de/* -> and these German signup forms automatically sign up to the list “Newsletter German”.

 

In another case: 

  • If sb. signs up to the newsletter another way (e.g. in the checkout), we don’t know the order language and they are added to the list “Newsletter”.
  • Then we create a “temporary_update_to_German” segment in Klaviyo that they automatically become a member of through definitions like “Is in list Newsletter” & (“Email ends on .de” OR “Country = Germany”) & Language is not set.
  • The moment they become member of one such a segments, they enter a flow called something like “auto_update_language_…“. That flow sets the custom “language” attribute of a customer to e.g. German
  • Once they have that attribute, they automatically join the segment “Newsletter German Only”, which is just another way of defining that group of people.

Not ideal, but rather quick to set up and better than nothing : )

 

 

Simon

Userlevel 2
Badge +4

This is something I’ve also been waiting for. Shopify has native multi-language support for 2 years now. 

Please Klaviyo integrate the property “locale” from Shopify. It’s in the Shopify customer object, see: https://shopify.dev/api/admin-graphql/2021-10/objects/Customer#fields-Customer-OBJECT (=> locale)

 

It would be super helpful to have acces to that property inside Klaviyo. (Segment customers based on locale, Setup flows based on locale etc...)

 

*In the mean time we’ve setup a MechanicApp task to auto tag customers inside Shopify with their last used locale. (And that get’s synced to Klaviyo)

Userlevel 7
Badge +60

Hi all, 

 

First, I wanted to give a thanks to @simong for going out of your way to give your peers a workaround for this present pain point! It is much appreciated!

Second @DriesP, I can understand the frustration you might be experiencing with this Klaviyo limitation at this point. I am sorry for the inconvenience it’s caused, but I am grateful that you have used your voice to tell us what features you would like to see happen. We need that from our customers, so thank you! Additionally, thank you for giving another workaround for this as well!

 

Thank you all for being a part of our Community! 

 

-Taylor

 

 

Badge +1

Hi all, 

 

First, I wanted to give a thanks to @simong for going out of your way to give your peers a workaround for this present pain point! It is much appreciated!

Second @DriesP, I can understand the frustration you might be experiencing with this Klaviyo limitation at this point. I am sorry for the inconvenience it’s caused, but I am grateful that you have used your voice to tell us what features you would like to see happen. We need that from our customers, so thank you! Additionally, thank you for giving another workaround for this as well!

 

Thank you all for being a part of our Community! 

 

-Taylor

 

 

Is this feature now on Klaviyo’s roadmap at all or nothing for the foreseeable future? 

Badge +4

Hi,

 

Can we please get a follow up from a Klaviyo team member. I’m pretty sure this feature is quite easy to implement directly in your app and has been requested for over 2 years now. Can you please make this a priority the community needs this and I need this for all my clients as well. I’ve always prefer Klaviyo but now competitors like Mailchimp are now offering the customer locale in their app so I guess it’s time for you to add it as well if you wanna stay ahead.

Thank you

Badge +1

This is something I’ve also been waiting for. Shopify has native multi-language support for 2 years now. 

Please Klaviyo integrate the property “locale” from Shopify. It’s in the Shopify customer object, see: https://shopify.dev/api/admin-graphql/2021-10/objects/Customer#fields-Customer-OBJECT (=> locale)

 

It would be super helpful to have acces to that property inside Klaviyo. (Segment customers based on locale, Setup flows based on locale etc...)

 

*In the mean time we’ve setup a MechanicApp task to auto tag customers inside Shopify with their last used locale. (And that get’s synced to Klaviyo)

@DriesP would you be able to share the Mechanic task you’re using? I can’t seem to find the one that would add the locale as a tag for the customer.

Userlevel 2
Badge +4

We’re actually no longer using the Mechanic solution. I would advise against tags now, as they can create conflicts (as it’s an array and can contain multiple values).

Best solution we’re using atm: Use Shopify Flow and setup a task that pushes the customer locale to a Klaviyo action (Profile property).

*Shopify flow is only available for Shopify Plus, but will soon be available for advanced plan I’ve been told.

* I’ve also reported that the “locale” property is missing on the customer object inside Shopify’s REST API. It’s on their roadmap now. Since Klaviyo uses the REST API, it should be easier for Klaviyo to integrate. So hopefully in a few months this issue will be fixed :-)

Userlevel 7
Badge +60

 

Hi all, 

 

Thanks for sharing your feedback and Thanks @DriesP for popping back in here and pointing out that the locale tag isn’t a viable option and sharing the best solution here that pushes the data in a way Klaviyo can ingest! 

Best solution we’re using atm: Use Shopify Flow and setup a task that pushes the customer locale to a Klaviyo action (Profile property).
 

 

As stated before, language information its not something that is native with our Klaviyo X Shopify integration at this time. However, there are many feasible workarounds, as shared above, that can collect and share the data with Klaviyo that enables you to utilize for your personal business needs! Although they may require custom work or a developer! 

 

Thanks for participating in this conversation! 

-Taylor 

Badge +1

Hi all, 

Im having same issues. I want to send Abandoned cart reminder in different Languages.

(We use the translation App Weglot with subdomains for each language). I have set different subscription forms for each language and filtered it by the domain. As an example the English sub-form is only Displayed on the domain which includes 

en.semode.de and adds the subscriber to my Newsletter list. I have setup 3 different Newsletter lists each for one Language. This was my Solution for the newsletter part.

 

Now i want to send Abandoned cart reminder Emails. I edited my source code and pasted a code from Weglot to tag the customer with the right Language. ( if the customer switches to English and orders or starts a checkout weglot adds the Tag : lang : en)

The issue Im facing is that i cant find the correct filter to set it up in my flow.

 

I checked for the Trigger Setup Preview and look at the Variables created from me which selected the language Türkish (tr) i noticed that the language tag is located in the note_attributes section. But as i described i cant find the right filter for that. I tested everything but cant set it up so i need help :)

 

 

Thanks for everyone to reply to this message

Semode

Badge +2

Hi @DriesP

Could you please share how you set up your Shopify Flow? 

I haven’t succeeded in setting it up properly for the moment, so that would help me a lot! (And many other I’m sure)

Thank you!

Userlevel 2
Badge +4

Hi @Pauline_Syos 

I currently have it setup like this. (See screenshot)

 

Trigger: Customer created
Action: Klaviyo Event

 

 

Badge +2

@DriesP Awesome! Thank you so much :D

Badge

PLEASE add this to your roadmap. I know many US based stores are blessed with just having one language but here in Europe a typical store has customers speaking German, French, Italian etc and we need to optimise for them. Also Shopify is adding more and more support for international cross border selling, so even your US customers will need this feature.

Badge +2

Hi @Pauline_Syos 

I currently have it setup like this. (See screenshot)

 

Trigger: Customer created
Action: Klaviyo Event

 

 


Hey DriesP - I’m looking to set something up like this utilising Shopify Flows. I have a custom property within Klaviyo named “preferred language”.

Anyway you could share some insight into what your information in the “Customer Properties” box means? I’m trying to use it as a template…

Any help is appreciated

Reply