Définition
Le reach (portée en français) mesure le nombre total de personnes uniques qui ont été exposées à un contenu, une campagne publicitaire ou un message marketing sur une période déterminée. Contrairement aux impressions qui comptent chaque exposition, le reach ne compte chaque personne qu’une seule fois, même si elle a vu le contenu plusieurs fois.
Types de reach
Organic reach
// Portée organique exemple
const organicReach = {
facebook_post: {
followers: 10000,
organic_reach: 1200, // 12% des followers
engagement_rate: 4.5, // 54 interactions
reach_decline: 'Ongoing since 2018'
},
seo_content: {
monthly_users: 45000,
unique_visitors: 32000, // Reach SEO
pages_per_user: 2.1,
return_visitors: 40 // Frequency
}
};
Paid reach
# Campagne publicitaire reach
def calculate_paid_reach(campaign_data):
total_budget = 5000
target_cpm = 8.50 # Cost per mille (1000 impressions)
estimated_impressions = (total_budget / target_cpm) * 1000
# 588,235 impressions
frequency = 3.2 # Exposition moyenne par personne
unique_reach = estimated_impressions / frequency
# 183,823 personnes uniques touchées
return {
'impressions': estimated_impressions,
'unique_reach': int(unique_reach),
'frequency': frequency,
'cpr': total_budget / unique_reach # Cost per reach
}
Mesure du reach
Platforms sociales
Reach par plateforme :
├── Facebook : Insights natifs
├── Instagram : Business metrics
├── LinkedIn : Campaign Manager
├── Twitter : Analytics dashboard
├── TikTok : Pro Analytics
└── YouTube : YouTube Analytics
SEO reach calculation
# Portée SEO estimée
def estimate_seo_reach(keywords_data):
total_reach = 0
for keyword in keywords_data:
# Volume recherche mensuel
search_volume = keyword['volume']
# Position actuelle
position = keyword['position']
# CTR selon position
ctr_rates = {1: 0.284, 2: 0.152, 3: 0.103, 4: 0.073, 5: 0.055}
ctr = ctr_rates.get(position, 0.02)
# Reach estimé pour ce keyword
keyword_reach = search_volume * ctr
total_reach += keyword_reach
return {
'monthly_reach': int(total_reach),
'unique_users': int(total_reach * 0.7), # Déduplication
'opportunity': calculate_position_1_potential(keywords_data)
}
Reach vs autres métriques
Reach vs Impressions
Comparaison :
Post Facebook viral :
├── Impressions : 250,000
├── Reach : 75,000 personnes uniques
├── Frequency : 3.33 (250k/75k)
└── Insight : Forte rediffusion
Post standard :
├── Impressions : 15,000
├── Reach : 12,000 personnes uniques
├── Frequency : 1.25
└── Insight : Faible viralité
Reach vs Engagement
# Analyse reach vs engagement
def analyze_reach_engagement(posts):
analysis = []
for post in posts:
engagement_rate = (post.likes + post.comments + post.shares) / post.reach
analysis.append({
'post_id': post.id,
'reach': post.reach,
'engagement_rate': engagement_rate,
'quality_score': calculate_quality_score(post.reach, engagement_rate)
})
# Posts haute qualité : reach modéré + engagement élevé
# Posts spam : reach élevé + engagement faible
return sorted(analysis, key=lambda x: x['quality_score'], reverse=True)
Optimisation du reach
Stratégies organiques
<!-- Optimisation reach organique -->
<article class="shareable-content">
<header>
<h1>Titre accrocheur et viral</h1>
<meta property="og:title" content="Titre optimisé partage">
<meta property="og:description" content="Description engageante">
<meta property="og:image" content="image-attractive.jpg">
</header>
<div class="social-triggers">
<p>Contenu émotionnel qui incite au partage</p>
<blockquote>Citation mémorable</blockquote>
</div>
<footer class="share-buttons">
<button onclick="shareOnSocial('facebook')">Partager</button>
<button onclick="shareOnSocial('twitter')">Tweeter</button>
</footer>
</article>
Timing optimal
// Optimisation timing pour reach
const optimalTiming = {
facebook: {
best_days: ['Tuesday', 'Wednesday', 'Thursday'],
best_hours: ['13:00-16:00', '19:00-21:00'],
audience_activity: 'Check Insights for specific audience'
},
linkedin: {
best_days: ['Tuesday', 'Wednesday', 'Thursday'],
best_hours: ['08:00-10:00', '17:00-18:00'],
b2b_focus: 'Business hours perform better'
},
instagram: {
best_days: ['Wednesday', 'Thursday', 'Friday'],
best_hours: ['11:00-13:00', '17:00-19:00'],
visual_content: 'High-quality images/videos essential'
}
};
Reach dans le funnel
Top of funnel
Awareness stage :
├── Objectif : Maximum reach
├── Targeting : Large audiences
├── Content : Educational, entertaining
├── KPI : CPM, reach, brand awareness lift
└── Budget : 60% allocation
Middle/Bottom funnel
# Reach qualifié vs large
def qualified_vs_broad_reach():
return {
'broad_reach_campaign': {
'audience_size': 2000000,
'expected_reach': 400000, # 20%
'cpm': 5.20,
'relevance_score': 6.2,
'conversion_rate': 0.8
},
'qualified_reach_campaign': {
'audience_size': 250000,
'expected_reach': 125000, # 50%
'cpm': 12.40,
'relevance_score': 8.7,
'conversion_rate': 3.2
}
}
Attribution et reach
Cross-platform reach
// Déduplication reach multi-plateformes
function calculateCrossPlatformReach(platforms) {
const totalReach = platforms.reduce((sum, platform) =>
sum + platform.unique_reach, 0);
// Estimation overlap (simplifiée)
const estimatedOverlap = totalReach * 0.25; // 25% overlap moyen
const deduplicatedReach = totalReach - estimatedOverlap;
return {
total_gross_reach: totalReach,
estimated_overlap: estimatedOverlap,
net_unique_reach: deduplicatedReach,
frequency: totalReach / deduplicatedReach
};
}
Lift studies
# Mesure impact reach sur brand awareness
def brand_lift_study(campaign_reach, control_group):
# Test/Control methodology
exposed_group = campaign_reach['exposed_users']
control_group = campaign_reach['control_users']
brand_awareness_lift = {
'exposed_awareness': 0.47, # 47% se souviennent
'control_awareness': 0.31, # 31% baseline
'absolute_lift': 0.16, # +16 points
'relative_lift': 0.516, # +51.6%
'statistical_significance': 0.95
}
return brand_awareness_lift
Reach premium vs mass
Audience qualifiée
Stratégie reach premium :
├── Targeting précis : Demographics + intérêts + comportements
├── Lookalike audiences : Similarité clients existants
├── Custom audiences : Base CRM/email
├── Retargeting : Visiteurs site web
└── ROI : CPM élevé mais conversion supérieure
Mass market
Stratégie reach maximum :
├── Targeting large : Geo + âge basique
├── Automatic placements : All Facebook placements
├── Budget optimization : Campaign Budget Optimization
├── Bid strategy : Lowest cost
└── Objectif : Notoriété, viral potential
Reach dans le reporting
Dashboard reach
<!-- KPIs reach essentiels -->
<div class="reach-dashboard">
<div class="metric">
<h3>Reach Total</h3>
<span class="value">2.3M</span>
<span class="period">30 jours</span>
</div>
<div class="metric">
<h3>Reach Unique</h3>
<span class="value">1.8M</span>
<span class="dedup">-22% overlap</span>
</div>
<div class="metric">
<h3>Frequency</h3>
<span class="value">2.7</span>
<span class="optimal">Optimal: 3-5</span>
</div>
</div>
Le reach reste une métrique fondamentale pour évaluer l’ampleur d’une campagne ou d’une stratégie de contenu, à analyser en combinaison avec l’engagement et les conversions.