wc_get_order_statuses() : cette fonction WooCommerce liste les statuts disponibles pour une commande, et c’est le point de départ de la solution la plus économique pour transformer un devis en document signable sans changer d’outil. Plutôt que d’installer un logiciel de facturation dédié, il est possible de faire jouer à WooCommerce un rôle qu’il ne remplit pas nativement, à condition d’ajouter deux ou trois briques ciblées.
Un artisan (plombier, électricien, menuisier) facture rarement à l’acte comme une boutique classique : il envoie un devis, attend une validation, puis transforme ce devis en commande ferme. WooCommerce ne propose pas ce flux par défaut, mais son système de statuts personnalisés et de hooks permet de le reconstruire proprement.
Poser le bon statut de commande
La première étape consiste à déclarer un statut personnalisé, par exemple wc-devis-envoye, en complément des statuts natifs. Cela se fait via le hook init pour l’enregistrement du statut lui-même, et le filtre wc_order_statuses pour qu’il apparaisse dans les listes d’administration.
add_action( 'init', function () {
register_post_status( 'wc-devis-envoye', array(
'label' => 'Devis envoyé',
'public' => true,
'show_in_admin_status_list' => true,
'label_count' => _n_noop( 'Devis envoyé (%s)', 'Devis envoyés (%s)' ),
) );
} );
add_filter( 'wc_order_statuses', function ( $statuses ) {
$statuses['wc-devis-envoye'] = 'Devis envoyé';
return $statuses;
} );
Générer le PDF au bon moment
Une fois le statut disponible, le hook woocommerce_order_status_devis-envoye se déclenche automatiquement dès qu’une commande bascule dans cet état. C’est l’endroit idéal pour générer le PDF, à l’aide d’une bibliothèque légère comme Dompdf plutôt que d’une extension de facturation complète.

add_action( 'woocommerce_order_status_devis-envoye', function ( $order_id ) {
$order = wc_get_order( $order_id );
$html = wc_get_template_html( 'devis/pdf-devis.php', array( 'order' => $order ) );
$dompdf = new Dompdf\Dompdf();
$dompdf->loadHtml( $html );
$dompdf->render();
$chemin = wp_upload_dir()['path'] . '/devis-' . $order_id . '.pdf';
file_put_contents( $chemin, $dompdf->output() );
$order->update_meta_data( '_devis_pdf_path', $chemin );
$order->save();
} );
Le circuit de signature
Pour la signature elle-même, deux approches coexistent selon le budget : un service de signature électronique tiers appelé via son API (une seule intégration suffit, pas besoin d’en cumuler plusieurs), ou une signature manuscrite capturée sur une page dédiée avec un composant de dessin en JavaScript, puis intégrée à l’intérieur même du PDF regénéré. La seconde option évite toute dépendance externe et convient bien à un artisan qui facture des montants modestes et veut garder la main sur l’outil.
Basculer le devis en commande ferme
Dès que la signature est enregistrée (en métadonnée de commande, via update_meta_data()), un nouveau changement de statut transforme le devis en commande active : wc-processing ou un statut personnalisé wc-devis-signe selon le circuit de facturation existant. C’est ce changement de statut qui déclenche, le cas échéant, l’envoi de la facture définitive au client et la notification à l’artisan.
- Statut « Devis envoyé » : génération du PDF, envoi par e-mail au client.
- Signature capturée sur une page de validation liée à la commande.
- Statut « Devis signé » : régénération du PDF avec la signature intégrée, notification à l’artisan.
Limiter la complexité du circuit
Le piège classique consiste à vouloir tout automatiser dès la première version : relances automatiques, rappels SMS, tableau de bord de suivi. Pour un artisan seul ou en petite structure, mieux vaut démarrer avec les deux statuts, un e-mail de relance manuel envoyé depuis l’administration, et n’ajouter de l’automatisation que si le volume de devis le justifie réellement.
Un devis qui reste seize jours sans réponse n’a pas besoin d’un moteur de relance sophistiqué : un simple rapport hebdomadaire des commandes au statut « Devis envoyé » suffit largement à un artisan qui gère lui-même sa clientèle.
En résumé
Faire jouer à WooCommerce le rôle d’un outil de devis signable ne demande ni extension premium ni changement de logiciel de facturation : deux statuts personnalisés, un hook de génération de PDF et une page de capture de signature suffisent à couvrir l’essentiel du besoin d’un artisan qui veut moderniser son parcours de vente sans en complexifier la gestion quotidienne.