Integrazione CRM WordPress: collegare il sito al CRM senza appesantire il database

Collegare WordPress a un CRM esterno via REST API o webhook, mantenendo il database leggero. Pattern per sincronizzare contatti, lead e ordini senza duplicare dati e senza plugin invadenti.
L'integrazione tra WordPress e un CRM è una delle richieste più frequenti che riceviamo da agenzie e PMI. Il problema classico: il cliente ha un sito WordPress che genera lead tramite form, ma i dati finiscono in un database WordPress che nessuno consulta. Il commerciale usa il CRM, il marketing usa il sito, e i due mondi non comunicano. Il risultato è che un lead può essere contattato tre volte o mai.
L'approccio sbagliato è installare un plugin CRM che replica il database di WordPress dentro il CRM (o viceversa). Questo crea sincronizzazione pesante, conflitti di ID, e un database che cresce senza controllo. L'approccio corretto è usare WordPress come fonte di dati e il CRM come sistema di record, collegati da un webhook unidirezionale.
Pattern: webhook WordPress → CRM (unidirezionale)
Il flusso è semplice: quando un form WordPress viene sottomesso, WordPress invia un evento al CRM via webhook REST. Il CRM crea o aggiorna il contatto. Nessuna sincronizzazione bidirezionale, nessuna replica del database. WordPress resta il sistema di acquisizione, il CRM resta il sistema di gestione.
<?php
// Webhook WordPress → CRM (unidirezionale, no plugin CRM)
add_action( 'wp_insert_post', function( $post_id, $post, $update ) {
if ( $post->post_type !== 'lead' || wp_is_post_revision( $post_id ) ) return;
$payload = [
'email' => get_post_meta( $post_id, '_lead_email', true ),
'name' => get_post_meta( $post_id, '_lead_name', true ),
'source' => 'wordpress_form',
'created_at' => $post->post_date_gmt,
'site_url' => home_url(),
];
wp_remote_post( 'https://crm.example.com/api/contacts/upsert', [
'headers' => [
'Authorization' => 'Bearer ' . getenv( 'CRM_API_TOKEN' ),
'Content-Type' => 'application/json',
],
'body' => wp_json_encode( $payload ),
'timeout' => 10,
] );
}, 10, 3 );Deduplicazione: come evitare contatti doppi
Il rischio principale di un'integrazione CRM è la duplicazione: lo stesso lead inviato due volte crea due contatti nel CRM. La soluzione è usare un identificatore univoco (email) e un endpoint upsert nel CRM che aggiorna se esiste, crea se non esiste. Il webhook deve inviare l'email come chiave primaria e il CRM deve fare un upsert, non un insert.
// Deduplicazione: invia solo se il lead non è già stato sincronizzato
$synced = get_post_meta( $post_id, '_crm_synced', true );
if ( $synced ) return;
// ... invia al CRM ...
// Segna come sincronizzato
update_post_meta( $post_id, '_crm_synced', current_time( 'mysql' ) );
update_post_meta( $post_id, '_crm_id', $crm_response->id );REST API custom endpoint: leggere dal CRM
Se hai bisogno di leggere dati dal CRM dentro WordPress (es. mostrare lo stato di un lead in una pagina protetta), crea un endpoint REST API custom che fa da proxy. WordPress non accede direttamente al database del CRM — chiama l'API del CRM con il token server-side.
// Endpoint REST API custom: proxy CRM → WordPress
add_action( 'rest_api_init', function() {
register_rest_route( 'wp-planet/v1', '/lead/(?P<id>\d+)', [
'methods' => 'GET',
'callback' => function( $request ) {
$lead_id = $request->get_param( 'id' );
$response = wp_remote_get( 'https://crm.example.com/api/leads/' . $lead_id, [
'headers' => [ 'Authorization' => 'Bearer ' . getenv( 'CRM_API_TOKEN' ) ],
] );
return rest_ensure_response( json_decode( wp_remote_retrieve_body( $response ), true ) );
},
'permission_callback' => function() { return current_user_can( 'edit_posts' ); },
] );
} );L'integrazione CRM non è un plugin da installare e dimenticare. È un'infrastruttura che richiede un endpoint, un token, una strategia di deduplicazione e un monitoraggio degli errori. Ma se fatta bene, elimina il lavoro manuale di copiare dati tra sistemi e rende ogni lead immediatamente disponibile al commerciale. Il valore non è nel plugin, è nel flusso.
Integrazioni API, webhook e automazioni su misura.
Sviluppo WordPress personalizzato per collegare il sito a CRM, gateway di pagamento e servizi esterni via REST API e webhook.
Articoli correlati

Caching e pagine dinamiche: perché il carrello WooCommerce non si può (e non si deve) cachare
Leggi
LCP e immagini di sfondo CSS: il colpevole nascosto del Largest Contentful Paint
Leggi
