Tamtam for Developers
Le Tamtam Pixel est un tracker server-side léger. Clics vérifiés, inscriptions, activations, achats — tout remonte dans votre dashboard en temps réel.
// Initialize Tamtam Pixel
window.tamtam = new TamtamPixel('tmsk_your_key_here')
// Track a signup
tamtam.track('sign_up', {
value: 1,
currency: 'XOF'
})
// ✓ Event received · 47msQuick start
Ajoutez dans votre balise <head> :
<!-- Tamtam Pixel -->
<script>
(function(w,d,s,k){
w.TamtamObject=s;
w[s]=w[s]||function(){(w[s].q=w[s].q||[]).push(arguments)};
w[s].l=1*new Date();
var f=d.getElementsByTagName('script')[0],
j=d.createElement('script');
j.async=true;
j.src='https://cdn.tamma.me/pixel/v1/tamtam.min.js';
f.parentNode.insertBefore(j,f);
}(window,document,'script','tamtam'));
tamtam('init', 'tmsk_YOUR_KEY_HERE');
</script>Récupérez votre clé Pixel depuis votre dashboard Tamtam, onglet Pixel.
tamtam('init', 'tmsk_abc123...', {
debug: true, // logs events to console during development
autoPageView: true, // auto-tracks page_view on init (default: true)
currency: 'XOF', // default currency for all events
})Vos clés commencent toujours par tmsk_. Ne commitez jamais votre clé dans votre code source. Utilisez une variable d'environnement.
Trois événements standards, prêts à l'emploi :
// Page view (auto-tracked — no action needed if autoPageView: true)
tamtam('track', 'page_view')
// Sign up
tamtam('track', 'sign_up', {
value: 1,
currency: 'XOF',
user_id: 'optional-your-internal-id', // hashed, never PII
})
// Activation (first key action — purchase, first order, etc.)
tamtam('track', 'activation', {
value: 2500, // monetary value in XOF if applicable
currency: 'XOF',
event_id: 'unique-dedup-id', // optional — prevents duplicate counting
})C'est tout.
Les événements apparaissent dans votre dashboard Tamtam, Pixel, Live Events dans les 30 secondes suivant l'envoi.
Architecture
Les événements sont validés côté serveur avant enregistrement. IP, empreinte appareil, rate limiting — tout est géré avant qu'un seul événement n'atteigne votre dashboard.
Chaque clic Tamtam ajoute ?tm_ref=xxx à votre URL. Le Pixel lit ce paramètre automatiquement et relie la conversion au bon Écho.
Rate limiting par clé (100 req/min). Rate limiting par IP (200 req/min). Verrouillage après échec d'authentification (10 tentatives, blocage 15 min).
Attribution
Le paramètre tm_ref est la clé d'attribution de Tamtam. Il relie chaque conversion à l'Écho qui a partagé le lien.
L'Écho partage un lien
Chaque Écho reçoit un lien unique avec son tm_ref personnel.
https://votresite.com?tm_ref=echo_abc123Le visiteur clique
Le visiteur arrive sur votre site avec le tm_ref dans l'URL.
URL bar: votresite.com/signup?tm_ref=echo_abc123Le Pixel capture le tm_ref
Le SDK JavaScript lit automatiquement le paramètre de l'URL et le persiste en localStorage.
tamtam('init', 'tmsk_...') // auto-reads ?tm_ref from URLLe visiteur convertit
Vous déclenchez un événement — le tm_ref est inclus automatiquement.
tamtam('track', 'sign_up') // tm_ref=echo_abc123 attachedAttribution confirmée
Tamtam attribue la conversion au bon Écho et met à jour le dashboard en temps réel.
→ Echo credited · Campaign budget debitedChaque Écho a un tm_ref unique
Deux Échos partageant la même campagne auront des tm_ref différents. L'attribution est toujours précise, même si des milliers d'Échos partagent la même campagne.
# Echo A — campaign "Promo"
https://votresite.com/promo?tm_ref=echo_a_7x9k2
# Echo B — same campaign "Promo"
https://votresite.com/promo?tm_ref=echo_b_m3p5q
# → Each visitor attributed to the Echo who shared the link
# → Pixel reads tm_ref automatically, no extra code neededReference
https://tamma.me/api/pixelX-Tamtam-Key: tmsk_your_key_hereToutes les requêtes nécessitent ce header. Les clés sont gérées dans Dashboard, onglet Pixel.
tmsk_...Pixel ID (clé API)
Identifie votre compte / pixel. Utilisé dans le header X-Tamtam-Key. Un par pixel, créé dans votre dashboard. Secret — ne jamais exposer côté client.
tm_refParamètre d'attribution
Identifie quel Écho a référé le visiteur. Auto-ajouté aux URLs quand un Écho partage votre campagne. Public — visible dans l'URL. Lu automatiquement par le SDK JS.
/api/pixel/eventSuivre un événement de conversion.
X-Tamtam-KeyreqContent-Typereqeventreqtm_refvaluecurrencyevent_iduser_datacurl -X POST https://tamma.me/api/pixel/event \
-H "X-Tamtam-Key: tmsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"event": "sign_up",
"tm_ref": "abc123xyz",
"value": 1,
"currency": "XOF",
"event_id": "signup_user_456"
}'Succès — 200
{
"success": true,
"event_id": "evt_01HXYZ...",
"received_at": "2026-05-24T14:30:00.000Z",
"attribution": {
"campaign_id": "camp_789",
"echo_id": "echo_012"
}
}Erreur — 4xx
{
"success": false,
"error": "INVALID_API_KEY",
"message": "API key not found or inactive."
}| Code | HTTP | Description |
|---|---|---|
| INVALID_API_KEY | 401 | Clé manquante, malformée ou inactive |
| RATE_LIMIT_EXCEEDED | 429 | Trop de requêtes — ralentissez |
| PAYLOAD_TOO_LARGE | 413 | Le corps de requête dépasse 10 Ko |
| MISSING_EVENT | 400 | Le champ event est requis |
| CAMPAIGN_NOT_FOUND | 404 | Le tm_ref ne correspond à aucune campagne active |
/api/pixel/pingTester votre connexion. Aucune authentification requise.
curl https://tamma.me/api/pixel/ping
# → { "status": "ok", "version": "1.0", "timestamp": "..." }| Événement | Description |
|---|---|
| page_view | Page consultée |
| sign_up | Utilisateur inscrit |
| activation | Utilisateur a réalisé une action clé |
| purchase | Transaction monétaire |
| lead | Formulaire de contact soumis |
| app_install | Application mobile installée |
Événements personnalisés supportés — utilisez n'importe quelle chaîne en snake_case minuscule.
Exemples
Suivez les achats sur un site e-commerce sénégalais. Déclenchez activation à la confirmation de commande.
// Fire on page load after successful order
useEffect(() => {
if (order.status === 'confirmed') {
window.tamtam('track', 'purchase', {
value: order.total_xof,
currency: 'XOF',
event_id: `order_${order.id}`, // prevents duplicate counting on refresh
})
}
}, [order])Debug
Activez le mode debug
tamtam('init', 'tmsk_your_key', { debug: true })Ouvrez la console navigateur — vous verrez :
[Tamtam Pixel] Initialized · key: tmsk_abc...
[Tamtam Pixel] Event queued: sign_up
[Tamtam Pixel] Event sent ✓ · 47ms · evt_01HXY...Vérifiez les Live Events dans votre dashboard
Dashboard → Pixel → [your pixel] → Live Events tab
Events appear within 30 seconds.Vérifiez l'attribution
Click a real Tamtam campaign link (URL has ?tm_ref=xxx)
Then trigger the event on your site.
Check: Dashboard → Pixel → ConversionsÉvénement envoyé mais n'apparaît pas dans le dashboard
Vérifiez que votre clé Pixel est active dans Dashboard, onglet Pixel. Les clés inactives renvoient 200 mais les événements sont silencieusement ignorés.
RATE_LIMIT_EXCEEDED dès la première requête
Votre IP a peut-être été signalée. Attendez 15 minutes. Si le problème persiste, contactez contact@tamma.me avec votre Pixel ID.
Attribution affichant null
Le paramètre tm_ref doit être présent dans l'URL au chargement de la page. Vérifiez que votre redirection préserve les paramètres de requête. Exemple : votresite.com/signup?tm_ref=abc123
Événements dupliqués au rechargement de page
Utilisez event_id avec une valeur unique stable (ID commande, ID utilisateur). Tamtam déduplique les événements avec le même event_id sur 24h.
# 1. Ping — no key needed
curl https://tamma.me/api/pixel/ping
# 2. Send a test event
curl -X POST https://tamma.me/api/pixel/event \
-H "X-Tamtam-Key: tmsk_your_key" \
-H "Content-Type: application/json" \
-d '{"event": "sign_up", "value": 1, "currency": "XOF"}'
# 3. Expected response:
# {"success":true,"event_id":"evt_...","received_at":"..."}| Endpoint | p50 | p95 | p99 |
|---|---|---|---|
| POST /api/pixel/event | 45ms | 120ms | 280ms |
| GET /api/pixel/ping | 12ms | 35ms | 80ms |
Asynchrone et non-bloquant
Le SDK JS envoie les événements en arrière-plan via navigator.sendBeacon ou fetch asynchrone. Le tracking n'impacte jamais les performances de votre site — aucun rendu bloqué, aucun délai visible pour l'utilisateur.
Données
Le Pixel collecte :
· Le nom de l'événement et la valeur que vous envoyez
· Le paramètre d'attribution tm_ref
· L'adresse IP (anonymisée après 30 jours)
· User agent / empreinte appareil (scoring anti-fraude uniquement)
Le Pixel ne collecte jamais :
· Les adresses email
· Les noms ou identifiants personnels
· Les informations de paiement
Si vous transmettez user_data, hashez-le d'abord :
tamtam('track', 'sign_up', {
user_data: {
email_hash: sha256('user@example.com'),
phone_hash: sha256('+221771234567'),
}
})Les données personnelles en clair sont supprimées côté serveur avant stockage. Ne transmettez jamais d'emails, noms ou numéros de téléphone en clair.
Tamtam est conforme à la loi 2008-12 du Sénégal sur la protection des données personnelles (CDP Sénégal).
Pour les visiteurs de l'UE, le Pixel est qualifié de cookie d'analytics nécessaire — aucune bannière de consentement requise pour le suivi de clics basique.
Politique de confidentialité complète →FAQ
Créez votre compte Tamtam et générez votre première clé Pixel en 2 minutes.
Créer un compteNotre équipe répond en moins de 24h pour vous accompagner dans l'intégration.
Nous contacter