# Campaigns

Source: https://gokarla.io/docs/guides/portal/campaigns

# Campaigns

The **Campaigns** section in the portal lets you manage every promotion that
appears on your Karla tracking page — creating new campaigns, editing existing
ones, segmenting who sees what, and measuring impact.

**Recommended for:** Marketing, Management

<iframe
  src="https://www.loom.com/embed/141fff5ca29b438a83953b96bbedab38"
  frameBorder="0"
  allowFullScreen
  style={{width: '100%', height: '400px'}}
></iframe>

## Campaign types

Karla supports three campaign types, each optimized for a different objective:

### Main promotions

Flexible content blocks with custom messaging and a call-to-action button.
Perfect for straightforward offers that don't require specific product focus.

**Use for:** discounts, referral programs, seasonal messaging, brand
announcements.

### Product promotions

Highlight one or more products directly on the tracking page — with images,
names, prices, and per-product CTAs.

**Use for:** cross-selling, upselling, product recommendations.

Products can be added two ways:

- **Automatically (Shopify integration)** — pulled from your Shopify catalog;
  just search and select.
- **Manually** — enter title, image, price, description, and translations
  yourself. Works for any catalog, even if it's not synced.

### Banner promotions

Mobile-only campaigns that appear at the top of the tracking page. Short,
high-impact, time-sensitive.

**Use for:** flash sales, limited-time offers, mobile-focused messaging.

## How a promotion is structured

Every promotion includes:

| Element                  | Description                                               |
| ------------------------ | --------------------------------------------------------- |
| **Internal name**        | Used only for internal organization                       |
| **Segment**              | Determines which customers see the promotion              |
| **Start & end date**     | Optional — useful for scheduled or time-limited campaigns |
| **Title & subtitle**     | The main message customers see on the tracking page       |
| **CTA (call-to-action)** | Button label and destination URL                          |
| **Discount**             | Optional — if the promotion includes an incentive         |
| **Translations**         | Campaigns can be localized for different languages        |
| **Image**                | A visual that supports the promotion                      |

After adding or updating content, **save** the promotion.

### Creating and managing promotions

- Create a **new promotion** from scratch, or **clone an existing one** to
  reuse its setup.
- Promotions can be **live or disabled**, so you can prepare campaigns in
  advance.
- Multiple promotions can run simultaneously using segmentation.
- Use **Preview** to see how the promotion will render on the live tracking
  page (banner promotions preview on mobile; main and product promotions
  preview on desktop).

## Discounts and segmentation

<iframe
  src="https://www.loom.com/embed/cd1312ae3a3f4b5990e862224336b68a"
  frameBorder="0"
  allowFullScreen
  style={{width: '100%', height: '400px'}}
></iframe>

To get the most out of your campaigns, you'll use **discounts** (to drive
action) and **segments** (to target the right audience). Both are managed in
the portal.

### Creating discounts for Karla campaigns

Karla uses dedicated discounts that are intended specifically for the tracking
page experience.

#### Step 1: Create the discount in your shop

First, create the discount in your shop backend (Shopify, Shopware, etc.):

- Define the discount type (percentage, fixed amount, free shipping, etc.)
- Set the value and rules as usual

This ensures the discount is valid and usable at checkout.

#### Step 2: Add the discount to the Karla Portal

To use a discount in a Karla campaign, add it to the **Discounts** section:

| Field              | Description                                            |
| ------------------ | ------------------------------------------------------ |
| **Internal title** | For your own reference (e.g., "15% for new customers") |
| **Discount code**  | Exactly as it exists in your shop system               |
| **Discount type**  | Entire order, specific products, or shipping           |
| **Discount value** | Percentage (e.g., 15%) or fixed amount (e.g., €15 off) |

Once saved, the discount becomes available in any campaign via a dropdown.

:::warning Important
If a discount is not added to the Discounts section first, it won't be
available for use in campaigns.
:::

### Using discounts in campaigns

After adding a discount to the portal:

- Select it in any **basic**, **product**, or **banner** campaign.
- This keeps discounts organized, avoids duplicates, and enables
  [campaign attribution](/docs/guides/tracking-page/attribution) via the
  discount code.

## How segmentation works

Segmentation lets you show different campaigns to different customer groups —
e.g., a 10% off offer to first-time customers but premium product suggestions
to VIPs.

### Where segments come from

- Karla pulls segments from **Klaviyo** and/or **Shopify**.
- Segments are **not** created in the Karla Portal directly — define them in
  Klaviyo/Shopify, and they appear in Karla after a brief sync.
- When creating or editing a campaign, you'll see all synced segments in a
  dropdown.
- **Shopify**: order tags become segments with the prefix `Shopify.tag.`. See
  [Customer Segments via Order Tags](/docs/shops/shopify#customer-segments-via-order-tags)
  for the full pattern, including how to use Shopify Flow to drive tags from
  customer attributes, line items, or Shopify Customer Segments.
- **Shopware**: customer/order tags, customer group, and sales channel are
  emitted with the prefixes `Shopware.tag.`, `Shopware.customer_group.`, and
  `Shopware.sales_channel.`. See
  [Order segments](/docs/shops/shopware#order-segments) for details.
- **Klaviyo**: lists and segments become `Klaviyo.list.<name>` and
  `Klaviyo.segment.<name>`.

### When segments are evaluated

Karla evaluates segments at these moments:

1. **At order placement** — all sources are read.
2. **At every order update in Shopify** — Karla re-reads order tags from the
   webhook payload. Tags added after placement (e.g., by Shopify Flow) land
   on the order immediately.
3. **At order fulfillment** — all sources are re-checked. This is the final
   check that decides which campaign the tracking page shows.

:::info Klaviyo segment refresh
Klaviyo segments are cached for one hour to avoid hammering the Klaviyo API.
In practice this means Klaviyo membership is captured at order placement and
re-checked at order fulfillment (which typically happens hours or days
later, after the cache has expired). Shopify tags have no cache — they
reflect the current order state on every webhook.
:::

:::tip Important
The segments determined **at fulfillment** are what ultimately decide which
campaign is shown. If a customer's segments change after fulfillment, the
order is not updated. This is intentional — it keeps campaign assignments
consistent for a given shipment.
:::

### Fallback and multi-match behavior

- **Default fallback** — if the customer matches no live campaign segment, the
  **default campaign** is shown.
- **Multiple matches** — when a customer matches several live campaigns, Karla
  picks the **first match found**. Since order segments aren't explicitly
  ordered, this produces a degree of randomness — which is actually useful for
  natural A/B testing across overlapping segments.

## Campaign recipes by segment

A starter library of campaign ideas you can adapt to your brand. Copy,
translate, and tune as needed.

### New customers

**Objective:** encourage first-time buyers to make a repeat purchase.

| Recipe                  | Title (EN)                                          | CTA                   |
| ----------------------- | --------------------------------------------------- | --------------------- |
| Next-order discount     | "Welcome to [Brand]! Enjoy 10% off your next order" | "Claim your discount" |
| Newsletter signup       | "Join & enjoy 10% off your next order!"             | "Sign up now"         |
| Accessories discount    | "Complete your look — get €10 off accessories"      | "Shop accessories"    |
| Free gift with purchase | "A special gift just for you!"                      | "Claim your gift"     |

**Other ideas:** free shipping on the next order if placed within 7 days;
exclusive welcome bundle with bestsellers; free downloadable style guide or
product care tips.

### Repeat customers

**Objective:** strengthen loyalty and increase repeat purchase frequency.

| Recipe                    | Title (EN)                                     | CTA                   |
| ------------------------- | ---------------------------------------------- | --------------------- |
| Subscriptions             | "Never run out — subscribe & save 15%!"        | "Subscribe now"       |
| App install               | "Exclusive in-app deals just for you!"         | "Get the app"         |
| WhatsApp delivery updates | "Track your order instantly on WhatsApp!"      | "Sign up for updates" |
| Referral program          | "Refer [Brand] & get €10 off your next order!" | "Refer now"           |
| Membership sign-up        | "Members save more! Join today"                | "Join the club"       |

**Other ideas:** early access to new collections or limited-time offers.

### Product-based targeting

| Recipe                    | Title (EN)                                             | Campaign type     |
| ------------------------- | ------------------------------------------------------ | ----------------- |
| High-spending customers   | "Luxury add-ons to elevate your style"                 | Product promotion |
| Price-conscious customers | "Great deals under €20 — shop now!"                    | Product promotion |
| Cross-category upsell     | "Have you already tried XYZ? We think you'll love it!" | Product promotion |
| Product bundles           | "Save big with our exclusive bundles!"                 | Product promotion |

### Food & beverage — recipe guides

**Objective:** encourage repeat purchases by adding value.

| Title (EN)                                       | CTA            |
| ------------------------------------------------ | -------------- |
| "Exclusive recipe guide — free with your order!" | "Download now" |

### Discount-loving customers

**Objective:** encourage higher spending by offering tailored discounts.

| Title (EN)                                           | CTA             |
| ---------------------------------------------------- | --------------- |
| "More savings, just for you! Grab an extra 20% off!" | "Shop the sale" |

## Best practices

- **Keep campaigns focused** — one message, one CTA per promotion.
- **Don't stack too many promotions** at the same time on the same segment —
  it dilutes impact.
- **Use segmentation for relevance** — a targeted campaign outperforms a
  generic one every time.
- **Use Karla-specific discount codes** so attribution stays clean. Keep them
  unique, time-limited, and unshareable (e.g., `KARLA-WELCOME-DEC` instead of
  `SAVE10`).
- **Allow time for new segments to sync** from Klaviyo/Shopify before
  launching a dependent campaign.
- **Use high-quality images** (minimum 800×800px, `.webp` preferred) and keep
  copy concise and action-oriented.
- **A/B test systematically** — change one variable at a time, run tests for
  at least 7 days, and aim for >100 orders per variant before drawing
  conclusions.

## Measure what you launched

Every campaign reports impressions, click-through rates, and revenue in the
portal. How accurately Karla can attribute those conversions depends on which
attribution method you're using — dig into the details in
[Campaign attribution](/docs/guides/tracking-page/attribution).
