What You’ll Learn in This Module

This is the capstone module where every concept from the course comes together. You’ll build a complete, production-quality Welcome Slide narration from scratch — the kind that opens a Cast QBR or Executive Business Review. By the end, you’ll see exactly how setup blocks, filters, snippets, conditionals, and defensive coding combine into a polished deliverable.


What a Welcome Slide Does

The Welcome Slide is the first thing a customer sees and hears in a Cast presentation. It sets the tone, acknowledges the customer personally, and establishes credibility. A great welcome slide:

  • Greets the contact by name
  • Names the company correctly (proper casing, possessive)
  • Acknowledges customer tenure (“Thank you for 2 years and 3 months”)
  • Provides a quick health/status snapshot
  • Mentions the assigned CSM
  • Adapts tone based on account health
  • Handles missing data gracefully
  • Sounds professional when read aloud

Building the Welcome Slide — Step by Step

Step 1: Setup Block — Safe Defaults and Conversions

Every narration starts with a setup block. This is where you tame the raw CRM data:


{% comment %}
  Welcome Slide — Executive Business Review
  Sources: Salesforce (contact, ARR, renewal), Gainsight (health score)
  Snippets: CustomerSince, IsEMEA
  Updated: 2026-03-23
{% endcomment %}

{%- # === Text fields === -%}
{%- assign name    = contact_first_name | default: "there" -%}
{%- assign company = contact_account_name | default: "your company" | cast_titlecase -%}
{%- assign csm     = csm_name | default: "your account manager" -%}
{%- assign tier    = product_tier | default: "" | strip -%}

{%- # === Numeric fields (string → number) === -%}
{%- assign score   = health_score | default: 0 | plus: 0 -%}
{%- assign arr_val = arr | default: 0 | plus: 0 -%}

{%- # === Date fields === -%}
{%- assign renewal = renewal_date | default: "" -%}

{%- # === Snippet results (always strip) === -%}
{%- assign region  = IsEMEA | default: "" | strip -%}
{%- assign tenure  = CustomerSince | default: "" | strip -%}

What’s happening:

  • Every field gets a default fallback for missing data
  • Text fields are cleaned with strip where needed
  • Numeric fields are converted from strings with | plus: 0
  • cast_titlecase normalizes company name casing
  • Snippet results are stripped to remove stray whitespace
  • A header comment documents the data sources and dependencies

Step 2: The Greeting


Hi {{ name }},

Welcome to {{ company | cast_apostrophe }} Executive Business Review.

For Jason at ACME LLC → Hi Jason, Welcome to Acme LLC's Executive Business Review. For missing data → Hi there, Welcome to Your Company's Executive Business Review.

Filters at work:

  • default: "there" catches missing first names
  • cast_titlecase (from setup) fixed the ALL CAPS company name
  • cast_apostrophe adds the grammatically correct possessive

Step 3: Tenure Acknowledgment


{%- if tenure != "" and tenure != "Invalid Date Value" %}
Thank you for being a customer for {{ tenure }}. We value your partnership.
{%- endif %}

The guard checks two things: that the snippet returned something, and that it wasn’t the error message. If the contract start date is missing, this section is silently skipped — no awkward “Thank you for being a customer for Invalid Date Value.”

Step 4: Health Score Commentary


{%- if score >= 80 %}
Your health score of {{ health_score | cast_highlight }} places you among
our top-performing accounts. Let's look at what's driving that success.
{%- elsif score >= 60 %}
Your health score of {{ health_score | cast_highlight }} shows strong
engagement, with some areas we'll explore for further growth.
{%- elsif score > 0 %}
Your health score of {{ health_score | cast_highlight }} tells us
there are opportunities to strengthen your outcomes.
We've prepared specific recommendations.
{%- else %}
We'll walk through your key metrics and discuss areas of focus.
{%- endif %}

Key decisions:

  • The original health_score string is used for display (highlighted)
  • The converted score number is used for comparisons
  • Four tiers: excellent (80+), solid (60+), needs attention (1–59), no data (0)
  • The “no data” branch avoids mentioning a score at all

Step 5: CSM Introduction with Pronunciation


Your {{ "CSM" | cast_pronounce }}, {{ csm }}, has prepared this review
and is available for any questions.

Screen shows: Your CSM, Taylor Chen, has prepared this review... Narrator says: Your Customer Success Manager, Taylor Chen, has prepared this review...

Step 6: Region-Specific Content


{%- if region == "yes" %}
Your dedicated EMEA support team is available for follow-up
at your convenience{{ "Support hours: 8 AM–6 PM CET, Monday–Friday" | cast_footnote }}.
{%- endif %}

This section only appears for EMEA contacts. The support hours are footnoted — visible but not spoken aloud.

Step 7: Renewal Date


{%- if renewal != "" %}
Your contract renews on {{ renewal | date: "%B %d, %Y" }}.
{%- endif %}

Only shown if a renewal date exists. Formatted in a reader-friendly style.


The Complete Welcome Slide

Here it is, all together:


{% comment %}
  Welcome Slide — Executive Business Review
  Sources: Salesforce (contact, ARR, renewal), Gainsight (health score)
  Snippets: CustomerSince, IsEMEA
  Updated: 2026-03-23
{% endcomment %}

{%- # === Setup Block === -%}
{%- assign name    = contact_first_name | default: "there" -%}
{%- assign company = contact_account_name | default: "your company" | cast_titlecase -%}
{%- assign csm     = csm_name | default: "your account manager" -%}
{%- assign tier    = product_tier | default: "" | strip -%}
{%- assign score   = health_score | default: 0 | plus: 0 -%}
{%- assign arr_val = arr | default: 0 | plus: 0 -%}
{%- assign renewal = renewal_date | default: "" -%}
{%- assign region  = IsEMEA | default: "" | strip -%}
{%- assign tenure  = CustomerSince | default: "" | strip -%}

{%- # === Greeting === -%}
Hi {{ name }},

Welcome to {{ company | cast_apostrophe }} Executive Business Review.

{%- # === Tenure === -%}
{%- if tenure != "" and tenure != "Invalid Date Value" %}
Thank you for being a customer for {{ tenure }}. We value your partnership.
{%- endif %}

{%- # === Health Score === -%}
{%- if score >= 80 %}

Your health score of {{ health_score | cast_highlight }} places you among
our top-performing accounts. Let's look at what's driving that success.
{%- elsif score >= 60 %}

Your health score of {{ health_score | cast_highlight }} shows strong
engagement, with some areas we'll explore for further growth.
{%- elsif score > 0 %}

Your health score of {{ health_score | cast_highlight }} tells us
there are opportunities to strengthen your outcomes.
We've prepared specific recommendations.
{%- else %}

We'll walk through your key metrics and discuss areas of focus.
{%- endif %}

{%- # === CSM === -%}

Your {{ "CSM" | cast_pronounce }}, {{ csm }}, has prepared this review
and is available for any questions.

{%- # === Region === -%}
{%- if region == "yes" %}

Your dedicated EMEA support team is available for follow-up
at your convenience{{ "Support hours: 8 AM–6 PM CET, Monday–Friday" | cast_footnote }}.
{%- endif %}

{%- # === Renewal === -%}
{%- if renewal != "" %}

Your contract renews on {{ renewal | date: "%B %d, %Y" }}.
{%- endif %}


Sample Outputs

Customer: Jason at ACME LLC, score 92, tenure 3 years and 2 months, EMEA, renewal 2026-09-15

Hi Jason,

Welcome to Acme LLC’s Executive Business Review.

Thank you for being a customer for 3 years and 2 months. We value your partnership.

Your health score of 92 places you among our top-performing accounts. Let’s look at what’s driving that success.

Your CSM, Taylor Chen, has prepared this review and is available for any questions.

Your dedicated EMEA support team is available for follow-up at your convenience¹.

Your contract renews on September 15, 2026.


¹ Support hours: 8 AM–6 PM CET, Monday–Friday

Customer: Missing name, GLOBEX INC, score 42, no tenure data, not EMEA, no renewal date

Hi there,

Welcome to Globex Inc’s Executive Business Review.

Your health score of 42 tells us there are opportunities to strengthen your outcomes. We’ve prepared specific recommendations.

Your CSM, your account manager, has prepared this review and is available for any questions.

Notice how the second version gracefully omits tenure, EMEA content, and renewal — producing a shorter but still professional narration.


Every Technique in This Module

Technique Module Where It Appears
default 4 Every field in the setup block
cast_titlecase 8 Company name normalization
cast_apostrophe 9 Company possessive
cast_pronounce 10 CSM acronym
cast_highlight 11 Health score emphasis
cast_footnote 11 EMEA support hours
if/elsif/else 12 Health score tiers
unless / blank check 13 Tenure and renewal guards
assign (setup block) 15 All variable preparation
plus: 0 conversion 5 Health score, ARR
strip 4 Snippet results
date formatting 7 Renewal date
Snippet consumption 16 CustomerSince, IsEMEA
Comments 3 Documentation throughout
Whitespace control 3 Clean output formatting

Try It Yourself

Exercise: Extend the welcome slide with one additional section: if the customer’s ARR is above $200,000, display a message acknowledging them as a “strategic account.” Include the ARR value highlighted. If their ARR is between $50,000 and $200,000, show their tier. If below $50,000 or unknown, skip the section entirely.

Click to reveal the answer Add this section after the health score commentary: ```liquid {%- # === Account Value === -%} {%- if arr_val > 200000 %} As a strategic account with an {{ "ARR" | cast_pronounce }} of ${{ arr_val | cast_highlight }}, you have priority access to our Executive Partnership resources. {%- elsif arr_val >= 50000 %} {%- if tier != "" %} Your {{ tier }} account represents a ${{ arr_val }} investment in our platform. {%- endif %} {%- endif %} ``` Key decisions: - No section at all for ARR under 50000 or missing — avoids awkward messaging about small accounts - `cast_pronounce` on ARR so the narrator says "Annual Recurring Revenue" - `cast_highlight` on the dollar amount for visual emphasis - Tier only mentioned if the field has a value - The 200k+ segment gets exclusive "strategic account" messaging

What’s Next

In Module 21, you’ll learn Troubleshooting and Common Errors — a practical guide to diagnosing and fixing the most frequent Liquid problems in Cast.


📖 Official documentation:

  • Overview: https://school.cast.app/liquid.html
  • Custom Cast Filters: https://school.cast.app/liquid/custom-cast-filters.html
  • Snippet Library: https://school.cast.app/liquid/liquid-library.html

This site uses Just the Docs, a documentation theme for Jekyll.