# Different Black Friday banners for email vs paid social traffic

Asked by dana_k on 2025-10-21. Tags: shopify, campaigns, utm, cql.

Hi all! Planning our Black Friday campaign calendar (yes, in a spreadsheet) and
I want the hero to match the channel people come from:

1. Email clickers see the loyalty early-access offer
2. Paid social sees the doorbuster banner
3. Everyone else gets the general sale hero

All our links carry UTMs already, utm_source and utm_medium are consistent, the
campaign names less so, they follow a bf25 prefix but vary after that.

Step by step, what do I need from our developer for this? Or can I set the
channel targeting up myself per campaign? Last thing I want is a dev ticket for
every campaign in the calendar

## 1 answer

### Answer from Sofia Petrova (2025-10-21)

Good news for your calendar: campaign attributes are built-in signals, so once
the hero slot exists on the store, all of this is dashboard work with no code
per campaign. Campaigns are detected automatically from the UTMs on the
landing URL.

Step by step:

1. Create an audience for email traffic. Conditions use the campaign signal
   directly, in the same shape as `campaign's source is "google"`, so for you:

   ```cql
   campaign's medium is "email"
   ```

2. Same for paid social, e.g. `campaign's source is "facebook"` combined with
   `campaign's medium is "cpc"` if that matches your link tagging.

3. For the inconsistent campaign names, `matches` handles the fuzz. The
   documented form is `campaign's name matches "sale"`, so your prefix becomes:

   ```cql
   campaign's name matches "bf25"
   ```

4. Create one experience per audience on the hero slot with the right banner.
   The general sale hero stays as the default content, so untagged traffic
   gets it automatically.

Your developer is only needed if the hero slot does not exist yet. After
that, every campaign in the spreadsheet is an audience-plus-content change
you publish yourself.

There is a longer walkthrough of the campaign conditions here:
[Building UTM campaign audiences in CQL](/answers/cql-utm-campaign-audience).

#### Reply from dana_k (2025-10-22)

This is perfect, the matches trick solves my messy campaign names. Adding
a column to the spreadsheet for the audience each campaign maps to.
