Comment connecter okdoc à Priority ERP
La connexion entre okdoc et Priority passe par un petit connecteur entre les API et les webhooks des deux systèmes. Quand un client signe dans okdoc, la copie signée est enregistrée en pièce jointe sur la fiche Priority, et quand une fiche Priority atteint le statut que vous avez choisi, okdoc envoie au client un document à signer. Il n'existe pas encore de bouton intégré, mais vous configurez le connecteur une seule fois et il fonctionne ensuite tout seul.
Ce que fait la connexion
Elle fonctionne dans les deux sens. D'abord : quand un client signe un document dans okdoc, le PDF signé (avec son certificat d'audit) est enregistré automatiquement dans les pièces jointes de la fiche Priority correspondante, par exemple la commande client. Ensuite : quand une fiche Priority atteint le statut que vous avez choisi, par exemple une commande validée pour envoi, okdoc envoie au client le document à signer par e-mail ou par WhatsApp. Personne ne saisit deux fois les mêmes informations, et aucun contrat signé ne se perd dans une boîte mail.
Ce qu'il vous faut avant de commencer
Côté okdoc : un forfait avec accès à l'API, actuellement AGENCY, car les clés API ne peuvent être créées que sur ce forfait. Côté Priority : la version 17.2 ou ultérieure pour écrire des données via l'API, la 19.1 ou ultérieure pour un Personal Access Token (PAT), la 21.0 ou ultérieure pour joindre des fichiers, ainsi que le module Webhooks si vous voulez aussi le second sens. Entre les deux : un connecteur qui reçoit un message d'un côté et appelle l'autre. Il peut s'agir d'un scénario Make ou Zapier, d'un workflow n8n ou d'une courte fonction sur votre propre serveur.
Étape 1 : une clé API dans okdoc
Dans l'application okdoc, ouvrez l'écran Développeurs et créez une nouvelle clé. Elle commence par ok_live_ et ne s'affiche qu'une seule fois : enregistrez-la tout de suite dans le connecteur, dans un endroit sûr. Chaque appel à l'API okdoc porte l'en-tête Authorization: Bearer suivi de la clé.
Étape 2 : un jeton d'accès dans Priority
Dans Priority, définissez un Personal Access Token dans le formulaire REST Interface Access Tokens, pour un utilisateur qui a les droits sur les formulaires dont la connexion a besoin. Les appels à Priority utilisent l'authentification Basic : le nom d'utilisateur est le jeton et le mot de passe est simplement le mot PAT. L'URL de base de l'API est propre à chaque installation, et votre administrateur Priority la connaît.
Étape 3 : un message d'okdoc dès qu'un document est signé
Sur ce même écran Développeurs, ajoutez un webhook qui pointe vers l'adresse HTTPS du connecteur et cochez l'événement document.signed. okdoc n'envoie qu'à des adresses HTTPS, car le message contient le nom et l'e-mail du signataire. Chaque webhook possède un secret qui commence par whsec_, et okdoc signe chaque message avec ce secret : l'en-tête X-OKDOC-Signature contient un HMAC-SHA256 du corps du message. Le connecteur calcule la même valeur et rejette tout message qui ne correspond pas. Voici à quoi ressemble le message, et comment le vérifier :
POST https://your-connector.example.com/okdoc
X-OKDOC-Event: document.signed
X-OKDOC-Signature: <HMAC-SHA256 hex of the raw body, keyed with whsec_...>
{
"event": "document.signed",
"created_at": "2026-10-19T09:12:44.120Z",
"data": {
"document": { "id": "6f1c...", "title": "Order SO26000123", "status": "signed", "locale": "he" },
"recipient": { "name": "Dana Levi", "email": "dana@example.com" }
}
}
// Node.js: reject anything that was not signed with your webhook secret
import { createHmac, timingSafeEqual } from "crypto";
const expected = Buffer.from(createHmac("sha256", process.env.OKDOC_WEBHOOK_SECRET).update(rawBody).digest("hex"));
const received = Buffer.from(req.headers["x-okdoc-signature"] ?? "");
const valid = received.length === expected.length && timingSafeEqual(received, expected);Étape 4 : télécharger la copie signée
Le message ne contient pas le fichier, seulement l'identifiant du document. Le connecteur appelle okdoc avec cet identifiant et récupère le statut, les informations du signataire, le journal des événements et un lien de téléchargement du PDF signé. Le lien est valable une heure : téléchargez donc le fichier immédiatement plutôt que de conserver le lien.
GET https://okdocai.com/api/v1/documents/6f1c...
Authorization: Bearer ok_live_...
200 OK
{
"id": "6f1c...",
"title": "Order SO26000123",
"status": "signed",
"signed_at": "2026-10-19T09:12:41Z",
"signed_pdf_url": "https://... (valid for one hour)",
"recipient": { "name": "Dana Levi", "email": "dana@example.com", "status": "signed" },
"events": [ { "type": "...", "at": "..." } ]
}Étape 5 : joindre le PDF à la fiche Priority
Dans Priority, on joint un fichier via le sous-formulaire des pièces jointes de la fiche (EXTFILES_SUBFORM), en envoyant le fichier sous forme de data URL en base64. À partir de la version 22.0, vous pouvez ajouter un champ SUFFIX avec la valeur .pdf, que Priority utilise au lieu de deviner le type du fichier. L'exemple joint le fichier à une commande client, mais tout formulaire doté de pièces jointes fonctionne de la même manière.
POST {serviceRoot}/ORDERS('SO26000123')/EXTFILES_SUBFORM
Authorization: Basic base64("<your PAT>:PAT")
Content-Type: application/json
{
"EXTFILEDES": "Signed via okdoc",
"EXTFILENAME": "data:application/pdf;base64,JVBERi0xLjcK...",
"SUFFIX": ".pdf"
}
// serviceRoot looks like: https://<server>/odata/Priority/<tabula.ini>/<company>Comment le connecteur sait à quelle fiche joindre le fichier
Il faut un moyen de retrouver la fiche Priority à partir du document okdoc. La méthode simple : mettez le numéro de la fiche dans le titre du document, par exemple "Commande SO26000123", et laissez le connecteur le lire dans le titre. La méthode plus précise : quand le document est créé depuis Priority (le second sens), le connecteur enregistre l'identifiant de document renvoyé par okdoc à côté du numéro de la fiche, si bien qu'à l'arrivée du message de signature, il sait exactement à quelle fiche il se rapporte.
L'autre sens : Priority envoie un document à signer
Dans Priority, enregistrez l'adresse du connecteur dans le formulaire Webhook Definitions (System Management > System Maintenance > Periodic Maintenance > BPM Maintenance) et générez un jeton d'authentification. Le jeton est masqué dès que vous quittez la ligne : copiez-le immédiatement. Ajoutez ensuite une règle métier ou une règle BPM sur le statut voulu, choisissez l'action Webhook et indiquez dans le corps du message les champs à envoyer : le numéro de la fiche, le nom du client, son e-mail et son téléphone. Priority envoie le jeton dans l'en-tête priority-bpm-token, et le connecteur vérifie qu'il correspond. Le connecteur appelle ensuite okdoc : avec un PDF produit dans Priority, il utilise la route de téléversement, qui ajoute un bloc de signature et envoie au client un lien par e-mail, par WhatsApp ou les deux. Sans fichier, il peut créer un document texte via POST /api/v1/documents.
// What Priority sends (header priority-bpm-token carries your webhook token).
// The fields are the ones you put in the business rule message, for example:
{ "ORDERS": { "ORDNAME": "SO26000123", "CDES": "Dana Levi" } }
// Your connector then sends the PDF to okdoc for signature:
POST https://okdocai.com/api/v1/documents/upload
Authorization: Bearer ok_live_...
Content-Type: multipart/form-data
file = SO26000123.pdf
title = Order SO26000123
recipient_name = Dana Levi
recipient_email = dana@example.com (optional: emails the signing link)
recipient_phone = +972501234567 (optional: WhatsApps the signing link)
201 Created
{ "id": "6f1c...", "status": "sent", "signing_url": "https://...", "emailed": true, "whatsapped": true }Bonus : le montant de l'affaire dans les rapports okdoc
okdoc affiche la valeur de l'affaire pour chaque document ainsi que les montants encore en attente. Si le montant existe déjà dans Priority, le connecteur l'inscrit sur le document, même après son envoi ou sa signature.
PATCH https://okdocai.com/api/v1/documents/6f1c...
Authorization: Bearer ok_live_...
Content-Type: application/json
{ "deal_amount": 12500 }À vérifier avant la mise en production
Envoyez-vous un document de test, signez-le et vérifiez que le PDF apparaît dans les pièces jointes de la bonne fiche. Journalisez chaque message reçu par le connecteur et chaque appel qui échoue, pour qu'aucun problème ne passe inaperçu. Dans Priority, à partir de la version 26.0, il existe aussi un journal des erreurs de webhooks. Conservez les clés uniquement dans le connecteur, jamais dans un navigateur ni dans du code public, et ne donnez à l'utilisateur API de Priority accès qu'aux formulaires dont il a réellement besoin.
Questions fréquentes
okdoc propose-t-il une intégration Priority native ?
Pas encore. La connexion repose sur les API et les webhooks d'okdoc et de Priority, avec un petit connecteur entre les deux : Make, Zapier, n8n ou votre propre code. Vous la configurez une fois, et ensuite les documents circulent tout seuls.
Quel forfait okdoc faut-il pour l'intégration ?
Un forfait avec accès à l'API, actuellement AGENCY. Sans clé API, le connecteur ne peut ni télécharger la copie signée ni envoyer des documents en votre nom. Les détails figurent sur la page des tarifs.
Quelle version de Priority est requise ?
La version 17.2 ou ultérieure pour écrire via l'API, la 19.1 ou ultérieure pour un Personal Access Token (PAT) et la 21.0 ou ultérieure pour joindre des fichiers. Pour que Priority envoie lui-même des documents à signer, il faut aussi le module Webhooks.
Peut-on la mettre en place sans développeur ?
En grande partie, oui. Dans Make ou Zapier, vous créez un module qui reçoit le webhook, un module HTTP qui appelle okdoc et un module HTTP qui appelle Priority. La vérification de la signature du message (HMAC) se fait de préférence dans du code ou dans un outil qui la prend en charge. Si vous n'avez jamais travaillé avec des API, votre responsable informatique ou votre intégrateur Priority peut vous aider.
Les données des signataires sont-elles protégées pendant le transfert ?
okdoc n'envoie des messages qu'à des adresses HTTPS et signe chaque message avec un secret que vous seul détenez. Le lien vers le PDF signé est valable une heure, et les clés ne se trouvent que dans votre connecteur.
Est-ce que cela fonctionne avec Priority en cloud comme sur site ?
L'API REST de Priority existe dans les deux cas. Sur site, assurez-vous que le connecteur peut joindre votre serveur Priority, et que le serveur peut joindre le connecteur si vous utilisez des webhooks.
Peut-on mettre à jour un statut dans Priority après la signature du client ?
Oui, en mettant à jour la fiche (PATCH) via l'API de Priority, à la même étape que celle où vous joignez le PDF. Les noms des champs et des statuts dépendent de votre configuration : vérifiez-les d'abord avec votre administrateur Priority.