Skip to main content

The Challenge

You want consistent messaging across:
  • Homepage announcement bar
  • Creator landing page banners
  • Collection page headers
But you also want creator personalization where appropriate.

Solution: Shared Theme Settings with Creator Overrides

1. Define Shared Settings in Theme Settings

In config/settings_schema.json, create a settings group for shared promotional content:
{
  "name": "Co-branded Messaging",
  "settings": [
    {
      "type": "image_picker",
      "id": "home_creator_landing_pages_banner",
      "label": "Shared Banner Image"
    },
    {
      "type": "text",
      "id": "home_creator_landing_pages_headline",
      "label": "Shared Headline",
      "default": "Welcome to Our Store"
    },
    {
      "type": "text",
      "id": "home_creator_landing_pages_cta_label",
      "label": "CTA Button Text",
      "default": "Shop Now"
    },
    {
      "type": "url",
      "id": "home_creator_landing_pages_cta_link",
      "label": "CTA Button Link"
    }
  ]
}

2. Reference in Both Homepage and Creator Pages

Use these settings across templates for centralized control:
<div class="shared-banner">
  {% if settings.home_creator_landing_pages_banner %}
    <img 
      src="{{ settings.home_creator_landing_pages_banner | img_url: 'master' }}" 
      alt="Promotional banner"
      loading="lazy"
    >
  {% endif %}
  <h1>{{ settings.home_creator_landing_pages_headline }}</h1>
  <a href="{{ settings.home_creator_landing_pages_cta_link }}">
    {{ settings.home_creator_landing_pages_cta_label }}
  </a>
</div>

3. Add Creator Overrides

Enhance the shared content with creator personalization:
{% if cc_creator %}
  {% assign headline = cc_creator.cc-creator-first-name | append: "'s exclusive: " | append: settings.home_creator_landing_pages_headline %}
{% else %}
  {% assign headline = settings.home_creator_landing_pages_headline %}
{% endif %}

<div class="promo-banner">
  <h1>{{ headline }}</h1>
</div>

4. Dynamic Text Tokens

Use tokens in your settings that get replaced based on context. Setting value: [cc-creator-first-name]'s fans get free shipping!
{% assign banner_text = settings.home_creator_landing_pages_headline %}
{% if cc_creator %}
  {% assign banner_text = banner_text | replace: '[cc-creator-first-name]', cc_creator.cc-creator-first-name %}
{% else %}
  {% assign banner_text = banner_text | replace: "[cc-creator-first-name]'s fans get", "You get" %}
{% endif %}

<div class="promo-banner">{{ banner_text }}</div>

Benefits

  • Single source of truth — Update once in Theme Settings, reflect everywhere
  • No code duplication — Same settings referenced across templates
  • Creator enhancement — Personalization layers on top, doesn’t replace
  • Team-friendly — Non-technical team members can update messaging via Theme Settings

Best Practices

  • Define core messages in Theme Settings
  • Let creator context enhance, not replace brand messaging
  • Test both states: with and without creator context
  • Keep token names consistent (e.g., [cc-creator-first-name], [cc-creator-discount-code])