# Kostenlos Testen Page Variations Guide

**Last Updated:** 2026-03-11

Complete guide for using dynamic content variations on `/kostenlos-testen` and `/kostenlos-testen/los-gehts` pages for Google Ads campaigns.

---

## 📋 Overview

The `/kostenlos-testen` landing page and `/kostenlos-testen/los-gehts` success page support dynamic content customization via URL parameters. This allows the Ads team to:

- **A/B test different headlines and messaging** without creating new pages
- **Customize content per campaign** for better relevance and conversion
- **Track performance** by campaign using UTM parameters alongside content variations
- **Preserve variations** through the registration flow (from landing page → success page)

---

## 🎯 Supported Pages

| Page | URL | Purpose | Supports Variations |
|------|-----|---------|---------------------|
| **Landing Page** | `/kostenlos-testen` | Email capture form | ✅ Yes |
| **Success Page** | `/kostenlos-testen/los-gehts` | Post-registration onboarding | ✅ Yes |

---

## 📝 Parameter Reference

### Available Parameters

All parameters use the `lp_` prefix to avoid conflicts with UTM tags and other tracking parameters.

| Parameter | Purpose | Max Length | Example Value |
|-----------|---------|------------|---------------|
| `lp_h1` | Main H1 headline (line 1) | 80 chars | `Personalplanung leicht gemacht` |
| `lp_h1_sub` | H1 subline (blue span, optional) | 60 chars | `Für Schichtbetriebe` |
| `lp_title` | Page title (meta tag) | 70 chars | `Personalplanung leicht gemacht \| Ordio` |
| `lp_desc` | Meta description | 160 chars | `80% weniger Zeit mit der Personalplanung...` |
| `lp_subhead` | Hero subheadline/description | 100 chars | `Dein Workspace ist bereit!` |
| `lp_body` | Hero body paragraph | 200 chars | `Starte jetzt mit Ordio...` |
| `lp_bullet1` | Bullet point 1 | 80 chars | `Schichtplanung, Zeiterfassung...` |
| `lp_bullet2` | Bullet point 2 | 80 chars | `Volle Kontrolle über Personal...` |
| `lp_bullet3` | Bullet point 3 | 80 chars | `Für Gastro, Freizeit...` |

### Parameter Usage by Page

#### Landing Page (`/kostenlos-testen`)

**Used Parameters:**
- `lp_h1` - Main headline
- `lp_h1_sub` - Blue subline below headline
- `lp_title` - Page title (meta)
- `lp_desc` - Meta description
- `lp_subhead` - Benefit statement below headline
- `lp_body` - Body paragraph (currently same as subhead)
- `lp_bullet1`, `lp_bullet2`, `lp_bullet3` - Feature bullets

**Example:**
```
/kostenlos-testen?lp_h1=Zeiterfassung+automatisieren&lp_h1_sub=Für+dein+Team&lp_subhead=Spare+80%+Zeit+bei+der+Personalplanung
```

#### Success Page (`/kostenlos-testen/los-gehts`)

**Used Parameters:**
- `lp_h1` - Main headline ("Los geht's!" or custom)
- `lp_h1_sub` - Optional blue subline
- `lp_title` - Page title (meta)
- `lp_desc` - Meta description
- `lp_subhead` - Description below headline

**Note:** Bullet points are not used on the success page.

**Example:**
```
/kostenlos-testen/los-gehts?lp_h1=Willkommen+bei+Ordio&lp_subhead=Dein+Workspace+ist+bereit
```

---

## 🔗 Base URLs

| Page Type | Base URL |
|-----------|----------|
| **Landing Page** | `https://www.ordio.com/kostenlos-testen` |
| **Success Page** | `https://www.ordio.com/kostenlos-testen/los-gehts` |

---

## 🚀 Google Ads Setup

### Option 1: Final URL with Parameters (Recommended)

Append parameters directly to the Final URL in Google Ads:

```
https://www.ordio.com/kostenlos-testen?lp_h1=Zeiterfassung+automatisieren&lp_subhead=Spare+80%25+Zeit&lp_bullet1=Schichtplanung+in+Minuten
```

**Benefits:**
- Simple setup
- Easy to test
- Works immediately

### Option 2: Tracking Template with ValueTrack

Use custom parameters in the tracking template for dynamic assignment:

**Tracking Template:**
```
{lpurl}?lp_h1={_lp_h1}&lp_subhead={_lp_subhead}&lp_bullet1={_lp_bullet1}
```

**Custom Parameters (assign at campaign/ad group/ad level):**
- `{_lp_h1}` = Your headline
- `{_lp_subhead}` = Your subheadline
- `{_lp_bullet1}` = Your bullet point 1

**Benefits:**
- Reuse across multiple ads
- Easy to update without changing Final URLs
- Better for A/B testing

---

## 📋 URL Encoding

### Spaces
- Use `+` or `%20` for spaces
- **Example:** `lp_h1=Personalplanung+leicht+gemacht`

### Special Characters (German)
- **ä** → `%C3%A4`
- **ö** → `%C3%B6`
- **ü** → `%C3%BC`
- **ß** → `%C3%9F`
- **|** → `%7C` (for page titles)

### Examples

**With German characters:**
```
lp_h1=Personalplanung+f%C3%BCr+Schichtbetriebe
lp_subhead=80%25+weniger+Zeit+mit+der+Personalplanung
```

**With pipe character (for titles):**
```
lp_title=Personalplanung+leicht+gemacht+%7C+Ordio
```

---

## ✅ Example URLs for Testing

### Landing Page Examples

| URL | What Changes |
|-----|--------------|
| `/kostenlos-testen` | Default content (no variations) |
| `/kostenlos-testen?lp_h1=Test+Headline` | Only H1 headline changes |
| `/kostenlos-testen?lp_h1=H1&lp_subhead=Sub&lp_bullet1=B1` | Multiple fields change |
| `/kostenlos-testen?utm_source=google&lp_h1=Test` | UTM + lp params both preserved |

### Success Page Examples

| URL | What Changes |
|-----|--------------|
| `/kostenlos-testen/los-gehts` | Default success page content |
| `/kostenlos-testen/los-gehts?lp_h1=Willkommen` | Custom headline |
| `/kostenlos-testen/los-gehts?lp_h1=Los+geht%27s&lp_subhead=Dein+Workspace+ist+bereit` | Custom headline + subhead |

### Full Flow Example

**Step 1:** User clicks ad → Landing page with variations
```
https://www.ordio.com/kostenlos-testen?lp_h1=Zeiterfassung+automatisieren&lp_subhead=Spare+80%25+Zeit&utm_source=google&utm_campaign=test
```

**Step 2:** User submits email → Redirects to success page (variations preserved)
```
https://www.ordio.com/kostenlos-testen/los-gehts?email=user@example.com&lp_h1=Zeiterfassung+automatisieren&lp_subhead=Spare+80%25+Zeit&utm_source=google&utm_campaign=test
```

---

## 🔍 SEO Behavior

### Canonical URLs

- **Landing Page:** Always `https://www.ordio.com/kostenlos-testen` (no parameters)
- **Success Page:** Always `https://www.ordio.com/kostenlos-testen/los-gehts` (no parameters)

### Robots Meta Tag

- **No variations:** `noindex, nofollow` (success page, not for SEO)
- **With variations:** `noindex, follow` (prevents duplicate content indexing)

### Schema Markup

- Uses dynamic title/description when variations are present
- Base URL always used in schema (no parameters)

---

## 🔒 Security & Sanitization

All parameters are automatically sanitized:

- ✅ **HTML tags removed** (`strip_tags`)
- ✅ **Whitespace trimmed** (`trim`)
- ✅ **Length limits enforced** (see Parameter Reference table)
- ✅ **XSS prevention** (output escaped with `htmlspecialchars`)
- ✅ **Plain text only** (no HTML/JavaScript allowed)

**You don't need to sanitize manually** - the system handles it automatically.

---

## 📊 Default Content

### Landing Page Defaults (`/kostenlos-testen`)

| Field | Default Value |
|-------|---------------|
| `h1` | `Personalplanung leicht gemacht` |
| `h1_sub` | `Für Schichtbetriebe` |
| `title` | `Personalplanung leicht gemacht für Schichtbetriebe \| Ordio` |
| `desc` | `80% weniger Zeit mit der Personalplanung verbringen und dabei Kosten sparen. Schichtplanung, Zeiterfassung und Löhne in einer Software.` |
| `subhead` | `80% weniger Zeit mit der Personalplanung verbringen und dabei Kosten sparen` |
| `body` | `80% weniger Zeit mit der Personalplanung verbringen und dabei Kosten sparen` |
| `bullet1` | `Schichtplanung, Zeiterfassung, und Löhne in einer Software` |
| `bullet2` | `Volle Kontrolle über Personal, Zeiten und Kosten` |
| `bullet3` | `Für Gastro, Freizeit, Einzelhandel, Logistik und mehr` |

### Success Page Defaults (`/kostenlos-testen/los-gehts`)

| Field | Default Value |
|-------|---------------|
| `h1` | `Los geht's!` |
| `h1_sub` | (empty) |
| `title` | `Los geht's! - Dein Workspace ist bereit \| Ordio` |
| `desc` | `Dein Workspace ist bereit! Starte jetzt mit Ordio und organisiere dein Personal effizient. Sieh dir die Demo an und buche einen Termin für deine persönliche Beratung.` |
| `subhead` | `Dein Workspace ist bereit! Starte jetzt mit Ordio und organisiere dein Personal effizient.` |

---

## 🎨 Best Practices

### Headlines (`lp_h1`)

- ✅ Keep it short and benefit-focused
- ✅ Use action-oriented language
- ✅ Match ad copy for consistency
- ❌ Avoid generic phrases
- ❌ Don't exceed 80 characters

**Good Examples:**
- `Zeiterfassung automatisieren`
- `Personalplanung in Minuten`
- `Schichtplanung leicht gemacht`

**Bad Examples:**
- `Willkommen bei Ordio` (too generic)
- `Die beste Personalplanungssoftware für Schichtbetriebe die es gibt` (too long)

### Subheadlines (`lp_subhead`)

- ✅ Lead with the main benefit
- ✅ Keep it concise (max 100 chars)
- ✅ Use "du" tone (informal German)
- ❌ Don't repeat the headline

**Good Examples:**
- `Spare 80% Zeit bei der Personalplanung`
- `Dein Workspace ist bereit - starte jetzt`
- `Automatisiere Schichtplanung und Zeiterfassung`

### Bullet Points (`lp_bullet1`, `lp_bullet2`, `lp_bullet3`)

- ✅ Focus on key features/benefits
- ✅ Keep each bullet under 80 characters
- ✅ Use parallel structure
- ❌ Don't use marketing jargon

**Good Examples:**
- `Schichtplanung, Zeiterfassung, und Löhne in einer Software`
- `Volle Kontrolle über Personal, Zeiten und Kosten`
- `Für Gastro, Freizeit, Einzelhandel, Logistik und mehr`

---

## 🧪 Testing Checklist

Before launching a campaign with variations:

- [ ] Test URL with all parameters in browser
- [ ] Verify content displays correctly
- [ ] Check mobile responsiveness
- [ ] Verify redirect preserves parameters (landing → success)
- [ ] Test with UTM parameters combined
- [ ] Verify canonical tag is correct
- [ ] Check robots meta tag behavior
- [ ] Test special characters (ä, ö, ü, ß) if used

---

---

## 📞 Support & Questions

**For technical issues:**
- Check browser console for JavaScript errors
- Verify parameters are URL-encoded correctly
- Test with default content first (no parameters)
- Contact the development team if issues persist

**For content questions:**
- Refer to default content table above
- Follow best practices guidelines
- Keep within character limits

---

## 🎯 Quick Reference Card

**Copy this for quick access:**

```
Base URLs:
- Landing: https://www.ordio.com/kostenlos-testen
- Success: https://www.ordio.com/kostenlos-testen/los-gehts

Key Parameters:
- lp_h1 (80 chars) - Main headline
- lp_h1_sub (60 chars) - Blue subline
- lp_subhead (100 chars) - Description
- lp_bullet1/2/3 (80 chars each) - Feature bullets

Example:
/kostenlos-testen?lp_h1=Zeiterfassung+automatisieren&lp_subhead=Spare+80%25+Zeit
```

---

**Last Updated:** 2026-03-11

---

## 📊 Event Tracking & Conversion Setup

### Overview

The `/kostenlos-testen` email form submission is tracked via Google Tag Manager (GTM) for event-based conversion tracking in Google Ads, Meta (Facebook) Ads, and other ad platforms.

### How It Works

1. **Form Submission:** User submits email address
2. **GTM Event:** `form_submit` event pushed to dataLayer with `conversion_type: 'email_capture'`
3. **GA4 Conversion:** GTM maps `form_submit` → `generate_lead` event
4. **Ad Platform Conversions:** Configured in GTM to fire on `generate_lead` event

### Current Implementation

**Form Tracking Code:**
```javascript
window.GTMFormTracker.trackCustomHTMLForm(emailForm, {
    formName: 'Kostenlos Testen Email Form',
    formType: 'email_capture',
    conversionType: 'email_capture',
    hubspotFormGuid: '59a2ae2a-87d2-424b-a911-dda4b42e73a4'
});
```

**DataLayer Event Structure:**
```javascript
{
    event: 'form_submit',
    form_id: 'emailForm-kostenlos-testen',
    form_name: 'Kostenlos Testen Email Form',
    form_type: 'custom_html',
    form_subtype: 'email_capture',
    conversion_type: 'email_capture',
    page_url: 'https://www.ordio.com/kostenlos-testen',
    hubspot_form_guid: '59a2ae2a-87d2-424b-a911-dda4b42e73a4',
    utm_source: 'google',
    utm_medium: 'cpc',
    utm_campaign: 'campaign_name',
    gclid: '...',
    lead_source: 'Google',
    // ... additional UTM parameters
}
```

### GTM Configuration Requirements

#### 1. GA4 Event (`generate_lead`)

**Trigger:** Custom Event `form_submit`

**Tag Configuration:**
- **Tag Type:** Google Analytics: GA4 Event
- **Event Name:** `generate_lead` (not `form_submit`)
- **Event Parameters:**
  - `conversion_type` → `{{DLV - Conversion Type}}`
  - `form_id` → `{{DLV - Form ID}}`
- **Triggering:** `Form Submit - Custom Event`

**Key Event:** Mark `generate_lead` as key event in GA4 Admin > Events
**Counting Method:** "Once per event" (recommended by Google)

#### 2. Google Ads Conversion Action

**Setup Steps:**

1. **Create Conversion Action in Google Ads:**
   - Go to Google Ads → Tools & Settings → Conversions
   - Click "+" to create new conversion action
   - **Category:** Lead
   - **Conversion name:** "Email Signup - Kostenlos Testen"
   - **Value:** Set value or use "Don't use a value"
   - **Count:** One
   - **Click-through window:** 30 days (or your preference)
   - **View-through window:** 1 day (or your preference)
   - **Attribution model:** Data-driven (recommended)

2. **Get Conversion ID and Label:**
   - After creating conversion action, Google Ads provides:
     - Conversion ID (e.g., `AW-123456789`)
     - Conversion Label (e.g., `AbC-D_efG-h12`)

3. **Create GTM Tag:**
   - GTM → Tags → New
   - **Tag Type:** Google Ads Conversion Tracking
   - **Conversion ID:** `AW-123456789` (your Google Ads account ID)
   - **Conversion Label:** `AbC-D_efG-h12` (from conversion action)
   - **Conversion Value:** Leave empty or use `{{DLV - Conversion Value}}` if tracking value
   - **Order ID:** Leave empty (not applicable for email signups)
   - **Triggering:** `Form Submit - Custom Event` (with condition: `conversion_type` equals `email_capture`)

**Alternative: Use GA4 → Google Ads Import**

If you prefer to import conversions from GA4:
1. Google Ads → Tools & Settings → Conversions
2. Click "+" → Import
3. Select "Google Analytics 4"
4. Select `generate_lead` event
5. Set conditions: `conversion_type` equals `email_capture`

**Benefits:**
- Simpler setup (no GTM tag needed)
- Automatic sync from GA4
- Uses GA4 attribution data

#### 3. Meta (Facebook) Pixel Lead Event

**Setup Steps:**

1. **Create GTM Tag:**
   - GTM → Tags → New
   - **Tag Type:** Custom HTML
   - **HTML:**
   ```html
   <script>
   fbq('track', 'Lead', {
     content_name: 'Kostenlos Testen Email Form',
     content_category: 'email_capture',
     value: 0.00,
     currency: 'EUR'
   });
   </script>
   ```
   - **Triggering:** `Form Submit - Custom Event` (with condition: `conversion_type` equals `email_capture`)

2. **Alternative: Use Meta Pixel Standard Event**

   If you have Meta Pixel installed via GTM:
   - GTM → Tags → New
   - **Tag Type:** Meta Pixel
   - **Event Name:** `Lead`
   - **Event Parameters:**
     - `content_name` → `Kostenlos Testen Email Form`
     - `content_category` → `email_capture`
   - **Triggering:** `Form Submit - Custom Event` (with condition: `conversion_type` equals `email_capture`)

**Meta Pixel Event Parameters:**

| Parameter | Value | Purpose |
|----------|-------|---------|
| `content_name` | `Kostenlos Testen Email Form` | Identifies the form |
| `content_category` | `email_capture` | Form type for segmentation |
| `value` | `0.00` or custom value | Optional conversion value |
| `currency` | `EUR` | Currency code |

#### 4. Other Ad Platforms

**LinkedIn Insight Tag:**
- Use GTM Custom HTML tag with LinkedIn tracking code
- Fire on `form_submit` event with `conversion_type: 'email_capture'`

**Microsoft Advertising (Bing):**
- Create conversion goal in Microsoft Advertising
- Use GTM Universal Analytics or Custom HTML tag
- Fire on `form_submit` event

### Testing & Validation

#### Browser Testing Checklist

1. **Open GTM Preview Mode:**
   - Navigate to `https://www.ordio.com/kostenlos-testen`
   - Submit test email form

2. **Verify Events in GTM Preview:**
   - ✅ `form_submit` event appears in dataLayer
   - ✅ `conversion_type: 'email_capture'` is present
   - ✅ `form_id: 'emailForm-kostenlos-testen'` is present
   - ✅ UTM parameters are included

3. **Verify Tags Fire:**
   - ✅ GA4 Event tag fires (`generate_lead`)
   - ✅ Google Ads Conversion tag fires (if configured)
   - ✅ Meta Pixel Lead event fires (if configured)

4. **Verify in GA4 DebugView:**
   - Open GA4 → Admin → DebugView
   - Submit form
   - ✅ `generate_lead` event appears
   - ✅ `conversion_type: 'email_capture'` parameter present
   - ✅ `form_id` parameter present

5. **Verify in Google Ads:**
   - Wait 24-48 hours for conversion data
   - Google Ads → Tools & Settings → Conversions
   - Check conversion action shows conversions
   - Verify conversion value and attribution

6. **Verify in Meta Events Manager:**
   - Meta → Events Manager → Test Events
   - Submit form
   - ✅ `Lead` event appears
   - ✅ Event parameters are correct

### Troubleshooting

#### Issue: Events Not Firing

**Check:**
- [ ] GTM container is published
- [ ] GTM Preview mode shows `form_submit` event
- [ ] Trigger conditions match (`conversion_type` equals `email_capture`)
- [ ] Tag firing priority is correct
- [ ] No JavaScript errors in browser console

#### Issue: Conversions Not Appearing in Google Ads

**Check:**
- [ ] Conversion action is active in Google Ads
- [ ] Conversion ID and Label are correct
- [ ] GTM tag is firing (check GTM Preview)
- [ ] Wait 24-48 hours for data to appear
- [ ] Check Google Ads conversion tracking status

#### Issue: Meta Pixel Events Not Firing

**Check:**
- [ ] Meta Pixel base code is installed
- [ ] GTM tag is firing (check GTM Preview)
- [ ] Event name is correct (`Lead`)
- [ ] Test Events tool shows events
- [ ] No ad blockers interfering

### Best Practices

1. **Use Event-Based Tracking:** Always use event-based tracking (not page views) for form submissions
2. **Test Before Launch:** Always test in GTM Preview mode before publishing
3. **Monitor Conversion Data:** Check conversion data regularly in ad platforms
4. **Use Conversion Type:** Always include `conversion_type` for proper segmentation
5. **Preserve UTM Parameters:** Ensure UTM parameters are included in events for attribution
6. **Document Changes:** Document any GTM changes in version notes

### Conversion Tracking Summary

| Platform | Event Name | Trigger | Status |
|----------|------------|---------|--------|
| **GA4** | `generate_lead` | `form_submit` with `conversion_type: 'email_capture'` | ✅ Implemented |
| **Google Ads** | Conversion Action | `form_submit` with `conversion_type: 'email_capture'` | ⚠️ Requires GTM setup |
| **Meta Pixel** | `Lead` | `form_submit` with `conversion_type: 'email_capture'` | ⚠️ Requires GTM setup |
| **LinkedIn** | Conversion | `form_submit` with `conversion_type: 'email_capture'` | ⚠️ Requires GTM setup |

**Note:** GA4 tracking is implemented. Google Ads and Meta Pixel conversions require GTM tag configuration (see setup steps above).

---

**Last Updated:** 2026-03-11
