Skip to content

Klaviyo Integration

The CZ Names Klaviyo integration automatically syncs the declined name forms and gender to matching Klaviyo profiles. Once synced, you can use the Czech addressing data in any Klaviyo email, SMS, or flow template.

You need two Klaviyo API keys: a Public key (also called Site ID) and a Private key.

  1. Log in to your Klaviyo account
  2. Go to Account → Settings → API Keys
  3. Copy your Public API Key (visible on the main API Keys page)
  4. Create a new Private API Key with at least profiles:read and profiles:write scopes, then copy it
  1. Open the CZ Names app in your Shopify admin
  2. Go to Settings → Klaviyo Integration
  3. Paste your Public API Key and Private API Key
  4. Click Save

The integration activates immediately for all subsequent customer creates and updates.

When a customer’s name is processed:

  1. The app declines the name and writes the Shopify metafields
  2. The app then looks up the customer’s email address in Klaviyo to find their profile
  3. If found, the app updates the Klaviyo profile with three custom properties:
    • Czech addressing — the first name in the vocative case (Jane)
    • Czech last name — the last name in the vocative case (Nováku)
    • Gender — male, female, or unknown

If you have customers who signed up before the integration was enabled, trigger a re-sync by making a small edit to their Shopify customer profile (for example, re-saving their name). This fires a customer update webhook, which triggers both the declension and the Klaviyo sync.

Using Czech addressing in Klaviyo templates

Section titled “Using Czech addressing in Klaviyo templates”

Once the properties are synced to a Klaviyo profile, you can use them in any Klaviyo email or SMS template with the person|lookup filter.

{% if person|lookup:'Czech addressing' %}
{{ person|lookup:'Czech addressing' }}
{% endif %}
{% if person|lookup:'Czech addressing' %}
Dobrý den, {{ person|lookup:'Czech addressing' }},
{% else %}
Dobrý den,
{% endif %}

In Czech, “Vážený pane” and “Vážená paní” are followed by the last name, so use Czech last name there. The first name (Czech addressing) belongs in the informal greeting.

{% if person|lookup:'Czech last name' %}
{% if person|lookup:'Gender' == 'male' %}
Vážený pane {{ person|lookup:'Czech last name' }},
{% elif person|lookup:'Gender' == 'female' %}
Vážená paní {{ person|lookup:'Czech last name' }},
{% else %}
Dobrý den, {{ person|lookup:'Czech addressing' }},
{% endif %}
{% elif person|lookup:'Czech addressing' %}
Dobrý den, {{ person|lookup:'Czech addressing' }},
{% else %}
Dobrý den,
{% endif %}

The Czech profile properties can be used as flow filter conditions as well. For example:

  • Trigger a flow only for customers where Gender equals female
  • Personalize product recommendations with a gendered greeting

To access the properties in a flow condition, select Profile property → Czech addressing (or Czech last name / Gender for the other properties).

Properties not appearing on Klaviyo profiles

Section titled “Properties not appearing on Klaviyo profiles”

Cause 1 — Incorrect API keys: Verify the Private API Key has profiles:read and profiles:write permissions. Re-enter the keys in the app settings and save.

Cause 2 — New customer, timing issue: For customers created very recently, Klaviyo may not have created their profile yet. Wait 5 minutes and then make a small edit to the Shopify customer to trigger a re-sync.

Cause 3 — Email mismatch: The sync matches customers by email address. If the email on the Shopify customer record differs from the email on the Klaviyo profile, the profile will not be found and the sync will be skipped.

A sync is also skipped for every customer whose first name the app cannot decline — those customers never reach the Klaviyo step, so none of the three properties appear on their profile. See Troubleshooting for which names the app accepts.

Otherwise, a sync is skipped when the customer email doesn’t exist as a Klaviyo profile yet. This is expected for brand-new customers — re-triggering the webhook after 5 minutes will resolve it. If the issue persists, contact support at integrace@soundsgood.agency.

Wrap the greeting in a condition so the no-name variant is used when the property is absent:

{% if person|lookup:'Czech addressing' %}Dobrý den, {{ person|lookup:'Czech addressing' }},{% else %}Dobrý den,{% endif %}

Do not close the gap with |default:person.first_name — that inserts the nominative form of the name into a slot that requires the vocative.