|
{{ visitors.value }}
Visiteurs
{{ _self.pdf_trend(visitors.trend, false) }}
|
{{ behavior.avg_duration ? (behavior.avg_duration // 60 ~ 'm' ~ '%02d'|format(behavior.avg_duration % 60) ~ 's') : '—' }}
Duree moyenne
{{ _self.pdf_trend(behavior.avg_duration_trend ?? null, false) }}
|
{{ behavior.bounce_rate is not null ? behavior.bounce_rate ~ '%' : '—' }}
Taux de rebond
{{ _self.pdf_trend(behavior.bounce_rate_trend ?? null, true) }}
|
{{ behavior.avg_depth ?? '—' }}
Pages / session
{{ _self.pdf_trend(behavior.avg_depth_trend ?? null, false) }}
|
{{ behavior.avg_scroll is not null ? behavior.avg_scroll ~ '%' : '—' }}
Scroll moyen
{{ _self.pdf_trend(behavior.avg_scroll_trend ?? null, false) }}
|
| Etape | Nombre | Taux |
|---|---|---|
| Visiteurs uniques | {{ funnel.visitors }} | 100% |
| > 1 page visitee | {{ funnel.engaged }} | {{ (funnel.engaged / max * 100)|round(1) }}% |
| Vu page contact | {{ funnel.saw_contact }} | {{ (funnel.saw_contact / max * 100)|round(1) }}% |
| Conversions | {{ funnel.converted }} | {{ funnel.rate ?? 0 }}% |
|
{{ counts.phone_click }}
Appels
{{ _self.pdf_trend(counts.phone_click_trend ?? null, false) }}
|
{{ counts.email_click }}
Emails
{{ _self.pdf_trend(counts.email_click_trend ?? null, false) }}
|
{{ counts.form_submit }}
Formulaires
{{ _self.pdf_trend(counts.form_submit_trend ?? null, false) }}
|
{{ counts.total }}
Total
{{ _self.pdf_trend(counts.total_trend ?? null, false) }}
|
| Source | Sessions | Part |
|---|---|---|
| {% set srcType = s.source starts with 'seo' ? 'seo' : (s.source starts with 'social' ? 'social' : s.source) %} {{ s.source|replace({'_': ' '})|capitalize }} | {{ s.cnt }} | {{ totalSrc > 0 ? (s.cnt / totalSrc * 100)|round(1) : 0 }}% |
Aucune donnee.
{% endif %}| Appareil | Sessions | Part |
|---|---|---|
| {{ deviceLabels[d.device_type] ?? d.device_type }} | {{ d.cnt }} | {{ devTotal > 0 ? (d.cnt / devTotal * 100)|round(1) : 0 }}% |
Aucune donnee.
{% endif %}| {% for h in heatmap.hours %} | {{ h }}h | {% endfor %}
|---|---|
| {{ dayLabel }} | {% for hour in heatmap.hours %} {% set val = heatmap.grid[dayIdx][hour] %} {% set intensity = heatmap.max > 0 ? (val / heatmap.max) : 0 %}{{ val > 0 ? val : '' }} | {% endfor %}
| Page | Sessions |
|---|---|
| {{ lp.landing_page }} | {{ lp.cnt }} |
Aucune donnee.
{% endif %}| Page | Vues | Duree moy. | Scroll | Rebond | |
|---|---|---|---|---|---|
| {{ page.url }} | {{ page.views }} | {{ page.avg_duration ? (page.avg_duration // 60 ~ ':' ~ '%02d'|format(page.avg_duration % 60)) : '—' }} | {{ page.avg_scroll ? page.avg_scroll ~ '%' : '—' }} | {{ page.bounce_rate is not null ? page.bounce_rate ~ '%' : '—' }} | {% if page.avg_duration is not null and page.avg_duration > 120 and page.avg_scroll is not null and page.avg_scroll > 70 %} ★ {% endif %} |
★ = Bon engagement (duree > 2min et scroll > 70%)
{% else %}Aucune donnee.
{% endif %}| Page | Sorties | Taux sortie |
|---|---|---|
| {{ ep.exit_page }} | {{ ep.exit_sessions }} | {{ ep.exit_rate }}% |
Aucune donnee.
{% endif %}| Page | Conversions |
|---|---|
| {{ cp.page_url }} | {{ cp.cnt }} |
| Parcours | Sessions | Part |
|---|---|---|
| {{ cp.path }} | {{ cp.count }} | {{ cp.pct }}% |
| Page | Sessions | Presence | |
|---|---|---|---|
| {{ cp.url }} | {{ cp.sessions }} | {{ cp.pct }}% | {% if cp.pct > 50 %}★{% endif %} |
★ = Page strategique (presente dans > 50% des conversions)
| Date | Type | Page | Source | Detail |
|---|---|---|---|---|
| {{ row.date }} | {% if row.type == 'phone_click' %}Appel {% elseif row.type == 'email_click' %}Email {% else %}Formulaire {% endif %} | {{ row.page_url }} | {{ (row.source ?? 'direct')|replace({'_': ' '})|capitalize }} | {{ row.detail ?? '—' }} |
Aucune conversion sur cette periode.
{% endif %}