Catalogue d'événements push — Plugins
Events que le plugin WordPress pousse vers StormeoOS au fil de l'activité du site (journal d'activité). Source : class-event-hooks.php du Stormeo Connector.
Pour les webhooks émis par StormeoOS vers les souscripteurs externes (clients API), voir ../webhooks/public-api-webhooks.md.
Transport
- Push immédiat :
POST /api/plugin/v2/activity(fire-and-forget, timeout 5 s — le hook WordPress appelant n'est jamais bloqué). - Fallback : en cas d'erreur réseau, l'event est mis en queue locale (
wp_options, taille bornée — le plus ancien est évincé si la queue est pleine). - Flush : la queue est vidée au heartbeat suivant via
POST /api/plugin/v2/activity-batch({ events: [...] }). - HMAC obligatoire au-delà du seuil de version (voir hmac-signature.md).
Enveloppe d'un event
{
"event_type": "post.published",
"entity_type": "post",
"entity_id": 42,
"entity_label": "Nouveau billet",
"actor_user_id": 1,
"actor_name": "Admin",
"actor_role": "administrator",
"actor_ip": "203.0.113.10",
"metadata": { },
"remote_at": "2026-08-21T10:00:00+00:00"
}| Champ | Description |
|---|---|
event_type | Type d'event (catalogue ci-dessous) |
entity_type / entity_id / entity_label | Entité concernée (entity_label tronqué à 200 caractères) |
actor_user_id / actor_name / actor_role | Utilisateur WP à l'origine de l'action (null si système) |
actor_ip | IP best-effort (CF-Connecting-IP → X-Real-IP → REMOTE_ADDR) |
metadata | Détails spécifiques au type |
remote_at | Horodatage UTC côté site |
Catalogue
Contenu
| Event | Hook WP | Notes |
|---|---|---|
post.published | transition_post_status | Première publication (passage vers publish) |
post.status_changed | transition_post_status | Tout autre changement de statut |
post.trashed | wp_trash_post | Mise à la corbeille |
post.restored | untrash_post | Restauration depuis la corbeille |
La synchronisation du contenu lui-même (titre, corps, SEO…) passe par
POST /api/plugin/v2/sync-content-extended, distincte du journal d'activité.
Commentaires
| Event | Hook WP |
|---|---|
comment.created | wp_insert_comment |
comment.status_changed | transition_comment_status |
Utilisateurs & sécurité
| Event | Hook WP |
|---|---|
user.registered | user_register |
user.login | wp_login |
user.login_failed | wp_login_failed |
Les événements de sécurité enrichis (tentatives répétées, etc.) passent aussi par
POST /api/plugin/v2/security-eventcôté monitoring.
Configuration du site
| Event | Hook WP | Notes |
|---|---|---|
plugin.activated | activated_plugin | |
plugin.deactivated | deactivated_plugin | |
theme.switched | switch_theme | |
option.updated | update_option_{option} (options surveillées) | Seul le nom de l'option est envoyé, jamais sa valeur (risque de secret : admin_email, etc.) |
{type}.{action} | upgrader_process_complete | Un event par item mis à jour — ex. plugin.update, theme.update, core.update |
WooCommerce (si actif)
| Event | Hook WC | Metadata |
|---|---|---|
woo.order.created | woocommerce_new_order | total, statut |
woo.order.status_changed | woocommerce_order_status_changed | from, to |
woo.product.updated | woocommerce_new_product + woocommerce_update_product | status, stock_status |
PrestaShop
Le module PrestaShop n'embarque pas ce journal d'activité : il pousse ses données via les endpoints de sync (/v1/sync, /v1/site-contents, /v1/cms-extensions) et ses contrôleurs dédiés. Le catalogue ci-dessus est spécifique à WordPress.
Garanties (et non-garanties)
- Best-effort : un event peut être perdu si le push échoue et que la queue locale déborde. Ne construisez pas de logique critique sur l'exhaustivité du journal.
- Ordre non garanti entre push immédiat et batch de rattrapage — utilisez
remote_atpour trier. - Les events sont cloisonnés par connecteur/agence côté StormeoOS comme le reste de la surface plugin.