Exchange Rate

Marketing permissions per non-purchaser, across 9 sites.

Average exchange rate · 9 sites
29.80%
Averaged across 9 sites. Roughly 0.30 permissions per non-purchaser on a typical site.
The formula
email_perms + sms_perms
non_purchasers
=
0.298
What goes into the rate
numerator · denominator · rate
Numerator

Total permissions

Email permissions + SMS permissions. A user with both contributes 2. Each channel is counted independently because each is an independent way to reach the user.

Denominator

Non-purchasers

Users where customer = FALSE OR customer IS NULL. NULL is treated as a non-purchaser to cover anonymous and unconverted visitors.

Result

Exchange rate

SAFE_DIVIDE(numerator, denominator) — returns NULL instead of erroring on a zero denominator (e.g. a brand-new site with no non-purchasers yet).

Permission rules
when does a user count?

📱 SMS permission

  • Has a phone on file.
  • sms_consented = TRUE — explicit opt-in required.
  • No null-state exception. SMS marketing requires explicit consent (TCPA in the US).
Per-site ranking
9 sites · sorted by rate
#
Site
Email
SMS
Non-purch.
Rate distribution
Rate
01
Spritz Flower
gdJw2Za
0
12,215
53.45%
02
Danforth Pewter
Dvqyq3v
234
377,890
48.79%
03
Isshiki Matcha
jaoQpmL
1
38,303
44.91%
04
Storelli
Jdm7jxv
192
820,609
37.05%
05
JP Organic Coffee
jaoQNYL
819
82,056
29.36%
06
Final Boss Sour
NaVnjma
2,198
1,577,293
26.19%
07
Viajecito
ALOWrbL
0
83,067
20.76%
08
Triumph
oaAz1v9
161
6,235,478
5.00%
09
Shiree Odiz
yveyXOv
0
88,131
2.68%
μ
Cross-site average
9 sites
29.80%
The query
single-site · point lookup on website_id
exchange_rate.sql
-- Single-site exchange rate. website_id is the primary key,
-- so this is a fast point lookup. Cross-site = full scan = expensive.

SELECT
  COUNTIF(
    email IS NOT NULL
    AND (
      email_consented = TRUE
      OR (email_consented = FALSE AND email_consented_updated_at IS NULL)
    )
  ) AS email_permissions,

  COUNTIF(phone IS NOT NULL AND sms_consented = TRUE) AS sms_permissions,

  COUNTIF(/* email rule */) +
  COUNTIF(/* sms rule */) AS total_permissions,

  COUNTIF(customer = TRUE) AS purchasers,
  COUNTIF(customer = FALSE OR customer IS NULL) AS non_purchasers,

  SAFE_DIVIDE(
    COUNTIF(/* email rule */) +
    COUNTIF(/* sms rule */),
    COUNTIF(customer = FALSE OR customer IS NULL)
  ) AS exchange_rate

FROM `user`
WHERE website_id = 'NaVnjma';  -- Final Boss Sour