Sites Web6 min de lecture

Wave Business reporting analytics dashboard : 2026

Mohamed Bah·Fondateur, Kolonell
20 juin 2026
Partager :
Wave Business reporting analytics dashboard : 2026

Wave Business reporting analytics dashboard : 2026

Sites Web

Reporting Wave Business = visibilité revenue + KPIs business. Dashboard analytics + exports automatiques = standard 2026 PME modernes.

TL;DR

- KPIs essentiels : transactions, taux conversion, CA, refunds.

- Stack : PostgreSQL + Metabase (gratuit).

- Cron daily reports email + Slack.

- Comparatifs M-1, Y-1, growth tracking.

KPIs essentiels Wave

`

  • Transactions :
  • Volume / jour
  • Tickets moyens
  • Taux succès vs échec
  • Revenue :
  • CA brut / net (après frais Wave)
  • Par produit / catégorie
  • Par canal (web, app)
  • Customer behavior :
  • Conversions checkout → paiement
  • Abandons paiement (+ raisons)
  • Repeat customers
  • Operationnel :
  • Refunds / chargebacks
  • Failed payments
  • Réconciliation gaps

`

Stack reporting 2026

  • PostgreSQL (DB transactions Wave normalized)
  • +
  • Metabase (BI gratuit, self-host ou cloud)
  • ou
  • PowerBI / Looker Studio
  • +
  • Cron jobs daily reports
  • +
  • Slack webhooks alerts

Schema DB analytics

`sql

-- Table dénormalisée pour analytics

CREATE TABLE wave_transactions_analytics (

id UUID PRIMARY KEY,

wave_id VARCHAR UNIQUE,

amount INT,

currency VARCHAR(3),

status VARCHAR(20),

type VARCHAR(20), -- 'checkout' | 'payout' | 'refund'

-- Dates

created_at TIMESTAMP,

paid_at TIMESTAMP,

date DATE GENERATED ALWAYS AS (DATE(created_at)) STORED,

hour INT GENERATED ALWAYS AS (EXTRACT(HOUR FROM created_at)) STORED,

weekday INT GENERATED ALWAYS AS (EXTRACT(DOW FROM created_at)) STORED,

-- Customer

customer_id UUID,

customer_phone VARCHAR,

is_repeat_customer BOOLEAN,

-- Product / order

order_id UUID,

product_category VARCHAR,

product_name VARCHAR,

-- Wave details

wave_fee INT,

net_amount INT,

device VARCHAR,

-- Indexes

INDEX idx_date (date),

INDEX idx_status (status),

INDEX idx_customer (customer_id)

);

`

Queries SQL standards

`sql

-- 1. CA daily 30 derniers jours

SELECT

date,

COUNT(*) AS transactions,

SUM(amount) AS gross_revenue,

SUM(net_amount) AS net_revenue,

AVG(amount) AS avg_ticket

FROM wave_transactions_analytics

WHERE status = 'completed'

AND date >= CURRENT_DATE - INTERVAL '30 days'

GROUP BY date

ORDER BY date DESC;

-- 2. Top 10 produits

SELECT

product_category,

product_name,

COUNT(*) AS sales,

SUM(amount) AS revenue

FROM wave_transactions_analytics

WHERE status = 'completed'

AND date >= CURRENT_DATE - INTERVAL '30 days'

GROUP BY product_category, product_name

ORDER BY revenue DESC

LIMIT 10;

-- 3. Heures pic conversion

SELECT

hour,

COUNT(*) AS transactions,

AVG(amount) AS avg_ticket

Besoin d'un site web professionnel ?

Kolonell crée des sites web qui attirent des clients, optimisés pour le marché sénégalais. Devis gratuit en 2 minutes.

FROM wave_transactions_analytics

WHERE status = 'completed'

GROUP BY hour

ORDER BY transactions DESC;

-- 4. Customer cohort retention

WITH cohorts AS (

SELECT

customer_id,

DATE_TRUNC('month', MIN(created_at)) AS cohort_month

FROM wave_transactions_analytics

WHERE status = 'completed'

GROUP BY customer_id

)

SELECT

cohort_month,

DATE_TRUNC('month', t.created_at) AS activity_month,

COUNT(DISTINCT t.customer_id) AS active_customers

FROM wave_transactions_analytics t

JOIN cohorts c ON t.customer_id = c.customer_id

GROUP BY cohort_month, activity_month

ORDER BY cohort_month, activity_month;

`

Daily report cron

`typescript

cron.schedule('0 8 * * *', async () => { // 8am every day

const yesterday = new Date(Date.now() - 24 * 3600 * 1000)

.toISOString().slice(0, 10);

const stats = await db.query(`

SELECT

COUNT(*) AS transactions,

SUM(amount) AS revenue,

SUM(amount) FILTER (WHERE status = 'completed') AS net_revenue,

COUNT(*) FILTER (WHERE status = 'failed') AS failed,

COUNT(*) FILTER (WHERE type = 'refund') AS refunds,

AVG(amount) AS avg_ticket

FROM wave_transactions_analytics

WHERE date = $1

`, [yesterday]);

// Send Slack

await slackWebhook({

text: 📊 Rapport Wave ${yesterday},

blocks: [

{ type: 'section', text: { type: 'mrkdwn', text:

*Transactions* : ${stats.transactions}\n*Revenue* : ${stats.revenue.toLocaleString()} FCFA\n*Failed* : ${stats.failed}\n*Refunds* : ${stats.refunds}\n*Ticket moyen* : ${stats.avg_ticket.toLocaleString()}

} },

],

});

// Email équipe finance

await sendEmail('finance@kolonell.com', {

subject: Rapport Wave ${yesterday},

body: renderEmailTemplate(stats),

});

});

`

Metabase setup gratuit

`bash

# Self-host Metabase

docker run -d -p 3000:3000 \

-v metabase-data:/metabase-data \

--name metabase metabase/metabase

# Connect to PostgreSQL

# Create dashboards :

# - Daily revenue

# - Top products

# - Customer retention

# - Failed transactions

`

Coût : 0€ self-host, 80-300€/mois cloud.

FAQ

Q : Wave provides analytics dashboard ?

R : Basic. Export CSV + custom analytics = recommandé pour insights deep.

Q : Real-time vs daily ?

R : Real-time pour ops critiques (refunds, failed). Daily pour reporting business.

Conclusion

Wave Business reporting 2026 : PostgreSQL + Metabase + cron daily = stack moderne PME. KPIs business + opérationnel critiques. Self-host gratuit, cloud 80-300€/mois.

Tags :#Wave#Reporting#Analytics#Dashboard#Metabase#PostgreSQL
Partager :

Mohamed Bah

Fondateur, Kolonell

Passionné par le digital et l'entrepreneuriat en Afrique, Mohamed accompagne les entreprises sénégalaises dans leur transformation digitale depuis 2020. Fondateur de Kolonell, il croit que chaque PME mérite une présence en ligne professionnelle et accessible.